算法小白的第一次尝试---多元线性回归

数学建模常用算法——Stata求解多元线性回归问题 本文通过一个案例讲述了如何使用Stata工具求解多元线性回归问题。 阅读详情
import org.apache.log4j.{Level, Logger}
import org.apache.spark.ml.feature.VectorAssembler
import org.apache.spark.sql.types.{DoubleType, StructField, StructType}
import org.apache.spark.sql.{DataFrame, Row, SparkSession}
import breeze.linalg._
/**
  * @author XiaoTangBao
  * @date 2019/3/20 19:10
  * @version 1.0
  */
object LR4 {
  def main(args: Array[String]): Unit = {
    //屏蔽日志
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    val sparkSession = SparkSession.builder().master("local[4]").appName("LR").getOrCreate()
    //获取数据源
    val data = sparkSession.sparkContext.textFile("G:\\mldata\\airfoil_self_noise.txt").map(line => line.split('|'))
    //随机切分成训练集和测试集
    val splitData = data.randomSplit(Array(0.7,0.3))
    val trainData = splitData(0) .map(arr => Row(arr(5).toDouble,arr(0).toDouble,arr(1).toDouble,arr(2).toDouble,arr(3).toDouble,arr(4).toDouble))
    val testDataLabel = splitData(1).map(arr => arr(5).toDouble).collect()
    val testData = splitData(1).map(arr => arr.dropRight(1).map(_.toDouble)).collect()
    //定义schema 和featuresArr
    val schema = StructType(List(StructField("label",DoubleType,true),StructField("Frequency",DoubleType,true)
      ,StructField("Angle",DoubleType,true),StructField("Chord",DoubleType,true)
      ,StructField("velocity",DoubleType,true),StructField("thickness",DoubleType,true)))
    val featuresArr = Array("Frequency","Angle","Chord","velocity","thickness")
    val traindf = sparkSession.createDataFrame(trainData,schema)
    //转换器
    val vectorAssemb  = new VectorAssembler().setInputCols(featuresArr).setOutputCol("features")
    //模型训练所需格式的DF
    val trainDF = vectorAssemb.transform(traindf).select("label","features")
    //训练模型
    val theaMatrix:DenseMatrix[Double] = LR(trainDF)
    //测试数据
    var testMatrix = DenseMatrix.zeros[Double](testData.length,featuresArr.length+1)
    testMatrix(::,0) := 1.0
    for(i<-0 until testData.length){
      for(j<-0 until featuresArr.length){
        testMatrix(i,j+1) = testData(i)(j)
      }
    }
    //拟合结果
    val resultMatrix = testMatrix * theaMatrix
    //均方差
    val k = (resultMatrix.toArray zip testDataLabel).map{case(predict,value)=>math.pow((predict-value),2)}
    var sum = 0.0
    for(i<-k) sum += i
    val rmse = math.sqrt(sum / testData.length)
    println(“rmse = “ + rmse)
  }

  /**
    * LR Multiple linear regression
    * @param df  input dataFrame(label,features)
    * @return Matrix of thea
    */
  def LR(df:DataFrame)={
    val label = df.rdd.map(row => row.getDouble(row.fieldIndex("label"))).collect()
    val trainData = df.select("features").rdd.map(row => row.toString())
      .map(str => str.replace('[',' '))
      .map(str => str.replace(']',' '))
      .map(str => str.trim()).map(str => str.split(','))
      .map(arr => arr.map(str => str.toDouble))
      .collect()
    //特征维度
    val dimensions = trainData(0).length
    //系数矩阵行
    val matrixRows = trainData.length
    //系数矩阵列
    val matrixColumns = dimensions + 1
    //定义系数矩阵
    var matrix = DenseMatrix.zeros[Double](matrixRows,matrixColumns)
    matrix(::,0) := 1.0
    for(i<-0 until matrixRows){
      for(j<-0 until dimensions){
        matrix(i,j+1) = trainData(i)(j)
      }
    }
    //定义label矩阵
    var labelMatrix = DenseMatrix.zeros[Double](matrixRows,1)
    for(i<-0 until matrixRows) labelMatrix(i,0) = label(i)
    //求解thea矩阵
    val thea = (inv(((matrix.t) * matrix))) * (matrix.t) * labelMatrix
    thea
  }
}

