8

2 つのカテゴリ変数、ID 変数、およびターゲット変数 (分類用) を持つ Pandas Dataframe があります。でカテゴリ値を変換することができましたOneHotEncoder。これにより、スパース マトリックスが生成されます。

ohe = OneHotEncoder()
# First I remapped the string values in the categorical variables to integers as OneHotEncoder needs integers as input
... remapping code ...

ohe.fit(df[['col_a', 'col_b']])
ohe.transform(df[['col_a', 'col_b']])

しかし、DecisionTreeClassifier でこの疎行列を使用する方法がわかりません。特に、後でデータフレームに他の非カテゴリ変数を追加したい場合。ありがとう!

編集 miraculixx のコメントへの返信: sklearn-pandas で DataFrameMapper も試しました

mapper = DataFrameMapper([
    ('id_col', None),
    ('target_col', None),
    (['col_a'], OneHotEncoder()),
    (['col_b'], OneHotEncoder())
])

t = mapper.fit_transform(df)

しかし、その後、次のエラーが発生します。

TypeError: サポートされていない型の変換: (dtype('O'), dtype('int64'), dtype('float64'), dtype('float64'))。

4

2 に答える 2

14

すでに Pandas を使用されているようですが、そのget_dummies機能を使用してみませんか?

import pandas as pd
df = pd.DataFrame([['rick','young'],['phil','old'],['john','teenager']],columns=['name','age-group'])

結果

   name age-group
0  rick     young
1  phil       old
2  john  teenager

get_dummies でエンコードするようになりました

pd.get_dummies(df)

結果

name_john  name_phil  name_rick  age-group_old  age-group_teenager  \
0          0          0          1              0                   0   
1          0          1          0              1                   0   
2          1          0          0              0                   1   

   age-group_young  
0                1  
1                0  
2                0

そして、Sklearn の DecisionTreeClassifier で新しい Pandas DataFrame を実際に使用できます。

于 2016-07-22T06:16:37.080 に答える