OneHotEncoder编码
分类特征(值为分类的特征),例如特征“车辆”可以有来自集合{"汽车","摩托车","卡车",...}的值。当一个人暗示你在这些值之间没有任何顺序时,就会使用这种特征类型,例如汽车与摩托车或卡车不可比较,尽管您正在使用整数对集合“汽车”,“摩托车”,“卡车”进行编码,您希望学习估计器不暗示分类特征值之间的任何关系。要将此特征类型转换为二进制或有理数,并仍然保持无序值的属性,您可以使用One Hot Encoding。这是一种非常常见的技术:它将原始数据集中每个分类特征替换为
n
个新的二进制特征,其中
n
是原始分类特征中唯一值的数量。如果您想知道那些n个新的二进制特征在结果数据集中的确切位置-您将需要使用
feature_indices_
属性,原始数据集中分类特征
i
的所有新二进制特征现在位于新数据集的列
feature_indices_[i]:feature_indices_[i+1]
中。
OneHotEncoder 从数据集中的每个分类特征的值确定其范围,例如:
dataset = [[0, 0],
[1, 1],
[2, 4],
[0, 5]]
enc = OneHotEncoder()
enc.fit(dataset)
print(enc.n_values_)
print(enc.feature_indices_)
print(enc.active_features_)
enc.transform(dataset).toarray()
array([[ 1., 0., 0., 1., 0., 0., 0.],
[ 0., 1., 0., 0., 1., 0., 0.],
[ 0., 0., 1., 0., 0., 1., 0.],
[ 1., 0., 0., 0., 0., 0., 1.]])