标签变换

对于分类算法和聚类算法来说,整理分类标签是一项必不可少的操作。scikit-learn中在sklearn.preprocessing包中提供了几个可以进行标签变换的类。

LabelBinarizer可以用来对二分类和多分类单标签问题的标签进行转换,类MultiLabelBinarizer可以用来对多分类多标签问题的标签进行转换,具体使用可以参考以下示例。

from sklearn.preprocessing import LabelBinarizer
lb = LabelBinarizer()
lb.fit([1, 2, 4, 6, 2, 4])
print(lb.classes_) # 会输出 array([1, 2, 4, 6])
labels = lb.transform([1, 6])
print(labels) # 会输出array([1, 0, 0, 0], [0, 0, 0, 1])

调用变换器实例的.fit()方法可以根据标签生成所有分类标签的集合,分类标签集合可以通过.classes_属性访问。.transform()方法可以根据集合转换标签。方法.fit_transform()可以在生成分类标签集合的同时对给定的全部标签进行转换。

LabelEncoder可以将标签正则化,将全部标签转化为\( \left[0, n\_classes - 1\right) \)(即标签列表的索引形成的新列表)之间的数值。并且可以通过.inverse_transform()将正则化后的值转换为原标签的值。除LabelEncoder外,多分类的标签还可以使用OrdinalEncoder类和OneHotEncoder类进行转换。