线性回归 算法 实例

梯度下降 Gradient Descent 算法详解,从实例中学习用梯度优化算法求解线性回归模型中的参数 一、模型原理 Linear Rgegrssion基于最小二乘法的线性回归。是机器学习算法里面的基本算法,在sklearn.linear_model 的包里面。它能解决的问题是通过数据拟合,从而得到比较符合事物内部规律的数学表达式。也就是说寻找到数据与数据之间的规律所在。例如对于房价的预测。 二、线性回归的原理表示 我们先从最简单的函数看起,在只有一个变量的情况下,线性回归可以用方程:y = ax+b 表示。 Linear Regression模型会去不断的去调整下图直线的斜率和截距,使得残差平方和R 阅读详情

1.000000 0.067732 3.176513
1.000000 0.427810 3.816464
1.000000 0.995731 4.550095
1.000000 0.738336 4.256571
1.000000 0.981083 4.560815
1.000000 0.526171 3.929515
1.000000 0.378887 3.526170
1.000000 0.033859 3.156393
1.000000 0.132791 3.110301
1.000000 0.138306 3.149813
1.000000 0.247809 3.476346
1.000000 0.648270 4.119688
1.000000 0.731209 4.282233
1.000000 0.236833 3.486582
1.000000 0.969788 4.655492
1.000000 0.607492 3.965162
1.000000 0.358622 3.514900
1.000000 0.147846 3.125947
1.000000 0.637820 4.094115
1.000000 0.230372 3.476039

#coding:utf-8
from numpy import *

#获取样本数据:
#前面是特征数据,最后一列是数据的输出
def loadDataSet(fileName):      
    #特征维数
    numFeat = len(open(fileName).readline().split('\t')) - 1 
    #特征值
    dataMat = [];
    #真实目标值(输出值) 
    labelMat = []
    #打开文件
    fr = open(fileName)
    #按行读取
    for line in fr.readlines():
        #构建列表,存储.txt文件每一行数据
        lineArr =[] #list类型
        #分割数据
        curLine = line.strip().split('\t')
        #遍历每一维度
        for i in range(numFeat):
            #该行的每一个维度数值存入到lineArr中
            lineArr.append(float(curLine[i]))
        #存所有行的数据的特征
        dataMat.append(lineArr)
        #存目标值(行向量)
        labelMat.append(float(curLine[-1])) 
    return dataMat,labelMat

#最小二乘法(标准回归函数):求拟合直线的参数w=(X.T*X).I*X.T*y
#样本特征数据xArr
#样本的目标值yArr
def standRegres(xArr,yArr):
    #转成矩阵类型
    xMat = mat(xArr) 
    #行向量转置为列向量形式
    yMat = mat(yArr).T
    #
    xTx = xMat.T*xMat 
    #对xTx求逆,需要满足其行列式不为0
    if linalg.det(xTx) == 0.0:
        print "This matrix is singular, cannot do inverse"
        return
    #拟合直线的参数
    ws = xTx.I * (xMat.T*yMat)
    return ws

#***批处理梯度下降法
#输入为训练数据与其输出
def gradDescent(dataMatIn, classLabels):
    #转为NumPy可识别的矩阵
    dataMatrix = mat(dataMatIn)             
    #为了便于计算,classLabels为行向量转为列向量
    labelMat = mat(classLabels).transpose() 
    #获取输入数据的条数m,特征数n
    m,n = shape(dataMatrix)    
    #设定迭代的步长alpha
    alpha = 0.001
    #设置循环次数500次,即训练次数,人为给定
    maxCycles = 500
    #权值初始化为1,后面根据样本数据调整
    #训练结束得到最优权值
    #weights为n行,1维。为列向量。
    weights = ones((n,1))
    #循环maxCycles次,
    #每次根据模型输出结果与真实值的误差,调整权值。
    for k in range(maxCycles):    
        #dataMatrix*weights矩阵的乘法。
        #事实上包含600次的乘积   
        #h为模型给出的一个预测值       
        h = dataMatrix*weights  
        #计算误差,每条记录真实值与预测值之差     
        error = h-labelMat
        #权值调整(未知参数调整)        
        weights = weights - alpha * dataMatrix.transpose()* error
    #循环次数结束,返回回归系数  
    return weights

