pandas get_dummies で作成したカテゴリ列がある場合、線形回帰モデルに sklearn RFE を使用する方法を理解しようとしています
データセットがあり、レイアウトは次のとおりです。
y = Carsales
X = Unemployment, Queries, CPI_energy, CPI_all, Month(comes in as an int)
私が最初に行うことは、Month をオブジェクトに変換してからカテゴリに変換することです (カテゴリ タイプに直接変換すると、パンダでは機能しませんでした)。
df['MonthFac'] = df['Month'].astype('object')
df['MonthFac'] = df['MonthFac'].astype('category')
次に、X、y を作成します。
from sklearn.linear_model import LinearRegression
cols = ['Unemployment','Queries','CPI_energy','CPI_all']
X = pd.concat([train[cols],(pd.get_dummies(train['MonthFac']))], axis = 1)
y = train['ElantraSales'].values
lm1 = LinearRegression()
lm1.fit(X,y)
次に、RFE を使用します。
from sklearn.feature_selection import RFE
selector = RFE(lm1,step=1, n_features_to_select = 2)
selector.fit(X,y)
2 つの機能を探す単純な RFE ですが、その結果、月の列の 2 つが 1 としてランク付けされます。技術的には、月の列の 1 つがランク 1 である場合にのみ必要であり、「MonthFac」変数は重要です。モデルを構築する際に、使用する他のトップ ランクの変数は何かを知りたいです。
それとも、演繹的な推論を使用して、selector.ranking_
出力に基づいて使用する他の変数を把握することになっているのでしょうか?
R と比較して、sklearn の学習曲線ははるかに高いようです。
また、パンダ/ sklearnでカテゴリ値を正しく実行していますか? R では、私がしなければならas.factor
なかったのは、BAM がこれらすべてを実行することだけでした。
もう 1 つの質問です。機能の最適な量がわからない場合は、ループ セレクター R^2/R^2 adj/MSE を作成して出力できると思いますが、これらの追加の月の列があるので、基本的に 16 の機能があるため、ループは 16 に移動します。これを行うためのより良い方法はありますか?