【发布时间】:2018-10-26 09:14:38
【问题描述】:
我正在研究回归问题。我有一个数据集,我在该数据集上完成了特征工程(输入缺失值、box cox 转换了偏斜变量等)。
我使用 cross_val_score 训练和测试了几个模型,其中包含 5 个数据集拆分。首先,我尝试过 Kernel Ridge Regression、Lasso、Elastic Net、Gradient Boosting 等模型。然后我尝试了 scikit learn 的 MLPRegressor。 然而,使用均方根误差,“简单”模型的结果比 MLP Regressor 的结果要好得多(例如,Kernel Ridge 的平均分数是 0.1153,而 MLPRegressor (hidden_layer_sizes=(256,)*25) 是 0.1461,它是最好的,我发现运行不同的架构)。
示例代码:
KRR = KernelRidge(alpha=0.6, kernel='polynomial', degree=2, coef0=2.5)
mlpreg = MLPRegressor(hidden_layer_sizes=(256,)*25,activation='relu',solver='adam',
verbose=0)
还有我用来评分的函数:
def rmsle_crossval(model, train: pd.DataFrame, y_train: List[float]):
kf = KFold(n_folds, shuffle=True,
random_state=42).get_n_splits(train.values)
rmse= np.sqrt(-cross_val_score(model, train.values, y_train,
scoring="neg_mean_squared_error", cv = kf))
return(rmse)
即使我尝试使用单个隐藏层为 1 的 MLPRegressor 以及与 KRR 相同的参数以尽可能接近 KRR,我的得分也是 0.4381。
你知道为什么会有这样的差异吗?
谢谢,
编辑: 数据形状:(1460, 81)
【问题讨论】:
-
在不知道数据集大小的情况下,很难评论正在发生的事情。你能分享一下数据集的大小吗?
-
数据的形状是(1460, 81)
标签: python scikit-learn neural-network