1. 程式人生 > 其它 >神經網路和決策樹

神經網路和決策樹

1、神經網路

'''神經網路測試'''
import pandas as pd
from keras.models import Sequential
from keras.layers.core import Dense, Activation
import numpy as np

# 引數初始化
inputfile = 'C:/Users/86183/Desktop/data/bankloan.xls'
data = pd.read_excel(inputfile)
x_test = data.iloc[:,:8].values
y_test = data.iloc[:,8].values

model 
= Sequential() # 建立模型 model.add(Dense(input_dim = 8, units = 8)) model.add(Activation('relu')) # 用relu函式作為啟用函式,能夠大幅提供準確度 model.add(Dense(input_dim = 8, units = 1)) model.add(Activation('sigmoid')) # 由於是0-1輸出,用sigmoid函式作為啟用函式 model.compile(loss = 'mean_squared_error', optimizer = 'adam') # 編譯模型。由於我們做的是二元分類,所以我們指定損失函式為binary_crossentropy,以及模式為binary # 另外常見的損失函式還有mean_squared_error、categorical_crossentropy等,請閱讀幫助檔案。 # 求解方法我們指定用adam,還有sgd、rmsprop等可選 model.fit(x_test, y_test, epochs
= 1000, batch_size = 10) predict_x=model.predict(x_test) classes_x=np.argmax(predict_x,axis=1) yp = classes_x.reshape(len(y_test)) def cm_plot(y, yp): from sklearn.metrics import confusion_matrix cm = confusion_matrix(y, yp) import matplotlib.pyplot as plt plt.matshow(cm, cmap=plt.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,yp).show()# 顯示混淆矩陣視覺化結果 score = model.evaluate(x_test,y_test,batch_size=128) # 模型評估 print(score)

執行結果

 

 

2、決策樹

# -*- coding: utf-8 -*-

# 程式碼5-2

import pandas as pd
# 引數初始化
filename = 'C:/Users/86183/Desktop/data/bankloan.xls'
data = pd.read_excel(filename)  # 匯入資料

# 資料是類別標籤,要將它轉換為資料
# 用1來表示“好”“是”“高”這三個屬性,用-1來表示“壞”“否”“低”

x = data.iloc[:,:8].astype(int)
y = data.iloc[:,8].astype(int)


from sklearn.tree import DecisionTreeClassifier as DTC
dtc = DTC(criterion='entropy')  # 建立決策樹模型,基於資訊熵
dtc.fit(x, y)  # 訓練模型

# 匯入相關函式,視覺化決策樹。
# 匯出的結果是一個dot檔案,需要安裝Graphviz才能將它轉換為pdf或png等格式。
from sklearn.tree import export_graphviz
x = pd.DataFrame(x)

"""
string1 = '''
edge [fontname="NSimSun"];
node [ fontname="NSimSun" size="15,15"];
{
'''
string2 = '}'
"""

with open("C:/Users/86183/Desktop/data/tree.dot", 'w') as f:
    export_graphviz(dtc, feature_names = x.columns, out_file = f)
    f.close()


from IPython.display import Image
from sklearn import tree
import pydotplus

dot_data = tree.export_graphviz(dtc, out_file=None,  #regr_1 是對應分類器
                         feature_names=data.columns[:8],   #對應特徵的名字
                         class_names=data.columns[8],    #對應類別的名字
                         filled=True, rounded=True,
                         special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_png('C:/Users/86183/Desktop/data/example.png')    #儲存影象
Image(graph.create_png())

結果