我想打印来自我的 GridSearchCV 对象的最佳模型的训练和测试得分。我最初的想法是使用 cv_results['best_train_score'] 和 cv_results['best_test_score'],但在查看了文档后,我认为 cv_results 中并没有 ‘best_train_score’ 这个字段。
我还注意到有一个 best_estimator_,但我不确定是否可以用它来打印测试和训练得分。任何帮助都将不胜感激。
回答:
您可以使用已拟合的 GridSearchCV 的 best_estimator_ 来获取最佳模型,然后使用估算器的 score 函数来计算训练和测试的准确率。
如下所示:
from sklearn import svm, datasetsfrom sklearn.model_selection import GridSearchCV, train_test_splitiris = datasets.load_iris()X_train, X_test, y_train, y_test = train_test_split( iris.data, iris.target, test_size=0.2)parameters = {"kernel": ("linear", "rbf"), "C": [1, 10]}svc = svm.SVC()cv = GridSearchCV(svc, parameters)cv.fit(iris.data, iris.target)model = cv.best_estimator_print(f"train score: {model.score(X_train, y_train)}")print(f"test score: {model.score(X_test, y_test)}")
输出:
train score: 0.9916666666666667test score: 1.0