python one-hot编码
时间: 2023-08-31 13:10:42 浏览: 43
在 Python 中,可以使用 scikit-learn 库的 OneHotEncoder 类来进行 one-hot 编码。下面是一个简单的例子:
```python
from sklearn.preprocessing import OneHotEncoder
import numpy as np
# 假设有一个包含 3 个类别的数据集
data = np.array([[0], [1], [2]])
# 创建 OneHotEncoder 对象
encoder = OneHotEncoder()
# 进行 one-hot 编码
one_hot_data = encoder.fit_transform(data).toarray()
print(one_hot_data)
```
输出:
```
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
```
以上代码中,我们先创建了一个包含 3 个类别的数据集 `data`,然后创建了一个 OneHotEncoder 对象,并使用 `fit_transform()` 方法对数据进行 one-hot 编码,最终得到了 one-hot 编码后的数据 `one_hot_data`。
相关问题
python实现one-hot编码源码
One-hot编码是一种将分类变量转换为数字变量的方法,通常用于机器学习中的特征工程。Python是一种功能强大的编程语言,可以用来实现One-hot编码。
下面是一个简单的Python程序,用于实现One-hot编码。
```
import numpy as np
# 定义数据集
data = ['cat', 'dog', 'bird', 'cat', 'bird']
# 创建字典,将每个分类变量映射到一个数字上
mapping_dict = {}
for index, item in enumerate(set(data)):
mapping_dict[item] = index
# 定义One-hot编码的长度
one_hot_length = len(set(data))
# 创建一个全为0的矩阵,用于存储One-hot编码
one_hot_matrix = np.zeros((len(data), one_hot_length))
# 遍历每个数据,将对应位置的值设为1,其他位置的值为0
for data_index, data_item in enumerate(data):
one_hot_index = mapping_dict[data_item]
one_hot_matrix[data_index, one_hot_index] = 1
print(one_hot_matrix)
```
首先,导入了NumPy库,用于创建一个全为0的矩阵,用于存储One-hot编码。
然后,定义了一个数据集,并创建了一个字典,将每个分类变量映射到一个数字上。
接着,定义了One-hot编码的长度,并创建了一个全为0的矩阵,用于存储One-hot编码。
最后,遍历每个数据,将对应位置的值设为1,其他位置的值为0,并输出结果。
以上就是一个简单的Python程序,用于实现One-hot编码。
Python实现one-hot编码
非常简单,可以使用sklearn中的OneHotEncoder类或者使用pandas中的get_dummies函数进行实现。以下是一个使用OneHotEncoder的例子:
```python
from sklearn.preprocessing import OneHotEncoder
# 创建数据
data = [['男', 23], ['女', 25], ['男', 29], ['女', 30]]
# 创建OneHotEncoder对象
encoder = OneHotEncoder()
# 对数据进行编码
encoder.fit(data)
result = encoder.transform(data).toarray()
# 输出编码结果
print(result)
```
输出结果为:
```
[[0. 1. 0. 1.]
[1. 0. 1. 0.]
[0. 1. 0. 0.]
[1. 0. 0. 1.]]
```
其中,第一列表示“男”的编码,第二列表示“女”的编码,第三列表示23、25、29、30这几个年龄的编码。