2017-12-07 4 views
0

나는 F1에서재귀 기능은 제거가 (RFE) SKLearn는

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

나의 이해 테스트 테이블을 생성하고 F2는 당신이 F1이 결과에 강한 상관 관계를 볼 수있는 결과를

을 예측하는 시도 F2는 내가 기대하고 쉬 무엇을 어느 내가

pca = PCA(n_components=2) 
fit = pca.fit(X) 
print("Explained Variance") 
print(fit.explained_variance_ratio_) 
Explained Variance 
[ 0.57554896 0.42445104] 

을 테스트

랜덤 노이즈를하다 내가 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이

그러나 더 중요한 OWS 대신 F2를 유지달라고? 그것은 F2가 무작위 잡음 인 반면 F1은 강력한 예측 인자이기 때문에 F1을 유지할 것을 요구해야합니다 ... 왜 F2입니까?

감사

답변

1

당신은 LogisticRegression 모델을 사용하고 있습니다. 이것은 분류 자이며 회귀자가 아닙니다. 여기에 귀하의 결과는 레이블 (숫자가 아닌)로 취급됩니다. 좋은 훈련과 예측을 위해 분류자는 각 클래스의 여러 샘플을 필요로합니다. 그러나 데이터에는 각 클래스에 대해 단일 행만 있습니다. 따라서 결과는 쓰레기이므로 심각하게 다루어서는 안됩니다.

회귀 모델로 바꾸어보십시오. 그러면 예상했던 결과가 나타납니다.

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

위대한 나는 그것이 분류 자임을 알아 차리지 못했습니다 ... 고마워요. –

+0

@JNg 또한 한 가지 더. 당신이 거기서 한 PCA()에서, 당신은 그것을 잘못보고 있습니다. PCA는 학습을 현재 형태보다 쉬운 다른 차원으로 데이터를 변환하는 데 사용됩니다. 그래서 그것은 당신에게 기능의 중요성을 말할 수 없습니다. 당신은 그것에서'y'를 제공하지 않았 음을 알 수 있습니다. 설명 된 분산은 중요하지 않습니다. 데이터가 해당 열에서 얼마나 다양합니다. –

+0

안녕하세요 Vivek는 PCA에 대해 궁금한 점이 있습니다. Variance가 높다는 것을 설명하면, 그 요인이 다른 요인보다 사용하기에 더 의미가 있다는 것을 의미해야합니다. –