我需要在数据集中编码分类特征。我希望对它们进行排序,以使“低”变为0,而“高”变为3。
我尝试使用预处理中的标签编码器:

from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(['low', 'med', 'high', 'vhigh'])
ar = le.transform(df[df["buying"] == 'low']["buying"])


不幸的是,功能没有排序:第4行返回一个1的数组,而我想要一个零的数组。

我尝试创建另一个将数字映射到所需数字的编码器。但这似乎没有结果。

other_le = preprocessing.LabelEncoder()
other_le.fit([1, 2, 0, 3])
other_le.transform(ar)


最后一行再次返回。

如何以最短的方式对分类特征进行排序?

最佳答案

LabelEncoder将根据Python内置sorted()函数的输出对功能进行排序,在这种情况下,这些功能将按字母顺序对它们进行排序。编写自己的函数以保持所需顺序的方式标记它们并不难:

def label( array ):
    labels = ['low', 'med', 'high', 'vhigh']
    return map( labels.index, array )

关于python - 使用sklearn以给定顺序编码类别特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49158724/

10-12 22:15