前言
本文对近期完成的一篇小论文做些总结,以后大论文估计也是基于此研究来进行改进,现对论文完成的整个经过包括实验部分以及论文写作等部分做出总结,以防忘却。论文题目为:《Adaboost ensemble with PSO-SVM for financial distress prediction》。主要思想是将粒子群算法(PSO)优化过的支持向量机(SVM)作为弱分类器,通过集成的方式,将弱分类器集合成强分类器从而提高预测分类精度。
数据获取与处理
本实验所使用的数据来自于CSMAR经济金融研究数据库。取上市公司的财务指标数据作为研究样本。
本实验利用python进行数据处理:
(1)导出Excel格式创建Matlab数据,即.xls格式的数据,然后直接用 pd.read_excel() 将数据读取出。在读.csv格式的数据时遇到一个Bug:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
这里的意思是read_csv以utf-8的编码格式不能正确读取数据,在用linux file 命令查看过数据文件的编码格式后,设置encoding='UTF-16’后就能正确读出数据来了。
(2)使用 pd.concat() 将经营受损(AB)和两年亏损(AD)的公司进行合并,从而得到标签数据集。
(3)python的pandas库中的 isin() 函数很好用,可以用来做各种判断。~ 符号通常可以和isin()搭配使用,可以起到反向选取的作用。详解参考:pandas.DataFrame.isin
(4)to_datetime() 函数能够将数据转换成时间日期。时间日期之间也是可以直接比较滴。详解参考:pandas.to_datetime
(5)保存文件时,可以通过变量转字符串的方式 str(i) 插入到文件名中,代码如下:
for i in range(2014,2019):
st = st_target_1418[(st_target_1418['Annoudt'] >= pd.datetime(i,1,1)) & (st_target_1418['Annoudt'] <= pd.datetime(i,12,31))]
st.to_csv('./data/ST/st_target_' + str