Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用AdaBoost增强基于Keras的神经网络?_Python_Neural Network_Keras_Adaboost_Boosting - Fatal编程技术网

Python 如何使用AdaBoost增强基于Keras的神经网络?

Python 如何使用AdaBoost增强基于Keras的神经网络?,python,neural-network,keras,adaboost,boosting,Python,Neural Network,Keras,Adaboost,Boosting,假设我适合以下二元分类问题的神经网络: 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='un

假设我适合以下二元分类问题的神经网络:

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有任何用于此的命令吗?

keras本身不实现adaboost。但是,Keras模型与scikit learn兼容,因此您可能可以从那里使用
AdaBoostClassifier
:。编译后,将您的
模型
用作
base_估计器
,并
拟合
AdaBoostClassifier
实例,而不是
模型


但是,通过这种方式,您将无法使用传递给
fit
的参数,例如纪元数或批大小,因此将使用默认值。如果默认设置不够好,您可能需要构建自己的类,在模型上实现scikit学习接口,并将适当的参数传递给
fit
显然,神经网络与sklearn Adaboost不兼容,请参见 首先创建一个模型(为了再现性,将其作为一个函数):

然后将其放入sklearn包装器中:

ann_estimator = KerasRegressor(build_fn= simple_model, epochs=100, batch_size=10, verbose=0)
然后,最后推动它:

boosted_ann = AdaBoostRegressor(base_estimator= ann_estimator)
boosted_ann.fit(rescaledX, y_train.values.ravel())# scale your training data 
boosted_ann.predict(rescaledX_Test)

嗨,谢谢你的回答。当我插入:
bdt=AdaBoostClassifier(base\u estimator=model)
bdt.fit(x2,training\u target)
模型是我编译的keras网络时,它给了我一个错误:TypeError:Cannot clone object“”(type):它似乎不是一个scikit学习估计器,因为它没有实现“get\u params”方法。显然,keras分类器本身并不兼容scikit学习。有关如何使它们协同工作的详细信息,请参阅本文:欢迎使用堆栈溢出!这是一个界限。您应该在此处扩展您的答案以包含尽可能多的信息,并且仅将链接用于参考。您将如何重新缩放数据?我们可以将keras数据生成器传递给SkLearn包装器吗?
boosted_ann = AdaBoostRegressor(base_estimator= ann_estimator)
boosted_ann.fit(rescaledX, y_train.values.ravel())# scale your training data 
boosted_ann.predict(rescaledX_Test)