机器学习之预测回归一:简单线性回归

python机器学习-线性回归(LinearRegression)算法 用python进行线性回归分析非常方便,如果看代码长度你会发现真的太简单。但是要灵活运用就需要很清楚的知道线性回归原理及应用场景。现在我来总结一下用python来做线性回归的思路及原理。 线性回归应用场景 线性回归介绍 机器学习中的线性回归 简单的线性回顾实例 线性回归应用场景 线性回归介绍 ——线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系... 阅读详情

机器学习之预测回归一:简单线性回归

回归的目的是预测数值型的目标值。

本文介绍单变量线性回归和多变量线性回归的算法原理,然后给出 Python 实战案例。关于回归进一步的问题(局部加权回归和惩罚线性回归)可以参考另一篇文章: 预测回归二:局部加权回归和惩罚线性回归

1、单变量线性回归

假设自变量 x 与因变量 y 之间是线性函数的关系,可以假设线性函数为:
在这里插入图片描述
回归系数为:
在这里插入图片描述
以平方误差计算代价函数:
在这里插入图片描述
其中,x,y 是输入数据(训练集),h 是y的预测值。此代价函数也被称为平方误差函数 ( square error function ),或平方误差代价函数 ( square error cost function )。误差平方对于大多数问题,尤其是回归问题都是合理的选择。平方误差函数是解决回归问题最常用的方式。

求解回问题转化为优化问题,优化目标是使代价函数(或称为损失函数)最小:
在这里插入图片描述
采用梯度下降算法求解优化问题。梯度下降背后的思想是:开始时我们随机选择一个参数的组合,计算代价
函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。我们持续这么做直到到到
一个局部最小值( local minimum) , 因为我们并没有尝试完所有的参数组合,所以不能确定
我们得到的局部最小值是否便是全局最小值( global minimum),选择不同的初始参数组合,
可能会找到不同的局部最小值。下图是梯度下降的直观示意图:
在这里插入图片描述
参数的计算公式可以写为:
在这里插入图片描述
其中 α 是学习率( learning rate),是决定收敛速度的超参数。

求解上面的方程关键在于求偏导:
在这里插入图片描述
求导后得到;
在这里插入图片描述
以上公式就是梯度下降算法求单变量解线性回归的递归公式。

2、多变量线性回归

多变量线性回归的推导过程同单变量线性回归一样,最后得到梯度下降的递归公式:

在这里插入图片描述

3、多项式回归

可以通过变量变换转化为多变量线性回归。如:

在这里插入图片描述

4、正规方程

求解线性回归还有另一种方法,它可以在不需要多步梯度下降的情况下,也能解出代价函数 J 的最小值,这是另一种称为正规方程(normal equations)的方法。

设有 n 个特征,有 m 个样本。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

则可以直接通过正规方程计算参数:

在这里插入图片描述

推导过程:

在这里插入图片描述

5、Python 代码实现

测试数据集使用 ex0.txt,数据文件中第二列是自变量 x,第三列是因变量 y,而第一列全为1,故而前两列可以作为矩阵 X。

梯度下降算法

首先是导入所需的包:

from numpy import matrix, linalg
import numpy as np
import matplotlib.pyplot as plt

加载样例数据

def loadDataSet(filename, separator='\t'):
    dataSet = []
    labels = []
    with open(filename, 'r') as fr:
        for line in fr.readlines():
            lineArr = line.strip().split(separator)
            feat = []
            for i in range(len(lineArr) - 1):
                feat.append(float(lineArr[i]))
            dataSet.append(feat)
            labels.append(float(lineArr[-1]))
    return dataSet, labels

根据代价函数的计算公式,得到代价函数的计算函数:

def costJ(X, y, theta):
    """
    计算代价函数,(注意这里的X,和 y 都是 numpy 的 matrix 对象)
    :param X: matrix, [X0, X1, X2, ..., Xn]^T, X0 = 1, m * (n+1) 矩阵, m 个样本,n个特征
    :param y: matrix, [y1, y2, ..., ym], 1 * m  向量
    :param theta: 1 * m 向量, 权重
    """
    m = float(len(y))
    j = (X * theta - y)
    J = sum(j.transpose() * j) / (2*m)
    return float(J)

