机器学习之线性回归

机器学习回归算法—线性回归及案例分析 一、回归算法回归是统计学中最有力的工具之一。机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型、连续性而定义的。回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,... 阅读详情

单变量线性回归

说到机器学习的话,很多人首先会想到的是单变量的线性回归,好像大家高中的时候都学过。很多人不理解,这种线性回归的东西跟机器学习有什么关系。

其实单变量的话形式很简单:


但是让这种函数充分拟合大致有线性关系的离散点,怎么做到呢?这就需要一个损失函数了:


其实就是回归函数值与真实的y值的欧式距离求和。想要拟合效果最好,就要使得损失函数最小化。怎么最小化呢?

我们很容易看得出损失函数是个凸函数,二阶导数大于零。也就说有最优解。怎么求最优解呢?另两个变量的偏导等于0,即可。


令两式都为0.解得:


这个就是高中我们学过最小二乘法解线性回归的参数了!

行吧,先拿单变量练一练手。

数据集是关于年龄与身高的,来源:点击打开链接

把两个文件与代码放在同一个文件下面。然后就可以打码了。

import numpy as np
import matplotlib.pyplot as plt

def linear_regression_one_var(x, y):
    #  y=bx+a
    num = len(x)
    b = (np.sum(x*y)-num*np.mean(x)*np.mean(y))/(np.sum(x*x)-num*np.mean(x)**2)
    a = np.mean(y)-b*np.mean(x)
    return np.array([b, a])


x = np.loadtxt('ex2x.dat')
y = np.loadtxt('ex2y.dat')
b, a = linear_regression_one_var(x, y)
print(b,a)
fx = b*x+a
plt.plot(x, fx)
plt.plot(x, y, 'o')
plt.xlabel('age')
plt.ylabel('height')
plt.show()

输出:

0.0638811658258342 0.7501625370012386

等等,上面写的还停留在标量的阶段,实在是很不简洁,要是算多变量就很麻烦了。

这该怎么办呢?向量化,矩阵化!


重新定义参数,W是参数的矩阵,本质上是一个列向量,w0其实是常量的参数,不是变量的参数,为了运算的方便,纳入到参数矩阵中。X是变量的矩阵,上标代表是哪一个样本,每一列都是一个样本的特征变量,这里是单变量线性回归嘛,所以每列第一个都是1,代表那个常量,每列第二个就是该样本的特征变量了,因为是单变量,所以就不添下标了。Y的话就不用说了,本质上是一个列向量。

好了,那个回归函数就很容易写出来了。


我写的这个形式和别人的可能不太一样。

然后定义损失函数:


m是样本的个数,这个实践例子中,m=50,为什么是2m呢?为了求导后的形式美观,待会你看就知道了。

改变W矩阵,使得损失函数最小化!很简单,令


其实这个0是零矩阵,这是矩阵求导!矩阵求导细节,知乎上有个很好的讲解:矩阵求导术

还是写下求导的具体过程:

1、处理J(W):


2、套迹,其实我们知道J(W)是标量,所以可以套个迹,方便后面的微分


3、全微分


4、求导数


终于把导数求出来了。如果直接令导数等于0,解W是可以的。


这种求法的弊端在于矩阵的逆不存在时(也就是有多个最优解时),就不能用这种方法算了。

更推荐一种方法是,梯度下降法。原理的话,网上大把

具体形式:


alpha是步长。行吧最后上代码:

import numpy as np

def gradient_descent(x, y, w, col, alpha=0.06,times=3000,eps=1e-9):  # 调参有点难受啊
    for i in range(times):
        y_predit_T = x.T * w
        dJ_dw = 1 / col * x * (y_predit_T - y.T)
        w -= alpha * dJ_dw  # 同一个w矩阵
        if np.sum(np.abs(dJ_dw))<eps:
            print('第{}次迭代后的结果'.format(i))
            break
x = np.loadtxt('ex2x.dat')
y = np.loadtxt('ex2y.dat')
x.resize((1,50))
x=np.append(np.ones((1,50)),x,0)
y.resize((1,50))
row,col=x.shape
w = np.mat(np.zeros((row,1)))
x_mat=np.mat(x)#矩阵化后可以直接使用矩阵乘法
y_mat=np.mat(y)
gradient_descent(x_mat,y_mat,w,col)
print(w)
w0=(x_mat*x_mat.T).I*x_mat*y_mat.T#I表示矩阵的逆
print('直接求解的结果')
print(w0)
输出:
第2917次迭代后的结果
[[0.75016253]
 [0.06388117]]
直接求解的结果
[[0.75016254]
 [0.06388117]]

感觉还行吧,就是调参有点恶心。

多变量就不写了,一样的。



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

相关推荐

Spark-ML 线性回归 LinearRegression (1)

Spark-ML 线性回归 LinearRegression参数详述:

qq_24734217的博客 1876

机器学习2022吴恩达老师课程——学习笔记(五)

2022吴恩达老师机器学习课程的笔记(五)——Scaling Feature(特征缩放)、判断收敛的方法以及梯度下降中学习率的选择

zzz_zzzz_的博客 449

机器学习之线性回归(Linear Regression)

线性学习中最基础的回归之一,下面从线性回归的数学假设,公式推导,模型算法以及实际代码运行几方面对这一回归进行全面的剖析~

July_sun的博客 3万+

吴恩达深度学习与神经网络课程学习——logistic回归神经网络计算过程向量化

logistic回归神经网络计算过程向量化 有了对之前对logistic回归神经网络计算过程,现在讨论向量化的运算,向量化运算对于大数据的运算 有着很重要的作用,向量化计算提供了并行运算,大大加快了运算速度。想要了解之前的logistic回归 神经网络计算过程可以访问以下我的另外一篇博客https://blog.youkuaiyun.com/jmu_sxc/article/details/8463810...

jmu_sxc的博客 531

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

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

xiaohutong1991的专栏 7107

【Python-ML】SKlearn库线性回归器LinearRegression

# -*- coding: utf-8 -*- ''' Created on 2018年1月24日 @author: Jason.F @summary: 有监督回归学习-基于最小二乘法构建线性回归模型 最小二乘法(Ordinary Least Square,LOS),估计回归曲线的参数,使得回归曲线到样本点垂直距离(残差或误差)的平方和最小 ''' import pandas as pd impo

医疗影像检索 1647

机器学习 矩阵的基本运算

矩阵的基本概念 假设 aij∈Ra_{ij} \in \mathfrak{R}, 其中 i=1,2,...,mi=1,2,...,m; j=1,2,...,nj=1,2,...,n. 我们定义如下的行列式: A=⎡⎣⎢⎢⎢⎢a11a21⋮am1a12a22⋮am2⋯⋯⋯a1na2n⋮amn⎤⎦⎥⎥⎥⎥\begin{equation*} \mathbf{A}= \begin{bmatrix}

Matrix-11 4535

sklearn机器学习:线性回归LinearRegression

LinearRegression类格式 sklearn.linear_model.LinearRegression (fit_intercept=True, normalize=False, copy_X=True, n_jobs=None) 参数 fit_intercept 布尔值,可不填,默认为True 是否计算此模型的截距。如果设置为False,则不会计算截距 normalize 布尔值,...

The Zen of Data Analysis 1095

机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)

在实际机器学习工作中,最常用的就是实值函数 y 对向量 x或矩阵 X 求导,比如最简单的线性回归问题中由目标函数 dJ(w)dJ(w) dJ(w) 求解最佳参数向量 ww w 。 矩阵/向量求导问题中要明确是什么量对什么量求导,得到的是什么形式的量 实值函数对向量求导,结果是同样维度和方向的向量 实值函数对矩阵求导,结果是同样维度的矩阵 本文以线性回归问题中由目标函数 dJ(w)dJ...

promisejia 1万+

机器学习笔记一:使用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

耐心的小黑的博客 2781

BCIC IV 2a数据集实战:从MATLAB导入到EEG信号分析全流程

本文提供了BCIC IV 2a数据集从MATLAB导入到EEG信号分析的完整实战流程。详细解析了数据集结构,区分了EEG与EOG信号,并演示了信号可视化、基础预处理(滤波、分段、基线校正)等关键步骤,帮助脑机接口研究者快速上手处理这一经典运动想象数据集。

weixin_29047919的博客 470

[ Spark ml ] 线性回归LinearRegression案例

案例实现 **内有详情备注 import org.apache.spark.ml.linalg.Vectors import org.apache.spark.ml.regression.{LinearRegression, LinearRegressionModel, LinearRegressionTrainingSummary} import org.apache.spark.sql.{DataFrame, SparkSession} object linearregression { def

weixin_52299264的博客 1828

Kotlin kapt插件报错全解析:从Could not load module到彻底解决(含Gradle 8.2.2适配指南)

本文深度解析了Kotlin开发中常见的kapt插件报错“Could not load module”的根源,并提供了从诊断到解决的完整方案。重点探讨了Gradle 8.2.2与Kotlin 1.9.x的兼容性问题,包括JVM IR后端冲突、配置缓存问题及依赖版本对齐,并给出了详细的调试技巧与迁移至KSP的建议。

rrr55的博客 315

Flink ML LinearRegression 用 Table API 训练线性回归并输出预测值

Flink ML 的 LinearRegression 实现了线性回归算法,通过训练数据学习权重参数,预测连续值目标。输入需要特征向量(featuresCol)和标签(labelCol),可选权重列(weightCol)。训练时可调参数包括正则化系数、学习率等。特征预处理推荐标准化(StandardScaler)以提高收敛性。使用流程包括fit训练模型和transform预测,输出包含预测值(predictionCol)。支持数值和类别特征处理,适用于多种回归场景。

hello.reader 1086

从零构建智能监控系统:ZLMediaKit与SpringBoot的RTSP流处理实战

本文详细介绍了如何从零构建智能监控系统,结合ZLMediaKit与SpringBoot实现RTSP流处理。通过多协议支持、高性能架构设计及工业级部署优化,解决传统监控方案的兼容性差、延迟高等问题,适用于物联网和智能安防领域。

weixin_29002209的博客 370

Vue3项目实战:CKEditor5富文本编辑器从安装到隐藏不需要的功能

本文详细介绍了在Vue3项目中集成并深度定制CKEditor5富文本编辑器的完整流程。通过分析其模块化架构,指导开发者从标准构建出发,移除图片、表格等冗余插件,创建专属轻量构建,从而显著减小打包体积并提升用户体验。文章结合实战代码,涵盖了环境搭建、自定义构建配置、高级优化技巧等关键步骤。

weixin_29016833的博客 283

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

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

是十一月末的博客 1890

Quartus II设计程序计数器PC、由PC产生ROM的地址(含仿真)

设计程序计数器PC,正常工作模式下,系统启动,设置PC的初始值,之后每来一个clk,PC的输出值应该增加1;当程序发生跳转时,PC的值应该发生改变,级将跳转的地址值赋进行输出。PC后端连接一个ROM,由PC来产生ROM的地址,仿真进行验证。

m0_73700621的博客 1815

机器学习—线性回归(Linear Regression)

线性回归原理和分析

1642

Silvaco TCAD仿真例库——肖特基二极管反向击穿特性(案例)

本文详细介绍了使用Silvaco TCAD仿真例库分析肖特基二极管反向击穿特性的完整流程。通过搭建带保护环的器件结构,配置关键物理模型,并执行反向偏压扫描,深入探讨了雪崩击穿机制、电场分布及设计参数(如漂移区浓度、保护环)对击穿电压的影响,为功率半导体设计与可靠性分析提供了实用的虚拟实验方法。

weixin_29165465的博客 389

SAP FICO 内部往来对账功能开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

SAP FICO 内部往来对账功能开发说明书(包括开发源代码、测试样例、FS)

我好像病了的博客 1223

linearregression_机器学习(2)——线性回归(Linear Regression)

学习阶段:大学计算机,人工智能。前置知识:多元微积分、线性代数、编程基础。从简单的情况开始,渐渐地了解机器学习。1. 单变量线性回归单变量线性回归,简而言之,就是提供一堆数据点 作为训练集,要机器拟合出一条线性函数 . 对于新提供的横坐标,机器就能预测其对应的纵坐标。拟合效果大致如下图所示:单变量线性回归的效果1.1 单变量线性回归建模符号约定: 表示训练样本数。 表示输入变量/特征。(比如说...

weixin_39676242的博客 420

Coze智能体开发:工作流教程之解析文件概述

大模型本身并不具备文件读取和解析的能力,无法直接处理文件字节流。对于支持工具调用(Function calling)的模型,扣子提供插件功能来帮助大模型调用外部工具 API,拓展大模型的能力边界。扣子插件商店提供海量官方插件和第三方插件,例如链接读取插件可以将链接对应的文件内容解析为纯文本传递给大模型。

王国平的博客 1793

20241230 机器学习ML -(1)线性回归(scikitlearn)

线性代数理论及证明过程请参考教材。公式推理可以参考AI。

weixin_46449024的博客 1427

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

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

weixin_50804299的博客 1万+

Camera2Demo

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

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

机器学习–线性回归 基本概念 线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。本文只讨论一元线性回归。 表达形式为: y=wTx+by = w^Tx + by=wTx+b 我们通常使用最小二乘法对方程进行求解。 优化目标为: arg maxw∥wT−y∥22arg\ \mathop{max}\limits_{w}\Vert w^T -y\Vert_2^2arg wmax​∥wT−y∥22​ 局限性

weixin_42727538的博客 745

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: python实现kmp算法(学不会你喷我)
下一篇: python手写多项式拟合、曲线拟合
your_answer
博客等级 码龄9年 131粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值