2017-12-14 3 views
0

그리드가 두 개의 프로세서와 전처리기에 대한 검색뿐만 아니라 다양한 기능 조합을 통해 검색하는 코드를 작성하려고합니다. gridsearchCV에서 RFECV를 사용하여이 작업을 수행했습니다. 그러나 이것은 오래 실행됩니다. 그래서, 나는 그 명령을 뒤집었다. 그리드 검색을 한 다음 RFECV에 넣었습니다. 이제는 어떤 모델이 실제로 최고의 모델에서 선택되었는지 확인하고 인쇄하고 싶습니다. 나는이 웹 사이트에서 몇 가지 해결책을 시도했지만 그 중 누구도 일하지 않았다. 선택한 기능에 어떻게 액세스합니까? grid_dem.get_support(indices=True)grid_dem.support_ 모두 작동하지 않았습니다. 당신이 마지막 두 행에서 볼 수 있듯이gridsearchCV 내의 RFECV에서 선택된 피쳐 검색

pipe = Pipeline([('preprocessing', StandardScaler()), ('rbf_svm', SVC(max_iter=1e6))]) 
param_grid ={'preprocessing': [StandardScaler(), MinMaxScaler(), Normalizer(), RobustScaler()], 
    'rbf_svm__kernel': ['rbf', 'poly', 'linear', 'sigmoid'], 
    'rbf_svm__C': np.logspace(-3,2,5), 'rbf_svm__gamma': np.logspace(-3,2,5)} 

    # {'preprocessing': [StandardScaler(), MinMaxScaler(), Normalizer(), RobustScaler()], 
    # 'rbf_svm': [LogisticRegression(max_iter=1e6)], 
    # 'logisticregression__C': np.logspace(-3,2,5)}] 

grid_dem = GridSearchCV(pipe, param_grid, cv=5,verbose=5,n_jobs=3) 
grid_dem.fit(X_democrat_train,y_democrat_train) 
grid_dem.score(X_democrat_test,y_democrat_test) 
print(grid_dem.best_estimator_) 
rfecv=RFECV(grid_dem, verbose=3) 
print(rfecv) 
print(rfecv.get_support(indices=True)) 
# rfecv=rfecv.fit_transform(X_democrat_train, y_democrat_train) 
# print(rfecv.get_params()) 

, 나는 또한 X를 변환하려고하지만하지 않았다 : AttributeError: 'RFECV' object has no attribute 'support_'

내 코드의 관련 부분은 :이 및 기타 유사한 오류가 발생할 수 어느 쪽이든 일하십시오.

답변

0

gridSearch에 파이프 라인을 보냈습니다. 따라서 best_estimator_은 파이프 라인을 반환합니다. 그러나 grid_dem은 여전히 ​​GridSearchCV 개체입니다. 그래서 분명히 get_support()가 작동하지 않습니다. 그 후에 grid_demRFECV에 전달했지만 fit()을 호출하지 않았습니다. 그 이유는 support_을 사용할 수 없기 때문입니다.

과 같은 코드를 업데이트하십시오 : 당신의 응답을

rfecv=RFECV(grid_dem.best_estimator_, verbose=3) <==Edited 
rfecv.fit(X_democrat_train,y_democrat_train) #<==This is what you want 
print(rfecv.get_support(indices=True)) 
# rfecv=rfecv.fit_transform(X_democrat_train, y_democrat_train) 
# print(rfecv.get_params())mocrat_train,y_democrat_train) 
+0

감사합니다. 귀하의 업데이트를 시도했지만 다음과 같은 오류가 발생합니다 : 'RuntimeError : 분류 프로그램이 "coef_"또는 "feature_importances_"속성을 노출시키지 않습니다. 이걸 내가 어떻게해야합니까? – Kate

+0

@Kate 예. GridSearchCV에는 이러한 속성이 없으므로 RFECV는 이러한 속성 중 하나를 가진 견적 도구와 만 사용할 수 있습니다. 수정 된 답변을 사용해보십시오. –