线性回归实例

1、线性回归(linear Regression)和逻辑回归(logistic Regression)的区别

线性回归主要是用来拟合数据,逻辑回归主要是用来区分数据,找到决策边界。

线性回归的代价函数常用平方误差函数,逻辑回归的代价函数常用交叉熵。

参数优化的方法都是常用梯度下降。

eg:

现有一组面积和房价的数据,现在有个朋友要卖房子,120平方米,大概能卖多少钱?

就可以通过这组数据建立一个线性模型,然后用这组数据去拟合模型,拟合完毕后,输入120,它就会告诉你朋友能卖多少钱。

补充:(这是一个监督学习,且是回归问题,回归问题指的是预测一个具体的数据输出,即房价)

补充2:(监督学习中还有一种分类问题,用来预测离散值输出,如观察肿瘤大小,来判断是良性合适恶性,输出只有两种:【0】良性,【1】恶性)

逻辑回归也被称为对数几率回归,实际上是用线性回归解决分类问题的分类模型(在线性回归的基础上,加了一层sigmoid函数,将线性函数变为非线性函数),sigmoid函数的形状呈‘S’形,它能将任意实数映射到0~1之间的某个概率值上;

线性回归一般用于数据预测,预测结果一般为实数;

逻辑回归一般用户分类预测,预测结果一般为某类可能的概率。

2、波士顿房价线性回归案例:
1)获取数据集:

在sklearn1.2版本之前,可用from sklearn.datasets import load_boston # 从读取房价数据存储在变量 boston 中。 boston = load_boston()

在sklearn1.2版本之后,因为某些原因移除了该数据集,

可用如下代码实现:

#导入波士顿房价,自版本1.2之后移除了该数据集,可以通过如下方法获取
from sklearn.datasets import fetch_openml
data_x,data_y=fetch_openml(name='boston',version=1,as_frame=True,return_X_y=True,parser='pandas')

如果出现证书报错:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certi,可以加入如下代码:

#全局取消证书验证,使用fetch_opneml下载数据时候避免报错
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
2)划分训练集测试集:
#随机采样25%的数据构建测试样本,其余作为训练样本
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(data_x,data_y,random_state=33,test_size=0.25)
#分析回归目标值的差异:
print(np.max(data_y),np.min(data_y),np.mean(data_y))
3)数据标准化:
#先导入数据标准化模块
from sklearn.preprocessing import StandardScaler
#分别初始化对特征和目标值的标准化器
ss_X=StandardScaler()
ss_Y=StandardScaler()
#分别对训练和测试数据的特征及目标值进行标准化处理
X_train=ss_X.fit_transform(X_train)
X_test=ss_X.transform(X_test)
Y_train=ss_Y.fit_transform(Y_train.values.reshape(-1,1))
Y_test=ss_Y.transform(Y_test.values.reshape(-1,1))
#reshape(-1,1)将所有行的数据化为1列
#reshape(1,-1)将所有列的数据化为1行
4)用线性回归模型和随机梯度下降分别对美国波士顿房价进行预测
from sklearn.linear_model import LinearRegression
#使用默认配置初始化线性回归器LinearRegression
lr=LinearRegression()
#使用训练数据进行参数估计
lr.fit(X_train,Y_train[:,0])
print('系数:',lr.coef_)
print('偏置:',lr.intercept_)
#对测试数据进行回归预测
lr_y_predict=lr.predict(X_test)
#导入初始线性回归器
from sklearn.linear_model import SGDRegressor
sgdr=SGDRegressor()
#使用训练数据进行参数估计
sgdr.fit(X_train,Y_train[:,0])
#对测试数据集进行回归预测
sgdr_y_predict=sgdr.predict(X_test)
系数&偏置:

系数: [-0.1147262   0.13081062  0.01168159  0.09047604 -0.17816355  0.3189522
 -0.01783831 -0.33316307  0.26809803 -0.21757932 -0.20355027  0.05513145
 -0.40687576]
偏置: 9.643684906345349e-16

