2017-01-23 9 views
1

Iワンホットエンコードする場合、このような3つの可能な値を持つ列:2つの値を持つワンホットエンコード列はどうですか?

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]) 

は、私が手を:

私は2つの可能な値を持っている場合でも、唯一の1列です
array([[1], 
     [0]]) 

。この場合、私はどのようにして終了したいですか:

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

この場合、2列の結果はどのようにして得られますか?

答えて

1

OneHotEncoderを使用できます。たとえば:pandas.get_dummiesは、私の場合は最も簡単な解決策であるように

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.]]) 
+0

[OK]を、それは解決策のように見えます。しかし、私はどのようにフィット関数にパンダのデータフレームの単一の列を供給するのですか? LabelBinarizerは本当に簡単ですが、OneHotEncoderはPandas列を直接取っていないようです。 – OlavT

+0

パンダでは 'get_dummies'を使うことができます。例えば; 'df = pd.DataFrame(data = {'a':[0,1,0]})'と 'pd.get_dummies(df ['a'])' – Xevaquor

0

に見えます:

pd.get_dummies([1, 0]) 
関連する問題