使用keras模型和sklearn庫做機器學習任務

2021-07-28 13:50:57 字數 1295 閱讀 8535

keras是python中比較流行的深度學習庫,但是keras本身關注的是深度學習。而python中的scikit-learn庫是建立在scipy上的,有著比較有效的數值計算能力。sklearn是乙個具有全特徵的通用性的機器學習庫,它提供了很多在深度學習中可以用到的工具。舉個例子:

1.可以用sklearn中的k-fold交叉驗證方法來對模型進行評估

2.模型引數的估計和尋找

keras提供了深度學習模型的簡便包裝,可以在sklearn中被用來做分類和回歸。在本片文章中,我們舉這麼乙個例子:使用keras建立神經網路分類器——kerasclassifier,並在scikit-learn庫中使用這個分類器來對uci的pima indians資料集進行分類。

利用keras進行分類或者回歸,主要是利用keras中的兩個類,乙個是kerasclassifier,另乙個是kerasregressor。這兩個類帶有引數build_fn。build_fn是你建立的keras模型的名稱。在建立乙個keras模型時,務必要把完成模型的定義,編譯和返回。在這裡我們假設我們建立的模型叫做create_model()

def create_model():

# create model

model = sequential()

model.add(dense(12, input_dim=8, init='uniform', activation='relu'))

model.add(dense(8, init='uniform', activation='relu'))

model.add(dense(1, init='uniform', activation='sigmoid'))

# compile model

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

return model

將建立好的模型通過引數build_fn傳遞到kerasclassifier中,並且定義其他的引數選項nb_epoch=150,batch_size=10.kerasclassifier會自動呼叫fit方法。

在sklearn中,我們使用它cross_validation的包中的stratifiedkfold來進行10折交叉驗證,使用cross_val_score來對模型進行評價。

kfold = stratifiedkfold(y=y, n_folds=10, shuffle=true, random_state=seed)

results = cross_val_score(model, x, y, cv=kfold)

使用keras模型和sklearn庫做機器學習任務

keras是python中比較流行的深度學習庫,但是keras本身關注的是深度學習。而python中的scikit learn庫是建立在scipy上的,有著比較有效的數值計算能力。sklearn是乙個具有全特徵的通用性的機器學習庫,它提供了很多在深度學習中可以用到的工具。舉個例子 1.可以用skle...

使用Keras訓練模型二三事兒

資料時tensor格式時,會建議使用steps per epoch,validation steps這些引數,但是使用這些引數時非常容易出現oom記憶體溢位情況 hist model.fit data lable cfg train dir validation data x1,y1 steps p...

keras評估模型

當建立好模型並且用來訓練之後,如何評估模型的好壞,準確度又如何呢?三種常用方法 1 使用自動驗證方法 在 fit 函式中增加乙個validation split引數,該引數用來進行驗證效果 該引數可以自由設定,一般設定為20 或者30 也就是測試集佔總資料集的20 或者30 的資料用來進行驗證,其餘...