Skip to main content
 首页 » 编程设计

python之使用 sklearn 按给定顺序编码分类特征

2025年05月04日16lhb25

我需要在我的数据集中对分类特征进行编码。我希望对它们进行排序,以便“低”变为 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])