如何在sklearn中获得随机森林中的决策函数
How to get decision function in randomforest in sklearn
我正在使用以下代码通过 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'.
还有其他方法吗?
如果需要,我很乐意提供更多详细信息。
您可以使用 predict() 方法或使用 best_estimator_
获得优化的随机森林模型
如果您打算获得一个模型评分函数,以便评分可用于 auc_roc_score
,那么您可以选择 predict_proba()
y_pred_proba = CV_rfc.predict_proba(x_test)
print(roc_auc_score(y_test, y_pred_proba[:,1]))
你的代码,
pred = CV_rfc.decision_function(x_test)
print(roc_auc_score(y_test, pred))
让我觉得您正在尝试使用经过训练的模型进行预测。
如果你想获得预测标签,你可以这样做,
pred = CV_rfc.predict(x_test)
然后输出将是 class 个标签,例如 [1, 2, 1, ... ]
如果你想获得 class 概率,你可以像这样使用 predict_proba
pred = CV_rfc.predict_proba(x_test)
我正在使用以下代码通过 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'.
还有其他方法吗?
如果需要,我很乐意提供更多详细信息。
您可以使用 predict() 方法或使用 best_estimator_
获得优化的随机森林模型如果您打算获得一个模型评分函数,以便评分可用于 auc_roc_score
,那么您可以选择 predict_proba()
y_pred_proba = CV_rfc.predict_proba(x_test)
print(roc_auc_score(y_test, y_pred_proba[:,1]))
你的代码,
pred = CV_rfc.decision_function(x_test)
print(roc_auc_score(y_test, pred))
让我觉得您正在尝试使用经过训练的模型进行预测。
如果你想获得预测标签,你可以这样做,
pred = CV_rfc.predict(x_test)
然后输出将是 class 个标签,例如 [1, 2, 1, ... ]
如果你想获得 class 概率,你可以像这样使用 predict_proba
pred = CV_rfc.predict_proba(x_test)