3

一部の列がエンコードを必要としないワンホット エンコード (データフレーム/numpy 配列) を sklearn するように pandas データ フレームを変換するにはどうすればよいですか?

mydf = pd.DataFrame({'Target':[0,1,0,0,1, 1,1],
                   'GroupFoo':[1,1,2,2,3,1,2],
                    'GroupBar':[2,1,1,0,3,1,2],
                    'GroupBar2':[2,1,1,0,3,1,2],
                    'SomeOtherShouldBeUnaffected':[2,1,1,0,3,1,2]})
columnsToEncode = ['GroupFoo', 'GroupBar']

既にラベルがエンコードされたデータ フレームで、 でマークされた列のみをエンコードしたいcolumnsToEncodeですか?

私の問題は、pd.Dataframeまたはnumpy配列表現が優れているかどうか、およびエンコードされた部分を他の部分と再マージする方法がわからないことです。

これまでの私の試み:

myEncoder = OneHotEncoder(sparse=False, handle_unknown='ignore')
myEncoder.fit(X_train)
df = pd.concat([
         df[~columnsToEncode], # select all other / numeric
        # select category to one-hot encode
         pd.Dataframe(encoder.transform(X_train[columnsToEncode]))#.toarray() # not sure what this is for
        ], axis=1).reindex_axis(X_train.columns, axis=1)

注意: 私はPandas: Get Dummies / http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.htmlを認識していますが、それは列車/テスト分割でうまく機能しません。フォールドごとのエンコーディング。

4

3 に答える 3