abu*_*abu 7 python scikit-learn cross-validation grid-search
我想知道返回的分数与如下计算GridSearchCV的R2度量之间的差异。在其他情况下,我收到的网格搜索分数非常负面(同样适用于cross_val_score),我将不胜感激解释它是什么。
from sklearn import datasets
from sklearn.model_selection import (cross_val_score, GridSearchCV)
from sklearn.tree import DecisionTreeRegressor
from sklearn.metrics import accuracy_score, r2_score
from sklearn import tree
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
X = pd.DataFrame(X)
parameters = {'splitter':('best','random'),
'max_depth':np.arange(1,10),
'min_samples_split':np.arange(2,10),
'min_samples_leaf':np.arange(1,5)}
regressor = GridSearchCV(DecisionTreeRegressor(), parameters, scoring = 'r2', cv = 5)
regressor.fit(X, y)
print('Best score: ', regressor.best_score_)
best = regressor.best_estimator_
print('R2: ', r2_score(y_pred = best.predict(X), y_true = y))
Run Code Online (Sandbox Code Playgroud)
在regressor.best_score_上留出的测试折叠最佳参数组合的平均得分R2的。
在您的示例中,cv=5,因此数据将分为训练和测试折叠 5 次。该模型将安装在火车上并在测试中评分。将这 5 个测试分数取平均值即可获得分数。请参阅文档:
“best_score_:best_estimator 的平均交叉验证分数”
对所有参数组合重复上述过程。并将其中的最佳平均分数分配给best_score_.
您可以查看我的其他答案以了解 GridSearchCV 的完整工作
找到最佳参数后,模型将在完整数据上进行训练。
r2_score(y_pred = best.predict(X), y_true = y)
与训练模型的数据相同,因此在大多数情况下,它会更高。
| 归档时间: |
|
| 查看次数: |
11061 次 |
| 最近记录: |