Skip to content

xuchengzhuo/DC_PV_Power_Predict_2018

 
 

Repository files navigation

DataCastle 2018国能日新光伏功率预测 -- 构建BaseLine

机器学习第一次练手过程,记录于此。

数据加载

使用pandas的read_csv()方法加载数据,然后使用concat()的方法分别将4个训练集和4个测试集合并到一起。

数据探索

  1. 使用head()查看测试集和训练集前5行数据,可以看出训练集比测试集数据多出【实发辐照度】和【实际功率】两列。另外,测试集【id】列只是序号,对算法模型无影响,删除即可。
  2. 使用scatter()绘制【实发辐照度】和【实际功率】数据的散点图,可以看出,两列数据强相关。
  3. 使用info()查看数据基础信息,可以看出训练集和测试集数据并无空值。但时间数据为字符格式,需要处理。
  4. 使用describe()查看数据统计值,可以看出训练集和测试集各列数据并无缺失值。另外可以看出,训练集【实发辐照度】和【实际功率】两列数据50%数据为近似于0,而最大值远大于0。联想夜晚并无光照,故无辐照度和功率,处理数据时可作为参考。
  5. 使用Excel打开训练集和测试集数据,可以看出:
  • 训练集给定3年的数据,而测试集只设计1年,可猜测年份对光伏功率无影响;
  • 所有数据时间秒数皆为0,可猜测其对光伏功率无影响;
  • 月、日、时、分对功率的影响无法判断,可提取处理作为特征,绘制散点图或计算相关性系数查看其与功率的相关性;

特征工程

根据数据探索中的分析,可初步处理数据:

  1. 训练集:
  • 从【时间】列提取月、日、时、分信息,作为新的特征添加到数据中;
  • 删除【时间】列数据,或将其设为行索引(考虑选择模型时,或可使用时间序列模型);
  • 因各特征量纲不同,故进行数据归一化处理;
  1. 测试集:
  • 去除无用的【id】列;
  • 从【时间】列提取月、日、时、分信息,作为新的特征添加到数据中;
  • 进行数据归一化处理;

选择模型,训练、预测数据

  1. 数据量较小,且为回归预测型需求,初步选择SVM模型的回归类型SVR算法;
  2. 因【实发辐照度】为强特征,故先预测实发辐照度,将其添加到测试集中,再预测光伏功率;
  3. 因是比赛数据,测试集无标签,故无法计算测试集准确率;

数据保存与提交

使用pandas的to_csv()方法,按要求保存数据,然后提交到比赛网站即可。

算法改进

  1. 机器学习算法“特征为王”的时代,好的特征工程(如异常值删除、特征过滤、特征组合等)是算法提升的必备过程;
  2. 可以考虑使用2种以上模型预测数据,最后进行融合;
  3. 从专业角度出发进行改进。如本赛题,光伏功率可以使用时间序列法和神经网络等方法进行预测。

附:文件(夹)说明

  1. DC_Data是赛题提供的数据;
  2. main.py 为程序入口代码;
  3. Load_Save_Data.py 为加载和保存数据代码;
  4. Data_Process.py 为数据预处理(特征工程)代码;
  5. Train_Predict.py 为训练、预测数据代码;
  6. DC_PV_Power_Predict_2018.ipynb 为初步拿到数据,在jupyter notebook上进行数据探索过程;
  7. Task_Info.doc 为赛题要求

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 87.1%
  • Python 12.9%