python - 使用 PCA sklearn 和 TensorFlow 实现管道
问题描述
它给出了另一个错误。
Layer.call
必须始终传递第一个参数。
我无法解决问题。input_dim 不能设置为常量。PCA 和 SelectKBest 将减少输入量。
如果您可以帮助输出管道的结果,我将非常感激
附上数据链接:https ://1drv.ms/u/s!AlHgQsqCKEIPiIxzdyWE0BfBHNocTQ?e=cxuSuo
def modelReg(inpt, opt = 'adam', kInitializer = 'glorot_uniform', dropout = 0.05):
model = Sequential()
model.add(Dense(1024, activation='relu', input_dim = inpt, kernel_initializer=kInitializer))
model.add(Dense(1024, activation='relu', kernel_initializer=kInitializer))
model.add(Dense(512, activation='relu', kernel_initializer=kInitializer))
model.add(layers.Dropout(dropout))
model.add(Dense(1, activation='sigmoid', kernel_initializer=kInitializer))
model.compile(loss='mse',optimizer=opt, metrics=["mse", "mae"])
return model
features = []
features.append(('pca', PCA(n_components=10)))
features.append(('select_best', SelectKBest(k=10)))
feature_union = FeatureUnion(features)
regressor = KerasRegressor(build_fn = modelReg(inpt), epochs = 3, batch_size = 500, verbose = 1)
estimators = []
estimators.append(('standardize', StandardScaler()))
estimators.append(('feature_union', feature_union))
estimators.append(('regressor' regressor))
model = Pipeline(estimators)
model.fit(allData.drop(['VancouverH'], axis = 1), allData['VancouverH'])
解决方案
在 KerasRegressor 中使用函数将参数传递给模型函数,它们被写入 KerasRegressor 参数。
kearsEstimator = ('kR', KerasRegressor(createModel, inpt = trainDataX.shape[1],
epochs = 5, batch_size = 180, verbose = 1))
像这样,不是这样:
kearsEstimator = ('kR', KerasRegressor(createModel(inpt),
epochs = 5, batch_size = 180, verbose = 1))
好吧,并将管道转移到网格。并且网格的参数名称是用前缀写的。
estimators = []
estimators.append((kearsEstimator))
param_grid = {
'kR__optimizer':['adam'] #'RMSprop', 'Adam', 'Adamax', 'sgd'
}
grid = GridSearchCV(Pipeline(estimators), param_grid, cv = 5)
grid.fit(trainDataX, trainDataY)
推荐阅读
- powershell - 如何使用 Powershell 在网络密钥策略的证书路径验证设置上启用网络检索
- tcpdump - freeradius 接收 CDR 数据的问题
- linux - 针对给定条件使用 AWK 过滤 2 个文件的问题
- anylogic - 建模时间表
- r - 删除 R 或 Linux 中的特定值
- javascript - 如何在 html 中为我的页面加载器设置最短持续时间?
- python - 使用 OR-tools 解决多参与者分配问题
- java - 使用 Maven 版本时出现版本解析异常:准备
- api - 如何处理具有 QAF Webservice 正文的 REST API 请求的 GET 请求
- c++ - 没有前向声明的嵌套函数模板实例化可以在 GCC 上编译,但不能在 clang 上编译