我使用以下代码通过gridsearchcv
来获取randomforest
的最佳参数。
x_train, x_test, y_train, y_test = train_test_split(X, y, random_state=0)rfc = RandomForestClassifier(random_state=42, class_weight = 'balanced')param_grid = { 'n_estimators': [200, 500], 'max_features': ['auto', 'sqrt', 'log2'], 'max_depth' : [4,5,6,7,8], 'criterion' :['gini', 'entropy']}k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)CV_rfc = GridSearchCV(estimator=rfc, param_grid=param_grid, cv= 10, scoring = 'roc_auc')CV_rfc.fit(x_train, y_train)print(CV_rfc.best_params_)print(CV_rfc.best_score_)
现在,我想将调整后的参数应用到X_test
上。为此,我做了如下操作,
pred = CV_rfc.decision_function(x_test)print(roc_auc_score(y_test, pred))
然而,decision_function
似乎不支持randomforest
,因为我得到了以下错误。
AttributeError: ‘RandomForestClassifier’ object has no attribute ‘decision_function’.
还有其他方法可以做到这一点吗?
如果需要,我很乐意提供更多细节。
回答:
如果您的目的是获取一个模型评分函数,以便该评分可以用于auc_roc_score
,那么您可以使用predict_proba()
y_pred_proba = CV_rfc.predict_proba(x_test)print(roc_auc_score(y_test, y_pred_proba[:,1]))