神经网络贷款风险评估(base on keras and python )
生活随笔
收集整理的這篇文章主要介紹了
神经网络贷款风险评估(base on keras and python )
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
????用我兒子的話說,有一天啊,小烏龜遇見小兔子………
????有一天,我在網(wǎng)上看到這樣一片文章,決策書做貸款決策分析。
貸還是不貸:如何用Python和機器學(xué)習(xí)幫你決策?
import pandas as pd df = pd.read_csv('loans.csv')#print(df.head())X = df.drop('safe_loans', axis=1)y = df.safe_loans#change categoricalfrom sklearn.preprocessing import LabelEncoder from collections import defaultdict d = defaultdict(LabelEncoder) X_trans = X.apply(lambda x: d[x.name].fit_transform(x)) X_trans.head()#X_trans.to_excel('X_trans.xls') #random take train and testfrom sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_trans, y, random_state=1) #call decision tree from sklearn import tree clf = tree.DecisionTreeClassifier(max_depth=8) clf = clf.fit(X_train, y_train)test_rec = X_test.iloc[1,:] clf.predict([test_rec])y_test.iloc[1] from sklearn.metrics import accuracy_score print(accuracy_score(y_test, clf.predict(X_test)))????這篇文章寫的非常好,從中學(xué)到好多,但是計算的正確率不太高,8層的決策樹正確率才能達到0.645
0.645480347467????我用神經(jīng)網(wǎng)絡(luò)重新做了計算
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Aug 17 21:14:08 2017@author: luogan """#read data import pandas as pd df = pd.read_csv('loans.csv')#print(df.head())#X = df.drop('safe_loans', axis=1)X = df.drop(['safe_loans' ],axis=1) y = df.safe_loans#change categoricalfrom sklearn.preprocessing import LabelEncoder from collections import defaultdict d = defaultdict(LabelEncoder) X_trans = X.apply(lambda x: d[x.name].fit_transform(x)) X_trans.head()#X_trans.to_excel('X_trans.xls') ############## data_train=X_trans data_max = data_train.max() data_min = data_train.min() data_mean = data_train.mean() # # data_std = data_train.std() X_train1 = (data_train-data_max)/(data_max-data_min)y=0.5*(y+1) #random take train and testfrom sklearn.cross_validation import train_test_split x_train, x_test, y_train, y_test = train_test_split(X_train1, y, random_state=1)#x_train.to_excel('xx_trans.xls') #y_train.to_excel('y_trans.xls') #call decision tree #from sklearn import tree #clf = tree.DecisionTreeClassifier(max_depth=10) #clf = clf.fit(X_train, y_train)from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activationmodel = Sequential() #建立模型 model.add(Dense(input_dim = 12, output_dim = 48)) #添加輸入層、隱藏層的連接 model.add(Activation('tanh')) #以Relu函數(shù)為激活函數(shù)model.add(Dense(input_dim = 48, output_dim = 48)) #添加隱藏層、隱藏層的連接 model.add(Activation('relu')) #以Relu函數(shù)為激活函數(shù) model.add(Dropout(0.2))model.add(Dense(input_dim = 48, output_dim = 36)) #添加隱藏層、隱藏層的連接 model.add(Activation('relu')) #以Relu函數(shù)為激活函數(shù) model.add(Dropout(0.2)) model.add(Dense(input_dim = 36, output_dim = 36)) #添加隱藏層、隱藏層的連接 model.add(Activation('relu')) #以Relu函數(shù)為激活函數(shù)model.add(Dense(input_dim = 36, output_dim = 12)) #添加隱藏層、隱藏層的連接 model.add(Activation('relu')) #以Relu函數(shù)為激活函數(shù) model.add(Dense(input_dim = 12, output_dim = 12)) #添加隱藏層、隱藏層的連接 model.add(Activation('relu')) #以Relu函數(shù)為激活函數(shù)model.add(Dense(input_dim = 12, output_dim = 1)) #添加隱藏層、輸出層的連接 model.add(Activation('sigmoid')) #以sigmoid函數(shù)為激活函數(shù) #編譯模型,損失函數(shù)為binary_crossentropy,用adam法求解 model.compile(loss='mean_squared_error', optimizer='adam') model.fit(x_train.values, y_train.values, nb_epoch = 70, batch_size = 2000) #訓(xùn)練模型r = pd.DataFrame(model.predict_classes(x_test.values)) ''' r = pd.DataFrame(model.predict(x_test.values)) rr=r.values tr=rr.flatten()for i in range(tr.shape[0]):if tr[i]>0.5:tr[i]=1else:tr[i]=0 ''' from sklearn.metrics import accuracy_score print(accuracy_score(y_test, r)) 0.650640749978????我對神經(jīng)網(wǎng)絡(luò)進行了各種優(yōu)化,正確率一直上不去,計算結(jié)果還不如我的神經(jīng)網(wǎng)絡(luò)股票預(yù)測代碼
????我不高興,非常不高興,65%的正確率是我無法容忍的,讓我郁悶的是,我一直深愛的神經(jīng)網(wǎng)絡(luò)居然也這么無力
不能這樣下去,下回我們將采用傳說中的xgboost試一下
百度云代碼下載
提取碼 ???? jc5x
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的神经网络贷款风险评估(base on keras and python )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logsic 回归
- 下一篇: 七层神经网络 PK logstic