Day Three——使用sklearn和Keras训练模型可视化

Day Three——使用sklearn和Keras训练模型可视化

完整代码及数据地址

第一部分数据bankloan.xls

第二部分数据sales_data.xls

第三部分数据sales_data.xls

第四部分数据consumption_data.xls

第五部分数据consumption_data.xls

第六部分数据arima_data.xls

第七部分数据consumption_data.xls

第八部分数据menu_orders.xls

第一部分——随机森林(RLR)求有效特征,逻辑回归(LR)求相关系数

对应函数programmer_1

步骤:

  1. 导入数据,转换矩阵

  2. 调包。from sklearn.linear_model import LogisticRegression as LR逻辑回归,

    from sklearn.linear_model import RandomizedLogisticRegression as RLR随机森林

  3. 输出有效特征、输出相关系数

这里在运行的时候,会有一个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

第二部分——用决策树(DTC)生成dot文件并保存

对应函数programmer_2

步骤:

  1. 导入数据,将文字转换为1和-1。正面词为1,相反为负面词。
  2. 转换矩阵。用决策树训练,得到模型。from sklearn.tree import DecisionTreeClassifier as DTC
  3. 转换回DataFrame,获取columns。用dot文件进行保存。from sklearn.tree import export_graphviz

第三部分——用Keras神经网络训练数据

对应函数programmer_3

步骤:

  1. 导入数据,转换文字,转换矩阵(同上)
  2. 编译模型,这里需要注意的是output_dim参数改为了unitsfrom keras.layers.core import Activation, Densefrom keras.models import Sequential
  3. 训练模型,这里需要注意的是nb_epochs参数改为了epochs
  4. 画图

输出图形如下:

Day Three——使用sklearn和Keras训练模型可视化_第1张图片

第四部分——用K聚类算法(KMeans)分类并保存数据和画概率密度图

对应函数programmer_4

步骤:

  1. 导入数据,设定聚类簇数目k=3,迭代次数iteration=500,线程数n_jobs=4
  2. KMeans模型训练,得到分类结果model.labels_,聚类中心model_cluster_centers_
  3. 统计各个类别的数目,并构成一个新的DataFrame输出到新的excel文件中。
  4. 绘概率密度图。大致根据每个类别的比例进行绘制。

输出结果如下:

          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

图形如下:

Day Three——使用sklearn和Keras训练模型可视化_第2张图片

Day Three——使用sklearn和Keras训练模型可视化_第3张图片

Day Three——使用sklearn和Keras训练模型可视化_第4张图片

第五部分——用TSNE进行降维处理并进行可视化

对应函数programmer_5

步骤:

  1. 用上一部分得到的数据,进行降维处理。from sklearn.manifold import TSNE
  2. 根据各个类别的不同,绘制散点图

图形如下:

Day Three——使用sklearn和Keras训练模型可视化_第5张图片

第六部分——用ARIMA训练时序模型并进行预测,相关过程进行可视化和检验

对应函数programmer_6

步骤:

  1. 导入数据,绘图调用模块from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
  2. 绘制第一幅自相关图。
  3. 计算原始序列的平稳性检测from statsmodels.tsa.stattools import adfuller as ADF
  4. 计算差分diff().dropna()
  5. 绘制时序图
  6. 绘制第二幅自相关图(差分后)
  7. 绘制偏自相关图
  8. 计算差分序列的平稳性检测
  9. 计算差分序列的白噪声检验from statsmodels.stats.diagnostic import acorr_ljungbox
  10. ARIMA求得bic矩阵最小pq值。from statsmodels.tsa.arima_model import ARIMA
  11. 之后再用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值为:01

输出图形如下:

第一幅自相关图

Day Three——使用sklearn和Keras训练模型可视化_第6张图片

时序图

Day Three——使用sklearn和Keras训练模型可视化_第7张图片

第二幅自相关图(差分后)、偏自相关图

Day Three——使用sklearn和Keras训练模型可视化_第8张图片

第七部分——用K聚类算法(KMeans)分类并可视化标记离群点

对应函数programmer_7

步骤:

  1. 前半部分同第四部分。构造一个新的DataFrame来保存分类后的结果
  2. 计算聚类中心的相对距离
  3. 超过阈值threshold=2的点标记为离群点。绘制散点图

输出图形如下:

Day Three——使用sklearn和Keras训练模型可视化_第9张图片

第八部分——计算各个特征的关联程度

对应函数programmer_8

步骤:

  1. 读取数据,转换为0-1矩阵。设定最小支持度support=0.2,最小置信度confidence=0.5
  2. 根据支持度筛选列数据。创建连接数据,计算连接后的支持度,计算置信度序列,再进行置信度筛选

我的理解就是,从第一个特征开始到最后,一直找出支持度高的集合进行遍历所有可能性,详情可以看代码。

输出如下:

转换原始数据至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

你可能感兴趣的:(大数据,数据分析与挖掘实战)