我正在尝试使用scikitlearn的onehotcoder将Pandas数据帧中包含字符串的列替换为一个热编码的等效列。我下面的代码不起作用:
from sklearn.preprocessing import OneHotEncoder
# data is a Pandas DataFrame
jobs_encoder = OneHotEncoder()
jobs_encoder.fit(data['Profession'].unique().reshape(1, -1))
data['Profession'] = jobs_encoder.transform(data['Profession'].to_numpy().reshape(-1, 1))
它会产生以下错误(列表中的字符串被省略):
^{pr2}$以下是一些示例数据:
data['Profession'] =
0 unkn
1 safe
2 rece
3 unkn
4 lead
...
111988 indu
111989 seni
111990 mess
111991 seni
111992 proj
Name: Profession, Length: 111993, dtype: object
我到底做错了什么?在
因此,Scikit学习到的LabelBinarizer让我在将数据转换为一种热编码格式方面有了更好的运气,在{a2}的帮助下,我的最终代码如下
OneHotEncoder将分类整数特征编码为一个热的数字数组。如果sparse=True,则该方法返回稀疏矩阵,否则返回二维数组。 你不能将一个二维数组(或稀疏矩阵)转换成一个熊猫系列。必须为每个类别创建Pandas系列(Pandas数据帧中的列)。在
我建议使用pandas.get_dummies代替:
编辑:
使用Sklearn OneHotEncoder:
^{pr2}$其他选项:如果使用GridSearch进行超参数调整,建议使用ColumnTransformer和{a5}与{a6}一起使用,或直接使用make_column_transformer
相关问题 更多 >
编程相关推荐