繁体   English   中英

如何使用多个 class 标签对数据进行编码?

[英]How to encode data with multiple class labels?

我有多个类的分类问题,比如 A、B、C 和 D。我的数据具有以下 y 标签:

y0 = [['A'], ['B'], ['A','D'], ['A'], ['A','C','D'], ['D'], ..., ['C'], ['A','B','C','D'] , ['B']]

我想在这些标签上训练一个随机森林分类器。 首先,我需要对标签进行编码。 我首先尝试LabelEncoder

from sklearn.preprocessing import OneHotEncoder, LabelEncoder
le = LabelEncoder()
le.fit_transform(y0)
# encoded labels: array([0, 1, 2, 0, 3, 4, ... 5, 6, 1], dtype=int64)

我也试过OneHotEncoder ,但很明显, LabelEncoderOneHotEncoder都不能在这里工作。 问题是我无法使用多个 class 标签(例如['A','B','C'] )对数据进行编码。 我想这些简单的编码方法不是 go 的方法,那么编码我的 class 标签的最佳方法是什么? 为了澄清,我不想将例如['A','B']视为与['A']['B']完全不同的 class 。 我希望它是一个不同的 class 但同时仍然继承 A 和 B 类的特性。

这种问题称为标签(与多类相反,其中每个样本只有一个 class 标签),sklearn 期望多标签问题将目标编码为形状为(n_samples, n_labels)的二进制数组。 您可以使用MultiLabelBinarizer以该格式对数据进行编码。

而不是使用OneHotEncoderLabelEncoder您可以使用OrdinalEncoder将分类特征编码为 integer 数组。

结果类将按顺序排列,例如按字母顺序AABAD等。

问题可能是AB是否更类似于ACAD 我的意思是字母顺序可能无法反映真正的相似性,例如序数比例'cold','warm','hot' ,因此应该使用手动编码和重新排序。 但是这些细节需要一些领域知识。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM