【问题标题】:Spark MLLib Crossvalidation of SVMSVM 的 Spark MLLib 交叉验证
【发布时间】:2016-06-23 20:24:20
【问题描述】:

我使用 Spark MLLib 对 LabeledPoints 的 RDD 进行 SVM 分类。 我想交叉验证它。最好的方法是什么? 有人有示例代码吗?我找到了依赖于 DataFrame 的 CrossValidator 类。

我的目标是获得 F 分数。

【问题讨论】:

    标签: apache-spark svm cross-validation apache-spark-mllib


    【解决方案1】:

    我已经面临同样的问题一个多月了,直到我意识到我必须使用 ML API 而不是 MLlib API(更多关于它们之间的差异here)。在这种情况下,新 API 的 SVM 是 LinearSVC

    from pyspark.ml.classification import RandomForestClassifier, LinearSVC
    from pyspark.ml.tuning import CrossValidator, ParamGridBuilder, CrossValidatorModel
    from pyspark.ml.evaluation import MulticlassClassificationEvaluator
    
    # SVM
    crossval = CrossValidator(estimator=LinearSVC(),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              evaluator=MulticlassClassificationEvaluator(metricName='f1'),
                              numFolds=5,
                              parallelism=4)
    
    # Random Forest
    crossval = CrossValidator(estimator=RandomForestClassifier(),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              evaluator=MulticlassClassificationEvaluator(metricName='f1'),
                              numFolds=5,
                              parallelism=4)
    

    在这两种情况下,您都可以只拟合模型:

    cross_model: CrossValidatorModel = crossval.fit
    

    【讨论】:

      【解决方案2】:

      你可以找到一个完整的例子on Spark's github,虽然不是支持向量机,而是逻辑回归。

      最好的方法是使用rdd.toDF() 方法将您的RDD 更改为DataFrame。

      【讨论】:

      • 谢谢。在示例中,一个 LogisticRegression 对象被实例化并插入到管道中。但是,它找不到任何适合流水线的 SVM 来实例化。使用哪个类?
      猜你喜欢
      • 2014-04-02
      • 2016-09-30
      • 2012-09-30
      • 2018-01-15
      • 2016-10-21
      • 1970-01-01
      • 2020-12-31
      • 2014-10-02
      • 2017-06-02
      相关资源
      最近更新 更多