-------------------------result--------------------------------------------------------------------------------------------------------------------
rmse = 5.003040917178264

选择100个数据拟合结果

Python实现多元线性回归 多元线性回归是一种神奇的统计学方法,让你在数据的海洋中探寻变量之间的关系。通过多个自变量,我们能够预测一个因变量的值,揭示隐藏在数据中的真相。 阅读详情

相关推荐

机器学习 |使用 Python 的多元线性回归

在多个类别的情况下(例如,颜色:“红色”、“蓝色”、“绿色”),我们为每个类别创建一个虚拟变量,排除一个以避免。检查自变量之间的相关矩阵是检测多重共线性的常用方法。回归模型从数据集中学习一个函数(具有已知的 X 和 Y 值),并使用它来预测未知 X 的 Y 值。虚拟变量是二进制变量(0 或 1),表示每个类别的存在或不存在。数据集包含存储在 中的特征(例如收入中位数、平均房间数),目标(房价)存储在 中。它是一种用于对因变量和一个自变量之间的关系进行建模的统计方法。:因变量和自变量之间的关系应该是线性的。

jianqimingtian的博客 791

用Apache Math3实现多元线性回归

1.引用 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-math3</artifactId> <version>3.6.1</version> </dependency>

Nofkop的博客 1592

[机器学习] 多元线性回归模型预测房价

文章目录一、线性回归理论基础二、利用Excle进行线性回归分析三、基于statsmodels进行线性回归分析1、导入数据及基础包2、数据清洗3、分析数据4、拟合四、基于Sklearn库实现线性回归1、导入Sklearn库并读取数据文件2、清洗数据再求解 一、线性回归理论基础 一元线性回归是分析只有一个自变量(自变量x和因变量y)线性相关关系的方法。一元线性回归分析的数学模型为:y = a+bx+ε。 使用偏差平方和分别对参数a和参数b求偏导,可以得到线性模型的未知参数a、b的最小二乘估计值,其中,偏差平方和

weixin_47593895的博客 1849

Apache Commons Math3学习笔记(2) - 多项式曲线拟合

多项式曲线拟合:org.apache.commons.math3.fitting.PolynomialCurveFitter类。 用法示例代码: // ... 创建并初始化输入数据: double[] x = new double[...]; double[] y = new double[...]; 将原始的x-y数据序列合成带权重的观察点数据序列: WeightedObservedPo

kingfox的专栏 1万+

java+实现的多元线性回归分析.doc

用Java完成多元线性回归相关算法编程。资源是从百度文库上下载的https://wenku.baidu.com/view/070d30eb988fcc22bcd126fff705cc1755275f61.html。

在Ubuntu 22.04上从零搭建TrinityCore 3.3.5服务器:一份保姆级避坑指南

本文详细介绍了在Ubuntu 22.04系统上从零搭建TrinityCore 3.3.5服务器的完整流程,包括环境准备、源码编译、数据库配置、资源文件处理及性能调优等关键步骤。特别针对国内开发者和低配置用户优化,提供保姆级避坑指南,帮助用户高效搭建魔兽世界经典旧世版本私服。

weixin_33393017的博客 304

Java做回归分析

用Java实现一元线性回归分析,多元线性回归分析,一元非线性回归分析

weixin_50627332的博客 4442

Axure原型模板与元件库APP交互设计素材(附资料)

在Axure中,手机模型是展示APP或小程序界面效果的重要工具。通过导入手机模型元件,设计师可以更加直观地模拟真实设备的显示效果,从而更准确地评估设计的可行性和用户体验。Axure官方及第三方资源库中提供了多种品牌和型号的手机模型,如iPhone、Android等,设计师可以根据项目需求选择合适的模型进行使用。Axure作为一款强大的原型设计工具,为APP和小程序的设计与开发提供了丰富的界面组件元件库和交互设计素材。

招风的黑耳优快云 1983

java实现多元线性回归

文章目录一个例子分析计算准备数据计算查看结果参考 一个例子 约翰逊过滤股份公司对遍布南佛罗里达州的水过滤系统提供维修保养服务。当顾客的水过滤系统出现故障时,他们就要与约翰逊公司进行联系,请求公司对他们的水过滤系统进行维修。为了估计服务时间和服务成本,约翰逊公司的管理人员希望对顾客的每一次维修请求预测必要的维修时间。所以,按小时计算的维修时间是因变量。管理人员认为,维修时间依赖两个因素:从最近一次维修服务至今水过滤系统已经使用的时间和需要维修的故障类型。由10次维修服务组成一个样本,有关资料数据如下1:

miaoyibo12的博客 4388

超声波测距的15度魔法:HC-SR04测量角度特性在机器人避障中的实战技巧

本文深入探讨了HC-SR04超声波测距模块在机器人避障中的15度测量角度特性及其应用技巧。通过分析15度角的工程意义、多模块阵列设计、狭小空间优化方案及温度补偿技术,帮助开发者提升机器人环境感知能力。文章特别强调了HC-SR04模块在低成本避障方案中的核心优势与实战优化策略。

weixin_29172963的博客 430

ROS2中间件选型指南:FastDDS与CycloneDDS零拷贝机制对比与实战

在机器人开发中,通信中间件是连接分布式节点的核心纽带,其性能直接影响系统的实时性与可靠性。DDS作为ROS2默认的通信标准,通过发布订阅模型和QoS策略,为高频大带宽场景提供了灵活的数据分发能力。并行计算与高性能传输的需求,推动了零拷贝技术的演进——从传统序列化到共享内存乃至指针传递,旨在减少数据复制开销、降低延迟。在激光雷达点云、相机图像等场景下,中间件的选型尤为关键。FastDDS凭借与ROS2的深度集成和丰富文档成为入门首选,而CycloneDDS在低延迟和资源占用上表现更优,借助iceoryx实现了

weixin_28726391的博客 262

java 线性回归_多元线性回归----Java简单实现

