【问题标题】:getting low accruacy than the gridsearchCV准确性低于 gridsearchCV
【发布时间】:2020-04-08 11:42:44
【问题描述】:

我正在从 sklearn 运行 gridsearchCV 以尝试使用此代码找到最佳模型参数。

modelDNN= KerasRegressor(build_fn=build_DNN_model, epochs=700, verbose=2)
hiden1=[16,32,64,128,256]
hiden2=[16,32,64,128,256]
hiden3=[16,32,64,128,256]
opt=['SGD', 'RMSprop','Adam']
drop=[0.0,0.2,0.3,0.4]
start = time.time()
param_gridDNN = dict(hiden1=hiden1,hiden2=hiden2,hiden3=hiden3,opt=opt,drop=drop)
gridDNN = GridSearchCV(estimator=modelDNN, param_grid=param_gridDNN, n_jobs=-1, cv=ShuffleSplit(1, test_size=0.2, random_state=584),scoring=R2_scorer(),verbose=2)
k.clear_session()
grid_resultDNN = gridDNN.fit(xtrain,ytrain,epochs=700 , validation_data=(xtest, ytest),verbose=2)

gridsearch 最好的结果是这个

Best: 0.840487 using {'drop': 0.4, 'hiden1': 64, 'hiden2': 32, 'hiden3': 128, 'opt': 'Adam'}

但我根本无法达到这个 R2 精度 尝试:

p=gridCNN.best_estimator_.predict(xtest)
r2_score(np.asarray(ytest).ravel(), p)

我得到 0.4696 并在火车数据上运行它得到 0.7521:

    p=gridDNN.best_estimator_.predict(xtrain)
    r2_score(np.asarray(ytrain).ravel(), p)

我也尝试用相同的参数重建模型:

def build_DNN_final_model():
 model = Sequential()
 model.add(Dense(2,input_shape=(2,)))
 model.add(Dense(64,activation="relu"))
 model.add(Dense(32,activation="relu"))
 model.add(Dense(128,activation="relu"))
 model.add(Dropout(0.4))
 model.add(Dense(1,activation="linear"))
 model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mse'] )
 return model

训练后我得到这个 R2 分数 0.6764 所以我的问题是 0.8404 的精度是多少?以及我如何才能达到 gridserachCV (0.8404) 的准确性,并指出我在网格搜索期间使用它消除了交叉验证:

cv=ShuffleSplit(1, test_size=0.2, random_state=584)

提前谢谢你

【问题讨论】:

  • 这不是更多的统计/机器学习问题而不是编程问题吗?
  • 其实gridsearch之前也达到了这个精度。所以我问的是一种编程方式来检索或再次达到这种精度!
  • 对,但是你有证据表明这是一个编程错误/错误/问题,而不是机器学习本身的问题吗?
  • 我不知道这是一个编程问题的直觉

标签: python machine-learning keras scikit-learn grid-search


【解决方案1】:

我相信使用 700 个 epoch 是原因 您正在使用最好的参数来训练您的神经网络,但它被过度训练并显示过度拟合的结果 我认为使用提前停止条件使其接近 0.84

尝试:

keras.callbacks.callbacks.EarlyStopping(monitor='val_loss', mode='auto', restore_best_weights=True)

您可以在此处查看所有回调: keras.callbacks

如果它不起作用,请告诉我

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2023-03-17
    • 2021-10-13
    • 2017-09-27
    • 2017-10-09
    • 2019-07-15
    相关资源
    最近更新 更多