python - 回归中的序数分类数据

标签 python machine-learning scikit-learn categorical-data

我有一个包含不同权重的分类数据的数据集,例如,博士的权重高于硕士,而理学硕士的权重高于理学学士。

我知道要使用标签编码器,但我不希望 python 为这些变量任意分配代码。我想要更高的代码:Phd = 4、Msc = 3、Bsc = 2、O Levels = 1 和无教育 = 0。

我可以解决这个问题吗?有人可以帮忙吗?

最佳答案

LabelEncoder 将根据字母顺序对类别进行编码并存储在 classes_ 属性中。默认情况下是这样的:

from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
le.fit(['Phd', 'Msc','Bsc', 'O Levels','No education'])
ll.classes_
# Output: array(['Bsc', 'Msc', 'No education', 'O Levels', 'Phd'], dtype='|S12')

有多少个类别?如果较少,您可以自己使用字典进行转换,类似于 this answer here :

my_dict = {'Phd':4, 'Msc':3 , 'Bsc':2, 'O Levels':1, 'No education':0}

y = ['No education', 'O Levels','Bsc', 'Msc','Phd']
np.vectorize(my_dict.get)(y)

# Output: array([0, 1, 2, 3, 4])

关于python - 回归中的序数分类数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49854070/

相关文章:

python - 程序问题

python - ANN 线性回归模型的评估

python - 如何将 sklearn CountVectorizer 与 'word' 和 'char' 分析器一起使用? - Python

python - 如何使用python检查目录中所有图像的尺寸?

python - 在 python 上安装包时出错

matlab - 这个成本函数有矢量化的实现吗?

python - CountVectorizer fit-transform() 不适用于自定义 token_pattern

python - scikit-learn 中用于交叉验证的自定义折叠

python - 直方图错误: 'int' object is not iterable

所有变量大于 0.5 时替换为 true 小于 0.5 时替换为 false