spark之MLlib机器学习-线性回归

本文介绍了一个基于Spark MLlib的线性回归示例,通过Scala语言实现,包括数据准备、模型训练及预测结果评估。该示例展示了如何使用Spark MLlib API进行简单的线性回归分析。

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

此篇博文根据《Spark MLlib机器学习》实例程序编写,可作为熟悉scala和mllib编写机器学习算法的一种实践。
1、准备测试数据
可从作者博客自行下载。代码及数据下载地址
2、编写scala源码
为了进一步熟悉scala编程语言,建议自己把代码敲一次。

//import org.apache.log4j{ Level, Logger }
import org.apache.spark.{SparkConf,SparkContext}
import org.apache.spark.mllib.regression.LinearRegressionWithSGD
import org.apache.spark.mllib.util.MLUtils
import org.apache.spark.mllib.regression.LabeledPoint
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.regression.LinearRegressionModel

object LinearRegression{

  def main(args:Array[String]){

    val conf = new SparkConf().setAppName("LinearRegressionWithSGD")
    val sc =new SparkContext(conf)
  //  Logger.getRootLogger.setLevel(Level.WARN)

    val data_path1="file:///usr/spark2.0/data/mllib/mydata/lpsa.data"
    val data=sc.textFile(data_path1)
    val examples=data.map{line=>
     val parts=line.split(',')
     LabeledPoint(parts(0).toDouble,Vectors.dense(parts(1).split(' ').map(_.toDouble)))
    }.cache()

    val numExamples=examples.count()
    val numIterations=100
    val stepSize=1
    val miniBatchFraction=1.0
    val model=LinearRegressionWithSGD.train(examples,numIterations,stepSize,miniBatchFraction)
    val prediction=model.predict(examples.map(_.features))
    val predictionAndLabel=prediction.zip(examples.map(_.label))
    val print_predict=predictionAndLabel.take(50)
    println("prediction"+"\t"+"label")
    for (i <- 0 to print_predict.length-1 ){
       println(print_predict(i)._1 + "\t" + print_predict(i)._2)
    }
    val loss =predictionAndLabel.map{
        case(p,_)=>
            val err = p - 1
            err*err
    }.reduce(_+_)
    val rmse=math.sqrt(loss/numExamples)
    println(s"Test RMSE = $rmse.")

  }

3、使用sbt工具编译和打包

4、结果输出:
这里写图片描述

可以看出,线性拟合的结果并不理想,说明模型选择的不合理。本示例仅仅为了说明线性回归api的用法。

### Spark MLlib 线性回归示例 Spark MLlib 提供了强大的机器学习工具集,其中包括线性回归模型。线性回归是一种用于建模连续变量之间关系的监督学习算法[^1]。以下是使用 Spark MLlib 进行线性回归的具体示例: #### 数据准备 在开始构建模型之前,需要加载和处理数据。以下代码展示了如何从 LIBSVM 格式的文件中加载数据[^2]。 ```scala import org.apache.spark.ml.regression.LinearRegression import org.apache.spark.ml.linalg.Vectors import org.apache.spark.sql.Row import org.apache.spark.sql.SparkSession // 创建 SparkSession val spark = SparkSession.builder.appName("LinearRegressionExample").getOrCreate() // 加载训练数据 val training = spark.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt") ``` #### 构建线性回归模型 接下来,可以使用 `LinearRegression` 类来构建线性回归模型。以下代码片段展示了如何设置模型参数并进行训练。 ```scala // 创建线性回归实例 val lr = new LinearRegression() .setMaxIter(10) .setRegParam(0.3) .setElasticNetParam(0.8) // 训练模型 val model = lr.fit(training) ``` #### 模型评估 训练完成后,可以使用测试数据对模型进行评估,并查看模型的性能指标。 ```scala // 打印系数和截距 println(s"Coefficients: ${model.coefficients} Intercept: ${model.intercept}") // 总结模型上的信息以了解误差情况 val trainingSummary = model.summary println(s"RMSE: ${trainingSummary.rootMeanSquaredError}") println(s"R-squared: ${trainingSummary.r2}") ``` #### 预测新数据 最后,可以使用训练好的模型对新数据进行预测。 ```scala // 加载测试数据 val test = spark.read.format("libsvm").load("data/mllib/sample_libsvm_test_data.txt") // 使用模型进行预测 val predictions = model.transform(test) // 展示预测结果 predictions.select("features", "label", "prediction").show() ``` 以上代码完整地展示了如何在 Spark MLlib 中实现线性回归模型[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值