我需要在我的数据集中对分类特征进行编码。我希望对它们进行排序,以便“低”变为 0,“vhigh”变为 3。 我尝试使用预处理中的标签编码器:
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(['low', 'med', 'high', 'vhigh'])
ar = le.transform(df[df["buying"] == 'low']["buying"])
不幸的是,特征没有排序:第 4 行返回 1 的数组,我想要一个 0 的数组。
我尝试创建另一个编码器,将数字映射到我想要的数字。但它似乎只是没有结果。
other_le = preprocessing.LabelEncoder()
other_le.fit([1, 2, 0, 3])
other_le.transform(ar)
最后一行再次返回一个。
如何以最短的方式保持分类特征的有序性?
请您参考如下方法:
您可以使用 pandas 的 factorize 函数。
它根据序列对值进行编码,即如果低在前,则编码为 0,中等编码为 1,依此类推。
import pandas as pd
myli = ['low','medium','high','very_high']
pd.factorize(myli)[0]
# output
array([0, 1, 2, 3])
