2016-11-07 8 views
3

私は25の列を持つcsvファイルを持っています。いくつかは数値で、いくつかはカテゴリ化されていて、俳優や監督の名前のようなものもあります。このデータで回帰モデルを使いたい。これを行うには、scikitパッケージのLabelBinarizerを使用して、カテゴリの列の文字列型を数値に変換する必要があります。 複数のカテゴリデータを持つこのデータフレームでLabelBinarizeを使用するにはどうすればよいですか?データフレーム内の複数の列のLabelBinarizer

SampleData

基本的に私は、ラベルを2値化し、データフレームにそれらを追加します。

以下のコードでは、二値化する列のリストを取得して、新しい列をdfに追加する方法を見つけることができませんでしたか?次のステップで

categorylist = ['color', 'language', 'country', 'content_rating'] 
for col in categorylist: 
    tempdf = label_binarizer.fit_transform(df[col]) 

、私はdftempdfを追加して、元の列のDF [COL]をドロップします。

あなたが pd.get_dummiesでワンライナーでこれを行うことができます
+0

あなたのコードの 'df'はパンダのデータフレームですか? 'sklearn'メソッドの出力(あなたのコードに' fit_transform'のような)がnumpyの配列であることに注意してください!そのため、あなたのコードの 'tempdf'は' Pandas'データフレームではありません!まず、データフレームに変換する必要があります(例えば、 'newdf = pd.DataFrame(tempdf)')。それを 'df'に連結します。 'del df ['column_name']'を使って列を削除することもできます。 最後のコメントは、 'LableBinarizer'か' MultiLabelBinarizer'が必要かどうかを確認することです。 – MhFarahani

答えて

3

tempdf = pd.get_dummies(df, columns=categorylist) 

そうでなければ、あなたがsklearn pipeline - how to apply different transformations on different columns

EDITへの答えのようにFunctionTransformerFeatureUnionを使用することができます。 @dukebodyによって追加したようコメントでは、sklearn-pandasパッケージを使用して、各データフレーム列に異なる変換を適用できるようにすることもできます。

+1

sklearn-pandasパッケージを使用することもできます。この目的は、各データフレーム列に異なる変換を適用できるようにすることです。 – dukebody

+0

@dukebodyこれはとても便利ですね! – maxymoo

関連する問題