根据梯度下降的迭代公式,计算回归系数:

def linear_regres(X, y, alpha, num_iters):
    """
    梯度下降算法求解线性规划
    :param X: list, [X0, X1, X2, ..., Xn]^T, X0 = 1, m * (n+1) 矩阵, m 个样本,n个特征
    :param y: list, [y1, y2, ..., ym], m * 1 向量
    :param alpha: 学习率
    :param num_iters: 最大迭代次数
    :return:
    """
    m = float(len(y))
    X = matrix(X)
    y = matrix(y).transpose()
    theta = matrix([[0.], [0.]])
    J = []
    J.append(costJ(X, y, theta))
    theta_s = theta.copy()
    for i in range(num_iters):
        theta[0] -= alpha / m * sum(X * theta_s - y)
        theta[1] -= alpha / m * sum((X * theta_s - y).transpose() * X[:, 1])
        J.append(costJ(X, y, theta))
        theta_s = theta.copy()
    return theta, J

导入数据求解线性回归:

x, y = loadDataSet('ex0.txt')
theta, J = linear_regres(x, y, 0.01, 500)
plt.plot(range(len(J)), J)
plt.show()

绘制代价函数随迭代次数的变化:

在这里插入图片描述

绘制样例数据与拟合曲线:

def plot_reg_line(X, y, theta):
    X = matrix(X)
    y = matrix(y)
    fig = plt.figure()
    aX = fig.add_subplot(111)
    aX.scatter(X[:, 1].flatten().A[0], y.T[:, 0].flatten().A[0])
    XCopy = X.copy()
    XCopy.sort(0)
    yH = XCopy*theta
    aX.plot(XCopy[:, 1], yH, C='black')
    plt.show()
plot_reg_line(x, y, theta)

在这里插入图片描述

正规方程

根据正规方程求解线性回归:

def normal_equ(X, y):
    """
    正规方程计算线性回归,theta = (X^T*X)^-1*X^T*y
    :param X: list, [X0, X1, X2, ..., Xn]^T, X0 = 1, m * (n+1) 矩阵, m 个样本,n个特征
    :param y: list, [y1, y2, ..., ym], m * 1 向量
    :return: theta, 1 * m 向量, 权重
    """
    X = matrix(X)
    y = matrix(y).transpose()
    XTX = (X.transpose() * X)
    if linalg.det(XTX) == 0.0:
        print('矩阵无法求逆!')
        return
    theta = XTX.I * X.transpose() * y
    return theta

由正规方程求解的就是最佳拟合曲线:

x, y = datasets.loadDataSet('ex0.txt')
theta = normal_equ(x, y)
print(theta)
plot_reg_line(x, y, theta)
机器学习-用简单线性回归做预测(实战篇) 这是参加贪心学院训练营的第一周,这一周老师主要交了我们简单的线性回归算法与 KNN算法的理论与实战。在机器学习里面,主要可以分为两大类问题,即,分类与回归。 分类主要是判断新得到的数据为哪一类,回归就是预测某一个连续的值。归根结底, 机器学习就是对拿到的历史数据,去训练出数据模型,然后能够对未知数据有一定预测。 在进入本次实战任务之前,我们需要先对机器学习有一定的认识。 请看我的“一文初窥机... 阅读详情

相关推荐

利用Weka进行线性回归预测

一、实验目的和内容 (一)实验目的和内容 利用Weka对现有数据进行短期预测。先利用excel和weka软件将数据记性预处理,再将数据载入weka中,开始创建模型并进行预测。通过本实验,掌握Weka软件的使用,对数据创建模型并预测。从而掌握回归分析的基本思想和方法。 (二)背景知识 1、Weka Weka全名怀卡托智能分析环境(Waikato Environment for Knowle...

IT女孩儿的日常的博客 1万+

当Sklearn遇上Plotly,机器学习变得如此简单、易于理解

在学习sklearn(机器学习)过程中,模型原理可谓是枯燥无味,加上大多数模型训练过程也是不可见的,这使得很多小伙伴们望而却步,当然也有很多学者试图通过各种方式以可视化模型学习及预测过程,但大多数是复杂且不美观的。 本文将给大家带来一个全新方式。当机器学习遇到简洁、强大且美观的plotly可视化库时,可谓是强强联手,从模型训练、预测、决策边界、残差、交叉验证、网格搜索到模型评价,均可以很容易地可视化出来。喜欢本文记得收藏、点赞、关注。 【注】完整版代码、资料、技术交流群,文末获取 Plotly基本介绍 P

Python学习与数据挖掘 1560

【机器学习小论文】sklearn线性回归LinearRegression代码及调参

一、前言 最近在写小论文,就是硕士毕业论文的部分成果,需要用到线性回归,所以就把相关代码贴上,便于日后写论文时总结,也顺便给后来者提供思路。小论文的思路主要是,先用线性回归,再用随机森林,最后再用xgboost,来预测房价,最后得出结论。所以,这个会陆续的贴出相关代码。至于数据清洗那一块,暂时不贴上了,主要原因就是数据清洗不容易,并且每个人的清洗方法也不一样,所以主要还是看思路。 二、算法简介 2.1 什么是回归分析 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关

xiaohutong1991的专栏 7107

生活中的算法的实际举例_三张图读懂机器学习:基本概念、五大流派与九种常见算法...

一、机器学习概览1. 什么是机器学习?机器通过分析大量数据来进行学习。比如说,不需要通过编程来识别猫或人脸,它们可以通过使用图片来进行训练,从而归纳和识别特定的目标。2. 机器学习和人工智能的关系机器学习是一种重在寻找数据中的模式并使用这些模式来做出预测的研究和算法的门类。机器学习是人工智能领域的一部分,并且和知识发现与数据挖掘有所交集。更多解读可参阅《一文读懂机器学习、数据科学、人工智能、深度学...

weixin_32122595的博客 2303

【机器学习】简单线性回归算法及代码实现

本文讲解了线性回归算法的基础知识和应用,强调线性回归主要用于解决回归问题。通过分析房产价格与房屋面积的关系,展示了线性回归的基本思想。文中提到线性回归算法的实现简单,但背后有强大的数学支撑。介绍了简单线性回归与多元线性回归的区别,并解释了如何通过最小二乘法找到最佳拟合直线。同时,探讨了线性回归算法的可解释性以及在机器学习中的重要地位,指出它是许多复杂模型的基础。此外,还提到了最优化原理在机器学习算法中的应用,以及如何通过线性回归算法学习机器学习中的重要思想。线性回归算法是机器学习领域的重要算法,

聚焦大数据、AI、数据库三大核心领域,分享 Flink/Spark 实时计算、数仓架构设计、AI 模型落地、数据库性能调优的实战干货,附可直接运行的源码与方案。提供企业技术内训、项目咨询与定制化服务,助力开发者与企业高效搞定数智技术难题。 1072

机器学习经典算法:简单线性回归(一元)

一元线性回归是一种用来预测单个因变量与单个自变量之间线性关系的算法。

Norah 的技术博客 1193

python回归结果可视化图表解读_Matplotlib 可视化最有价值的 14 个图表(附完整 Python 源代码)...

本文来源 | 公众号 Python数据之道翻译 | Lemon作者 |Machine Learning Plus本文总结了 Matplotlib 以及 Seaborn 用的最多的 50 个图形,掌握这些图形的绘制,对于数据分析的可视化有莫大的作用,在数据分析和可视化中最有用的 50 个 Matplotlib 图表。 这些图表列表允许您使用 python 的 matplotlib 和 s...

weixin_39748928的博客 788

python:机器学习(随机森林、支持矢量机等)回归预测结果精度图绘制

本文记录了使用python回归方法对输入特征做了预测,并绘制了预测值和真实值之间的相关性图。

养乐多的博客 3022

线性回归 10 种图表 上

至于数据集,表现方式,大家可以根据我给出的代码继续调整即可!那么,在线性回归学习中,以下10种图表是很重要的:散点图线性趋势线图残差图(Residual plot)正态概率图学习曲线方差-偏差权衡图残差对预测值图部分回归图杠杆图Cook's 距离图。

CKissjy的博客 4093

机器学习笔记一:使用LinearRegression实现Boston房价线性回归

一、LinearRegression类 sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) 参数 含义 fit_intercept 是否有截据,如果没有则直线过原点 normalize 是否将数据归一化 copy_X 默认为True,当为True时,X会被copi

耐心的小黑的博客 2783

StockPricePredictionFromFilings:使用机器学习和深度学习算法(通过知识图嵌入)增强的财务报表中的股价预测

使用机器学习和深度学习并结合知识图嵌入的财务报表中的股票价格预测 几十年来,能够预测单个公司的股价一直是投资者的目标。 公司的股价受许多因素影响。 这些因素包括新闻,当前的政治气候和经济状况。 但是,鉴于成功进行预测可能获得的回报,许多人都试图开发模型来精确地做到这一点。 与股票价格预测有关的许多文献都集中在趋势(价格上涨或下跌)和价格(例如几天之内或两天之间的价格变化)的短期预测中。 该项目研究了机器学习,深度学习和知识图嵌入的使用,以发现在美国证券交易所上市的公司的财务业绩与其股价之间的关系。 具体来说,这项工作涉及尝试从财务报表中生成价格预测,以及预测每个公司的年度10K报告之间单个公司股票价格变化的趋势和幅度。 这项工作为投资者提供了财务决策支持,也导致了新数据集的产生,其他研究人员可能会进一步探索。 存储库的结构如下: “数据”文件夹包含针对所研究的每个研究问题的预处理数据

4.机器学习-十大算法之一线性回归算法(LinearRegression)案例讲解

线性回归是一种用于预测数值型数据的统计学分析方法,它通过建立一个或多个自变量与因变量之间的线性关系来进行预测。线性回归的基本思想是通过拟合最佳直线(也就是线性方程),来描述自变量和因变量之间的关系。这条直线被称为回归线,其目的是使得所有数据点到这条直线的垂直距离(即残差)的平方和最小。这个最小化过程通常称为最小二乘法。以山河作礼。🎖️🎖️:Python领域新星创作者,优快云实力新星认证,优快云内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。💕💕悲索之人烈焰加身,堕落者不可饶恕。

weixin_50804299的博客 1万+

APB Timer验证环境搭建——学习笔记(6)

(1)为RELOAD VALUE配置初始值32'h8000_0000,设定边界值32'h4000_0000,可以看到减到想要的边界值的时候,counter重新加载RELOAD VALUE,重新开始计数;这根线,统计等待到中断的次数,与理论值做。(2)设定Reload value。(1)由于counter。recount总共次数;

qq_41651535的博客 497

机器学习线性回归算法实验报告_机器学习之简单线性回归

为了利用机器学习进行简单的线性回归,先理解机器学习和线性回归的概念,然后通过案例进行机器学习。本文主要目录如下:一、机器学习的概念二、线性回归的概念三、机器学习线性回归模型 (一)导入数据集 (二)提取特征标签 (三)绘制原始数据散点图 (四)查看相关系数 (五)建立训练数据和测试数据 (六)构建线性回归模型 ...

weixin_39828338的博客 6944

N32在Keil中J-Link识别失败的排查与修复指南

本文详细解析了在Keil开发环境中,J-Link调试器无法识别N32系列MCU的常见问题。通过分步指导,从检查修改Keil工程配置文件、更新J-Link驱动,到手动添加N32专用设备支持包,系统性地提供了排查与修复方案,帮助开发者快速恢复调试连接,确保开发流程顺畅。

304

从TI官方手册里挖细节:TPS5430负压电路那个不起眼却救命的Cd电容

本文深入解析TPS5430负压电路中关键Cd电容的作用与设计要点,揭示其在DC-DC电源设计中的重要性。通过对比TI手册和实战案例,详细阐述Cd电容在高频电流回路、能量缓冲和噪声抑制中的核心功能,并提供选型与布局指南,帮助工程师避免芯片烧毁风险,提升电路稳定性。

weixin_27102543的博客 357

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

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

是十一月末的博客 1892

基于Qwen3-14B大模型的智能UI自动化测试实践

UI自动化测试是软件工程中保障产品质量的关键环节,其核心原理是通过脚本模拟用户操作,对软件界面进行功能验证。传统方法依赖于编写和维护基于元素定位的固定规则脚本,在面对复杂交互或频繁变化的界面时,维护成本高昂。大语言模型(LLM)的出现为这一领域带来了新的技术价值,其强大的自然语言理解和代码生成能力,使得测试脚本的编写从精确编码转向了任务描述。通过将大模型作为决策大脑,结合Playwright等自动化工具作为执行器,可以构建出能够理解界面、规划操作并验证结果的智能测试系统。这种方案特别适用于处理变化频繁、逻辑

weixin_42619742的博客 304

头歌——机器学习(线性回归)

简单的说,是因为使用平方形式的时候,使用的是“最小二乘法”的思想,这里的“二乘”指的是用平方来度量观测点与估计点的距离(远近),“最小”指的是参数值要保证各个观测点与估计点的距离的平方和达到最小。假如我们将青少年的身高和体重值作为坐标,不同人的身高体重就会在平面上构成不同的坐标点,然后用一条直线,尽可能的去拟合这些点,这就是简单的线性回归。简单线性回归中,一个变量跟另一个变量的变化而变化,但是生活中,还有很多变量,可能由多个变量的变化决定着它的变化,比如房价,影响它的因素可能有:房屋面积、地理位置等等。

m0_73879806的博客 4207

SAP SD销售订单抬头自定义字段增强:BADI_SLS_HEAD_SCR_CUS实战指南

SAP ERP系统中的销售订单管理是企业核心业务流程,经常需要扩展标准功能来满足个性化业务需求。在SAP SD模块中,销售订单抬头屏幕的增强是常见需求。通过BADI(Business Add-In)技术,可以在不修改标准代码的前提下,实现自定义字段的添加与数据处理。本文详细介绍了如何使用BADI_SLS_HEAD_SCR_CUS实现销售订单抬头自定义字段,包括函数组子屏幕设计、数据存储表构建以及BADI方法的具体实现。这种增强方式适用于VA01/VA02/VA03等事务,保证了系统升级的兼容性和维护的便捷性

weixin_29758911的博客 349

MBIST --- PATR1.Memorybist测试原理

mem bist作为现在design设计中不可或缺的DFT设计内容,越发重要。本章节主要介绍mem bist组成部分,测试的原理以及注意事项。

sinat_27691203的博客 1万+

三、(机器学习)-LinearRegression线性回归(一)

LinearRegression线性回归(–) 1. 什么是线性回归 线性回归是利用最小二乘法,对一个或者多个自变量和因变量之间的关系进行建模的一种回归分析。 那么什么是回归,什么又是分类呢? 如果一个模型输出的是一个连续的值,比如说估计房子的面积,估计值可以是100.1,100.2也可以是100.3这种连续的值,那么这个模型就是回归分析,如果预测的值不是一个了连续的值,比如说估计房子的房间数,房...

_23__的博客 3886

Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络连续像素级与估计

Transformer-Based Attention Networks for Continuous Pixel-Wise Prediction 基于Transformer注意力网络的连续的像素级的

MengYa_Dream的博客 4716

机器学习 ---线性回归

文章主要介绍了线性回归相关内容,包括简单线性回归与多元线性回归的概念及示例,阐述了残差的定义、在理想与非理想模型中的情况及意义,还讲解了线性回归的正规方程解,涵盖其适用场景、公式推导与代码实现,提及衡量线性回归性能指标可参考其他文章,最后以 scikit-learn 中的 LinearRegression 类为例,介绍了其在波士顿房价预测实践中的应用,包括数据集情况、类的常用参数及训练、预测函数的使用等。

m0_72968288的博客 2549

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

ML 系列:机器学习和深度学习的深层次总结(02)线性回归

欢迎学习机器学习系列。这门综合课程目前包括40个部分,指导您了解机器学习、统计和数据分析的基本概念和技术。以下是最基本机器学习模型,线性回归模型。

gongdiwudu的专栏 2165

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: python 实现中文文本分类
下一篇: 预测回归二:局部加权回归和惩罚线性回归
XnCSD
博客等级 码龄12年 132粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值