2017-12-07 10 views
0

私は、あなたがF1がアウトカムに強い相関を持って見ることができるようにアウトカム再帰的特徴消去(RFE)SKLearn

を予測しようとしたF1とF2から私の理解

F1 F2 Outcome 
0 2 5  1 
1 4 8  2 
2 6 0  3 
3 9 8  4 
4 10 6  5 

をテストするためのテーブルを作成しましたF2はランダムノイズ

である私は

私が期待したものである
pca = PCA(n_components=2) 
fit = pca.fit(X) 
print("Explained Variance") 
print(fit.explained_variance_ratio_) 
Explained Variance 
[ 0.57554896 0.42445104] 

とSHをテスト私は、RFE(再帰的機能の撤廃)

model = LogisticRegression() 
rfe = RFE(model, 1) 
fit = rfe.fit(X, Y) 
print(fit.n_features_) 
print(fit.support_) 
print(fit.ranking_) 
1 
[False True] 
[2 1] 

を行うときにF1がより重要である

は、しかしそれは代わりにF2を保つために私に尋ねたOWS? F2はランダムノイズですが、F1は強力な予測因子なので、F1を保つように頼むべきです...なぜF2ですか?

おかげ

答えて

1

あなたはLogisticRegressionモデルを使用しています。これは回帰分析ではなく、分類である。あなたの結果はラベル(数字ではない)として扱われます。良い訓練と予測のために、分類器は各クラスの複数のサンプルを必要とする。しかし、あなたのデータでは、各クラスには1行しか存在しません。したがって、結果はゴミであり、真剣に受け止められない。

これを回帰モデルに置き換えてみると、あなたが思った結果が表示されます。

model = LinearRegression() 
rfe = RFE(model, 1) 
fit = rfe.fit(X, y) 

print(fit.n_features_) 
print(fit.support_) 
print(fit.ranking_) 

# Output 
1 
[ True False] 
[1 2] 
+0

偉大な私はそれがクラシファイアであることに気付かなかった...ありがとうbro –

+0

@JNgまたもう一つ。あなたがそこで行ったPCA()では、あなたはそれを間違って見ています。 PCAは、学習が現在の形よりも簡単な他の次元にデータを変換するために使用されます。機能の重要性をあなたに伝えることはできません。あなたはそれで 'y'を与えられなかったことが分かります。説明された差異は重要ではありません。その列内でのデータの変化量。 –

+0

こんにちはVivekはPCAについて疑問を抱いていましたが、分散が高いと説明すれば、その要因は他の要因よりも使用する意味があるため、より重要です。 –