1
私はUCIの乳がんのデータセットに取り組んでおり、最高の体重を持つトップ3の機能を探しています。 logmodel.coef_
を使用してすべての機能の重要度を知ることができましたが、機能名はどのように取得できますか?以下は私のコード、出力、およびデータセット(scikitからインポートされたもの)です。ロジスティック回帰:最高の重みを持つ上位3つの特徴を見つけるには?
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(
cancer.data, cancer.target, stratify=cancer.target, random_state=42)
logmodel = LogisticRegression(C=1.0).fit(X_train, y_train)
logmodel.coef_[0]
上記のコードは出力配列を出力します。これらの重みを使用すると、どのように関連フィーチャ名を取得できますか?
Output:
array([ 1.90876683e+00, 9.98788148e-02, -7.65567571e-02,
1.30875965e-03, -1.36948317e-01, -3.86693503e-01,
-5.71948682e-01, -2.83323656e-01, -2.23813863e-01,
-3.50526844e-02, 3.04455316e-03, 1.25223693e+00,
9.49523571e-02, -9.63789785e-02, -1.32044174e-02,
-2.43125981e-02, -5.86034313e-02, -3.35199227e-02,
-4.10795998e-02, 1.53205924e-03, 1.24707244e+00,
-3.19709151e-01, -9.61881472e-02, -2.66335879e-02,
-2.44041661e-01, -1.24420873e+00, -1.58319440e+00,
-5.78354663e-01, -6.80060645e-01, -1.30760323e-01])
ありがとうございます。私は本当にこれに関する助けに感謝します。
ありがとうございます。 'np.argpartition(coefs、-3)'がしていることを教えてください。 – jubins
関数np.argpartition(coefs、k)は、coefs内の最小のn-k要素のインデックスで始まり、coefs内の最大のk要素のインデックスで終わる配列を返します。完全な並べ替えを実行しないので、配列の完全な並べ替えよりも効率的です(関数の-3を使うことはlen(coefs)-3を使うのと同じです)。効率を必要としない場合は、その行をtop_three = np.argsort(coefs)[ - 3:] –
に置き換えることもできます。並べ替えを行う必要があるかどうか疑問に思っていましたか? 'top_three = np.argpartition(coefs、-3)[ - 3:]'は私に最も重要な3つの特徴を与えてくれますよね?しかしなぜ私は 'top_three_sorted = top_three [np.argsort(coefs [top_three])'をソートする必要があるのですか?それは結果を変えないだろうか? – jubins