在进行K折交叉验证时,我们通常需要将数据集分成K个互不重叠的子集,其中K-1个子集用于训练模型,剩下的一个子集用于测试模型性能。如果需要更新样本点,可以在每次交叉验证之前重新随机划分数据集,或者使用滚动窗口的方法进行交叉验证。
下面是在PyCharm中使用K折交叉验证进行模型训练和测试的示例代码:
from sklearn.model_selection import KFold
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
# 加载波士顿房价数据集
data = load_boston()
X = data.data
y = data.target
# 定义K折交叉验证器
kf = KFold(n_splits=5, shuffle=True, random_state=123)
# 定义线性回归模型
model = LinearRegression()
# 进行K折交叉验证
for train_index, test_index in kf.split(X):
# 获取训练集和测试集
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
# 训练模型
model.fit(X_train, y_train)
# 测试模型
score = model.score(X_test, y_test)
# 输出结果
print("Test score: {:.2f}".format(score))
在这个代码中,我们首先加载了波士顿房价数据集,并定义了一个K折交叉验证器kf
,其中n_splits
参数指定了折数,shuffle
参数指定了是否打乱数据集,random_state
参数指定了随机种子。然后定义了一个线性回归模型model
,并在每个交叉验证的循环中获取训练集和测试集,训练模型并测试模型性能。最后输出测试得分。