- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码中,我试图理解 best_estimator_
和 best_score_
之间的联系。我认为我应该能够通过对 best_estimator_
的结果进行评分来获得(至少非常接近)best_score_
,如下所示:
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import log_loss
classifier = GridSearchCV(LogisticRegression(penalty='l1'),
{'C':10**(np.linspace(1,6,num=11))},
scoring='neg_log_loss')
classifier.fit(X_train, y_train)
y_pred = classifier.best_estimator_.predict(X_train)
print(f'{log_loss(y_train,y_pred)}')
print(f'{classifier.best_score_}')
但是我得到以下输出(不同运行中的数字变化不大):
7.841241697018637
-0.5470694752031108
我知道 best_score_
将被计算为交叉验证迭代的平均值,但这肯定应该是计算整个集合的指标的近似值(甚至是无偏估计器?) 。我不明白为什么它们如此不同,所以我认为我犯了一个实现错误。
我如何自己计算classifier.best_score_
?
最佳答案
Log_loss 主要是为 predict_proba()
定义的。我假设 GridSearchCV 在内部调用predict_proba,然后计算分数。
请将 predict()
更改为 predict_proba()
,您将看到类似的结果。
y_pred = classifier.best_estimator_.predict_proba(X)
print(log_loss(y_train,y_pred))
print(classifier.best_score_)
在 iris 数据集上,我得到以下输出:
0.165794760809
-0.185370083771
看起来非常接近。
更新:
情况似乎是这样:当您将 'loss_loss'
作为字符串提供给 GridSearchCV 时,this is how它被初始化为一个记分器并传递给 _fit_and_score()
method of GridSearchCV() :
log_loss_scorer = make_scorer(log_loss, greater_is_better=False,
needs_proba=True)
如您所见,needs_proba
为 true,意味着将使用 Predict_proba() 进行评分。
关于python - 了解sklearn GridSearchCV的best_score_和best_estimator_,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47093415/
我对结果感到困惑,可能我没有正确理解交叉验证和 GridSearch 的概念。我遵循了这篇文章背后的逻辑: https://randomforests.wordpress.com/2014/02/02
我一直在试图弄清楚 GridSearchCV 的 best_score_ 参数是如何计算的(或者换句话说,它是什么意思)。documentation说: Score of best_estimator
我正在使用 BayesSearchCV来自 scikit-optimize优化 XGBoost模型以适合我拥有的一些数据。虽然模型拟合得很好,但我对诊断信息中提供的分数感到困惑,无法复制它们。 这是一
我正在尝试在著名的威斯康星癌症数据集(569 个样本,31 个特征 + 目标)上找到适用于乳腺癌样本分类的最佳模型神经网络模型。我正在使用 sklearn 0.18.1。到目前为止我没有使用规范化。我
我希望使用 GridSearchCV 函数中的 best_score_ 参数,但看起来该参数在最新版本的库 spark-sklearn(版本 0.2.3)中不存在。当我尝试使用命令卸载最新版本并重新安
我是一名优秀的程序员,十分优秀!