经典案例鸢尾花分类, 在Keras中使用sklearn调参
生活随笔
收集整理的這篇文章主要介紹了
经典案例鸢尾花分类, 在Keras中使用sklearn调参
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
數(shù)據(jù)集介紹
有5維數(shù)據(jù):花萼長度,花萼寬度,花瓣長度,花瓣寬度,花的種類
花的種類
‘setosa’, ‘versicolor’, ‘virginica’
算例
第一步.包導入
import numpy as np import pandas as pd from keras .models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils#one_hot from sklearn.model_selection import cross_val_score #交叉驗證 from sklearn.model_selection import KFold#K折計算 from sklearn.preprocessing import LabelEncoder#標簽處理 from keras .models import model_from_json #存儲模型第二步.使用Pandas讀取鳶尾花數(shù)據(jù)集, 使用LabelEncoder對類別標簽進行編碼
#隨機種子設置 seed=13 np.random.seed(seed)#導入數(shù)據(jù) df=pd.read_csv('iris.txt') X=df.values[:,0:4].astype(float)#df.values轉(zhuǎn)換為numpy型 Y=df.values[:,4]#類別是一個字符串encoder=LabelEncoder() Y_encoded=encoder.fit_transform(Y)#得到的是012 Y_onehot=np_utils.to_categorical(Y_encoded)#one_hot化第三步.使用Keras創(chuàng)建一個用于鳶尾花分類識別的神經(jīng)網(wǎng)絡
import numpy as np import pandas as pd from keras .models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasClassifier from keras.utils import np_utils#one_hot from sklearn.model_selection import cross_val_score #交叉驗證 from sklearn.model_selection import KFold#K折計算 from sklearn.preprocessing import LabelEncoder#標簽處理 from keras .models import model_from_json #存儲模型#隨機種子設置 seed=13 np.random.seed(seed)#導入數(shù)據(jù) df=pd.read_csv('iris.txt') X=df.values[:,0:4].astype(float)#df.values轉(zhuǎn)換為numpy型 Y=df.values[:,4]#類別是一個字符串encoder=LabelEncoder() Y_encoded=encoder.fit_transform(Y)#得到的是012 Y_onehot=np_utils.to_categorical(Y_encoded)#one_hot化#定義一個神經(jīng)網(wǎng)絡 def baseline_model():model=Sequential()model.add(Dense(7,input_dim=4,activation='tanh'))#神經(jīng)元個數(shù)7個,輸入數(shù)據(jù)4維,激活函數(shù)tanhmodel.add(Dense(3,activation='softmax'))#輸出層,3個類別model.compile(loss='mean_squared_error',optimizer='adam',metrics=['accuracy'])#損失函數(shù),編譯器,評價return modelestimator=KerasClassifier(build_fn=baseline_model,epochs=20,batch_size=1,verbose=1)#包裝成了機器學習模型 #評估系統(tǒng) kfold=KFold(n_splits=10,shuffle=True,random_state=seed)#把數(shù)據(jù)打亂分成10份,每次選1份作為驗證集 result=cross_val_score(estimator,X,Y_onehot,cv=kfold)#交叉驗證print('accuracy of cross validlation, mean %.2f ,std %.2f'%(result.mean(),result.std()))#模型保存estimator.fit(X,Y_onehot) model_json=estimator.model.to_json() with open('model.json','w')as json_file:#保存結(jié)構(gòu),輸入層有幾個維度,輸出層幾個維度,激活函數(shù)是什么json_file.write(model_json)estimator.model.save_weights('model.h5')#權(quán)重存儲 print('saved model to disk')#導入模型做預測 json_file=open('model.json','r') loaded_model_json=json_file.read() json_file.close()loaded_model=model_from_json(loaded_model_json) loaded_model.load_weights('model.h5') print('已經(jīng)從磁盤中讀入了模型')#預測 predicted=loaded_model.predict(X) print('這是概率'+str(predicted)) predicted_label=loaded_model.predict_classes() print('這是類別'+str(predicted_label))第四步.訓練用于鳶尾花分類的神經(jīng)網(wǎng)絡 解讀訓練輸出的日志 了解如何評價神經(jīng)網(wǎng)絡的性能
訓練圖
結(jié)果圖
知識點總結(jié)
Scikit-Learn是一個功能齊全的通用機器學習庫,并提供在深度學習模型中有幫助的方法。
Keras類庫為深度學習模型提供了一個包裝類wrapper,將Keras的深度學習模型包裝成Scikit-Learn中的分類模型或回歸模型,以便于方便地使用Scikit-Learn中的方法和函數(shù)。
KerasClassifier(用于分類模型)
KerasRegression(用于回歸模型)
from keras.wrappers.scikit_learn import KerasClassifier包裝成了機器學習模型
estimator=KerasClassifier(build_fn=baseline_model,epochs=20,batch_size=1,verbose=1)#包裝成了機器學習模型機器學習模型可以做一系統(tǒng)調(diào)參,如網(wǎng)格搜索等,本文進行交叉驗證
作者:電氣工程的計算機萌新-余登武
總結(jié)
以上是生活随笔為你收集整理的经典案例鸢尾花分类, 在Keras中使用sklearn调参的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 公司解散员工赔偿标准扣税吗(公司解散员工
- 下一篇: 北汽威旺m20的驾驶室进风口在哪儿?