2017-04-18 10 views
1

하나의 문제 선택한 데이터 세트로 예측하려고했을 때 한 가지 문제는 테스트 데이터 세트에서 예측할 경우 특정 기능을 선택한 후에 테스트 데이터 세트 기능이 정렬되지 않는다는 것입니다 왜냐하면 교육 데이터 세트는 기능 선택으로 인해 기능이 적기 때문입니다. 테스트 데이터 세트가 교육 데이터 세트와 동일한 기능을 갖도록 피쳐 선택을 어떻게 적절하게 구현합니까?구현 기능 선택

예 : 나는 당신이 SelectKBest 먼저 다음 transform 테스트 데이터와 피팅에 의해 feature_selector 객체를 생성 할 생각

from sklearn.datasets import load_iris 
from sklearn.feature_selection import SelectKBest 
from sklearn.feature_selection import chi2 
iris = load_iris() 
X, y = iris.data, iris.target 
X.shape 
(150, 4) 
X_new = SelectKBest(chi2, k=2).fit_transform(X, y) 
X_new.shape 
(150, 2) 
+0

... 그리고 * fit_transform''사용 * 해달라고하지만, 단지'transform'. –

+0

@ juanpa.arrivillaga 유일한 문제는 테스트 데이터 세트에서 기능 선택을 구현할 때 교육 데이터 세트와 다른 기능 세트를 얻을 가능성이 있습니까? – user

+1

바로 그 이유 때문에 테스트 데이터에서 선택을하지 않습니다. –

답변

2

당신은 당신의 테스트도 설정 transform ... 그리고 사용 fit_transform, 그러나 다만 transform을 해달라고해야합니다. 이 효과에 SelectKBest 개체, 그래서 뭔가를 저장하도록 요구 : 당신은`당신의 시험이 너무 설정 transform`해야

selector = SelectKBest(chi2, k=2) 
X_train_clean = selector.fit_transform(X_train, y_train) 
X_test_clean = selector.transform(X_test) 
0

. 그래서 같이 :

feature_selector = SelectKBest(chi2, k=2).fit(X_train, y) 
X_train_pruned = feature_selector.transform(X_train) 
X_test_pruned = feature_selector.transform(X_test)