Внедрение Keras NN в качестве мета-учеников - Mlens: ансамбль / укладка - PullRequest
0 голосов
/ 06 октября 2019

Просто интересно, есть ли у кого-нибудь опыт работы с пакетом Mlens Python и использованием нейронной сети (с прямой связью) в качестве конечного мета-ученика?

Вот код ниже для иллюстрации:

ensemble = SuperLearner(scorer=accuracy_score, verbose=2)
ensemble.add([RandomForestClassifier(), SVC()])
ensemble.add_meta(INSERT_KERAS_MODEL_HERE())
ensemble.fit(preprocesser.fit_transform(X_train), y_train)


preds = ensemble.predict(preprocesser.transform(X_test))
print("Fit data:\n%r" % ensemble.data)
print("Prediction score: %.3f" % accuracy_score(preds, y_test))

В идеале модель Keras должна выглядеть примерно так?

def FFDNN():
    DNN = Sequential()
    DNN.add(Dense(128, activation='relu',  input_dim=1414))
    DNN.add(Dropout(0.2))
    DNN.add(Dense(64, activation='relu'))
    DNN.add(Dropout( 0.1))
    DNN.add(Dense( 36, activation='relu'))
    DNN.add(Dense(1,activation='sigmoid'))
    DNN.compile(loss = 'binary_crossentropy',
                optimizer ='adam', metrics =['accuracy'])
    return DNN

early_stopping = EarlyStopping(monitor='val_loss', patience=100)
checkpoint = ModelCheckpoint(filepath='best_model.h5',
                             monitor='val_loss', save_best_only=True)
pipe = Pipeline(steps=[('preprocessor', preprocesser),
                      ('classifier', KerasClassifier(FFDNN, epochs=600, batch_size=50,
                                                     verbose=1, callbacks = [early_stopping,checkpoint],
                                                     validation_split=0.2))])

#training Keras model
pipe.fit(X_train, y_train)

Так будет ли конечный продукт работать примерно так?

def FFDNN():
    DNN = Sequential()
    DNN.add(Dense(128, activation='relu',  input_dim=input_dim))
    DNN.add(Dropout(0.2))
    DNN.add(Dense(64, activation='relu'))
    DNN.add(Dropout( 0.1))
    DNN.add(Dense( 36, activation='relu'))
    DNN.add(Dense(1,activation='sigmoid'))
    DNN.compile(loss = 'binary_crossentropy',
                optimizer ='adam', metrics =['accuracy'])
    return DNN

ensemble = SuperLearner(scorer=accuracy_score)
ensemble.add([RandomForestClassifier(), LogisticRegression()])
ensemble.add([LogisticRegression(), SVC()])
ensemble.add_meta(KerasClassifier(FFDNN, epochs=600, batch_size=50, verbose=1))

ensemble.fit(preprocesser.fit_transform(X_train), y_train)
preds = ensemble.predict(preprocesser.transform(X_test))
print("Fit data:\n%r" % ensemble.data)
print("Prediction score: %.3f" % accuracy_score(preds, y_test))

Не стесняйтесь поделиться некоторыми примерами, я 'Интересно, можно ли использовать пакет Mlens или я должен реализовать его вручную?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...