web-dev-qa-db-ja.com

Scikit-Learn Linear Regressionでは、係数のそれぞれの機能を取得する方法は?

回帰係数の出力を評価して特徴選択を実行し、最大の係数を持つ特徴を選択しようとしています。問題は、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ターゲットの構造を変更する必要があると思いますが、その方法はわかりません。

15
jeffrey

私が仕事を見つけたのは:

X =独立変数

coefficients = pd.concat([pd.DataFrame(X.columns),pd.DataFrame(np.transpose(logistic.coef_))], axis = 1)

あなたが述べた仮定:regression.coef_の順序はTRAINセットの順序と同じであるということは、私の経験では当てはまります。 (基礎となるデータを処理し、Xとyの相関関係をチェックアウトします)

11
Kirsche

機能選択タスクに取り組んでいると思います。 regression.coef_は、特徴に対応する係数、つまりregression.coef_[0]は「feature1」およびregression.coef_[1]は「feature2」に対応します。これはあなたが望むものでなければなりません。

さて、私はsklearnのツリーモデルを推奨しますが、これは機能の選択にも使用できます。具体的には、 こちら をご覧ください。

7
Jake0x32
coefficients = pd.DataFrame({"Feature":X.columns,"Coefficients":np.transpose(logistic.coef_)})
4
Snowde

それには、データフレームを作成します。

cdf = pd.DataFrame(regression.coef_, X.columns, columns=['Coefficients'])
print(cdf)
2

トレインデータX変数が 'df_X'である場合、辞書にマッピングしてpandasデータフレームにフィードしてマッピングを取得できます。

pd.DataFrame(dict(Zip(df_X.columns,model.coef_[0])),index=[0]).T
0
clieforce