多層感知機-印第安人糖尿病診斷-基於keras的python學習筆記(一)
阿新 • • 發佈:2019-01-14
版權宣告:本文為博主原創文章,未經博主允許不得轉載。https://blog.csdn.net/weixin_44474718/article/details/86219792
函式解釋
np.random.seed()
函式,每次執行程式碼時設定相同的seed,則每次生成的隨機數也相同,如果不設定seed,則每次生成的隨機數都會不一樣。例如:
本例子:
資料集為8個屬性和輸出結果一共9列,為二分類問題(糖尿病為1或非糖尿病為0)
輸出層(1個輸出)
隱藏層(8個神經元)
隱藏層(12個神經元)
可視層(8個輸入)
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
# 設定隨機數種子
np.random.seed(7)
# 匯入資料
dataset = np.loadtxt('pima-indians-diabetes.csv', delimiter=',')
# 分割輸入x和輸出Y x = dataset[:, 0 : 8] 中0 : 8為第0列到8-1=7列
x = dataset[:, 0 : 8]
Y = dataset[:, 8]
# 建立模型
model = Sequential()
#relu為啟用函式
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
#==***sigmoid為啟用函式,二分類一般用這個***==
model.add(Dense(1, activation='sigmoid'))
# 編譯模型
#使用有效的梯度下降演算法adam作為優化器
model.compile(loss='binary_crossentropy' , optimizer='adam', metrics=['accuracy'])
# 訓練模型
#epochs 迭代次數 batch_size 批數
model.fit(x=x, y=Y, epochs=150, batch_size=10)
# 評估模型
scores = model.evaluate(x=x, y=Y)
print('\n%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))
啟用函式:
sigmoid: 一般用於二分類
sgn: 單層神經網路
relu:多層神經網路,更容易收斂,預測效果好