困惑为什么最终输出为[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]
?
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
>>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9])
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
答案 0 :(得分:1)
这是您的训练数据:
A B C # <== feature names
0 0 3
1 1 0
0 2 1
1 0 2
现在正如您在enc.n_values_
中看到的那样:array([2, 3, 4])
第一个特征A有两个可能的值= 0和1。 类似地,特征B具有三个可能的值= 0,1,2 ...
现在在输出中,将根据上述值为每个要素分配列数。 像这样:
A_0 A_1 B_0 B_1 B_2 C_0 C_1 C_2 C_3
这里A_0表示数据中存在0。因此,A_0将为1(热),A_1将为0.如果该数据中存在1,则A_1将为1(热),A_0将为0.
所以输入: A B C. [0,1,1]
这里,A = 0,所以A_0为1,其余A_1为0。 对于B,B = 1,所以B_1将为1而其他(B_0和B_2)将为0.对于C也是如此。
所以最终输出是:
A_0 A_1 B_0 B_1 B_2 C_0 C_1 C_2 C_3
1., 0., 0., 1., 0., 0., 1., 0., 0.
请参阅此处了解详情:http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features