星火:逻辑回归

Spark: Logistic regression

这段代码效果很好!

val model = new LogisticRegressionWithLBFGS().setNumClasses(2).run(training)

我可以打电话 model.predict(...)

但是,当我尝试设置模型参数时,我无法调用 model.predict 例如,使用以下代码,我无法对模型变量调用预测。

val model = new LogisticRegressionWithLBFGS().setNumClasses(2)

model.optimizer.setUpdater(new L1Updater).setRegParam(0.0000001).setNumIterations(numIterations)
 model.run(training)

这方面的任何帮助都会很棒。

这是因为第二种情况下的 modelLogisticRegressionWithLBFGS 而不是 LogisticRegressionModel。你需要的是这样的:

import org.apache.spark.mllib.classification.{
  LogisticRegressionWithLBFGS, LogisticRegressionModel}
import org.apache.spark.mllib.optimization.L1Updater

// Create algorithm instance
val lr: LogisticRegressionWithLBFGS = new LogisticRegressionWithLBFGS()
  .setNumClasses(2)

// Set optimizer params (it modifies lr object)
lr.optimizer
  .setUpdater(new L1Updater)
  .setRegParam(0.0000001)
  .setNumIterations(numIterations)

// Train model
val model: LogisticRegressionModel = lr.run(training)

现在模型是 LogisticRegressionModel,可以用于预测。