5)性能评测
#使用LinearRegression模型自带的评估模块,并输出评估结果
print('The value of default measurement of LinearRegression is',lr.score(X_test,Y_test))
#从sklearn.metrics依次导入r2_score、mean_squared_error、mean_absolute_error用于回归性能评估
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#使用r2_score模块,评估结果
print('The value of R-squared of LinearRegression is ',r2_score(Y_test,lr_y_predict))
#使用mean_squared_error模块,评估结果
print('The mean squared error of LinearRegression is ',mean_squared_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(lr_y_predict).reshape(-1,1))))
#使用mean_absolute_error模块,评估结果
print('The mean absolute error of LinearRegression is ',mean_absolute_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(lr_y_predict).reshape(-1,1))))#使用SGDRegressor模型自带的评估模块,并输出评估结果
print('The value of default measurement of SGDRegressor is',lr.score(X_test,Y_test))
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#使用r2_score模块,评估结果
print('The value of R-squared of SGDRegressor is ',r2_score(Y_test,sgdr_y_predict))
#使用mean_squared_error模块,评估结果
print('The mean squared error of SGDRegressor is ',mean_squared_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(sgdr_y_predict).reshape(-1,1))))
#使用mean_absolute_error模块,评估结果
print('The mean absolute error of SGDRegressor is ',mean_absolute_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(sgdr_y_predict).reshape(-1,1))))

评测结果:

The value of default measurement of LinearRegression is 0.6757955014529482
The value of R-squared of LinearRegression is  0.6757955014529482
The mean squared error of LinearRegression is  25.13923652035345
The mean absolute error of LinearRegression is  3.5325325437053974
The value of default measurement of SGDRegressor is 0.6757955014529482
The value of R-squared of SGDRegressor is  0.6670953292509274
The mean squared error of SGDRegressor is  25.813859135815584
The mean absolute error of SGDRegressor is  3.5114251714191758

3、完整代码:
import pandas as pd
import numpy as np#全局取消证书验证,使用fetch_opneml下载数据时候避免报错
import ssl
ssl._create_default_https_context = ssl._create_unverified_context#导入波士顿房价,自版本1.2之后移除了该数据集,可以通过如下方法获取
from sklearn.datasets import fetch_openml
data_x,data_y=fetch_openml(name='boston',version=1,as_frame=True,return_X_y=True,parser='pandas')
#随机采样25%的数据构建测试样本,其余作为训练样本
from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test=train_test_split(data_x,data_y,random_state=33,test_size=0.25)
#分析回归目标值的差异:
print(np.max(data_y),np.min(data_y),np.mean(data_y))#数据标准化
#先导入数据标准化模块
from sklearn.preprocessing import StandardScaler
#分别初始化对特征和目标值的标准化器
ss_X=StandardScaler()
ss_Y=StandardScaler()
#分别对训练和测试数据的特征及目标值进行标准化处理
X_train=ss_X.fit_transform(X_train)
X_test=ss_X.transform(X_test)
Y_train=ss_Y.fit_transform(np.array(Y_train).reshape(-1,1))
Y_test=ss_Y.transform(np.array(Y_test).reshape(-1,1))
#reshape(-1,1)将所有行的数据化为1列
#reshape(1,-1)将所有列的数据化为1行#使用线性回归模型和随机梯度下降分别对美国波士顿房价进行预测
from sklearn.linear_model import LinearRegression
#使用默认配置初始化线性回归器LinearRegression
lr=LinearRegression()
#使用训练数据进行参数估计
lr.fit(X_train,Y_train[:,0])
print('系数:',lr.coef_)
print('偏置:',lr.intercept_)
#对测试数据进行回归预测
lr_y_predict=lr.predict(X_test)
#导入初始线性回归器
from sklearn.linear_model import SGDRegressor
sgdr=SGDRegressor()
#使用训练数据进行参数估计
sgdr.fit(X_train,Y_train[:,0])
#对测试数据集进行回归预测
sgdr_y_predict=sgdr.predict(X_test)#性能评测
#使用LinearRegression模型自带的评估模块,并输出评估结果
print('The value of default measurement of LinearRegression is',lr.score(X_test,Y_test))
#从sklearn.metrics依次导入r2_score、mean_squared_error、mean_absolute_error用于回归性能评估
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#使用r2_score模块,评估结果
print('The value of R-squared of LinearRegression is ',r2_score(Y_test,lr_y_predict))
#使用mean_squared_error模块,评估结果
print('The mean squared error of LinearRegression is ',mean_squared_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(lr_y_predict).reshape(-1,1))))
#使用mean_absolute_error模块,评估结果
print('The mean absolute error of LinearRegression is ',mean_absolute_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(lr_y_predict).reshape(-1,1))))#使用SGDRegressor模型自带的评估模块,并输出评估结果
print('The value of default measurement of SGDRegressor is',lr.score(X_test,Y_test))
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#使用r2_score模块,评估结果
print('The value of R-squared of SGDRegressor is ',r2_score(Y_test,sgdr_y_predict))
#使用mean_squared_error模块,评估结果
print('The mean squared error of SGDRegressor is ',mean_squared_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(sgdr_y_predict).reshape(-1,1))))
#使用mean_absolute_error模块,评估结果
print('The mean absolute error of SGDRegressor is ',mean_absolute_error(ss_Y.inverse_transform(np.array(Y_test).reshape(-1,1)),ss_Y.inverse_transform(np.array(sgdr_y_predict).reshape(-1,1))))
4、运行结果:

