【发布时间】:2022-01-24 04:13:47
【问题描述】:
我正在尝试使用超参数调整来优化某个性能指标的分类模型。在我尝试专门针对precision_score 指标调整我的模型之前,我没有收到上述错误;当我只是将我的模型用作正常预测器时,一切都运行得非常顺利,即使我添加了超参数调整也很好。只有当我尝试将其优化到某个指标时,它才会引发此错误。这是相关代码:
scorers = {
'precision_score': make_scorer(precision_score),
'recall_score': make_scorer(recall_score),
'accuracy_score': make_scorer(accuracy_score)
}
rf = RandomForestRegressor()
cv=KFold(n_splits=5,random_state=1,shuffle=False)
rf_rsearch = RandomizedSearchCV(estimator = rf, param_distributions = random_hypparams, scoring=scorers,refit='precision_score', return_train_score=True, n_iter = 50, cv = cv , verbose=2, n_jobs = -1)
rf_rsearch.fit(OS_x, OS_y)
在这段代码中:
- random_hyperparams:只是一个随机超参数网格,用于测试以找到最佳集合。
- OS_x, OS_y 是使用 SMC 过采样的 x 和 y 训练集,具有各自的形状:(1290, 33) (1290,)
错误似乎发生在显示的代码块的最后一行。
【问题讨论】:
-
所有这3个分数只对分类问题有意义,而您使用的是回归模型,它们没有意义。
-
@desertnaut 我在做一个分类问题。
-
那恐怕你用错了模型,显然是 regression 的;试试
RandomForestClassifier。 -
@desertnaut 是的,我意识到这是一个愚蠢的错误,谢谢!我将其更改为分类器并将 make_precision 行更改为 scorer = make_scorer(precision_score, greater_is_better=True, average="weighted") 但现在我收到此错误:目标是多类但平均值 ='binary'。请选择另一个平均设置,[None, 'micro', 'macro', 'weighted'] 之一。我不知道我什么时候收到这个错误,因为我已经定义了平均值
-
请打开一个包含完整详细信息的新问题
标签: python machine-learning scikit-learn hyperparameters