2016-08-21 204 views
3

假設我適合以下神經網絡的二元分類問題:如何使用AdaBoost增強基於Keras的神經網絡?

model = Sequential() 
model.add(Dense(21, input_dim=19, init='uniform', activation='relu')) 
model.add(Dense(80, init='uniform', activation='relu')) 
model.add(Dense(80, init='uniform', activation='relu')) 
model.add(Dense(1, init='uniform', activation='sigmoid')) 
# Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 
# Fit the model 
model.fit(x2, training_target, nb_epoch=10, batch_size=32, verbose=0,validation_split=0.1, shuffle=True,callbacks=[hist]) 

我將如何提高基於AdaBoost神經網絡? keras是否有任何命令?

回答

1

Keras本身並未實現adaboost。但是,Keras型號與scikit-learn兼容,因此您可以從此處使用AdaBoostClassifierlink。在編譯它之後,使用model作爲base_estimator,而fit則使用AdaBoostClassifier而不是model

但是,這種方式將無法使用傳遞給fit的參數,如時期數或batch_size,因此將使用默認值。如果默認值不夠好,您可能需要構建自己的類,在您的模型上實現scikit-learn界面,並將適當的參數傳遞給fit

+0

你好,謝謝你的回答。當我插入: 'bdt = AdaBoostClassifier(base_estimator = model)' 'bdt.fit(x2,training_target)'模型是我編譯的keras網絡,它給了我錯誤:* TypeError:無法克隆對象''(type ):它似乎不是一個scikit-learn估計器,因爲它沒有實現'get_params'方法。* – ishido

+0

顯然, keras分類器不是scikit-learn兼容的。有關如何使它們一起工作的詳細信息,請參閱此文章:https://keras.io/scikit-learn-api/ – Ishamael

0

顯然,神經網絡是不與sklearn Adaboost的兼容,看https://github.com/scikit-learn/scikit-learn/issues/1752

+0

歡迎使用堆棧溢出!這是一個邊界[僅限鏈接的答案](// meta.stackexchange.com/q/8231)。你應該擴大你的答案,在這裏包含儘可能多的信息,並使用鏈接僅供參考。 –