3

我想使用 RandomSplits 在 Spark 中执行两个交叉验证过程,例如

  1. CV_global:通过将数据分成 90% 的训练集和 10% 的测试集

1.1。CV_grid:对一半训练集进行网格搜索,即 45% 的数据。

1.2. 拟合模型:在训练集 (90%) 上使用来自 CV_grid 的最佳设置。

1.3测试模型:在测试集上(10%)

  1. 报告每 10 倍的平均指标和全局指标。

问题是我只在整个训练集上使用 CV 和网格搜索找到示例。

如何从 CV_grid 获取性能最佳模型的参数?

如何在没有网格搜索的情况下进行 CV,但获取每折叠的统计信息?例如 sklearn.cross_validation.cross_val_score

4

2 回答 2

0

您将三个问题合二为一。每个人的答案:

1. 问题是我只在整个训练集上使用 CV 和 Grid 搜索找到示例。

如果您只需要一部分训练数据集,则以所需百分比进行采样,例如

training = training.sample(false, .45, 78L)

2. 如何从 CV_grid 中获取性能最好的模型的参数?

crossValidatedModel.bestModel().getParamMap() 

从那里获取参数名称,然后是值。

3. 如何在没有网格搜索的情况下进行 CV,但获取每折叠的统计信息?例如

如何访问 CrossValidatorModel 中每个折叠的计算指标的副本

看看这里:Spark CrossValidatorModel 访问 bestModel 以外的其他模型?

于 2017-06-01T10:11:48.610 回答
0

你有类似的东西

crossval.setEstimatorParamMaps(paramGrid)

接着

cvModel = crossval.fit(trainingSetDF).bestModel 

对于单个模型(至少对于某些模型),有诸如 explainParams() 之类的函数。它在 spark 1.6 中可用(也许它可以追溯到 1.4.2,我不确定)。希望这可以帮助

于 2016-09-11T12:30:00.210 回答