#***随机梯度下降法
#输入:训练数据矩阵、输出、迭代次数
#输出:权值w
def stocGradDescent0(dataMatrix, classLabels, numIter=100):
    #list类型转换array类型
    dataMatrix=array(dataMatrix)
    #获取训练数据条数m,维度n
    m,n = shape(dataMatrix)
    #步长
    alpha = 0.01
    #权值初始化为1,后面根据样本数据调整
    weights = ones(n)   
    #循环numIter次
    for j in range(numIter):
        #遍历每一条数据
        for i in range(m):

        #h为当前样本的预测值,批处理梯度上升算法的h为所有样本的模型输出
        #此处h为一个值,即一次只有一个样本更新
        #dataMatrix[i]*weights也为当前样本行乘以权值weights
            h = sum(dataMatrix[i]*weights)
    #误差,此处error为一个值
            error = h-classLabels[i]
    #只选择当前样本进行权值更新
            #weights = weights - dot(alpha * error,dataMatrix[i])#list类型运算
            weights = weights - alpha * error*dataMatrix[i]#array类型直接数乘
    #返回权值   
    return mat(weights).transpose()


#图形化显示标准线性回归结果,包括数据集及它的最佳拟合直线    
def standplot(xarr,yarr,w):
    import matplotlib.pyplot as plt
    xmat=mat(xarr)
    ymat=mat(yarr)
    #画点
    fig=plt.figure()
    ax=fig.add_subplot(111)
    ax.scatter(xmat[:,1].flatten().A[0],ymat.T[:,0].flatten().A[0])
    #画线,为了保证直线上的点是按顺序排列,需按升序排列
    xCopy = xmat.copy()
    #排序
    xCopy.sort(0)  #排序
    yHat = xCopy*w #预测值
    ax.plot(xCopy[:,1],yHat)
    plt.show() 


if __name__ == "__main__":    
    dataMatIn, classLabels = loadDataSet('ex0.txt')
    #最小二乘解析式法
    w_LS=standRegres(dataMatIn,classLabels)
    print'w_LS='
    print w_LS
    standplot(dataMatIn,classLabels,w_LS)

    #批处理梯度下降法
    w_gradDescent=gradDescent(dataMatIn, classLabels)
    print'w_gradDescent='
    print w_gradDescent
    #standplot(dataMatIn,classLabels,w_gradDescent)

    #随机梯度下降法
    w_stocGradDescent0=stocGradDescent0(dataMatIn, classLabels)
    print'w_stocGradDescent0='
    print w_stocGradDescent0
    #standplot(dataMatIn,classLabels,w_stocGradDescent0)


Python:实现linear regression线性回归算法(附完整源码) 阅读详情

相关推荐

拆解特斯拉Optimus的关节技术:谐波减速器在仿人机器人中的5个精妙设计

本文深度解析特斯拉Optimus仿人机器人关节中的谐波减速器技术,揭示其五大工程突破:微型化材料革命、两万分之一圈精度实现、碳纤维柔轮轻量化、智能运维系统及国产替代方案。重点探讨谐波减速器如何通过创新设计和先进材料实现精准传动,为仿人机器人提供高效可靠的关节动力解决方案。

omega的博客 1077

机器学习经典算法---线性回归(Linear Regression)算法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

lcx_nanmu的博客 2万+

Claude Code × SolidWorks:批量填属性、格式转换、BOM 汇总自动化实战

摘要:本文介绍利用 Claude Code 生成 VBA 宏实现 SolidWorks 批量处理任务的自动化方案。包含5个实战案例:批量填写自定义属性(60分钟任务→10秒)、批量格式转换(80分钟→30秒)、多配置工程图自动生成(120分钟→2分钟)、滚珠丝杠选型计算(15分钟→10秒)和装配体递归BOM导出(40分钟→1分钟)。所有代码基于SolidWorks 2020+ API,提供完整VBA实现和操作指南,可显著提升设计效率。

m0_64424835的博客 613

机器学习算法(2)—— 线性回归算法

线性回归算法1. 线性回归简介2. 线性回归的用法2. 线性回归的损失与优化2.1 损失函数2.2 优化算法2.2.1 正规方程2.2.2 梯度下降 1. 线性回归简介 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。 注意: 只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归 特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。 线性回归当中主要有两种模型,一种是线性关系,另一

