• 银行风控模型的建立


    Q:银行分控模型的建立。包括训练的结果,训练的误差,画出混淆矩阵,不少于两种方法

    1.逻辑回归

     1 import pandas as pd
     2 import numpy as np
     3 # 参数初始化
     4 inputfile = '../data/bankloan.xls'
     5 data = pd.read_excel(inputfile)
     6 X = data.drop(columns='违约')
     7 y = data['违约']
     8 from sklearn.model_selection import train_test_split
     9 from sklearn.linear_model import LogisticRegression
    10 
    11 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
    12 
    13 model = LogisticRegression()
    14 model.fit(X_train, y_train)
    15 y_pred = model.predict(X_test)
    16 from sklearn.metrics import accuracy_score
    17 score = accuracy_score(y_pred, y_test)
    18 print(score)
    19 
    20 
    21 #混淆矩阵
    22 def cm_plot(y, y_pred):
    23   from sklearn.metrics import confusion_matrix #导入混淆矩阵函数
    24   cm = confusion_matrix(y, y_pred) #混淆矩阵
    25   import matplotlib.pyplot as plt #导入作图库
    26   plt.matshow(cm, cmap=plt.cm.Greens) #画混淆矩阵图,配色风格使用cm.Greens,更多风格请参考官网。
    27   plt.colorbar() #颜色标签
    28   for x in range(len(cm)): #数据标签
    29     for y in range(len(cm)):
    30       plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
    31   plt.ylabel('True label') #坐标轴标签
    32   plt.xlabel('Predicted label') #坐标轴标签
    33   return plt
    34 cm_plot(y_test, y_pred)

    2神经网络

    # -*- coding: utf-8 -*-
    """
    Created on Sun Mar 27 19:10:46 2022
    
    @author: 123
    """
    import pandas as pd
    import numpy as np
    from sklearn.model_selection import train_test_split
    inputfile = './bankloan.xls'
    data = pd.read_excel(inputfile)
    X = data.drop(columns='违约')
    y = data['违约']
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
    from keras.models import Sequential
    from keras.layers.core import Dense, Activation
    from keras.layers import  Activation, Dense, Dropout
    
    model = Sequential()
    model.add(Dense(64,input_dim=8,activation='relu'))  #8个特征维度
    # Drop防止过拟合的数据处理方式
    model.add(Dropout(0.5))
    model.add(Dense(64,activation='relu'))
    model.add(Dropout(0.5))
    model.add(Dense(1,activation='sigmoid'))
     
    # 编译模型,定义损失函数,优化函数,绩效评估函数
    model.compile(loss='binary_crossentropy',
                  optimizer='rmsprop',
                  metrics=['accuracy'])     #二元分类,所以指定损失函数为binary_crossentropy
     
    # 导入数据进行训练
    model.fit(X_train,y_train,epochs=200,batch_size=128)   
    #yp = model.predict_classes(X_test).reshape(len(y_test))  # 分类预测
    #print(yp)
    predict_x=model.predict(X_test) 
    classes_x=np.argmax(predict_x,axis=1)
    
    score  = model.evaluate(X_test,y_test,batch_size=128)
    print(score)
    def cm_plot(y, y_pred):
      from sklearn.metrics import confusion_matrix #导入混淆矩阵函数
      cm = confusion_matrix(y, y_pred) #混淆矩阵
      import matplotlib.pyplot as plt #导入作图库
      plt.matshow(cm, cmap=plt.cm.Greens) #画混淆矩阵图,配色风格使用cm.Greens,更多风格请参考官网。
      plt.colorbar() #颜色标签
      for x in range(len(cm)): #数据标签
        for y in range(len(cm)):
          plt.annotate(cm[x,y], xy=(x, y), horizontalalignment='center', verticalalignment='center')
      plt.ylabel('True label') #坐标轴标签
      plt.xlabel('Predicted label') #坐标轴标签
      return plt
    
    cm_plot(y_test,classes_x)

     

  • 相关阅读:
    8-15 globalCompositeOperation阶段练习二
    8-13 canvas专题-阶段练习二(下)
    8-12 canvas专题-阶段练习一(上)
    最长公共字串
    8-23 canvas专题
    8-2 canvas专题-线条样式
    7-81 js课程小结
    7-80 HTML5新增的JS选择器
    VS快捷键教程
    java.text.NumberFormat使用方法
  • 原文地址:https://www.cnblogs.com/kwjl/p/16064025.html
Copyright © 2020-2023  润新知