我的GridSearchCV不起作用,我不知道为什么

大家好,我在使用GridSearchCV时遇到了问题,它在mnist数据集上运行得很完美,但在我的数据上却不行,我不知道为什么。

  # df = pd.read_csv('bank-full.csv',sep=';')# print(df.head())## print(df.shape)## print(df.columns)# print(df.info)# df.columns = [col.replace('"', '') for col in df.columns]### df.drop(columns=['day', 'poutcome'], axis =1 , inplace=True)### print(df.head())# print(df.shape)## le = preprocessing.LabelEncoder()# df.job = le.fit_transform(df.job)# df.education = le.fit_transform(df.education)# df.housing = le.fit_transform(df.housing)# df.loan = le.fit_transform(df.loan)# #df.poutcome = le.fit_transform(df.poutcome)# df.month = le.fit_transform(df.month)# df.contact = le.fit_transform(df.contact)# df.marital = le.fit_transform(df.marital)# df.default = le.fit_transform(df.default)# df.y = le.fit_transform(df.y)#### print(df.head())## X = df.iloc[:, 0:14]# y = df.iloc[:, 14]# X = np.array(X, dtype="float64")# y = np.array(y,dtype="float64")## scaler = Normalizer()# X = scaler.fit_transform(X)##### x_train, x_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.1, random_state=0)# model = LogisticRegression(penalty='l2', max_iter=1000)# model.fit(x_train, y_train)# prediction = model.predict(x_test)# from sklearn.metrics import accuracy_score# print("ACC: {} ".format(accuracy_score(y_test, prediction)))### print(x_train.shape)## nn = Sequential()# nn.add(Dense(120,input_dim = 14, activation='relu'))# nn.add(Dense(240,activation='relu'))### nn.add(Dense(1))# nn.add(Activation('sigmoid'))## nn.compile(loss=keras.losses.binary_crossentropy,#                optimizer='sgd',#                metrics=['accuracy'])## nn.fit(x_train, y_train,#            batch_size=10,#            epochs=10,#            verbose=1,##            validation_data=(x_test, y_test))## loss_acc = nn.evaluate(x_test, y_test, verbose=0)# print('Test loss:', loss_acc[0])# print('Test accuracy:', loss_acc[1])data = bm.load_data('bank-full.csv')data = bm.preprocess_data(data)X,y = bm.split_data(data)scaler = Normalizer()X = scaler.fit_transform(X)x_train, x_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.1, random_state=0)start = time()model = KerasClassifier(build_fn=nnmodel.create_model())optimizers = ['rmsprop', 'adam']init = ['glorot_uniform', 'normal', 'uniform']epochs = np.array([50, 100, 150])batches = np.array([5, 10, 20])param_grid = dict(optimizer=optimizers, nb_epoch=epochs, batch_size=batches, init=init)grid = GridSearchCV(estimator=model, param_grid=param_grid)grid_result = grid.fit(x_train, y_train)print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))for params, mean_score, scores in grid_result.grid_scores_:    print("%f (%f) with: %r" % (scores.mean(), scores.std(), params))print("total time:", time() - start)

这段注释的部分只是一个简单的Keras模型,它运行得很完美,但如果我在这个模型上尝试使用GridSearchCV,它会给我这些错误:https://pastebin.com/mhJLSXAS,例如,如果我运行这个程序 https://www.kaggle.com/shujunge/gridsearchcv-with-keras,它在我的数据上运行得很完美,但在我的数据上却不行,有人知道为什么吗?


回答:

Scikit-learn每次都会构建新的模型。脚本需要在网格搜索方法内部构建具有特定参数的分类器。因此,您必须将方法名称作为参数传递,而不是传递其结果。

可能nnmodel.create_model是您根据参数创建新模型的函数。所以尝试更改:

build_fn=nnmodel.create_model()

为:

build_fn=nnmodel.create_model

Related Posts

如何使用Google Protobuf解析、编辑和生成object_detection/pipeline.config文件

我在一个常见的集成学习范式中训练多个模型,目前我在处理…

Keras: 两个同时进行的层,其中一个对前一层的输出进行卷积

我想实现这样的模型连接: 输入图像1 -> 卷积层1 …

如何将行数据转换为列数据而不使用独热编码

我有一个如下所示的数据集。 MonthDate Day…

使用 ML Kit 与 NNAPI

我正在尝试在运行 Android 9 的设备上使用新的…

Vowpal Wabbit 可能的哈希冲突

我在VW中生成了一个模型,并且在相同的数据上生成了两个…

XGBoost算法,关于evaluate_model函数的问题

这个evaluate_model函数经常被使用,我在I…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注