在利用网格搜索进行寻优操作时,出现了以下错误:
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()`
以下是源代码:
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_))
求解答,谢谢大佬!!!!!
相似问题