
问题出在
KerasClassifier。它不提供
_estimator_type已签入的
_validate_estimator。
这不是使用管道的问题。管道将此信息作为属性提供。看这里。
因此,快速修复方法是设置
_estimator_type='classifier'。
一个可重现的示例:
# Define pipelinesfrom sklearn.pipeline import Pipelinefrom sklearn.tree import DecisionTreeClassifierfrom sklearn.svm import SVCfrom sklearn.preprocessing import MinMaxScaler, Normalizerfrom sklearn.ensemble import VotingClassifierfrom keras.wrappers.scikit_learn import KerasClassifierfrom sklearn.datasets import make_classificationfrom keras.layers import Densefrom keras.models import SequentialX, y = make_classification()# DTC pipelinefeaturiser = MinMaxScaler()dtc = DecisionTreeClassifier()dtc_pipe = Pipeline([('featuriser', featuriser), ('dtc', dtc)])# SVC pipelinescaler = Normalizer()svc = SVC(C=100, gamma=0.001, kernel='rbf')svc_pipe = Pipeline( [('scaler', scaler), ('svc', svc)])# Keras pipelinedef get_model(): # create model model = Sequential() model.add(Dense(10, input_dim=20, activation='relu')) model.add(Dense(1, activation='sigmoid')) # Compile model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) return modelcnn = KerasClassifier(build_fn=get_model)cnn._estimator_type = "classifier"cnn_pipe = Pipeline([('scaler', scaler), ('cnn', cnn)])# Make an ensembleensemble = VotingClassifier(estimators=[('dtc', dtc_pipe), ('svc', svc_pipe), ('cnn', cnn_pipe)], voting='hard')ensemble.fit(X, y)欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)