带洗牌的交叉验证
回顾一下,交叉验证是将数据多次划分为训练集和测试集的过程。每次划分时,都会选择一组不同的训练集和测试集。在本练习中,您将对之前的公司价值数据执行传统的 ShuffleSplit 交叉验证。稍后我们会介绍在时间序列数据上需要做哪些调整。我们使用的数据是多家大型公司的同一份历史价格数据。
工作区中已提供线性回归对象实例(model)以及用于评分的函数 r2_score()。同时,数据已存放在数组 X 和 y 中。我们还提供了一个辅助函数(visualize_predictions())用于可视化结果。
本练习是课程的一部分
Python 中的时间序列机器学习
练习说明
- 初始化一个包含 10 次划分的 ShuffleSplit 交叉验证对象。
- 使用该对象遍历每一次交叉验证划分。每次迭代:
- 使用训练索引拟合模型。
- 使用测试索引生成预测,基于预测计算模型的评分($R^2$),并收集结果。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import ShuffleSplit and create the cross-validation object
from sklearn.model_selection import ShuffleSplit
cv = ____(____, random_state=1)
# Iterate through CV splits
results = []
for tr, tt in cv.____(X, y):
# Fit the model on training data
____(X[tr], y[tr])
# Generate predictions on the test data, score the predictions, and collect
prediction = ____(X[tt])
score = r2_score(____, ____)
results.append((prediction, score, tt))
# Custom function to quickly visualize predictions
visualize_predictions(results)