hu_wei123的博客 6443

几款支持国标GB28181的平台以及视频监控设备接入的配置方法(Web端无插件播放)

GB28181解决的一个主要问题就是如何远程、跨网络、跨区域、跨级别的访问网络中的监控设备(包括IPC、NVR等),本文介绍几款G28181平台的接入配置方法,适合有监控视频摄像头的远程接入和预览需求的人群参考使用。

一名高级工程师的博客 1万+

EU 2021/646 eCall工程拆解:MSD、测试模式与型式核准

紧急呼叫系统(eCall)是车载通信中面向事故救援的安全功能,其原理是在碰撞或人工触发后,通过蜂窝网络向公共安全应答点发送最小数据集(MSD),并建立语音链路。技术价值在于缩短救援响应时间、提升事故后生存率,应用场景覆盖乘用车、轻型商用车及车载T-Box等前装通信模块。面向欧盟市场时,EU 2021/646把eCall从安装要求推进到型式核准测试,关注触发链路、备用电源、GNSS定位、MSD字段、音频质量与回拨能力。工程落地需要围绕测试模式、字段校验、配置管理和送检样件建立可交付合规方案。

weixin_31815843的博客 210

线性回归算法

这种最小二乘法估计,其实我们就可以认为,假定了误差服从正太分布,认为样本误差的出现是随机的,独立的,使用最大似然估计思 想,利用损失函数最小化 MSE 就能求出最优解!所以反过来说,如果我们的数据误差不是互相独立的,或者不是随机出现的,那么就不适合 去假设为正太分布,就不能去用正太分布的概率密度函数带入到总似然的函数中,故而就不能用 MSE 作为损失函数去求解最优解了!所以, 最小二乘法不是万能的~还有譬如假设误差服从泊松分布,或其他分布那就得用其他分布的概率密度函数去推导出损失函数了。

m0_52287942的博客 2254

零基础入门红外与可见光图像融合:DAF-Net 实战全指南

本文介绍了基于DAF-Net的红外与可见光图像融合技术,主要内容包括:技术原理、环境配置、数据准备和模型实现。DAF-Net通过双分支特征提取和动态注意力融合机制,有效结合红外图像的热辐射信息与可见光图像的纹理细节。文章详细讲解了开发环境搭建步骤(Python 3.8+PyTorch),TNO数据集的预处理方法,并提供了完整的DAF-Net实现代码,包含特征提取、注意力融合和图像重建三个关键模块。该技术可广泛应用于安防监控、自动驾驶等领域,帮助开发者快速入门多模态图像融合。

FJN110的博客 123

机器学习 线性回归

2.1 线性回归简介 学习目标 了解线性回归的应用场景 知道线性回归的定义 1 线性回归应用场景 房价预测 销售额预测 贷款额度预测 线性关系举例: 2 什么是线性回归 2.1 定义与公式 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。 特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归。 通用公式 h(w)=w1x1+w2x2+w3x3+...+b=wTx

ljh18885466426的博客 2742

中国农业银行——轻量式云原生应用平台(轻云平台)

2021年10月,中国人民银行等联合发布了《关于规范金融业开源技术应用与发展的意见》(银办发〔2021〕146 号),规范金融机构合理应用开源技术,提高应用水平和自主可控能力,促进开源技术健康可持续发展。前期,为助力成员单位做好开源技术应用与发展工作,北京金融科技产业联盟开源专委会组织了金融业开源技术应用、创新等方面的案例征集,现对部分优秀案例进行宣传,发挥先进典型示范引领作用。申报单位:中国农业银行股份有限公司技术领域:云原生、无服务器架构(Serverless)、DevOps。

银行信息系统应用架构详解 2394

华为OD机考双机位A卷 - 开心消消乐(Java & Python& JS & C/C++ & GO )

