机器学习,分析认识sklearn的OrdinalEncoder编码器
发布于 作者:苏南大叔 来源:程序如此灵动~

sklearn
里面内置了很多编码器,用于把人类认识的单词转化为程序认识的数字。本文描述第二个编码器OrdinalEncoder
(序数编码器),它和上一个LabelEncoder
在编码的原理上是很相似的。但是,它接受的输入变量有些不同。LabelEncoder
接受的是一维向量作为输入,OrdinalEncoder
接受的是二维数组或者是dataframe
作为输入项目。这就是两者最大的区别。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程所见所闻。本文测试环境:win10
,python@3.12.0
,scikit-learn@1.3.2
。
基本使用
下面演示OrdinalEncoder
的基本使用方法,和以前的类似编码器对比,使用方法基本一致。可以参考文章:
基本定义:
可以.fit()
和.transform()
分开调用
也可以两者同时调用:
输出:
这个为什么某个单词转化为0
,而不是1
。这个编码顺序可以参考unicode
编码。
这里的输入项目是二维数组,一列代表着一个相同的特性描述。所以,它的字典编码也是以一列为单位的。

获取.classes_
然而,和LabelEncoder
不同的是,OrdinalEncoder
没有.classes_
属性。这个就暂不做探讨了。
逆转编码
注意的是:被逆转的数据列数必须和输入项相等。否则报错,例如:
输入项对比
正如文章开头所描述的一样,LabelEncoder
接受的是一维向量作为输入,OrdinalEncoder
接受的是二维数组或者是dataframe
作为输入项目。这就是两者最大的区别。
横着的一维向量是不能作为输入的,例如:
报错信息是:
改成竖直的二维数组,就可以作为输入了:
结语
更多苏南大叔的sklearn
相关经验文章,请点击:


