You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取RandomizedSearchCV最优模型的测试样本预测概率?

嘿,这个需求很常见,我来给你拆解两种思路的具体实现方式,都是可行的:

思路一:直接从RandomizedSearchCV获取预测概率

其实你不用额外重新训练,RandomizedSearchCV训练完成后,已经帮你把最优参数的模型训练好了,存在它的best_estimator_属性里。如果你想拿到交叉验证过程中每个测试数据点的预测概率(也就是每个样本作为测试集时的概率输出),可以配合cross_val_predict函数来实现:

from sklearn.model_selection import cross_val_predict

# 假设你的RandomizedSearchCV实例叫random_search,X是你的特征数据,y是标签
# 指定method='predict_proba'来获取概率输出,cv保持你原来的10折
y_proba_cv = cross_val_predict(random_search.best_estimator_, X, y, cv=10, method='predict_proba')

这个函数会自动完成10折交叉验证:每次用9折数据训练最优参数的模型,对剩下1折的测试数据输出预测概率,最后把所有测试数据的结果按原数据顺序拼接好,完全符合你要的效果。

如果你的需求只是用最优模型对单独的测试集(不是交叉验证里的测试样本)输出概率,那更简单,直接调用:

# X_test是你的外部测试数据
y_proba_test = random_search.best_estimator_.predict_proba(X_test)

思路二:用最优参数重新做交叉验证

如果你更倾向于自己掌控模型的初始化和训练流程,也可以先提取最优参数,再重新构建模型做交叉验证:

# 从RandomizedSearchCV里提取最优参数
best_params = random_search.best_params_

# 替换成你实际使用的模型(比如RandomForestClassifier、LogisticRegression等)
from sklearn.ensemble import RandomForestClassifier
# 用最优参数初始化模型
best_model = RandomForestClassifier(**best_params)

# 同样用cross_val_predict获取交叉验证的预测概率
y_proba_cv = cross_val_predict(best_model, X, y, cv=10, method='predict_proba')

其实这个思路和思路一本质上是一致的,因为random_search.best_estimator_就是用最优参数在全量训练数据上训练好的模型,而cross_val_predict在每个fold里都会重新训练模型,结果是完全匹配的。


内容的提问来源于stack exchange,提问作者machinery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:55:02