简单线性回归原理sklearn简单实现

news/2024/7/9 9:19:50 标签: 线性回归, sklearn

1. 回归与分类

回归模型:针对于连续值的预测,即线性关系
分类模型:预测离散值,非线性,针对于分类问题

2. 回归

回归算法是相对分类算法而言的,与我们想要预测的目标变量y的值类型有关。

如果目标变量y是分类型变量,
    如预测用户的性别(男、女),预测月季花的颜色(红、白、黄……),预测是否患有肺癌(是、否),那我们就需要用分类算法去拟合训练数据并做出预测;

如果y是连续型变量,
    如预测用户的收入(4千,2万,10万……),
    预测员工的通勤距离(500m,1km,2万里……),
    预测患肺癌的概率(1%,50%,99%……),
我们则需要用回归模型。

有时分类问题也可以转化为回归问题,例如的肺癌预测,我们可以用回归模型先预测出患肺癌的概率,然后再给定一个阈值, 例如50%,概率值在50%以下的人划为没有肺癌,50%以上则认为患有肺癌。

回归分析:寻找变量之间近似的函数关系
线性回归分析:寻找变量之间近似的线性函数关系

3. 一元线性回归

y=β0+β1x
当给定参数β0和β1的时候,画在坐标图内是一条直线(这就是“线性”的含义)
当我们只用一个x来预测y,就是一元线性回归,也就是在找一个直线来拟合数据。
线性回归就是要找一条直线,并且让这条直线尽可能地拟合图中的数据点。

4. 回归问题常用的损失函数

残差平方和(RSS/SSR,residual sum of squares/sum squared residual)
均方误差 (MSE,Mean Squared Error)

5. python实现

sklearn中封装好了线性回归模型的实现,直接实例化类LinearRegression即可,
一般分为以下几个步骤:
1)训练集准备
特征集X
特征集对应的标签集y
2) 实例化模型&模型拟合
model = LinearRegression()
model.fit(X_train,y_train)
3) 预测新数据
model.predict(…)
4)误差计算,sklearn对于常见的误差函数也已经封装好
from sklearn.metrics import mean_squared_error
mse= mean_squared_error(y_真实,y_预测)

from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pickle # 保存模型的包

# 假设有特征矩阵X和目标变量y
X = [[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]]
y = [3, 6, 9, 12, 15]

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()

# 拟合模型
model.fit(X_train, y_train)

print(model.intercept_)  # 常数项  0.0
print(model.coef_)  # 变量系数  [0.6 1.2]

# 预测测试集
y_pred = model.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)

print("线性回归模型的均方误差:", mse)


# # load the saved model
# with open('my_model.pkl', 'rb') as f:
#     model = pickle.load(f)
#
# # predict using the loaded model
# model.predict(X)


# # load the saved model
# with open('my_model.pkl', 'rb') as f:
#     model = pickle.load(f)
#
# # continue training the model
# model.fit(X_train, y_train)
#
# # save the updated model
# with open('my_updated_model.pkl', 'wb') as f:
#     pickle.dump(model, f)


http://www.niftyadmin.cn/n/5420031.html

相关文章

RocketMQ如何实现消息的顺序性

首先,以订单举例,要实现顺序性,并不需要保证各个订单的顺序性,只需保证一个订单中各个操作的顺序性即可。 简单来说: 就是把同一个订单的操作,比如下单付款发货,按顺序放到一个Message Queue里…

vue项目部署服务器,因为跨域设置nginx.config要修改的配置

下面是我在vue项目中vite.config.js设置的配置代理 对于部署项目需要使用nginx进行vue项目的话,需要对nginx的配置文件进行如下修改即可

边缘计算平台EdgeGallery前端源码分析02-开发者平台

1 集成工具 首页主要由两部分组成 插件 和 上传 1.1 插件 插件页面由一个table表格组成并且可以根据插件名称和插件语言&#xff0c;进行筛选。 代码路径 developer\developer-fe\src\pages\plugin\List.vue &#xff08;1&#xff09;table表格 <el-table:data"s…

【FreeRTOS任务调度机制学习】

FreeRTOS任务调度机制 1、通过就绪态&#xff08;ready&#xff09;、阻塞态链表&#xff08;delay&#xff09;、挂起态链表&#xff08;suspend&#xff09;进行任务调度。链表定义 2、TCB控制块结构体描述3、向就绪态任务链表增加任务就绪态链表结构体 4、向阻塞态任务链表增…

jar运行报错Unable to read meta-data for class

目录 一、场景描述 二、解决办法 1&#xff09;情况一 2&#xff09;情况二 贴一下部署报错堆栈信息&#xff1a; java.lang.IllegalStateException: Unable to read meta-data for class com.zhh.zhhd.biz.config.Test1Configat org.springframework.boot.autoconfigure.…

DHCP中继实验(思科)

华为设备参考&#xff1a;DHCP中继实验&#xff08;华为&#xff09; 一&#xff0c;技术简介 DHCP中继&#xff0c;可以实现在不同子网和物理网段之间处理和转发DHCP信息的功能。如果DHCP客户机与DHCP服务器在同一个物理网段&#xff0c;则客户机可以正确地获得动态分配的IP…

【数据可视化】动手用matplotlib绘制关联规则网络图

下载文中数据、代码、绘图结果 文章目录 关于数据绘图函数完整可运行的代码运行结果 关于数据 如果想知道本文的关联规则数据是怎么来的&#xff0c;请阅读这篇文章 绘图函数 Python中似乎没有很方便的绘制网络图的函数。 下面是本人自行实现的绘图函数&#xff0c;如果想…

打卡--MySQL8.0 一(单机部署)

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; MySQL 8.0 简介 MySQL 8.0与5.7的区别主要体现在&#xff1a;1、性能提升&#xff1b;2、新的默认…