首先我的设置: X是我的功能表。它具有150000个特征和96个样本。因此有15万列和96行。
y是我的目标表。它有4个标签,当然还有96个样本。因此是4x96(列x行)。
分解为训练数据和测试数据后,我使用了MLPRegressor。根据Sci-kit的文档,它是本机多输出回归器。因此,我可以使用它通过新的15万个特征样本来预测我的四个期望的输出值。 我的代码:
mlp = MLPRegressor(hidden_layer_sizes=(2000, 2000), solver= 'lbfgs', max_iter=100)
mlp.fit(X_train,y_train)
然后我要使用交叉验证。
cross_validation.cross_val_score(mlp, X, y, scoring='r2')
输出是包含3个条目的列表(参数cv = 3)。 我真的不知道如何用这3个值来表示我的4个标签。 我期望这样的格式的东西: 标签1:3个条目,标签2:3个条目,标签3和4相同。 因此,对于测试和训练数据的不同分割,我将三次获得所有标签的R ^ 2-Value。
我想念什么吗?我需要使用Multioutputregressor吗? (See doc here)
还有Here交叉验证的文档。
谢谢。
答案 0 :(得分:0)
第一件事是,如果您实际上正在使用cross_validation.cross_val_score()
,则应将其替换为model_selection.cross_val_score()
。模块cross_validation
已被弃用,并已从最新版本的scikit中删除。
现在,为什么只对所有输出得到一个分数而不是单个条目却是因为那是设置计分器默认值的方式。
您已使用得分'r2'
,即documented here。这样,如果输入是多输出(根据您的情况),则可以使用
多输出: 定义多个输出分数的汇总。类数组值 定义用于平均分数的权重。默认值为“ uniform_average”。
“ raw_values”:如果是多输出,则返回完整的分数集 输入。
“ uniform_average”:所有输出的分数均采用统一的平均值 重量。
“ variance_weighted”:将所有输出的得分进行平均,并按 每个输出的方差。
您会看到默认值为'uniform_average'
,该默认值只是将所有输出取平均值以获得一个单一值,这就是您要获取的值。