第六章(随机梯度下降)

本文详细介绍使用Apache Spark的MLlib库进行线性回归模型训练的过程。通过两个具体的数据集,演示了如何读取数据、预处理数据、训练模型及评估模型效果。首先,介绍了如何配置Spark环境并加载数据集;接着,展示了数据解析、特征向量化以及模型训练的具体步骤;最后,通过预测结果和计算均方误差(MSE)来评估模型的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试数据1:

5,1 1
7,2 1
9,3 2
11,4 1
19,5 3
18,6 2

测试代码1:

import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionWithSGD}
import org.apache.spark.{SparkConf, SparkContext}
object LinearRegression {
    val conf = new SparkConf()                                     //创建环境变量
            .setMaster("local")                                              //设置本地化处理
            .setAppName("LinearRegression ")                               //设定名称
    val sc = new SparkContext(conf)                                 //创建环境变量实例
    def main(args: Array[String]) {
        val data = sc.textFile("c:/lpsa2.data")							//获取数据集路径
        val parsedData = data.map { line =>							//开始对数据集处理
            val parts = line.split(',')									//根据逗号进行分区
            LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(' ').map(_.toDouble)))
        }.cache()                                                     //转化数据格式
        val model = LinearRegressionWithSGD.train(parsedData, 100,0.1)	//建立模型
        val result = model.predict(Vectors.dense(2,1))					//通过模型预测模型
        println(result)											//打印预测结果
    }
}

结果1:
6.6399076780928095


测试数据2:

65|7,400
90|5,1300
100|4,1100
110|3,1300
60|9,300
100|5,1000
75|7,600
80|6,1200
70|6,500
50|8,30

测试代码2:

import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionWithSGD}
import org.apache.spark.{SparkConf, SparkContext}

object LinearRegression{
    val conf = new SparkConf()                                     //创建环境变量
            .setMaster("local")                                              //设置本地化处理
            .setAppName("LinearRegression ")                               //设定名称
    val sc = new SparkContext(conf)                                 //创建环境变量实例

    def main(args: Array[String]) {
        val data = sc.textFile("c:/lpsa.data")							  	 //获取数据集路径
        val parsedData = data.map { line =>							 //开始对数据集处理
            val parts = line.split('|')									 //根据逗号进行分区
            LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split(',').map(_.toDouble)))
        }.cache()                                                      //转化数据格式
        //转化数据格式
        val model = LinearRegressionWithSGD.train(parsedData, 2,0.1)	  	//建立模型
        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() //计算MSE
        println(MSE)
    }
}

测试结果2:
1.1747846974449932E23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值