Sklearn cross_val_score 给出的数字与 model.score 明显不同?
Sklearn cross_val_score gives significantly differnt number than model.score?
我有一个二元分类问题
首先我训练测试将我的数据拆分为:
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
我检查了 y_train,它基本上有两个 类 (1,0) 的 50/50 分割,这就是数据集
当我尝试基本模型时:
model = RandomForestClassifier()
model.fit(X_train, y_train)
model.score(X_train, y_train)
输出是 0.98
或 1% 的差异,具体取决于训练测试拆分的随机状态。
然而,当我尝试 cross_val_score 例如:
cross_val_score(model, X_train, y_train, cv=StratifiedKFold(shuffle=True), scoring='accuracy')
输出是
array([0.65 , 0.78333333, 0.78333333, 0.66666667, 0.76666667])
none数组中的分数竟然接近0.98?
当我尝试得分时 = 'r2' 我得到了
>>>cross_val_score(model, X_train, y_train, cv=StratifiedKFold(shuffle=True), scoring='r2')
array([-0.20133482, -0.00111235, -0.2 , -0.2 , -0.13333333])
有谁知道为什么会这样?我试过 Shuffle
= True
和 False
但没有用。
提前致谢
在你的基础模型中,你计算你在训练语料库上的分数。虽然这是确保您的模型确实从您提供的数据中学习的正确方法,但它并不能确保您的模型在新数据和未见数据上的最终准确性。
不是 100% 确定(我不太了解 scikit-learn),但我希望 cross_val_score
实际上将 X_train
和 y_train
分成训练和一个测试集。
因此,当您计算训练期间未见数据的分数时,准确性会低得多。尝试将这些结果与 model.score(X_test, y_test)
进行比较,应该更接近。
我有一个二元分类问题
首先我训练测试将我的数据拆分为:
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
我检查了 y_train,它基本上有两个 类 (1,0) 的 50/50 分割,这就是数据集
当我尝试基本模型时:
model = RandomForestClassifier()
model.fit(X_train, y_train)
model.score(X_train, y_train)
输出是 0.98
或 1% 的差异,具体取决于训练测试拆分的随机状态。
然而,当我尝试 cross_val_score 例如:
cross_val_score(model, X_train, y_train, cv=StratifiedKFold(shuffle=True), scoring='accuracy')
输出是
array([0.65 , 0.78333333, 0.78333333, 0.66666667, 0.76666667])
none数组中的分数竟然接近0.98?
当我尝试得分时 = 'r2' 我得到了
>>>cross_val_score(model, X_train, y_train, cv=StratifiedKFold(shuffle=True), scoring='r2')
array([-0.20133482, -0.00111235, -0.2 , -0.2 , -0.13333333])
有谁知道为什么会这样?我试过 Shuffle
= True
和 False
但没有用。
提前致谢
在你的基础模型中,你计算你在训练语料库上的分数。虽然这是确保您的模型确实从您提供的数据中学习的正确方法,但它并不能确保您的模型在新数据和未见数据上的最终准确性。
不是 100% 确定(我不太了解 scikit-learn),但我希望 cross_val_score
实际上将 X_train
和 y_train
分成训练和一个测试集。
因此,当您计算训练期间未见数据的分数时,准确性会低得多。尝试将这些结果与 model.score(X_test, y_test)
进行比较,应该更接近。