import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;public class LinearRegression {/** 训练数据示例:* x0 x1 x2 y1.0 1.0 ...

weixin_31710835的博客 1381

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

抓包工具(五)2025版 Burp Suite Professional的下载、安装、使用

ACGkaka的博客 2万+

多元线性回归算法预测房价

多元线性回归算法预测房价一、理论学习(一)背景(二)线性回归检验二、数据清洗(一)数值数据处理(二)非数值型数据转换三、Excel多元线性回归四、多元线性回归模型预测房价(一)基础包与数据导入(二)变量探索(三)分析数据(四)拟合四、sklearn多元线性回归预测房价(一)不进行数据处理(二)对数据进行清洗后再求解五、总结六、参考资料 一、理论学习 学习参考资料“多元线性回归模型预测房价.ipynb”,自己实践重新做一下针对房屋数据集“house_prices.csv”的多元线性回归(基于统计分析库sta

”一只特立独行的猪“的博客 4797

Android 13 系统定制:实现第三方Launcher预置与原生Launcher3的共存切换

本文详细介绍了在Android 13系统中实现第三方Launcher预置与原生Launcher3共存切换的技术方案。通过修改ResolverActivity逻辑、处理首次启动设置以及优化用户切换机制,开发者可以灵活定制默认Launcher,同时保留用户自由选择权。文章还提供了常见问题排查指南和性能优化建议,帮助提升双Launcher方案的稳定性和用户体验。

weixin_30275415的博客 128

ABAP CDS SELECT, parameters 全面解析:把参数化视图玩明白(含可运行示例)

这篇技术博客介绍了ABAP CDS中参数化视图的用法与实践。文章从业务需求出发,解释了参数化视图的必要性,并详细说明了语法规则、参数类型匹配、视图内部参数引用等关键点。重点展示了在JOIN和ASSOCIATION中传递参数的写法,提供了航线分析的完整业务案例和可运行代码示例。文章还总结了视图实体与DDIC视图的差异、会话变量使用技巧等实践要点,特别强调了JOIN中必须显式传参的语法要求。通过真实场景演示,帮助开发者掌握参数化CDS的高效应用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 365

数模学习——多元线性回归

优快云的小伙伴们大家好!本篇文章将和大家共同学习数模比赛中经常用到的一种回归算法——多元线性回归。目前,关于数模中多元线性回归的教学大多都是从相关原理出发,再结合例题进行讲解。然而,很多算法的原理对于非专业学生来说往往显得晦涩难懂。鉴于很多小伙伴和我一样,并非相关专业的学生,只是希望在数模比赛中能够实际应用一些有用的算法,因此,本文将重点介绍多元线性回归在数模比赛中的适用题型和具体的应用步骤。对于其中涉及到的相关原理,感兴趣的小伙伴们可以自行查阅相关书籍或数学建模资料进行深入学习。

2301_79906879的博客 2050

如何用 ABAP 以程序方式把指定表项写入 Transport Request

本文探讨了在SAP系统中运输自定义配置表数据时如何确保主表和相关文本表数据同步运输的问题。文章分析了两种实现方案:一是直接操作CTS表结构(E071和E071K)手动添加运输条目,二是使用SOBJ对象类型自动推导依赖关系。重点阐述了第一种方法的实现细节,包括如何正确拼接表键值到TABKEY字段,并提供了示例代码说明如何将ZXA_HEADER主表和ZXA_HEADERT文本表数据同时加入运输请求。文章特别指出在全球化交付场景中,文本表缺失会导致界面显示异常,强调理解底层运输机制对解决此类问题的重要性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 223

机器学习——多元线性回归算法

多元线性回归;梯度下降算法解决多元线性回归问题

什么时候才不是菜鸟.... 1036

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

机器学习——多元线性回归算法预测房价

这是目录一、Excel构造多元线性回归二、Sklearn库重做多元线性回归三、总结参考文献 一、Excel构造多元线性回归 多元线性回归简介 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归。事实上,一种现象常常是与多个因素相联系的,由多个自变量的最优组合共同来预测或估计因变量,比只用一个自变量进行预测或估计更有效,更符合实际。因此多元线性回归比一元线性回归的实用意义更大。 “garbage in garbage out”(简称GIGO),是计算机术语常用的俚语,意思是如果你输入错误的数据,那么

羚漆的博客 1741

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

机器学习笔记02(多元线性回归&logistics回归&正则化)

文章目录01 引言(多元线性回归)多元线性回归梯度下降梯度下降技巧01-特征缩放梯度下降技巧02-学习率与终止迭代条件用多项式回归模型02 Normal Equation法推导过程Normal Equation法与梯度下降法比较 01 引言(多元线性回归) “多元线性回归本质上与单元变量线性回归没太大区别” 增添更多特征后,我们引入一系列新的注释: 引入多元变量后,我们直接把原来的函数 简写为 多元线性回归 梯度下降 多元变量的线性回归的梯度下降与一元的没什么区别 梯度下降技巧01-特征缩放 在我们面对

Brianyjh的博客 2714

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

机器学习多元线性回归最简单的一个算法,预测商品销售额

数据介绍 商品的销售可能与电视广告的投入,广播,报纸广告的投入有关系,通过分析,找出他们是怎么影响销售额,即求出多元线性回归的回归系数。数据下载 链接:https://pan.baidu.com/s/1JvxF-V2CV2ThoNVENzWTBw 提取码:pdj8 代码 #导入模块包 import matplotlib.pyplot as plt from sklearn.model_select...

qq_35166804的博客 6164

四、多元线性回归

吴恩达机器学习笔记——二、多元线性回归符号定义多元线性回归的定义梯度下降法确定参数θ特征缩放学习率特征合并和多项式回归特征合并多项式回归 符号定义 m:训练集的样本个数 n:特征的数量 x(i):第i个训练样本的特征向量 xj(i):第i个训练样本的第j个特征 多元线性回归的定义 因特征数不止一个,则此时我们的假设函数变为: 其中x和θ可以写作向量格式hθj(x) = θTx 梯度下降法确定参数θ 发现算法和单特征的线性回归差别并不大 特征缩放 当两个特征取值的范围差别很大时(什么时候算差距很大由自己经

lizhaoxin666的博客 764

多类特征(多元线性回归:multiple linear regression)

当然我们的最后还是要回归到我们的线性回归模型与我们的梯度下降所关联起来。前面还是和我们一样的梯度下降的式子,把我们的w向量写到一起,接下来我们来看一下我们的导数项。在左边是我们的只有一个w的情况,我们可以通过以上的偏导得到我们想要的值,而右边我们得到了n个从偏导数,这就是我们的梯度下降,需要一些微积分的知识即可证明。

princess_pig的博客 1505
上一篇: Flume原理详解(好文)
下一篇: 算法小白的第一次尝试---DBCSAN实现(手撕)
小糖宝
博客等级 码龄9年 47粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值