目錄
keras評估模型
自動評估
手動評估
手動分離資料集
利用交叉驗證
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: jia shilin
'''通過fit()函式分割引數,設定資料集百分比,
'''from keras.models import sequential
from keras.layers import dense
import numpy as np
np.random.seed(100)
# data
dataset = np.loadtxt('pima-indians-diabetes.csv', delimiter=',') # 總共有9維資料,最後乙個維度為0-1標籤
x = dataset[:, 0:8]
y = dataset[:, 8:]
# model
model = sequential()
model.add(dense(12, input_dim=8, activation='relu'))
model.add(dense(12, activation='relu'))
model.add(dense(12, activation='relu'))
model.add(dense(2, activation='sigmoid'))
# compile
model.compile(
loss='binary_corssentropy', optimizer='adam',
metrics=['accuracy'],
)# 訓練模型並評估
model.fit(x=x,y=y,epochs=150, batch_size=20,validation_split=0.2)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: jia shilin
'''手動分離 資料集
使用sciket機器學習庫中train_test_split()函式將資料分割成訓練集合評估資料集
from sklearn.model_selection import train_test_split
'''from keras.models import sequential
from keras.layers import dense
from sklearn.model_selection import train_test_split
import numpy as np
seed = 7 # 可能多次用到該引數
np.random.seed(seed)
# data
dataset = np.loadtxt('diabetes.csv', delimiter=',')
# 分割資料
x = dataset[:, 0:8]
y = dataset[:, 8:]
# 分割資料集
x_train, x_validation, y_train, y_validation = train_test_split(x, y, test_size=0.2, random_state=seed)
# model
model = sequential()
model.add(dense(32, input_dim=8, activation='relu'))
model.add(dense(10, activation='relu'))
model.add(dense(10, activation='relu'))
model.add(dense(10, activation='relu'))
model.add(dense(2, activation='sigmoid'))
# compile
model.compile(
loss='binary_crossentropy',optimizer='adam',
metrics=['accuracy'],
)#train
model.fit(
x_train,y_train,
validation_data=(x_validation,y_validation),#此處不是validation_split
epochs=150,
batch_size=50
)
為什麼交叉驗證
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author: jia shilin
'''將資料集分為k個子集,選取其中乙個為評估資料集,重複上述,
採用k個模型評估結果的平均值作為模型的最終結果,
通常不用與評估深度學習模型,因為計算的開銷比較大,如通常用10個子集,10個模型大大增加了模型的評估時間開銷
使用scikit_learn機器學習庫中的stratifiedkfold類將資料分為10個子集,並用這10個子集建立和評估10個模型,
收集這10個模型的評估得分,通過設定verbose=0來關閉模型的fit()和evaluate()函式的詳細輸出,在每個模型構建完成後,進行評估並輸出評估結果,
在所有模型評估完成後,輸出偶像得分的均值和標準差,來對模型精度魯棒性的估計
'''from keras.models import sequential
from keras.layers import dense
import numpy as np
from sklearn.model_selection import stratifiedkfold
seed = 8
np.random.seed(seed)
# data
dataset = np.loadtxt('pima-indians-diabeters.csv', delimiter=',')
x_data = dataset[:, 0:8]
y_data = dataset[:, 8:]
kfold = stratifiedkfold(n_splits=10, random_state=seed, shuffle=true)
cvscores =
for train, validation in kfold.split(x_data, y_data):
# model
model = sequential()
model.add(dense(18, input_dim=8, activation='relu'))
model.add(dense(18, activation='relu'))
model.add(dense(2, activation='sigmoid'))
# compile
model.compile(
loss='binary_crossentropy',
metrics=['accuracy'],
optimizer='adam',
)# train
model.fit(
x_data[train], y_data[train],
epochs=150,
batch_size=20,
verbose=0,
)# 評估
scores = model.evaluate(x_data[validation], y_data[validation], verbose=0)
# show
print('%s:%.2f%%' % (model.metrics_names[1], scores[1] * 100))
print('%.2f%% (+/- %.2f%%)' % (np.mean(cvscores), np.std(cvscores)))
keras評估模型
當建立好模型並且用來訓練之後,如何評估模型的好壞,準確度又如何呢?三種常用方法 1 使用自動驗證方法 在 fit 函式中增加乙個validation split引數,該引數用來進行驗證效果 該引數可以自由設定,一般設定為20 或者30 也就是測試集佔總資料集的20 或者30 的資料用來進行驗證,其餘...
keras載入模型
說明 該程式是乙個包含兩個隱藏層的神經網路。演示如何載入乙個儲存好的模型。資料集 mnist from future import print function python提供了 future 模組,把下乙個新版本的特性匯入到當前版本,於是我們就可以在當前版本中測試一些新版本的特性。import ...
keras模型融合
1.構建模型 模型1 33次風運動 defmodel1 ipt layer1 dense units 512,input dim input node,kernel initializer normal activation sigmoid name layer1 ipt layer2 dense ...