from tensorflow. keras import layers
import numpy as np
from tensorflow. keras. wrappers. scikit_learn import KerasClassifier
from sklearn. ensemble import VotingClassifier
from sklearn. metrics import accuracy_score
构建多个模型
def mlp_model ( ) :
model = keras. Sequential( [
layers. Dense( 64 , activation= 'relu' , input_shape= ( 784 , ) ) ,
layers. Dropout( 0.2 ) ,
layers. Dense( 64 , activation= 'relu' ) ,
layers. Dropout( 0.2 ) ,
layers. Dense( 64 , activation= 'relu' ) ,
layers. Dropout( 0.2 ) ,
layers. Dense( 10 , activation= 'softmax' )
] )
model. compile ( optimizer= keras. optimizers. SGD( ) ,
loss= keras. losses. SparseCategoricalCrossentropy( ) ,
metrics= [ 'accuracy' ] )
return model
model1 = KerasClassifier( build_fn= mlp_model, epochs= 100 , verbose= 0 )
model2 = KerasClassifier( build_fn= mlp_model, epochs= 100 , verbose= 0 )
model3 = KerasClassifier( build_fn= mlp_model, epochs= 100 , verbose= 0 )
模型集成
ensemble_clf = VotingClassifier( estimators= [
( 'model1' , model1) , ( 'model2' , model2) , ( 'model3' , model3)
] , voting= 'soft' )
ensemble_clf. fit( x_train, y_train)
y_pred = ensemble_clf. predict( x_test)
print ( 'acc: ' , accuracy_score( y_pred, y_test) )