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

sklearn多项式回归和线性回归

什么是线性回归?

回归分析是一种统计学方法,用于研究自变量和因变量之间的关系。它是一种建立关系模型的方法,可以帮助我们预测和解释变量之间的相互作用。
回归分析通常用于预测一个或多个因变量的值,这些因变量的值是由一个或多个自变量的值所决定的。回归分析的目标是建立一个数学模型来描述因变量和自变量之间的关系。
这个数学模型可以是线性或非线性的,可以包含一个或多个自变量。通过回归分析,我们可以使用已知的自变量和因变量值来计算模型参数,然后使用这些参数来预测因变量值。
回归分析被广泛应用于各种领域,包括经济学、社会学、医学、环境科学和工程学等。它可以用于研究许多不同的问题,如房价预测、销售预测、股票价格预测、人口增长预测等等。线性回归需要满足的条件:
(1)自变量和因变量在理论上有因果关系;(2)因变量为连续型变量;(3)各自变量与因变量之间存有线性关系;(4)残差要满足正态性、独立性、方差齐性。(5)多个自变量不存在多重共线性其中,线性(Linear)、正态性(Normal)、独立性(independence)、方差齐性(Equal Variance),俗称LINE,是线性回归分析的四大基本前提条件。

 sklearn的线性回归:

  • 准备工作
  • from sklearn.linear_model import LinearRegression
  • 创建模型: linear =LinearRegression()
  • 拟合模型: linear.fit(x,y)
  • 模型的预测值: linear.predict(输入数据)
  • 线性回归模型的权重linear.coef_和偏置linear.intercept_

class sklearn.linear_model.LinearRegression (fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)

 

参数

含义

fit_intercept:布尔值,可不填,默认为True是否计算此模型的截距。如果设置为False,则不会计算截距

normalize:布尔值,可不填,默认为False,当fit_intercept设置为False时,将忽略此参数。如果为True,则特征矩阵X在进入回归之前将会被减去均值(中心化)并除以L2范式(缩放)。如果你希望进行标准化,请在fit数据之前用preprocessing模块中的标准化专用类StandardScaler

copy_X:布尔值,可不填,默认为True,如果为真,将在X.copy()上进行操作,否则的话原本的特征矩阵X可能被线性回归影响并覆盖

n_jobs:整数或者None,可不填,默认为None,用于计算的作业数。只在多标签的回归和数据量足够大的时候才生效。除非None在joblib.parallel_backend上下文中,否则None统一表示为1。如果输入 -1,则表示使用全部的CPU来进行计算。

 线性回归代码:

线性回归直接预测血糖值:return: None"""# 获取数据lb = readcvs()# print(lb)# 分割数据集到训练集和测试集,按照75%:25%的比例进行数据分配训练数据和测试数据x_train, x_test, y_train, y_test = train_test_split(lb['data'], lb['target'], test_size=0.2)# 进行标准化处理(目标值要进行标准化处理)# 特征值和目标值都必须进行标准化处理, 实例化两个标准化API# 标准化也就是归一化处理# std_x = StandardScaler()# # 标准化训练数据# x_train = std_x.fit_transform(x_train)# # 标准化测试数据# x_test = std_x.transform(x_test)## # 目标值# std_y = StandardScaler()# # 标准化目标训练数据(因为数据是[y,y,1,1,1,1,...]变换成[[],[],[],[],[]...])进行变换# y_train = std_y.fit_transform(y_train.reshape(-1, 1))# # 标准化目标测试数据(同上)# y_test = std_y.transform(y_test.reshape(-1, 1))# estimator预测# 正规方程求解方式预测结果lr = LinearRegression()print("多项式参数:",l_data)# 对训练数据进行拟合lr.fit(x_train, y_train)# # 查看w的参数print('w参数',lr.coef_)# # 查看b的参数print('b参数',lr.intercept_)# 保存训练模型# 预测测试集的房子价格# y_lr_predict = std_y.inverse_transform(lr.predict(x_test))y_lr_predict = lr.predict(x_test)print("正规方程测试集里面每个血糖的预测: ", y_lr_predict)# print("正规方程的均方误差: ", mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict))score_ = lr.score(x_test, y_test)print('模型得分', score_)# 保存血糖模型数据if score_ > 0.2:joblib.dump(lr, "./model/blood.pkl")return score_def train_():count=0sys.setrecursionlimit(100000)  # 设置递归深度list=[]#循环10000次for i in range(10000):score = train()list.append(score)count = count+1print("最高得分", max(list))if score>0.2:breakprint("最高得分",max(list))#加载模型准备预测
def predict():list=[[1, 80.0, 179, 55,421,0]]value=np.array(list)# 导入血糖模型数据lr = joblib.load("./model/blood.pkl")#直接预测结果y_lr_predict=lr.predict(value)print(y_lr_predict)#返回模型预测出来的血糖值return y_lr_predictif __name__ == "__main__":train_()

多项式回归:

多项式回归:
from sklearn.preprocessing import PolynomialFeatures
# 设置多项式阶数为2,其他值默认
# degree 多项式阶数
poly = PolynomialFeatures(degree=2)
res = poly.fit_transform(X)
PolynomialFeatures详细探讨
现在有(a,b)两个特征,使用degree=2的二次多项式则为(1,a, a^2, ab, b ,b^2)。
PolynomialFeatures主要有以下几个参数:degree:度数,决定多项式的次数interaction_only: 默认为False,字面意思就是只能交叉相乘,不能有a^2这种.include_bias: 默认为True, 这个bias指的是多项式会自动包含1,设为False就没这个1了.order:有"C" 和"F" 两个选项。官方写的是在密集情况(dense case)下的输出array的顺序,F可以加快操作但可能使得subsequent estimators变慢。

如何控制多项式回归的系数:a=[[2,3]] 或者a=[[2],[3]]

from sklearn.preprocessing import PolynomialFeatures
a=[[2,3]](相当于[[x1,x2]])
pf=PolynomialFeatures(degree=2)
print(pf.fit_transform(a)) #会产生多项式的系数
#[[1. 2. 3. 4. 6. 9.]] 相当于(1+2+3+2*2+2*3+3*3)
pf=PolynomialFeatures(degree=2,include_bias=False)
print(pf.fit_transform(a))
#[[2. 3. 4. 6. 9.]]
pf=PolynomialFeatures(degree=2,interaction_only=True)
print(pf.fit_transform(a))
#[[1. 2. 3.  6.]]如果是c=[[a],[b]]这种形式,生成的多项式就没有ab交叉项了,只有[[1,a,a^2], [1,b,b^2]] 。
c=[[2],[3]]
print(pf.fit_transform(c))
[[1. 2. 4.][1. 3. 9.]]

转换器Transformers 通常与分类器、回归器或其他估计器相结合,构成一个复合估计器。最常见的工具是pipeline。

利用Pipline进项多项式和线性回归合并,这样会产生非线性的回归

lr = Pipeline([('poly', PolynomialFeatures(degree=2)),('clf', LinearRegression())])
lr.fit(x_train, y_train)
多项式和线性回归相结合
lr = LinearRegression()
pf=PolynomialFeatures(degree=2)
lr.fit(pf.fit_transform(X), y)
print(lr.coef_)
print(lr.intercept_)
对应w和b(对应多项式的斜率和截距)
[0.1  1.413  -0.435]
-1.584092

回归的俩中线性和非线性:

# 线性回归
clf1 = LinearRegression()
clf1.fit(x, y)
y_l = clf1.predict(x)  # 线性回归预测值# 非线性回归
ployfeat = PolynomialFeatures(degree=3)  # 根据degree的值转换为相应的多项式(非线性回归)
x_p = ployfeat.fit_transform(x)
clf2 = LinearRegression()
clf2.fit(x_p, y)

相关文章:

sklearn多项式回归和线性回归

什么是线性回归? 回归分析是一种统计学方法,用于研究自变量和因变量之间的关系。它是一种建立关系模型的方法,可以帮助我们预测和解释变量之间的相互作用。 回归分析通常用于预测一个或多个因变量的值,这些因变量的值是由一个或多…...

Postman报:400 Bad Request

● 使用Postman发送Post请求报400,入参为JSON; 二、分析 1、Postman请求并没有请求到后台Api(由于语法错误,服务器无法理解请求); 2、入参出错范围:cookie、header、body、form-data、x-www-f…...

apache poi_5.2.5 实现表格内某一段单元格的复制

apache poi_5.2.5 实现表格内,某一段单元格的复制。 实现思路 1.定位开始位置 2.从开始位置之后,在行索引集合中添加行索引下标 3.截至到结束位置。 4.对行索引集合去重,并循环行索引集合 5.利用XWPFTableRow对像的getCtRow().copy()方法&a…...

Oracle重建索引详解

更新:2023-05-17 18:08 一、Oracle重建索引命令 Oracle重建索引可以通过ALTER INDEX命令来完成。下面是示例代码: ALTER INDEX index_name REBUILD [PARAMETERS];其中,index_name是需要重建的索引名称,PARAMETERS是可选的重建参…...

众和策略证券开户首选:股票增持是好还是坏?大股东增持规定?

股票增持是好仍是坏? 股东增持在一定程度上反映股东对个股比较看好,大量的买单,增加了市场上的多方力气,会推动股价上涨,是一种利好消息。 一般大股东会增持可能是上市公司运营成绩较好,具有较大的发展前…...

UE4移动端最小包优化实践

移动端对于包大小有着严苛的要求,然而UE哪怕是一个空工程打出来也有90+M,本文以一个复杂的工程为例,探索怎么把包大小降低到最小。 一、工程简介 工程包含代码、插件、资源、iOS原生库工程。 二、按官方文档进行基础优化 官方文档 1、勾选Use Pak File和Create comp…...

用户管理第2节课--idea 2023.2 后端--实现基本数据库操作(操作user表) -- 自动生成

一、插件 Settings... 1.1 File -- Settings 1.2 Settings -- Plugins 1.2.1 搜索框,也可以直接搜索 1.3 Plugins -- 【输入 & 搜索】mybatis 1.3.1 插件不同功能介绍 1.3.2 翻译如下 1.4 选中 Update,更新下 1.4.1 更新中 1.4.2 Restart IDE 1…...

java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈

单点登录(SSO) 单点登录,Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统。 如果是单个tomcat服务,session可以共享,如果是多个tomcat,那么服务s…...

Java网络编程原理与实践--从Socket到BIO再到NIO

文章目录 Java网络编程原理与实践--从Socket到BIO再到NIOSocket基本架构Socket 基本使用简单一次发送接收客户端服务端 字节流方式简单发送接收客户端服务端 双向通信客户端服务端 多次接收消息客户端服务端 Socket写法的问题BIO简单流程BIO写法客户端服务端 BIO的问题 NIO简述…...

ARM GIC(三) gicv2架构

ARM的cpu,特别是cortex-A系列的CPU,目前都是多core的cpu,因此对于多core的cpu的中断管理,就不能像单core那样简单去管理,由此arm定义了GICv2架构,来支持多核cpu的中断管理 一、gicv2架构 GICv2,支持最大8个core。其框图如下图所示: 在gicv2中,gic由两个大模块组成: …...

第4章Netty第二节入门案例+channel,future,promise介绍

需求 开发一个简单的服务器端和客户端 客户端向服务器端发送 hello, world服务器仅接收&#xff0c;不返回 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.39.Final</version> </d…...

【论文笔记】3D Gaussian Splatting for Real-Time Radiance Field Rendering

原文链接&#xff1a;https://arxiv.org/abs/2308.04079 1. 引言 网孔和点是最常见的3D场景表达&#xff0c;因其是显式的且适合基于GPU/CUDA的快速栅格化。神经辐射场&#xff08;NeRF&#xff09;则建立连续的场景表达便于优化&#xff0c;但渲染时的随机采样耗时且引入噪声…...

【生物信息学】层次聚类过程

文章目录 一、理论二、实践过程1过程2 一、理论 层次聚类是一种基于树状结构的聚类方法&#xff0c;它试图通过在不同层次上逐步合并或分裂数据集来构建聚类结构。这个树状结构通常被称为“树状图”&#xff08;dendrogram&#xff09;&#xff0c;其中每个节点代表一个数据点或…...

变分自动编码器【03/3】:使用 Docker 和 Bash 脚本进行超参数调整

一、说明 在深入研究第 1 部分中的介绍和实现&#xff0c;并在第 2 部分中探索训练过程之后&#xff0c;我们现在将重点转向在第 3 部分中通过超参数调整来优化模型的性能。要访问本系列的完整代码&#xff0c;请访问我们的 GitHub 存储库在GitHub - asokraju/ImageAutoEncoder…...

KnowLM知识抽取大模型

文章目录 KnowLM项目介绍KnowLM项目的动机ChatGPT存在的问题 基于LLama的知识抽取的智析大模型数据集构建及训练过程预训练数据集构建预训练训练过程指令微调数据集构建 指令微调训练过程开源的数据集及模型局限性信息抽取Prompt 部署环境配置模型下载预训练模型使用LoRA模型使…...

MySQL数据库 索引

目录 索引概述 索引结构 二叉树 B-Tree BTree Hash 索引分类 索引语法 慢查询日志 索引概述 索引 (index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种…...

ES 错误码

2xx状态码&#xff08;如200&#xff09;表示请求成功处理&#xff0c;并且不需要重试。 400状态码表示客户端发送了无效的请求&#xff0c;例如请求的语法有误或缺少必需的参数。在这种情况下&#xff0c;重试相同的请求很可能会导致相同的错误。因此&#xff0c;应该先检查并…...

听GPT 讲Rust源代码--src/tools(18)

File: rust/src/tools/rust-analyzer/crates/ide-ssr/src/from_comment.rs 在Rust源代码中的from_comment.rs文件位于Rust分析器&#xff08;rust-analyzer&#xff09;工具的ide-ssr库中&#xff0c;它的作用是将注释转换为Rust代码。 具体来说&#xff0c;该文件实现了从注…...

如何实现设备远程控制?

在工业自动化领域&#xff0c;设备远程控制是一项非常重要的技术。它使得设备可以在远离现场的情况下进行远程操作和维护&#xff0c;大大提高了设备的可用性和效率。 设备远程控制的应用场景有哪些&#xff1f; 远程故障排除&#xff1a;当设备出现故障时&#xff0c;工程师…...

百度侯震宇详解:大模型将如何重构云计算?

12月20日&#xff0c;在2023百度云智大会智算大会上&#xff0c;百度集团副总裁侯震宇以“大模型重构云计算”为主题发表演讲。他强调&#xff0c;AI原生时代&#xff0c;面向大模型的基础设施体系需要全面重构&#xff0c;为构建繁荣的AI原生生态筑牢底座。 侯震宇表示&…...

[Java]FileOutputStream的换行/续写/一次性写出一个字符串的方法

1.续写&#xff1a;FileOutputStream这个io流中的write方法默认情况下是覆盖写入的&#xff0c;如果需要追加写入&#xff0c;需要添加一个参数true 2.虽然write只能一个字符一个字符写入 但是我们可以把想输入的字符串放在str 再将str转化成byte数组 import java.io.FileOutp…...

VM进行TCP/IP通信

OK就变成这样 vm充当服务端的话也是差不多的操作 点击连接 这里我把端口号换掉了因为可能被占用报错了&#xff0c;如果有报错可以尝试尝试换个端口号 注&#xff1a; 还有一个点在工作中要是充当服务器&#xff0c;要去网络这边看下他的ip地址 拉到最后面...

剑指Offer 队列栈题目集合

目录 用两个栈实现队列 用两个栈实现队列 刷题链接&#xff1a; https://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6 题目描述 思路一&#xff1a; 使用两个栈来实现队列的功能。栈 1 用于存储入队的元素&#xff0c;而栈 2 用于存储出队的元素。 1.push…...

grafana基本使用

一、安装grafana 1.下载 官网下载地址&#xff1a; https://grafana.com/grafana/download官网包的下载地址&#xff1a; yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-10.2.2-1.x86_64.rpm官网下载速度非常慢&#xff0c;这里选择清华大…...

备份至关重要!如何解决iCloud的上次备份无法完成的问题

将iPhone和iPad备份到iCloud对于在设备发生故障或丢失时确保数据安全至关重要。但iOS用户有时会收到一条令人不安的消息&#xff0c;“上次备份无法完成。”下面我们来看看可能导致此问题的原因&#xff0c;如何解决此问题&#xff0c;并使你的iCloud备份再次顺利运行。 这些故…...

【项目问题解决】% sql注入问题

目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述 在处理接口入参的一些sql注入问题&#xff0c;虽然通过M…...

B/S医院手术麻醉临床管理系统源码 手术申请、手术安排

手术麻醉系统概述 手术室是医院各个科室工作交叉汇集的一个重要中心&#xff0c;在时间、空间、设备、药物、材料、人员调配的科学管理、高效运作、安全质控、绩效考核&#xff0c;都十分重要。手术麻醉管理系统&#xff08;Operation Anesthesia Management System&#xff0…...

解锁高效工作!5款优秀工时管理软件推荐

工时管理&#xff0c;一直是让许多企业和团队头疼的问题。传统的纸质工时表、复杂的电子表格&#xff0c;不仅操作繁琐&#xff0c;还容易出错。幸好&#xff0c;随着科技的进步&#xff0c;我们迎来了工时管理软件的春天。今天&#xff0c;就让我们一起走进这个新时代&#xf…...

ICLR 2024 高分论文 | Step-Back Prompting 使大语言模型通过抽象进行推理

文章目录 一、前言二、主要内容三、总结🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 ICLR 2024 高分论文:《Step-Back Prompting Enables Reasoning Via Abstraction in Large Language Models》 论文地址:https://openreview.net/forum?id=3bq3jsvcQ1 …...

边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案

随着ChatGPT生成式人工智能的爆发&#xff0c;AI技术在业界又掀起一波新浪潮。值得关注的是&#xff0c;边缘AI智能也在AI人工智能技术进步的基础上得到了快速发展。IDC跟踪报告数据显示&#xff0c;2021年我国的边缘计算服务器整体市场规模达到33.1亿美元&#xff0c;预计2020…...

外贸流程的基本流程图/廊坊百度关键词优化

问题&#xff1a;项目运行后出现“目标进程已退出&#xff0c;但未引发 CoreCLR 启动事件。请确保将目标进程配置为使用 .NET Core。如果目标进程未运行 .NET Core&#xff0c;则发生这种情况并不意外。 程序“[16780] dotnet.exe”已退出&#xff0c;返回值为 -2147450730 (0x…...

移动网站排名怎么做/网站百度推广

事件常用的一些事件click(function(){})hover()//不能做事件委托&#xff08;不能用on的写法&#xff09;&#xff0c;写法&#xff0c;鼠标移入&#xff0c;移除的不同状态$(.c1).hover(//光标移入function () {console.log(111);},//光标移出function () {console.log(222)})…...

客户说做网站没效果/网络营销薪酬公司

作者&#xff1a;生信宝典 | 生信宝典公众号原文&#xff1a;https://mp.weixin.qq.com/s/OkOgN4j44MHNt1_noPVpzAConda 为什么越来越慢&#xff1f;Conda 中包含的软件越来越多&#xff0c;而且软件的不同版本都保留了下来&#xff0c;软件的索引文件越来越大&#xff0c;安装…...

如何做付款网站/搜索引擎优化方案

文章目录1.使用EhCache实现缓存1.引入maven依赖1.1开启缓存2.使用redis实现缓存2.1引入maven依赖2.2在application配置redis连接参数2.3通过代码的方式获取spring框架applicationcontext对象2.4RedisCacheManager与RedisCacheRedisCacheRedisCacheMananger2.5shiroConfig开启缓…...

企业网站建设的报价/新手做外贸怎么入门

接口 通过关键字type和interface&#xff0c;我们可以声明出接口类型。接口类型的类型字面量与结构体类型的看起来有些相似&#xff0c;它们都用花括号包裹一些核心信息。只不过&#xff0c;结构体类型包裹的是它的字段声明&#xff0c;而接口类型包裹的是它的方法定义。 实现…...

网站后台程序如何做/百度精准营销获客平台

Code-First数据迁移 首先要通过NuGet将EF升级至最新版本。 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department&#xff0c;定义如下&#xff1a; 1 using System;2 using System.Collections.Generic;3 using System.Linq;4 using System.Web;5 using System.…...