2015-10-29 135 views
3

我希望做两交叉验证使用RandomSplits像星火交叉验证与培训,测试和验证集

  1. CV_global在星火处理:通过拆分数据到训练集90%和测试集10%

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

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

1.3 测试模型:上测试设置(10%)

  • 每10倍和全局度量报告平均指标。
  • 问题是我只找到在整个训练集上使用CV和网格搜索的例子。

    我怎样才能从CV_grid表现最好的模型的参数?

    如何在没有网格搜索的情况下进行简历,但每次获得统计数据?例如 sklearn.cross_validation.cross_val_score

    +0

    其实'Apache的spark'不支持,你必须使用'DataFrames'或'RDDs'自己来做。这并不难(我已经完成了) –

    +0

    那么,我使用ML管道进行端到端的连接,所以我跳槽时不需要打破这个代码。主要问题是如何从ParamGridBuilder获取最佳模型的参数。我不太熟悉Spark – harvybcn

    回答

    0

    你有事情像

    crossval.setEstimatorParamMaps(paramGrid) 
    

    然后

    cvModel = crossval.fit(trainingSetDF).bestModel 
    

    对于单款(至少对于一些)有喜欢explainParams功能()。它在Spark 1.6中可用(可能会回到1.4.2,我不确定)。 希望这有助于

    0

    你有三个问题为一体。每一个问题的答案:

    1.问题是,我只能找到使用对整个训练集CV和网格搜索示例。

    ,如果你需要你的训练数据集的只是一部分,然后在想要的百分比,例如采样

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

    2.我怎样才能得到CV_grid表现最好的模型的参数?

    crossValidatedModel.bestModel().getParamMap() 
    

    得到那里的参数名称,然后值。

    3.如何做简历没有网格搜索,但得到每折统计?例如

    How can I access computed metrics for each fold in a CrossValidatorModel

    复制到这里看看:Spark CrossValidatorModel access other models than the bestModel?