使用 cross_val_score 评估多项式回归
Evaluate Polynomial regression using cross_val_score
我正在尝试使用 cross_val_score
来评估我的回归模型(使用 PolymonialFeatures(degree = 2)
)。正如我在不同的博客文章中指出的那样,我应该将 cross_val_score
与原始 X
、y
值一起使用,而不是 X_train
和 y_train
.
r_squareds = cross_val_score(pipe, X, y, cv=10)
r_squareds
>>> array([ 0.74285583, 0.78710331, -1.67690578, 0.68890253, 0.63120873,
0.74753825, 0.13937611, 0.18794756, -0.12916661, 0.29576638])
这表明我的模型表现不佳,平均 r2 仅为 0.241。这应该是正确的解释吗?
然而,我遇到了一个处理相同数据的 Kaggle 代码,这个人在 X_train
和 y_train
上执行了 cross_val_score
。我试了一下,平均 r2 更好。
r_squareds = cross_val_score(pipe, X_train, y_train, cv=10)
r_squareds.mean()
>>> 0.673
这应该是个问题吗?
这是我的模型的代码:
X = df[['CHAS', 'RM', 'LSTAT']]
y = df['MEDV']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
pipe = Pipeline(
steps=[('poly_feature', PolynomialFeatures(degree=2)),
('model', LinearRegression())]
)
## fit the model
pipe.fit(X_train, y_train)
你第一个解释是正确的。第一个 cross_val_score
正在训练 10 个模型,其中 90%
数据作为训练集,10 个作为验证数据集。我们可以从这些结果中看出,估计器的 r_square 方差相当高。有时模型的表现甚至比直线还要差。
从这个结果我们可以有把握地说模型在这个数据集上表现不佳。
仅使用 cross_val_score
上的训练集获得的结果可能更高,但该分数很可能不能代表您的模型性能,因为数据集可能太小以捕获其所有方差. (第二个 cross_val_score
的训练集只是原始数据集 90% of 60%
的数据集 54%
)
我正在尝试使用 cross_val_score
来评估我的回归模型(使用 PolymonialFeatures(degree = 2)
)。正如我在不同的博客文章中指出的那样,我应该将 cross_val_score
与原始 X
、y
值一起使用,而不是 X_train
和 y_train
.
r_squareds = cross_val_score(pipe, X, y, cv=10)
r_squareds
>>> array([ 0.74285583, 0.78710331, -1.67690578, 0.68890253, 0.63120873,
0.74753825, 0.13937611, 0.18794756, -0.12916661, 0.29576638])
这表明我的模型表现不佳,平均 r2 仅为 0.241。这应该是正确的解释吗?
然而,我遇到了一个处理相同数据的 Kaggle 代码,这个人在 X_train
和 y_train
上执行了 cross_val_score
。我试了一下,平均 r2 更好。
r_squareds = cross_val_score(pipe, X_train, y_train, cv=10)
r_squareds.mean()
>>> 0.673
这应该是个问题吗?
这是我的模型的代码:
X = df[['CHAS', 'RM', 'LSTAT']]
y = df['MEDV']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
pipe = Pipeline(
steps=[('poly_feature', PolynomialFeatures(degree=2)),
('model', LinearRegression())]
)
## fit the model
pipe.fit(X_train, y_train)
你第一个解释是正确的。第一个 cross_val_score
正在训练 10 个模型,其中 90%
数据作为训练集,10 个作为验证数据集。我们可以从这些结果中看出,估计器的 r_square 方差相当高。有时模型的表现甚至比直线还要差。
从这个结果我们可以有把握地说模型在这个数据集上表现不佳。
仅使用 cross_val_score
上的训练集获得的结果可能更高,但该分数很可能不能代表您的模型性能,因为数据集可能太小以捕获其所有方差. (第二个 cross_val_score
的训练集只是原始数据集 90% of 60%
的数据集 54%
)