完整代码及数据地址
第一部分数据bankloan.xls
第二部分数据sales_data.xls
第三部分数据sales_data.xls
第四部分数据consumption_data.xls
第五部分数据consumption_data.xls
第六部分数据arima_data.xls
第七部分数据consumption_data.xls
第八部分数据menu_orders.xls
对应函数programmer_1
步骤:
导入数据,转换矩阵
调包。from sklearn.linear_model import LogisticRegression as LR
逻辑回归,
from sklearn.linear_model import RandomizedLogisticRegression as RLR
随机森林
输出有效特征、输出相关系数
这里在运行的时候,会有一个warning
。大意说,这个方法在之后会被取消。但是目前我没有找到替代的方法。
DeprecationWarning: Class RandomizedLogisticRegression is deprecated; The class RandomizedLogisticRegression is deprecated in 0.19 and will be removed in 0.21.
有一个Error
,解决方法就是去掉最后一列再进行索引。data.drop('违约', axis=1).columns[rlr_support]
IndexError: boolean index did not match indexed array along dimension 0; dimension is 9 but corresponding boolean dimension is 8
对应函数programmer_2
步骤:
是
、高
、好
正面词为1,相反为负面词。from sklearn.tree import DecisionTreeClassifier as DTC
DataFrame
,获取columns
。用dot
文件进行保存。from sklearn.tree import export_graphviz
对应函数programmer_3
步骤:
output_dim
参数改为了units
。from keras.layers.core import Activation, Dense
、from keras.models import Sequential
nb_epochs
参数改为了epochs
输出图形如下:
对应函数programmer_4
步骤:
k=3
,迭代次数iteration=500
,线程数n_jobs=4
KMeans
模型训练,得到分类结果model.labels_
,聚类中心model_cluster_centers_
DataFrame
输出到新的excel
文件中。输出结果如下:
R F M 类别数目
0 3.455055 -0.295654 0.449123 40
1 -0.149353 -0.658893 -0.271780 559
2 -0.160451 1.114802 0.392844 341
图形如下:
对应函数programmer_5
步骤:
from sklearn.manifold import TSNE
图形如下:
对应函数programmer_6
步骤:
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.stattools import adfuller as ADF
diff().dropna()
from statsmodels.stats.diagnostic import acorr_ljungbox
ARIMA
求得bic
矩阵最小p
、q
值。from statsmodels.tsa.arima_model import ARIMA
ARIMA
模型,得到模型报告model.summary2()
,并且进行预测五天之后model.forecast(5)
出现了这个警告UserWarning: matplotlib is currently using a non-GUI backend, so cannot show the figure
。产生原因是: 调用了多次plt.show()
。解决方案就是绘制子图,使用plt.subplot()
。
还有很多Warning
。比如下面这个RuntimeWarning: overflow encountered in exp
,这个指的是运算精度不够,还有一些被除数不能为零之类的警告。暂时不知道如何处理,使用了warning
进行过滤。
输出结果如下:
差分序列的ADF检验结果为: (-3.1560562366723528, 0.022673435440048861, 0, 35, {'1%': -3.6327426647230316, '5%': -2.9485102040816327, '10%': -2.6130173469387756}, 287.59090907803341)
差分序列的白噪声检验结果为: (array([ 11.30402222]), array([ 0.00077339]))
BIC最小的p值和q值为:0、1
输出图形如下:
对应函数programmer_7
步骤:
DataFrame
来保存分类后的结果threshold=2
的点标记为离群点。绘制散点图输出图形如下:
对应函数programmer_8
步骤:
support=0.2
,最小置信度confidence=0.5
我的理解就是,从第一个特征开始到最后,一直找出支持度高的集合进行遍历所有可能性,详情可以看代码。
输出如下:
转换原始数据至0-1矩阵...
转换完毕。
正在进行第1次搜索...
数目:6...
正在进行第2次搜索...
数目:3...
正在进行第3次搜索...
数目:0...
结果为:
support confidence
e---a 0.3 1.000000
e---c 0.3 1.000000
c---e---a 0.3 1.000000
a---e---c 0.3 1.000000
a---b 0.5 0.714286
c---a 0.5 0.714286
a---c 0.5 0.714286
c---b 0.5 0.714286
b---a 0.5 0.625000
b---c 0.5 0.625000
b---c---a 0.3 0.600000
a---c---b 0.3 0.600000
a---b---c 0.3 0.600000
a---c---e 0.3 0.600000