5、分析补充

从指标上,线性回归效果要略好一些,因为前者是解析法,后者是估计,如果数据规模超过10万,那么用梯度下降比较好,节省时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630264.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI在保护环境、应对气候变化中的作用

对于AI生命周期数据领域的全球领导者而言&#xff0c;暂时搁置我们惯常的AI见解和AI生命周期数据内容产出&#xff0c;来认识诸如世界地球日这样的自然环境类活动日&#xff0c;似乎是个奇怪的事情。我们想要知道&#xff0c;数据是否真的会影响我们的地球环境&#xff1f; 简而…

5.5G来了!全球首次采用,就在福建

近日&#xff0c;在以滨海风景优美而闻名的福建厦门马拉松赛道沿线区域&#xff0c;福建移动携手华为采用5G-A通感一体技术率先完成了低空多站连续组网的通感能力验证&#xff0c;基于4.9GHz频段实现了对城市低空120米下多无人驾驶飞行器的探测与及时预警。这一成果为城市低空资…

【windows】右键添加git bash here菜单

在vs 里安装了git for windows 后&#xff0c;之前git-bash 右键菜单消失了。难道是git for windows 覆盖了原来自己安装的git &#xff1f;大神给出解决方案 手动添加Git Bash Here到右键菜单&#xff08;超详细&#xff09; 安装路径&#xff1a;我老的 &#xff1f; vs的gi…

Kafka系列(四)

本文接kafka三&#xff0c;代码实践kafkaStream的应用&#xff0c;用来完成流式计算。 kafkastream 关于流式计算也就是实时处理&#xff0c;无时间概念边界的处理一些数据。想要更有性价比地和java程序进行结合&#xff0c;因此了解了kafka。但是本人阅读了kafka地官网&#…

论文笔记:信息融合的门控多模态单元(GMU)

整理了GMU&#xff08;ICLR2017 GATED MULTIMODAL UNITS FOR INFORMATION FUSION&#xff09;论文的阅读笔记 背景模型实验 论文地址&#xff1a; GMU 背景 多模态指的是同一个现实世界的概念可以用不同的视图或数据类型来描述。比如维基百科有时会用音频的混合来描述一个名人…

vue+echarts 几个案例

普通柱状图 <template><!-- 容器默认宽高是0 如果不设置 页面不显示--><div ref"mychart" id"mychart"></div> </template><script> import * as echarts from "echarts" import axios from axiosexport …

(Matlab)基于CNN-Bi_LSTM的多维回归预测(卷积神经网络-双向长短期记忆网络)

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码展示&#xff1a; 四、完整程序数据分享&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平…

数字电源简介

数字电源简介 定义主要应用场景数字电源的基本组成常见算法常见电源拓扑PFCLLC 数字电源与模拟电源对比参考链接 定义 常见定义有以下四种&#xff1a; 通过数字接口控制的开关电源&#xff0c;强调的是数字电源的“通信”功能。可通过I2C或类似的数字总线来对数字信号进行控…

