为了确保研究的可重复性,我们构建了一个模拟的能源生产数据集。这个数据集具有以下特征:
让我们首先看看如何生成这个数据集:
图1:模拟能源生产数据可视化。蓝线表示能源生产数据,散点表示缺失值的位置。
从上图中,我们可以清晰地观察到以下特征:
这个数据集为我们研究不同补充方法的效果提供了理想的测试基础。在接下来的分析中,我们将详细探讨如何运用机器学习方法来补充这些缺失值。
机器学习方法的优势
非线性关系处理:在能源生产等实际场景中,变量之间往往存在复杂的非线性关系。机器学习模型能够自动捕捉这些非线性模式,而无需预先指定关系形式。
异常模式识别:在处理非随机缺失时,机器学习方法表现出较强的鲁棒性,能够识别并适应异常模式。
线性回归补充方法实现
我们首先探讨线性回归这一基础但高效的补充方法。以下是详细的实现步骤:
图2:线性回归补充效果可视化。绿线表示补充后的数据,红线表示原始数据。
补充效果的多维度评估
为了全面评估补充效果,我们需要从多个维度进行分析。以下是详细的评估框架:
fromstatsmodels.tsa.seasonalimportseasonal_decompose#统计特征分析original_stats=mock_energy_data_with_missing['Energy_Production'].describe()imputed_stats=filled_data['Energy_Production'].describe()#创建比较表stats_comparison=pd.DataFrame({'Metric':original_stats.index,'OriginalData':original_stats.values,'ImputedData(LinearRegression)':imputed_stats.values})#输出统计比较结果print("数据统计特征对比:")print(stats_comparison)
这个统计分析揭示了以下关键发现:
通过这些初步分析,我们可以看到线性回归方法在保持数据基本特征方面表现良好,但也存在一定的局限性,特别是在处理数据的变异性方面。在下一部分中,我们将进一步探讨更多高级评估指标,以及决策树回归等其他补充方法的表现。
#执行STL分解original_series=mock_energy_data_with_missing['Energy_Production']imputed_series=filled_data['Energy_Production']#考虑每日144个观测值的周期(10分钟采样间隔)original_decompose=seasonal_decompose(original_series.interpolate(),model='additive',period=144)imputed_decompose=seasonal_decompose(imputed_series.interpolate(),model='additive',period=144)#绘制趋势比较plt.figure(figsize=(14,5))plt.plot(original_decompose.trend,label='原始趋势',color='blue')plt.plot(imputed_decompose.trend,label='补充数据趋势',color='green',linestyle='--')plt.title('趋势组件比较:原始数据vs线性回归补充')plt.legend()plt.grid(True)plt.show()#绘制季节性比较plt.figure(figsize=(14,5))plt.plot(original_decompose.seasonal,label='原始季节性',color='blue')plt.plot(imputed_decompose.seasonal,label='补充数据季节性',color='green',linestyle='--')plt.xlim(0,4000)plt.title('季节性组件比较:原始数据vs线性回归补充')plt.legend()plt.grid(True)plt.show()
图4:趋势组件比较。蓝线表示原始数据趋势,绿虚线表示补充数据趋势。
图5:季节性组件比较。展示了原始数据和补充数据的周期性模式。
通过分解分析我们发现:
趋势组件特征:
季节性组件特征:
这些分析结果提示我们,虽然线性回归方法在保持数据的基本时序特性方面表现不错,但在处理极值和突变点方面可能存在局限,所以我们选用一些更好的模型如决策树回归器,来改善这些方面的表现。
决策树回归方法的应用与评估
在观察到线性回归方法的局限性后,我们引入决策树回归器作为一种更灵活的补充方法。决策树的非线性特性使其能够更好地捕捉数据中的复杂模式。
决策树回归器的实现
让我们首先看看如何使用决策树进行缺失值补充:
图6:决策树补充结果可视化。橙线表示决策树补充的数据,红线表示原始数据。
从图中可以直观地看到,决策树方法在保持数据特征方面展现出了以下优势:
补充效果对比分析
让我们通过各项指标来系统比较两种方法的表现:
#统计指标比较stats_comparison['决策树补充数据']=tree_filled_data['Energy_Production'].describe()
核心统计指标对比:
MetricOriginalDataLinearRegressionDecisionTreecount7648.0000008497.0000008497.000000mean185.073509185.073842184.979184std126.816229120.313162120.633636min-7.549833-7.549833-7.54983325%51.79330454.18625853.79747950%256.996772185.197681185.54560575%302.217789298.324435298.531049max415.581945415.581945415.581945