回帰係数の出力を評価して特徴選択を実行し、最大の係数を持つ特徴を選択しようとしています。問題は、coef._属性から係数のみが返されるため、それぞれの機能を取得する方法がわからないことです。ドキュメントには次のように書かれています:
線形回帰問題の推定係数。フィット中に複数のターゲットが渡される場合(y 2D)、これは形状の2D配列(n_targets、n_features)であり、1つのターゲットのみが渡される場合、これは長さn_featuresの1D配列です。
私は自分のregression.fit(A、B)に渡しています。ここで、Aはドキュメント内の各機能のtfidf値を持つ2次元配列です。形式の例:
"feature1" "feature2"
"Doc1" .44 .22
"Doc2" .11 .6
"Doc3" .22 .2
Bはデータのターゲット値であり、各ドキュメントに関連付けられた1〜100の数字です。
"Doc1" 50
"Doc2" 11
"Doc3" 99
Regression.coef_を使用して、係数のリストを取得しますが、対応する機能は取得しません!どうすれば機能を入手できますか? Bターゲットの構造を変更する必要があると思いますが、その方法はわかりません。
私が仕事を見つけたのは:
X =独立変数
coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1)
あなたが述べた仮定:regression.coef_の順序はTRAINセットの順序と同じであるということは、私の経験では当てはまります。 (基礎となるデータを処理し、Xとyの相関関係をチェックアウトします)
機能選択タスクに取り組んでいると思います。 regression.coef_
は、特徴に対応する係数、つまりregression.coef_[0]
は「feature1」およびregression.coef_[1]
は「feature2」に対応します。これはあなたが望むものでなければなりません。
さて、私はsklearnのツリーモデルを推奨しますが、これは機能の選択にも使用できます。具体的には、 こちら をご覧ください。
coefficients = pd.DataFrame({"Feature":X.columns,"Coefficients":np.transpose(logistic.coef_)})
それには、データフレームを作成します。
cdf = pd.DataFrame(regression.coef_, X.columns, columns=['Coefficients'])
print(cdf)
トレインデータX変数が 'df_X'である場合、辞書にマッピングしてpandasデータフレームにフィードしてマッピングを取得できます。
pd.DataFrame(dict(Zip(df_X.columns,model.coef_[0])),index=[0]).T