我一直在使用scikit-learn的MLPRegressor训练神经网络,使用ShuffleSplit,其中包含10个分割和20%的数据用于测试。首先,我使用GridSearchCV来查找好的参数。然后我用这些参数实例化一个新的(不合适的)估计器,最后使用plot_learning_curve函数,一个MAPE记分器和相同的ShuffleSplit cv。
在我见过的大多数学习曲线示例中,验证和训练曲线明显是分开的。然而,我一直在学习曲线,其中交叉验证和训练曲线几乎相同。我应该如何插入这个 - 它看起来是否真实,或者我在某个地方犯了错误?
根据要求,这里是代码:
try{
capture = createCapture(VIDEO);
}
catch(error){
// error handling here
}
这是我的得分手:
node_range = list(range(1,16))
layer_range = range(1,6)
hidden_sizes = [(nodes,) * layers for layers in layer_range for nodes in node_range]
param_grid = [{'hidden_layer_sizes': hidden_sizes,
'activation': ['relu'],
'learning_rate_init': [0.5]}
]
cv = ShuffleSplit(n_splits=10, test_size=0.2)
search = GridSearchCV(estimator, param_grid, cv=cv, scoring=neg_MAPE, refit=True)
search.fit(X, y)
best_params = search.best_params_
estimator = MLPRegressor().set_params(**best_params)
plot_learning_curve(estimator, X, y, cv=cv, scoring=neg_MAPE)