【发布时间】:2018-10-17 06:23:09
【问题描述】:
我正在使用RandomizedSearchCV 通过 10 倍交叉验证和 100 次迭代获得最佳参数。这很好用。但现在我还想从性能最好的模型中获取每个预测测试数据点(如predict_proba)的概率。
如何做到这一点?
我看到两个选项。首先,也许可以直接从RandomizedSearchCV 获得这些概率,或者第二,从RandomizedSearchCV 获得最佳参数,然后再次进行 10 倍交叉验证(使用相同的种子,以便我得到相同的分割) 使用这个最佳参数。
编辑:以下代码对于获得最佳性能模型的概率是否正确? X 是训练数据,y 是标签,模型是我的 RandomizedSearchCV,其中包含一个 Pipeline,其中包含缺失值、标准化和 SVM。
cv_outer = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
y_prob = np.empty([y.size, nrClasses]) * np.nan
best_model = model.fit(X, y).best_estimator_
for train, test in cv_outer.split(X, y):
probas_ = best_model.fit(X[train], y[train]).predict_proba(X[test])
y_prob[test] = probas_
【问题讨论】:
-
RandomizedSearchCV 确实有一个
predict_proba(),它将访问具有最佳参数的拟合模型。那是你要的吗?或者您想对测试折叠中的每个值进行预测? -
@VivekKumar 我已经更新了我的问题。你认为这会奏效吗?
-
请添加您如何定义
model以及您如何使用cv_outer?
标签: python machine-learning scikit-learn grid-search