5. 数据分割

对于时间序列数据,训练集和测试集的划分应考虑时间顺序,确保训练数据仅包含过去的数据,测试数据用于预测未来趋势。这样可以避免未来数据“泄漏”到训练阶段,导致结果失真。

5.1 分割方法

  1. 时间分割:根据时间顺序划分训练集和测试集。
  2. 划分比例:通常按 80% 的数据用于训练,20% 的数据用于测试。

以下代码实现基于时间顺序的分割。

1. 确定分割点

我们将数据按时间排序,划分为训练集和测试集。

# 确认数据按时间排序
data_features.sort_index(inplace=True)

# 确定分割比例(80% 训练,20% 测试)
split_ratio = 0.8
split_index = int(len(data_features) * split_ratio)

# 划分训练集和测试集
train_data = data_features.iloc[:split_index]
test_data = data_features.iloc[split_index:]

print(f"训练集大小: {train_data.shape}")
print(f"测试集大小: {test_data.shape}")

2. 可视化训练集和测试集

通过可视化展示训练集和测试集的划分效果,确保数据分割合理。

# 可视化训练集和测试集的划分
plt.figure(figsize=(16, 8))
plt.plot(train_data.index, train_data['LandAverageTemperature'], color='blue', label='Training Data')
plt.plot(test_data.index, test_data['LandAverageTemperature'], color='red', label='Testing Data')
plt.axvline(train_data.index[-1], color='black', linestyle='--', label='Split Point')
plt.title('Training and Testing Data Split', fontsize=16)
plt.xlabel('Year', fontsize=14)
plt.ylabel('Temperature (°C)', fontsize=14)
plt.legend()
plt.grid(True)
plt.show()
图片[1]-5. 数据分割-大赛人网

3. 分割结果确认

打印训练集和测试集的时间范围,确保分割符合时间序列的逻辑。

# 确认训练集和测试集的时间范围
print(f"训练集时间范围: {train_data.index.min()} - {train_data.index.max()}")
print(f"测试集时间范围: {test_data.index.min()} - {test_data.index.max()}")

5.2 小结

  1. 时间分割:数据按照时间顺序划分,避免未来数据泄漏到训练集中。
  2. 划分比例:采用 80% 的数据作为训练集,20% 的数据作为测试集。
  3. 可视化:通过图表展示训练集和测试集的划分效果,验证分割的合理性。
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容