在Python中,可以使用sklearn库中的LabelEncoder或OneHotEncoder来将字符串数据转换为数字。
- LabelEncoder
LabelEncoder是sklearn库中的一个类,用于将分类变量映射到数值。具体操作如下:
from sklearn.preprocessing import LabelEncoder
# 创建LabelEncoder对象
le = LabelEncoder()
# 创建含有分类变量的列表
data = ['Apple', 'Orange', 'Banana', 'Apple', 'Banana', 'Orange']
# 将分类变量编码为数值
le.fit(data)
new_data = le.transform(data)
print(new_data)
运行结果为:
[0 1 2 0 2 1]
- OneHotEncoder
OneHotEncoder是sklearn库中的另一个类,用于将分类变量转换成一个由0和1组成的向量。具体操作如下:
from sklearn.preprocessing import OneHotEncoder
import numpy as np
# 创建OneHotEncoder对象
enc = OneHotEncoder()
# 创建含有分类变量的列表
data = ['Apple', 'Orange', 'Banana', 'Apple', 'Banana', 'Orange']
# 将分类变量编码为数值
le = LabelEncoder()
le.fit(data)
new_data = le.transform(data)
# 将数值转换成One-Hot编码
enc.fit(np.reshape(new_data, (-1, 1)))
onehot_data = enc.transform(np.reshape(new_data, (-1, 1))).toarray()
print(onehot_data)
运行结果为:
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]
[1. 0. 0.]
[0. 0. 1.]
[0. 1. 0.]]
需要注意的是,OneHotEncoder的输出是一个矩阵,每一行都对应一个样本,每一列表示一个类别。在输出矩阵中,每行的元素只有一项为1,其余为0。
以上是将分类变量转换成数字的两种方法,根据实际需求选择合适的方法即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中把分类的字符串数据转换成数字 - Python技术站