springboot整合websocket后启动报错:javax.websocket.server.ServerContainer not available

一、场景 Springboot使用ServerEndpoint来建立websocket链接。引入依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>配置Websocket Confi…

九:day01_ 消息队列01

第一章 RabbitMQ 概念 1.1.1 消息队列 MQ全称Message Queue&#xff08;消息队列&#xff09;&#xff0c;是在消息的传输过程中保存消息的容器。多用于系统之间的异步通信。 1.1.2 消息 两台计算机间传送的数据单位。消息可以非常简单&#xff0c;例如只包含文本字符串&#x…

【目标检测】YOLOv5算法实现(九):模型预测

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github&#xff0c;删减了源码中部分内容&#xff0c;满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现&#xff0c;后续修改、增加相关模…

深入解析JavaScript属性的getter和setter

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 在JavaScript中,对象属性除了直接设置值之外,还可以通过getter和sett…

鸿蒙OS4.0兼容性测试

背景 OpenHarmony兼容性测评主要是验证合作伙伴的设备和业务应用满足OpenHarmony开源兼容性定义的技术要求&#xff0c;确保运行在OpenHarmony上的设备和业务应用能稳定、正常运行&#xff0c;同时使用OpenHarmony的设备和业务应用有一致性的接口和业务体验。 OpenHarmony兼容…

MongoDB调优

三大导致 MongoDB 性能不佳的原因 1&#xff09;慢查询2&#xff09;阻塞等待3&#xff09;硬件资源不足1,2通常是因为模型/索引设计不佳导致的。排查思路&#xff1a;按1-2-3依次排查。 影响 MongoDB 性能的因素 MongoDB 性能监控工具 Free Monitoring 从版本 4.0 开始&am…

redis经典面试题

说说你对Redis的理解 Redis是一个基于Key-Value存储结构的开源内存数据库&#xff0c;也是一种NoSQL数据库。 它支持多种数据类型&#xff0c;包括String、Map、Set、ZSet和List&#xff0c;以满足不同应用场景的需求。 Redis以内存存储和优化的数据结构为基础&#xff0c;提…

Python爬虫实战:IP代理池助你突破限制,高效采集数据

当今互联网环境中&#xff0c;为了应对反爬虫、匿名访问或绕过某些地域限制等需求&#xff0c;IP代理池成为了一种常用的解决方案。IP代理池是一个包含多个可用代理IP地址的集合&#xff0c;可以通过该代理池随机选择可用IP地址来进行网络请求。 IP代理池是一组可用的代理IP地址…

网页设计(十一)JavaScript事件分析

一、设计校园办公系统认证页面 校园办公系统认证页面 校园办公系统认证页面初始布局 卡号有效性检查页面 口令有效性检查页面 二次口令有效性检查页面 QQ/微信有效性检查图 <!-- prj_11_1.html --> <!doctype html> <html lang"en"><…

Java设计模式-迭代器模式

迭代器模式 一、概述二、结构三、案例实现四、优缺点五、使用场景六、JDK源码解析 一、概述 定义&#xff1a; 提供一个对象来顺序访问聚合对象中的一系列数据&#xff0c;而不暴露聚合对象的内部表示。 二、结构 迭代器模式主要包含以下角色&#xff1a; 抽象聚合&#xf…

postman做接口测试

之前搞自动化接口测试&#xff0c;由于接口的特性&#xff0c;要验证接口返回xml中的数据&#xff0c;所以没找到合适的轮子&#xff0c;就自己用requests造了个轮子&#xff0c;用着也还行&#xff0c;不过就是case管理有些麻烦&#xff0c;近几天又回头看了看postman也可以玩…

论文笔记(四十)Goal-Auxiliary Actor-Critic for 6D Robotic Grasping with Point Clouds

Goal-Auxiliary Actor-Critic for 6D Robotic Grasping with Point Clouds 文章概括摘要1. 介绍2. 相关工作3. 学习 6D 抓握政策3.1 背景3.2 从点云抓取 6D 策略3.3 联合运动和抓握规划器的演示3.4 行为克隆和 DAGGER3.5 目标--辅助 DDPG3.6 对未知物体进行微调的后视目标 4. 实…