华为OD机考双机位A卷 - 开心消消乐(OD上机考试双机位A卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 1269

05- 线性回归算法 (LinearRegression) (算法)

线性回归算法(LinearRegression)存在一定的误差符合正太分布求这个正太分布的最小均值和方差求误差的极小值。

March_A的博客 7163

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python一元线性回归算法_Python线性回归实例--Python,sklearn,LinearRegression

分析按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。如果在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条直线近似表示,这种回归分析称为一元线性回归分析。如果回归分析中包括两个或两个以上的自变量,且因变量和自变量之间是线性关系,则称为多元线性回归分析。用最小二乘法估计参数b,设服从正态分布,分别求对a、b线性回归方程求法 的偏导数并令它们等于零,得方程组解为 ...

weixin_39605835的博客 774

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

深入浅出线性回归算法解析与实例应用

本文将深入浅出地解析线性回归算法的基本原理、应用场景及其优缺点,帮助读者快速掌握这一重要的统计工具。通过丰富的实例应用,读者将能够更好地理解如何在实际问题中运用线性回归,提升数据分析能力,实现科学决策。

tiangang2024的博客 1497

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

01. 线性回归算法实例

1. 线性回归: 寻找一种能预测的趋势, 线性回归通过一个或者多个自变量(特征值)与因变量(目标值)之间进行建模的回归分析 1.1. 线性关系 二维:直线关系 三维:特征, 目标值, 平面当中 1.2. 线性关系定义 单个特征 y = kx + b 加b是为了对于单个特征的情况更加通用 多个特征 y = k1房子面积 + k2房子位置 + b 1.3. 线性模型 f(x)...

2510

机器学习之线性回归算法预测数据

机器学习之线性回归算法预测数据,包括线性回归算法的理解、LinearRegression理解以及预测一元线性回归数据、预测二元线性回归数据、预测多元线性回归数据。

是十一月末的博客 1892

机器学习算法之线性回归及其sklearn实例

3:采用二次多项式拟合(原理见本人博客应用统计学) (pipeline封装注释里有说明解释)并查看R2分数。注:以上案例只是测试了一元回归在训练集上的线性回归效果以及多项式回归效果,其中用到了管道封装原理。注:至于为什么误差满足高斯分布这是数学家的问题,作为技术人员,只要知道会用即可。6:评价模型拟合好不好的方法:R平方:其实就是相关系数的平方:取值在0到1之间。注:1:梯度概念:对各个自变量的偏导数构建出的在某点单位向量。5:目标函数求最小值:采用梯度下降法求解。2.1:可视化拟合效果:结论:效果很差。

qq_44386182的博客 1241

python线性回归算法简介_Python实现的简单线性回归算法实例分析

本文实例讲述了Python实现的简单线性回归算法。分享给大家供大家参考,具体如下:用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果:> summary(fit)Call:lm(formula = weight ~ height, data = women)Residuals:Min 1Q Median 3Q Ma...

weixin_39574050的博客 214

python 线性回归函数_Python实现的简单线性回归算法实例分析

本文实例讲述了Python实现的简单线性回归算法。分享给大家供大家参考,具体如下:用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果:> summary(fit)Call:lm(formula = weight ~ height, data = women)Residuals:Min 1Q Median 3Q...

weixin_39805998的博客 507

python中回归分析的算法_Python实现的简单线性回归算法实例分析

本文实例讲述了Python实现的简单线性回归算法。分享给大家供大家参考,具体如下:用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果:> summary(fit)Call:lm(formula = weight ~ height, data = women)Residuals:Min 1Q Median 3Q...

weixin_29601703的博客 832

python线性回归实例_Python实现的线性回归算法示例【附csv文件下载】

本文实例讲述了Python实现的线性回归算法。分享给大家供大家参考,具体如下:用python实现线性回归Using Python to Implement Line Regression Algorithm小菜鸟记录学习过程代码:#encoding:utf-8"""Author: njulpyVersion: 1.0Data: 2018/04/09Project: ...

weixin_39934613的博客 409

python 线性回归显著性检验_Python实现的简单线性回归算法实例分析

本文实例讲述了python实现的简单线性回归算法。分享给大家供大家参考,具体如下:用python实现R的线性模型(lm)中一元线性回归的简单方法,使用R的women示例数据,R的运行结果:> summary(fit)Call:lm(formula = weight ~ height, data = women)Residuals:Min 1Q Median 3Q Max-1.7333 -1....

weixin_35344136的博客 3219
上一篇: Python 插件安装
下一篇: 逻辑回归 算法 实例
mllhxn
博客等级 码龄14年 116粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值