关于SVM和SGD的知识请参考其他资料,这里只介绍如何在spark-shell下跑分类模型。
分类数据集
这里面使用的是spark样例数据,文件地址为spark-0.9.1/mllib/data/sample_svm_data.txt。
启动spark
编译好spark后,在spark目录的bin目录下,运行
spark-shell
启动完后会出现
scala>
编写调用mllib的scala程序
import org.apache.spark.SparkContext
import org.apache.spark.mllib.classification.SVMWithSGD
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.optimization.L1Updater
object ObSVMWithSGD{
def run() {
// Load and parse the data file
val data = sc.textFile("D:/schoolar_tool/spark-0.9.1/mllib/data/sample_svm_data.txt")
val parsedData = data.map{line =>
val parts = line.split(' ')
LabeledPoint(parts(0).toDouble, parts.tail.map(x => x.toDouble).toArray)
}
// Run training algorithm to build the model
val svmAlg = new SVMWithSGD()
svmAlg.optimizer.setNumIterations(200)
.setRegParam(0.1)
.setUpdater(new L1Updater)
val model = svmAlg.run(parsedData)
// Evaluate model on training examples and compute training error
val labelAndPreds2 = parsedData.map{ point =>
val prediction = model.predict(point.features)
(point.label, prediction)
}
val trainErr = labelAndPreds2.filter(r => r._1 != r._2).count.toDouble / parsedData.count
println("Training Error = " + trainErr)
}
}
粘贴程序
输入 :paste ,粘贴多行代码。
(注意:代码中不要有tab缩进,否则界面会出现大量输入提示。)
scala> :paste
粘贴上面的代码。
运行程序
按 ctrl+D 运行程序。
运行后效果为:
再输入ObSVMWithSGD.run,开始运行。
scala> ObSVMWithSGD.run
效果
屏幕开始滚动,最终效果为
简单提示
可以适当修改上述程序,对自己需要分类的数据进行分类。
参考资料
1.官网MLlib指南 http://spark.apache.org/docs/latest/mllib-guide.html