很久很久以前看的ML提供的几个算法,简单运行了下官网的代码,说实话价值不大,还是应当到官网去学习,我唯一做的就是添加了几句中文注释,如果是学习官网示例遇到障碍,不了解数据集的格式等可以在这学习一下
线性回归
数据集格式
试验过程
导入训练集数据,将其解析为带label的RDD,然后使用LinearRegressionWithSGD 建立一个简单的线性模型预测label的值,最后计算了均方差来评估预测值与实际值的吻合度
object LinearRegressionModelDemo {
def main(args: Array[String]): Unit = {
// Load and parse the data
val conf = new SparkConf().setAppName("LeanerRegressionModelDemo").setMaster("local")
val sc = new SparkContext(conf)
val root = SVMWithSGDDemo.getClass.getResource("/")
val data = sc.textFile(root + "ridge-data/lpsa.data")
val parsedData = data.map { line =>
val parts = line.split(',')
LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
}.cache()
// 建模
//parsedData:RDD (label, array of features)
val numIterations = 100//迭代次数
val stepSize = 0.00000001//梯度下降的每次迭代的步长
val model = LinearRegressionWithSGD.train(parsedData, numIterations, stepSize)
// 评估训练样本模型并计算训练误差
val valuesAndPreds = parsedData.map { point =>
val prediction = model.predict(point.features)
(point.label, prediction)
}
val MSE = valuesAndPreds.map{
case(v, p) => math.pow((v - p), 2)}.mean()
println("training Mean Squared Error = " + MSE)
// 保存,加载模型
model