1

データ・フレームXには、2つのカテゴリ機能と41の数値機能があります。したがって、Xには合計43の機能があります。パンダ:ワン・オン・ホット・エンコードカテゴリ機能

ここでは、分類機能を数値レベルに変換して、RandomForestクラシファイアで使用できるようにしたいと考えています。 01は、カテゴリの特徴の位置を示し、以下の私が行っている

Xnewは(63点の特徴を有する、今

Xnew = pd.concat([F1, F2, X.ix[:, 2:]]) 

:そして

import pandas as pd 

X = pd.read_csv("train.csv") 

F1 = pd.get_dummies(X.iloc[:, 0]) 

F2 = pd.get_dummies(X.iloc[:, 1]) 

は、私は、これら2つのデータフレームを連結しますF1は18であり、F2は4つの特徴を有し、残りの41はXから

これは正しいですか?同じことをするより良い方法はありますか?共線性を避けるために、最初の列をF1F2から削除する必要がありますか?

+0

私は問題を参照してください、http://stats.stackexchange.com/、 – Merlin

+0

にお問い合わせください。ここに投稿http://stats.stackexchange.com/questions/232541/pandas-how-to-one-hot-encode-categorical-features –

答えて

0

F1は18 レベル(機能ではない)であり、F2は4であるため、結果は正しいように見えます。

共線性を避けるには、列の1つを(F1およびF2ごとに)ドロップする方がよいでしょう。必ずしも最初の列である必要はありません。通常、最も一般的なレベルの列をドロップします。

なぜ最も一般的なレベルですか?機能の重要性について考えてみましょう。 1つの列を削除すると、重要度を見積もる機会がありません。このレベル(あなたが落としたレベル)は、あなたの「ベースレベル」に似ています。ベースレベルからの偏差だけが重要であるか否かを示すことができる。

+0

あなたの返事ありがとうございます。だから私が正しく理解すれば、F1は1と0の疎な行列になります。その場合、私は最大合計で列を削除する必要があります。たとえば、3番目の列は他の列と比較して1番目の列が多いため、3番目の列を削除する必要があります。 F2についても同様です。あれは正しいですか? –

+0

はい。これは私が意味していたものです。 – lanenok

+0

しかし、F1とF2を作成するために取ったアプローチは正しいですか?つまり、そのような機能を作成するためのより簡単な方法がありますか?たとえば、私が持っているなら、50のカテゴリー的な特徴を考えてみましょう。そして、理想的な方法は何でしょうか? –

関連する問題