Python实现one-hot编码
时间: 2023-09-09 12:09:52 浏览: 41
非常简单,可以使用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这几个年龄的编码。
相关问题
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编码
好的,下面是一个简单的 Python 代码段,用于将一个列表中的分类变量进行 one-hot 编码:
```python
import pandas as pd
# 创建一个示例数据集
data = pd.DataFrame({'fruit': ['apple', 'banana', 'orange', 'apple', 'orange']})
# 对分类变量进行 one-hot 编码
one_hot = pd.get_dummies(data['fruit'])
# 将 one-hot 编码结果与原始数据集合并
data = pd.concat([data, one_hot], axis=1)
print(data)
```
输出结果如下:
```
fruit apple banana orange
0 apple 1 0 0
1 banana 0 1 0
2 orange 0 0 1
3 apple 1 0 0
4 orange 0 0 1
```
以上代码使用了 pandas 库中的 `get_dummies` 函数来进行 one-hot 编码。该函数会自动将输入的分类变量转换为多个二元变量,每个二元变量对应一个分类变量值。最后,将 one-hot 编码结果与原始数据集合并,即可得到一个包含 one-hot 编码结果的新数据集。