我有一个pandas数据帧(在python中),我想标记encode两列,准备在上面训练机器学习模型。将其从分类数据转换为数值。(我现在还不希望OneHotEncode数据)
我有一个与此类似的数据帧(一旦订购):
Main_Category Sub_Category
Cat_0 Sub_1
Cat_1 Cub_1
Cat_1 Aub_2
Cat_2 Sub_3
数据遵循以下关系,其中主类别可以有许多唯一的子类别。我想先按主类别排序,然后按子类别排序。这将把所有子类别按其主类别分组。在
^{pr2}$然后我想对数据进行编码,使其看起来像这样:
Main_Category Sub_Category
0 0
1 1
1 2
2 3
但是,当我对数据进行编码时,我得到的编码是这样的:
Main_Category Sub_Category
0 2
1 0
1 1
2 3
我相信编码库是对数据本身进行排序,然后根据这些结果进行编码。我想基于我自己的分类编码。理想的解决方案是什么?在
这是对列进行编码的代码:
from sklearn.preprocessing import LabelEncoder
labelencoder = LabelEncoder()
df['Main_Category'] = labelencoder.fit_transform(df['Main_Category'])
labelencoder = LabelEncoder()
df['Sub_Category'] = labelencoder.fit_transform(df['Sub_Category'])
编辑:我不能显示真实的数据,这就是为什么我的问题有虚拟数据。 编辑:更新了子类别名称以更好地显示错误
是的,如您所述,
labelencoder
执行排序internally。 如果要使编码按特定顺序进行,请使用_encode
直接。在相关问题 更多 >
编程相关推荐