chelseaNB1 2023-01-26 16:39 采纳率: 75.7%
浏览 36
已结题

请问cross_val_score的scoring参数获得的r2得分是训练集还是测试集的分数

最近在复习python数据建模。请问交叉验证cross_val_score的scoring参数获得的r2得分是训练集还是测试集的分数?我看讲解就说是模型的得分。
还有一个就是GridSearchCV网格搜索后获得模型最优分数,同上,是训练集分数还是测试集分数?代码附在下方。有帮助必采纳!
1.cross_val_score

#交叉验证01⽰例:K折叠交叉验证
import numpy as np
import sklearn.model_selection as ms
import sklearn.naive_bayes as nb
x, y = [], [] #输⼊,输出
#读取数据⽂件
with open("D:\\pythonProject3\\learning\\resource\\multiple1.txt", "r") as f:
    for line in f.readlines():
        data = [float(s) for s in line.split(",")]
        x.append(data[:-1]) #输⼊样本:取从第⼀列到导数第⼆列
        y.append(data[-1]) #输出样本:取最后⼀列
train_x = np.array(x)
train_y = np.array(y, dtype=int)
#划分训练集和测试集
#train_x, test_x, train_y, test_y = ms.train_test_split(x, y, test_size=0.25, random_state=7)
#创建⾼斯朴素⻉叶斯分类器对象
model = nb.GaussianNB()
#先做交叉验证,如果得分结果可以接受,再执⾏训练和预测
pws = ms.cross_val_score(model, x, y,
                                cv=5,  #折叠数量
                                scoring='precision_weighted') #查准率
print("precision:", pws.mean())
rws = ms.cross_val_score(model, x, y, cv=5,
                                    scoring='recall_weighted') #召回率
print("recall:", rws.mean())
f1s = ms.cross_val_score(model, x, y, cv=5,
                                    scoring='f1_weighted') #F1得分
print("f1:", f1s.mean())
acc = ms.cross_val_score(model, x, y,cv=5,
                                    scoring='accuracy') #准确率
print("acc:", acc.mean())

2.GridSearchCV

#⽹格搜索⽰例
import numpy as np
import sklearn.model_selection as ms
import sklearn.svm as svm
x, y = [], []
with open("D:\\pythonProject3\\learning\\resource\\multiple2.txt", "r") as f:
    for line in f.readlines():
        data = [float(s) for s in line.split(",")]
        x.append(data[:-1]) #输⼊
        y.append(data[-1]) #输出
x = np.array(x)
y = np.array(y, dtype=int)
#通过⽹格搜索确定最优参数组合
#定义参数字典
params = [
          {"kernel": ["linear"],
           "C": [1, 10, 100, 1000]
          },
          {"kernel": ["poly"],
           "C": [1],
           "degree": [2, 3]
          },
          {"kernel": ["rbf"],
           "C": [1, 10, 100, 1000],
           "gamma": [1, 0.1, 0.01, 0.001]
          }
]
model = ms.GridSearchCV(svm.SVC(), params, cv=5) #创建⽹格搜索对象
model.fit(x, y) #训练
print("best_score_:", model.best_score_) #最优分数
print("best_params_:\n", model.best_params_) #最优参数组合
  • 写回答

2条回答 默认 最新

  • 快撑死的鱼 2023-01-26 19:07
    关注

    回答不易,求求您采纳点赞哦

    cross_val_score函数中的scoring参数获得的R2得分是测试集的分数。交叉验证(cross-validation)是一种评估模型泛化能力的方法,它将训练集分成若干个互不重叠的部分,每次使用其中一部分作为测试集,其余部分作为训练集,计算模型在测试集上的表现。因此cross_val_score在计算R2得分时,一般是基于测试集上的表现来得出的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 创建了问题 1月26日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?