1

如果我用 3 个可能的值对一列进行一次性编码,如下所示:

from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()
lb.fit([0, 1, 2])
lb.classes_
lb.transform([1, 0])

然后我得到:

array([[0, 1, 0],
       [1, 0, 0]])

这正是我想要的。3 列 = 每个可能值 1 列。

但是,如果我有 2 个像这样的可能值:

lb.fit([0, 1])
lb.classes_
lb.transform([1, 0])

我得到:

array([[1],
       [0]])

这只有 1 列,即使我有 2 个可能的值。在这种情况下,我想结束的是:

array([[0, 1],
       [1, 0]])

在这种情况下,如何获得 2 列结果?

4

2 回答 2

1

您可以使用OneHotEncoder. 例如:

In [37]: oh = preprocessing.OneHotEncoder(sparse=False)

In [38]: oh.fit([[0], [1]])
Out[38]:
OneHotEncoder(categorical_features='all', dtype=<type 'float'>,
       handle_unknown='error', n_values=2, sparse=False)

In [39]: oh.transform([[1], [0]])
Out[39]:
array([[ 0.,  1.],
       [ 1.,  0.]])
于 2017-01-23T21:30:36.663 回答
0

就我而言,看起来 pandas.get_dummies 是最简单的解决方案:

pd.get_dummies([1, 0])
于 2017-01-23T22:03:52.347 回答