如何修改sklearn的Label编码器?自定义classes_属性?
发布于 作者:苏南大叔 来源:程序如此灵动~

苏南大叔在本文中,将继续回顾一下sklearn
中的LabelEncoder
编码器,这里有一个小小的问题,就是可能对其中的分类字典.classes_
里的“单词”顺序不满意。那么,本文里面就是研究这种sklearn
自定义编码器的可能性。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验文章。本文测试环境:win10
,python@3.12.0
,scikit-learn@1.3.2
。
前文回顾
首先本文对标的是sklearn
的LabelEncoder
,参考文章:
本文的技术手段是自定义类继承LabelEncoder
,然后改写其.fit()
方法。关于继承,参考文章:
关于le.classes
这个元素词典里面,单词的排序问题会引起.transform()
的排序结果。关于这个推测,参考文章:
使用了sklearn.utils.column_or_1d()
函数,参考文章:
按出现的先后排序
LabelEncoder
的源码,可以在下面的文件里面找到:
根据上面的代码,改写LabelEncoder
的fit
方法:
效果对比
参考代码:

可见,两者的结果是有很大差别的:
编码器 | 苏 | 南 | 大 | 叔 |
---|---|---|---|---|
LabelEncoder | 3 | 0 | 2 | 1 |
SnLabelEncoder | 0 | 1 | 2 | 3 |
结语
更多苏南大叔的sklearn
经验文字,请点击:


