当前位置: 首页 > news >正文

机器学习---线性回归

1、线性回归

例如:对于一个房子的价格,其影响因素有很多,例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi表示,那么房价 y y y可以用如下公式表示:
y = w 1 x 1 + w 2 x 2 + w 3 x 3 + b y=w_1x_1+w_2x_2+w_3x_3+b y=w1x1+w2x2+w3x3+b
其中 w i w_{i} wi表示特征 i i i的权重, b b b表示偏置,也称作截距,当然在实际问题中, x i x_i xi 0 0 0 y y y肯定为 0 0 0而不可能为 b b b,但是加上偏置后可以是模型的拟合效果更好。

2、损失的衡量

在分类问题时,我们可以用准确率(预测正确的数量/测试集总样本数量),而在回归任务时,衡量误差的损失函数通常使用均方误差,设 y ′ y' y是预测值, y y y是真实值,则损失函数为:
l o s s = 1 n ∑ i = 1 n 1 2 ( y i ′ − y ) 2 loss = \frac{1}{n}∑_{i=1}^{n} \frac{1}{2}(y'_{i}-y)² loss=n1i=1n21(yiy)2
这个又称作均方误差,前面的系数 1 2 \frac{1}{2} 21是为了求导后与平方项的 2 2 2相乘时得到 1 1 1
可知,均方误差越小,拟合效果越好。反之拟合效果越差。
另外一个重要的衡量指标为 R 2 R^2 R2系数,当 R 2 < 0.3 R^2<0.3 R2<0.3时,拟合能力

3、优化损失

对于损失较大的时候,如何优化权重 w w w b b b使其让我们的均方误差尽可能的小。这里提供两种方法。
a)使用正规方程进行优化
b)使用梯度下降进行优化。
正规方程依次即可求得最优解,而梯度下降法需要逐次迭代,寻找出最优解。但是对于大规模的数据集,通常是采用梯度下降进行优化,而正规方程在小规模数据集的优化上表现略由于梯度下降。

4、线性回归API及其调用

在sklearn中提供了线性回归的API,根据优化方法不同,分为以下两种:

sklearn.linear_model.LinearRegression(fit_intercept=True)
通过正规方程进行优化
fit_intercept:是否计算偏置,默认为True,不计算偏置则模型一定过原点
LinearRegression.coef_:回归系数
LinearRegression。intercept_:偏置sklearn.linear_model.SGDRegressor(loss='squared_loss', fit_intercept=True, learning_rate ='invscaling', eta0=0.01)
loss:损失类型,loss='squared_loss'  普通最小二乘法
fit_intercept:是否计算偏置
learning_rate:学习率

5、线性回归实例–波士顿房价预测(数据集点我)

RM: 每个住宅的平均房间数
LSTAT: 区域内房东的地位,表示低收入人群的百分比
PTRATIO: 区域内学生和教师的比例
MEDV: 自住房的中位数价值,以千美元为单位

import pandas as pd
data = pd.read_csv('housing.csv',sep=',')

在这里插入图片描述

# 检查是否具有缺失值,全部为False,说明没有缺失值
pd.isnull(data).any()

在这里插入图片描述

# 数据集的切分
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(data[['RM','LSTAT','PTRATIO']],data.MEDV,train_size=0.8)
# 数据归一化
from sklearn.preprocessing import StandardScaler
transfer = StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)
import matplotlib.pyplot as plt
plt.rcParams['font.family']='STFangsong'
# 创建一个画布,分成三个绘图区,查看每个变量和目标值的关系
figure, axes = plt.subplots(nrows=1, ncols=3, figsize=(20, 8), dpi=80)
axes[0].scatter(data.RM,data.MEDV)
axes[1].scatter(data.LSTAT,data.MEDV)
axes[2].scatter(data.PTRATIO,data.MEDV)
# 加网格,透明度为0.5
axes[0].grid(linestyle='--',alpha=0.5)
axes[1].grid(linestyle='--',alpha=0.5)
axes[2].grid(linestyle='--',alpha=0.5)
plt.show()

在这里插入图片描述

# 采用回归算法进行预测
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error,r2_score
# 使用正则化进行优化
estimator = LinearRegression(fit_intercept=True)
estimator.fit(x_train, y_train)
y_predict1 = estimator.predict(x_test)
print(f"r方系数为{r2_score(y_predict1,y_test)}")
print(f"方差为:{mean_squared_error(y_predict1,y_test)}")
print(f'优化后的权重参数为:{estimator.coef_},偏置为:{estimator.intercept_}')

正则化优化的结果

from sklearn.linear_model import SGDRegressor
estimator = SGDRegressor(fit_intercept=True)
estimator.fit(x_train, y_train)
y_predict1 = estimator.predict(x_test)
print(f"r方系数为{r2_score(y_predict1,y_test)}")
print(f"方差为:{mean_squared_error(y_predict1,y_test)}")
print(f'优化后的权重参数为:{estimator.coef_},偏置为:{estimator.intercept_}')

在这里插入图片描述
观察可发现使用梯度下降优化的方差较小,可认为其预测的拟合效果更好。

相关文章:

机器学习---线性回归

1、线性回归 例如&#xff1a;对于一个房子的价格&#xff0c;其影响因素有很多&#xff0c;例如房子的面积、房子的卧室数量、房子的卫生间数量等等都会影响房子的价格。这些影响因子不妨用 x i x_{i} xi​表示&#xff0c;那么房价 y y y可以用如下公式表示&#xff1a; y …...

字符串去重、集合遍历 题目

题目 JAVA38 字符串去重描述输入描述&#xff1a;输出描述&#xff1a; 示例:分析&#xff1a;代码&#xff1a;大佬代码&#xff1a; JAVA39 集合遍历描述输入描述&#xff1a;输出描述&#xff1a; 示例:分析&#xff1a;代码&#xff1a; JAVA38 字符串去重 描述 从键盘获取…...

SQL窗口函数详解

详细说明在sql中窗口函数是什么&#xff0c;为什么需要窗口函数&#xff0c;有普通的聚合函数了那窗口函数的意义在哪&#xff0c;窗口函数的执行逻辑是什么&#xff0c;over中的字句是如何使用和理解的&#xff08;是不是句句戳到你的痛点&#xff0c;哼哼&#xff5e;&#x…...

如何用Java写一个整理Java方法调用关系网络的程序

大家好&#xff0c;我是猿码叔叔&#xff0c;一位 Java 语言工作者&#xff0c;也是一位算法学习刚入门的小学生。很久没有为大家带来干货了。 最近遇到了一个问题&#xff0c;大致是这样的&#xff1a;如果给你一个 java 方法&#xff0c;如何找到有哪些菜单在使用。我的第一想…...

基于STM32设计的管道有害气体检测装置(ESP8266局域网)176

基于STM32设计的管道有害气体检测装置(176) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成【3】ESP8266模块配置【4】上位机开发思路【5】项目模块划分【6】LCD显示屏界面布局【7】上位机界面布局1.2 项目功能需求1.3 项目开发背景1.4 开发工具的选择1…...

iCloud照片库全指南:云端存储与智能管理

iCloud照片库全指南&#xff1a;云端存储与智能管理 在数字化时代&#xff0c;照片和视频成为了我们生活中不可或缺的一部分。随着手机摄像头质量的提升&#xff0c;我们记录生活点滴的方式也越来越丰富。然而&#xff0c;这也带来了一个问题&#xff1a;如何有效管理和存储日…...

IDEA中使用Maven打包及碰到的问题

1. 项目打包 IDEA中&#xff0c;maven打包的方式有两种&#xff0c;分别是 install 和 package &#xff0c;他们的区别如下&#xff1a; install 方式 install 打包时做了两件事&#xff0c;① 将项目打包成 jar 或者 war&#xff0c;打包结果存放在项目的 target 目录下。…...

TreeMap、HashMap 和 LinkedHashMap 的区别

TreeMap、HashMap 和 LinkedHashMap 的区别 1、HashMap2、LinkedHashMap3、TreeMap4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在 Java 中&#xff0c;TreeMap、HashMap 和 LinkedHashMap 是三种常用的集合类&#xff0c;它们在…...

【跟我学K8S】45天入门到熟练详细学习计划

目录 一、什么是K8S 核心功能 架构组件 使用场景 二、入门到熟练的学习计划 第一周&#xff1a;K8s基础和概念 第二周&#xff1a;核心对象和网络 第三周&#xff1a;进阶使用和管理 第四周&#xff1a;CI/CD集成和监控 第五周&#xff1a;实战模拟和案例分析 第六周…...

ubuntu下载Nginx

