银行分控模型的建立

银行分控模型的建立

 

  1、基于神经网络算法进行模型建立分析

 

 1 #导入库
 2 import pandas as pd
 3 from keras.models import Sequential
 4 from keras.layers.core import Dense, Activation
 5 from sklearn.linear_model import LogisticRegression as LR
 6 import numpy as np
 7 
 8 
 9 #读取数据
10 data = pd.read_excel("D:\\unimportant\\bankloan.xls")
11 x = data.iloc[:,:8].values
12 y = data.iloc[:,8].values
13 
14 #建立模型
15 model = Sequential()
16 model.add(Dense(input_dim = 8, units = 16))
17 model.add(Activation('relu'))  #用relu函数作为激活函数,能够大幅提供准确度
18 model.add(Dense(input_dim = 16, units = 1))
19 model.add(Activation('sigmoid'))  #由于是0-1输出,用sigmoid函数作为激活函数
20 model.compile(loss = 'mean_squared_error', optimizer = 'adam')
21 #编译模型。由于我们做的是二元分类,所以我们指定损失函数为binary_crossentropy,以及模式为binary
22 #另外常见的损失函数还有mean_squared_error、categorical_crossentropy等,请阅读帮助文件。
23 #求解方法我们指定用adam,还有sgd、rmsprop等可选
24 model.fit(x, y, epochs = 100, batch_size = 10)  #训练模型
25 
26 #损失值
27 score  = model.evaluate(x,y,batch_size=128)  #模型评估
28 print("分类预测损失值:",score)
29 
30 lr = LR()  # 建立逻辑回归模型
31 
32 lr.fit(x, y)  # 用筛选后的特征数据来训练模型
33 
34 
35 print('模型的平均准确度为:%s' % lr.score(x, y))
36 #分类
37 yp = model.predict(x).reshape(len(y))  # 分类预测
38 yp = yp.astype(np.int32)
39 
40 #画出混淆矩阵图
41 print("混淆矩阵图:\n")
42 from cm_plot import *  # 导入自行编写的混淆矩阵可视化函数
43 
44 cm_plot(y,yp).show()  # 显示混淆矩阵可视化结果

cm_plot函数:

 1 def cm_plot(y, yp):
 2   
 3   from sklearn.metrics import confusion_matrix #µ¼Èë»ìÏý¾ØÕóº¯Êý
 4 
 5   cm = confusion_matrix(y, yp) #»ìÏý¾ØÕó
 6   
 7   import matplotlib.pyplot as plt #µ¼Èë×÷ͼ¿â
 8   plt.matshow(cm, cmap=plt.cm.Greens) #»­»ìÏý¾ØÕóͼ£¬ÅäÉ«·ç¸ñʹÓÃcm.Greens£¬¸ü¶à·ç¸ñÇë²Î¿¼¹ÙÍø¡£
 9   plt.colorbar() #ÑÕÉ«±êÇ©
10   
11   for x in range(len(cm)): #Êý¾Ý±êÇ©
12     for y in range(len(cm)):
13       plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
14   
15   plt.ylabel('True label') #×ø±êÖá±êÇ©
16   plt.xlabel('Predicted label') #×ø±êÖá±êÇ©
17   return plt

结果展示:

 

 

  2、ID3决策树算法模型分析

  

 1 import pandas as pd
 2 
 3 
 4 # 参数初始化
 5 
 6 
 7 filename = "D:\\unimportant\\bankloan.xls"
 8 
 9 
10 data = pd.read_excel(filename) # 导入数据
11 
12 
13 x = data.iloc[:,:8].astype(int)
14 
15 
16 y = data.iloc[:,8].astype(int)
17 
18 
19 from sklearn.tree import DecisionTreeClassifier as DTC
20 
21 
22 dtc = DTC(criterion='entropy')  # 建立决策树模型,基于信息熵
23 
24 
25 dtc.fit(x, y)  # 训练模型
26 
27 # 导入相关函数,可视化决策树。
28 
29 
30 # 导出的结果是一个dot文件,需要安装Graphviz才能将它转换为pdf或png等格式。
31 
32 
33 from sklearn.tree import export_graphviz
34 
35 
36 x = pd.DataFrame(x)
37 
38 
39 
40 with open("tree.dot", 'w') as f:
41 
42 
43     export_graphviz(dtc, feature_names = x.columns, out_file = f)
44 
45 
46     f.close()
47 
48 
49 
50 from IPython.display import Image  
51 
52 
53 from sklearn import tree
54 
55 
56 import pydotplus 
57 
58 
59 dot_data = tree.export_graphviz(dtc, out_file=None,  #regr_1 是对应分类器
60 
61 
62                          feature_names=data.columns[:8],   #对应特征的名字
63 
64 
65                          class_names=data.columns[8],    #对应类别的名字
66 
67 
68                          filled=True, rounded=True,  
69 
70 
71                          special_characters=True)  
72 
73 
74 graph = pydotplus.graph_from_dot_data(dot_data)  
75 
76 
77 graph.write_png('example.png')    #保存图像
78 
79 
80 Image(graph.create_png()) 
81 
82 import matplotlib.pyplot as plt
83 
84 img = plt.imread('example.png')
85 
86 fig = plt.figure('show picture')
87 
88 plt.imshow(img)

 

结果展示:

 

posted @ 2022-03-27 22:27  木彳  阅读(85)  评论(0编辑  收藏  举报