首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python:估计器KerasClassifier参数hidden_layers无效?

python:估计器KerasClassifier参数hidden_layers无效?

提问于 2024-08-02 01:37:53
回答 0关注 0查看 18

在利用网格搜索进行寻优操作时,出现了以下错误:

ValueError: Invalid parameter hidden_layers for estimator KerasClassifier.

This issue can likely be resolved by setting this parameter in the KerasClassifier constructor:

`KerasClassifier(hidden_layers=1)`

Check the list of available parameters with `estimator.get_params().keys()`

以下是源代码:

代码语言:txt
复制
from sklearn import svm, datasets
from sklearn.model_selection import GridSearchCV
from keras.src.models.sequential import Sequential
from scikeras.wrappers import KerasClassifier
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.layers import Dense
from sklearn.model_selection import GridSearchCV
import pandas as pd
from scikeras.wrappers import KerasRegressor

# 定义模型构建函数
def create_model(hidden_layers=1, units=50):
    model = Sequential()
    model.add(Dense(units=units, activation='relu', input_dim=6))
    for _ in range(hidden_layers - 1):
        model.add(Dense(units=units, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

# 包装成KerasClassifier
model = KerasClassifier(build_fn=create_model, epochs=50, batch_size=256, verbose=0)


# 定义参数网格
param_grid = {
    'hidden_layers': [1, 2, 3],
    'units': [1,2,3,4,5,6,7,8,8,9,10,11,12,13,14,15,16,17,18,19,20]
}

# 初始化GridSearchCV
grid = GridSearchCV(estimator=model, param_grid=param_grid, scoring='accuracy', cv=3)

# 导入数据
dataset_train = pd.read_excel("F:\桌面\BPNN_NOx排放预测\Bayes-Newdata_25.xlsx")
dataset_test = pd.read_excel("F:\桌面\BPNN_NOx排放预测\Small_data_25.xlsx")
dataset_train.tail()

# 数据预处理(归一化与数据集的划分)
scaler = MinMaxScaler()
train_scaler = scaler.fit_transform(dataset_train) # 默认是[0,1]
test_scaler = scaler.transform(dataset_test)

# 划分输入输出
X_train = train_scaler[:, :-1]
Y_train = train_scaler[:,-1]
X_test = test_scaler[:, :-1]
Y_test = test_scaler[:,-1]

# 执行搜索
grid_result = grid.fit(X_train, Y_train)

# 输出最佳参数和得分
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))

求解答,谢谢大佬!!!!!

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档