一、Nginx下载安装&#xff08;Ubuntu系统&#xff09; 1.nginx下载 sudo apt-get install nginx2.nginx启动 启动命令 sudo nginx重新编译(每次更改完nginx配置文件后运行&#xff09;&#xff1a; sudo nginx -s reload3.测试nginx是否启动成功 打开浏览器访问本机80端口…...

【区分vue2和vue3下的element UI Dialog 对话框组件,分别详细介绍属性,事件,方法如何使用,并举例】

在 Vue 2 和 Vue 3 中&#xff0c;Element UI&#xff08;针对 Vue 2&#xff09;和 Element Plus&#xff08;针对 Vue 3&#xff09;提供了 Dialog 对话框组件&#xff0c;用于在页面中显示模态对话框。这两个库中的 Dialog 组件在属性、事件和方法的使用上有所相似&#xff…...

docker push 推送镜像到阿里云仓库

1.登陆阿里云 镜像服务&#xff0c;跟着指引操作就行 创建个人实例&#xff0c;创建命名空间、镜像仓库&#xff0c;绑定代码源头 2.将镜像推送到Registry $ docker login --username*** registry.cn-beijing.aliyuncs.com $ docker tag [ImageId] registry.cn-beijing.aliy…...

伯克利、斯坦福和CMU面向具身智能端到端操作联合发布开源通用机器人Policy,可支持多种机器人执行多种任务

不同于LLM或者MLLM那样用于上百亿甚至上千亿参数量的大模型&#xff0c;具身智能端到端大模型并不追求参数规模上的大&#xff0c;而是指其能吸收大量的数据&#xff0c;执行多种任务&#xff0c;并能具备一定的泛化能力&#xff0c;如笔者前博客里的RT1。目前该领域一个前沿工…...

昇思25天学习打卡营第17天(+1)|Diffusion扩散模型

1. 学习内容复盘 本文基于Hugging Face&#xff1a;The Annotated Diffusion Model一文翻译迁移而来&#xff0c;同时参考了由浅入深了解Diffusion Model一文。 本教程在Jupyter Notebook上成功运行。如您下载本文档为Python文件&#xff0c;执行Python文件时&#xff0c;请确…...

【Leetcode笔记】406.根据身高重建队列

文章目录 1. 题目要求2.解题思路 注意3.ACM模式代码 1. 题目要求 2.解题思路 首先&#xff0c;按照每个人的身高属性&#xff08;即people[i][0]&#xff09;来排队&#xff0c;顺序是从大到小降序排列&#xff0c;如果遇到同身高的&#xff0c;按照另一个属性&#xff08;即p…...

Linux 安装pdfjam (PDF文件尺寸调整)

跟Ghostscript搭配使用&#xff0c;这样就可以将不同尺寸的PDF调整到相同尺寸合并了。 在 CentOS 上安装 pdfjam 需要安装 TeX Live&#xff0c;因为 pdfjam 是基于 TeX Live 的。以下是详细的步骤来安装 pdfjam&#xff1a; ### 步骤 1: 安装 EPEL 仓库 首先&#xff0c;安…...

python+playwright 学习-90 and_ 和 or_ 定位

前言 playwright 从v1.34 版本以后支持and_ 和 or_ 定位 XPath 中的and和or xpath 语法中我们常用的有text()、contains() 、ends_with()、starts_with() //*[text()="文本"] //*[contains(@id, "xx")] //...

亲子时光里的打脸高手,贾乃亮与甜馨的父爱如山

贾乃亮这波操作&#xff0c;简直是“实力打脸”界的MVP啊&#xff01; 7月5号&#xff0c;他一甩手&#xff0c;甩出张合照&#xff0c; 瞬间让多少猜测纷飞的小伙伴直呼&#xff1a;“脸疼不&#xff1f;”带着咱家小甜心甜馨&#xff0c; 回了哈尔滨老家&#xff0c;这趟亲…...

MySQL篇-SQL优化实战

SQL优化措施 通过我们日常开发的经验可以整理出以下高效SQL的守则 表主键使用自增长bigint加适当的表索引&#xff0c;需要强关联字段建表时就加好索引&#xff0c;常见的有更新时间&#xff0c;单号等字段减少子查询&#xff0c;能用表关联的方式就不用子查询&#xff0c;可…...

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作&#xff1a; 压缩包下载&#xff1a;http://download.redis.io/releases 1. 上传压缩包&#xff0c;并进入压缩包所在目录&#xff0c;解压到目标…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架

1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...