Linear Regression线性回归(一元、多元)

目录

介绍: 

一、一元线性回归

1.1数据处理 

1.2建模

 二、多元线性回归

2.1数据处理

2.2数据分为训练集和测试集

2.3建模

介绍: 

线性回归是一种用于预测数值输出的统计分析方法。它通过建立自变量(也称为特征变量)和因变量之间的线性关系来进行预测。在线性回归中,自变量和因变量之间的关系可以用一条直线来表示。

线性回归的目标是找到最佳拟合直线,使得预测值和真实值之间的差异最小化。常用的求解方法是最小二乘法,即通过最小化预测值与真实值之间的平方差来确定最佳拟合直线的参数。

线性回归模型的表示形式如下:

Y = β0 + β1X1 + β2X2 + ... + βnXn + ε

其中,Y是因变量,X1到Xn是自变量,β0到βn是模型的参数,ε是误差项。

线性回归的优点包括模型简单易解释、计算效率高等。然而,线性回归的局限性在于它假设自变量和因变量之间的关系是线性的,如果真实关系是非线性的,线性回归可能无法提供准确的预测。此外,线性回归还对异常值和多重共线性敏感。

一、一元线性回归

1.1数据处理 

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression#应用Linear Regression线性回归 是个class
x=np.array([10,20,30,40,50,60])#自变量
y=np.array([15,45,50,70,110,130])#因变量
X=x.reshape(-1,1)
'''结果:
X array([[10],[20],[30],[40],[50],[60]])
y array([ 15,  45,  50,  70, 110, 130]
'''

1.2建模

linreg.fit(X,y)#X和y赋给线性回归这个算法
y_predict=linreg.predict(X)#预测值
plt.scatter(X,y)#实际的点
plt.plot(X,y_predict,'Red')#线性回归这条线
plt.show()

print(linreg.coef_)#斜率
#[2.25714286]print(linreg.intercept_)#y轴的切入点
#-9.000000000000014

 二、多元线性回归

2.1数据处理

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dataset = pd.read_csv('50_Startups.csv')
dataset
'''结果:R&D Spend 	Administration 	Marketing Spend 	State 	Profit
0 	165349.20 	136897.80 	471784.10 	New York 	192261.83
1 	162597.70 	151377.59 	443898.53 	California 	191792.06
2 	153441.51 	101145.55 	407934.54 	Florida 	191050.39
3 	144372.41 	118671.85 	383199.62 	New York 	182901.99
4 	142107.34 	91391.77 	366168.42 	Florida 	166187.94
5 	131876.90 	99814.71 	362861.36 	New York 	156991.12
6 	134615.46 	147198.87 	127716.82 	California 	156122.51
7 	130298.13 	145530.06 	323876.68 	Florida 	155752.60
8 	120542.52 	148718.95 	311613.29 	New York 	152211.77
9 	123334.88 	108679.17 	304981.62 	California 	149759.96
10 	101913.08 	110594.11 	229160.95 	Florida 	146121.95
11 	100671.96 	91790.61 	249744.55 	California 	144259.40
12 	93863.75 	127320.38 	249839.44 	Florida 	141585.52
13 	91992.39 	135495.07 	252664.93 	California 	134307.35
14 	119943.24 	156547.42 	256512.92 	Florida 	132602.65
15 	114523.61 	122616.84 	261776.23 	New York 	129917.04
16 	78013.11 	121597.55 	264346.06 	California 	126992.93
17 	94657.16 	145077.58 	282574.31 	New York 	125370.37
18 	91749.16 	114175.79 	294919.57 	Florida 	124266.90
19 	86419.70 	153514.11 	0.00 	New York 	122776.86
20 	76253.86 	113867.30 	298664.47 	California 	118474.03
21 	78389.47 	153773.43 	299737.29 	New York 	111313.02
22 	73994.56 	122782.75 	303319.26 	Florida 	110352.25
23 	67532.53 	105751.03 	304768.73 	Florida 	108733.99
24 	77044.01 	99281.34 	140574.81 	New York 	108552.04
25 	64664.71 	139553.16 	137962.62 	California 	107404.34
26 	75328.87 	144135.98 	134050.07 	Florida 	105733.54
27 	72107.60 	127864.55 	353183.81 	New York 	105008.31
28 	66051.52 	182645.56 	118148.20 	Florida 	103282.38
29 	65605.48 	153032.06 	107138.38 	New York 	101004.64
30 	61994.48 	115641.28 	91131.24 	Florida 	99937.59
31 	61136.38 	152701.92 	88218.23 	New York 	97483.56
32 	63408.86 	129219.61 	46085.25 	California 	97427.84
33 	55493.95 	103057.49 	214634.81 	Florida 	96778.92
34 	46426.07 	157693.92 	210797.67 	California 	96712.80
35 	46014.02 	85047.44 	205517.64 	New York 	96479.51
36 	28663.76 	127056.21 	201126.82 	Florida 	90708.19
37 	44069.95 	51283.14 	197029.42 	California 	89949.14
38 	20229.59 	65947.93 	185265.10 	New York 	81229.06
39 	38558.51 	82982.09 	174999.30 	California 	81005.76
40 	28754.33 	118546.05 	172795.67 	California 	78239.91
41 	27892.92 	84710.77 	164470.71 	Florida 	77798.83
42 	23640.93 	96189.63 	148001.11 	California 	71498.49
43 	15505.73 	127382.30 	35534.17 	New York 	69758.98
44 	22177.74 	154806.14 	28334.72 	California 	65200.33
45 	1000.23 	124153.04 	1903.93 	New York 	64926.08
46 	1315.46 	115816.21 	297114.46 	Florida 	49490.75
47 	0.00 	135426.92 	0.00 	California 	42559.73
48 	542.05 	51743.15 	0.00 	New York 	35673.41
49 	0.00 	116983.80 	45173.06 	California 	14681.40
'''
X = dataset.iloc[:,0:4]#取前四列作为特征变量,第五行为y
y=dataset.iloc[:,4]#直接取第五列,为y值X["State"].unique()#有几个不同的
#结果:array(['New York', 'California', 'Florida'], dtype=object#因为State是类别性,需要进行加工,转化成数值
pd.get_dummies(X['State'])
'''结果:California 	Florida 	New York
0 	0 	0 	1
1 	1 	0 	0
2 	0 	1 	0
3 	0 	0 	1
4 	0 	1 	0
5 	0 	0 	1
6 	1 	0 	0
7 	0 	1 	0
8 	0 	0 	1
9 	1 	0 	0
10 	0 	1 	0
11 	1 	0 	0
12 	0 	1 	0
13 	1 	0 	0
14 	0 	1 	0
15 	0 	0 	1
16 	1 	0 	0
17 	0 	0 	1
18 	0 	1 	0
19 	0 	0 	1
20 	1 	0 	0
21 	0 	0 	1
22 	0 	1 	0
23 	0 	1 	0
24 	0 	0 	1
25 	1 	0 	0
26 	0 	1 	0
27 	0 	0 	1
28 	0 	1 	0
29 	0 	0 	1
30 	0 	1 	0
31 	0 	0 	1
32 	1 	0 	0
33 	0 	1 	0
34 	1 	0 	0
35 	0 	0 	1
36 	0 	1 	0
37 	1 	0 	0
38 	0 	0 	1
39 	1 	0 	0
40 	1 	0 	0
41 	0 	1 	0
42 	1 	0 	0
43 	0 	0 	1
44 	1 	0 	0
45 	0 	0 	1
46 	0 	1 	0
47 	1 	0 	0
48 	0 	0 	1
49 	1 	0 	0
'''statesdump=pd. get_dummies(X['State'],drop_first=True) #节省空间,florida和newyork为0就意味california
'''结果:Florida 	New York
0 	0 	1
1 	0 	0
2 	1 	0
3 	0 	1
4 	1 	0
5 	0 	1
6 	0 	0
7 	1 	0
8 	0 	1
9 	0 	0
10 	1 	0
11 	0 	0
12 	1 	0
13 	0 	0
14 	1 	0
15 	0 	1
16 	0 	0
17 	0 	1
18 	1 	0
19 	0 	1
20 	0 	0
21 	0 	1
22 	1 	0
23 	1 	0
24 	0 	1
25 	0 	0
26 	1 	0
27 	0 	1
28 	1 	0
29 	0 	1
30 	1 	0
31 	0 	1
32 	0 	0
33 	1 	0
34 	0 	0
35 	0 	1
36 	1 	0
37 	0 	0
38 	0 	1
39 	0 	0
40 	0 	0
41 	1 	0
42 	0 	0
43 	0 	1
44 	0 	0
45 	0 	1
46 	1 	0
47 	0 	0
48 	0 	1
49 	0 	0
'''
X=X.drop('State',axis=1)#去掉State那一列
X=pd.concat([X,statesdump],axis=1)#将statesdump加入
'''结果:R&D Spend 	Administration 	Marketing Spend 	Florida 	New York
0 	165349.20 	136897.80 	471784.10 	0 	1
1 	162597.70 	151377.59 	443898.53 	0 	0
2 	153441.51 	101145.55 	407934.54 	1 	0
3 	144372.41 	118671.85 	383199.62 	0 	1
4 	142107.34 	91391.77 	366168.42 	1 	0
5 	131876.90 	99814.71 	362861.36 	0 	1
6 	134615.46 	147198.87 	127716.82 	0 	0
7 	130298.13 	145530.06 	323876.68 	1 	0
8 	120542.52 	148718.95 	311613.29 	0 	1
9 	123334.88 	108679.17 	304981.62 	0 	0
10 	101913.08 	110594.11 	229160.95 	1 	0
11 	100671.96 	91790.61 	249744.55 	0 	0
12 	93863.75 	127320.38 	249839.44 	1 	0
13 	91992.39 	135495.07 	252664.93 	0 	0
14 	119943.24 	156547.42 	256512.92 	1 	0
15 	114523.61 	122616.84 	261776.23 	0 	1
16 	78013.11 	121597.55 	264346.06 	0 	0
17 	94657.16 	145077.58 	282574.31 	0 	1
18 	91749.16 	114175.79 	294919.57 	1 	0
19 	86419.70 	153514.11 	0.00 	0 	1
20 	76253.86 	113867.30 	298664.47 	0 	0
21 	78389.47 	153773.43 	299737.29 	0 	1
22 	73994.56 	122782.75 	303319.26 	1 	0
23 	67532.53 	105751.03 	304768.73 	1 	0
24 	77044.01 	99281.34 	140574.81 	0 	1
25 	64664.71 	139553.16 	137962.62 	0 	0
26 	75328.87 	144135.98 	134050.07 	1 	0
27 	72107.60 	127864.55 	353183.81 	0 	1
28 	66051.52 	182645.56 	118148.20 	1 	0
29 	65605.48 	153032.06 	107138.38 	0 	1
30 	61994.48 	115641.28 	91131.24 	1 	0
31 	61136.38 	152701.92 	88218.23 	0 	1
32 	63408.86 	129219.61 	46085.25 	0 	0
33 	55493.95 	103057.49 	214634.81 	1 	0
34 	46426.07 	157693.92 	210797.67 	0 	0
35 	46014.02 	85047.44 	205517.64 	0 	1
36 	28663.76 	127056.21 	201126.82 	1 	0
37 	44069.95 	51283.14 	197029.42 	0 	0
38 	20229.59 	65947.93 	185265.10 	0 	1
39 	38558.51 	82982.09 	174999.30 	0 	0
40 	28754.33 	118546.05 	172795.67 	0 	0
41 	27892.92 	84710.77 	164470.71 	1 	0
42 	23640.93 	96189.63 	148001.11 	0 	0
43 	15505.73 	127382.30 	35534.17 	0 	1
44 	22177.74 	154806.14 	28334.72 	0 	0
45 	1000.23 	124153.04 	1903.93 	0 	1
46 	1315.46 	115816.21 	297114.46 	1 	0
47 	0.00 	135426.92 	0.00 	0 	0
48 	542.05 	51743.15 	0.00 	0 	1
49 	0.00 	116983.80 	45173.06 	0 	0
'''

2.2数据分为训练集和测试集

from  sklearn.model_selection import train_test_split#将数据分成测试和训练集
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)#测试集占百分之三十,random_state=0随机抽取数据集里的成为测试集X_train.count()
'''结果:
R&D Spend          35
Administration     35
Marketing Spend    35
Florida            35
New York           35
dtype: int64
'''X_test.count()
'''结果:
R&D Spend          15
Administration     15
Marketing Spend    15
Florida            15
New York           15
dtype: int64
'''

2.3建模

from sklearn.linear_model import LinearRegression
regressor=LinearRegression()
model=regressor.fit(X_train,y_train)#将训练集给到线性回归模型
y_predict=regressor.predict(X_test)#测试集因变量的预测值
from sklearn.metrics import r2_scorescore1=r2_score(y_test,y_predict)#测试集的值与预测的值进行比较评估
score1#进行评估,越接近1,越好
#0.9358680970046241model.coef_#参数,特征变量有五个,五元的线性回归
#结果:array([7.90840255e-01, 3.01968165e-02, 3.10148566e-02, #4.63028992e+02,3.04799573e+02])model.score(X,y)#整个模型的值
#结果:0.9489303683771293model.intercept_#y轴的切入
#结果:42403.8708705279

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

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

相关文章

【Redis】五、Redis持久化、RDB和AOF

文章目录 Redis持久化一、RDB(Redis DataBase)触发机制如何恢复rdb文件 二、AOF(Append Only File)三、扩展 Redis持久化 面试和工作,持久化都是重点! Redis 是内存数据库,如果不将内存中的数据…

微服务实战系列之ZooKeeper(实践篇)

前言 关于ZooKeeper,博主已完整的通过庖丁解牛式的“解法”,完成了概述。我想掌握了这些基础原理和概念后,工作的问题自然迎刃而解,甚至offer也可能手到擒来,真实一举两得,美极了。 为了更有直观的体验&a…

uniapp 预览图片

preImg(index){let urls []this.images.map((item,i) > {if(indexi){urls.unshift(item.file_path)}else{urls.push(item.file_path)}})uni.previewImage({urls})}

linux之Samba服务器

环境:虚拟机CENTOS 7和 测试机相通 一、Samba服务器_光盘共享(匿名访问) 1.在虚拟机CENTOS 7安装smb服务,并在防火墙上允许samba流量通过 2. 挂载光盘 3.修改smb.conf配置文件,实现光盘匿名共享 4. 启动smb服务 5.在…

JVM基础扫盲

什么是JVM JVM是Java设计者用于屏蔽多平台差异,基于操作系统之上的一个"小型虚拟机",正是因为JVM的存在,使得Java应用程序运行时不需要关注底层操作系统的差异。使得Java程序编译只需编译一次,在任何操作系统都可以以相…

英码科技受邀参加2023计算产业生态大会,分享智慧轨道交通创新解决方案

12月13-14日,“凝心聚力,共赢计算新时代”——2023计算产业生态大会在北京香格里拉饭店成功举办。英码科技受邀参加行业数字化分论坛活动,市场总监李甘来先生现场发表了题为《AI哨兵,为铁路安全运营站好第一道岗》的精彩主题演讲&…

1951 年以来的美国ACIS 气候地图数据集(5 公里空间分辨率)

应用气候信息系统 (ACIS) NRCC NN ACIS是Applied Climate Information System的缩写,是由美国国家气象局(NOAA)开发的一种气候信息系统。ACIS气候地图是通过收集和整理全球的气象数据,利用计算机技术和数据分析方法生成的气候图表…

计算机组成原理-选择语句和循环语句的汇编表示

文章目录 选择语句jmpjxx示例:选择语句的机器级表示扩展:cmp指令的底层原理 循环语句使用条件转移指令实现循环用loop指令实现循环 选择语句 不一定知道指令的位置,所以jmp直接跳转到指令的位置很难办 jmp 标号相当于位置,名字…

解决win11杀毒(不能安装破解软件的问题)

1、下载火绒APP,打开火绒APP软件 2、点击菜单,选择安全设置 3、选择病毒防护,修改病毒处理方式为询问我 4、这样在解压激活的软件就不会被windows的杀毒软件自动删除了 5、问题解决了就点击三连吧

永久删除的文件如何恢复?这3个简单方法可以帮到你!

“我在清理电脑的过程中,一不小心就删除了一些很重要的文件和数据,很想通过某种方法将这些数据找回来,但是不知道应该如何操作,有朋友可以分享一下文件找回的简单方法吗?” 在日常生活和工作中,我们时常会遇…

【JAVA基础(对象和封装以及构造方法)】----第四天

对象和封装以及构造方法 面向对象和面向过程面向过程面向对象 类与对象及其使用定义类创建一个对象,操作类补充(成员变量和局部变量) private 修饰类 封装练习编写类编写测试输出结果 面向对象和面向过程 面向过程 在了解面向对象之前先来了…

用户行为分析遇到的问题-ubantu16,hadoop3.1.3【更新中】

用户行为分析传送门 我的版本 ubantu16 hadoop 3.1.3 habse 2.2.2 hive3.1.3 zookeeper3.8.3 sqoop 1.46/1.47 我sqoop把MySQL数据往hbase导数据时候有问题 重磅:大数据课程实验案例:网站用户行为分析(免费共享) 用户行为分析-小…

VR党建:VR全景技术如何助力党建知识传播

导语: 随着科技的不断发展,虚拟现实技术逐渐深入人们生活的方方面面。VR全景技术作为一种全新的沉浸式体验方式,被广泛应用于娱乐、教育、医疗等领域。而在党建学习中,VR全景技术也展现出了巨大的潜力,成为了一种创新…

「数据结构」二叉树1

🎇个人主页:Ice_Sugar_7 🎇所属专栏:C启航 🎇欢迎点赞收藏加关注哦! 文章目录 🍉树🍉二叉树🍌特殊二叉树🍌二叉树的性质🍌存储结构 🍉…

ffmpeg入门之Windows开发之二(视频转码)

添加ffmpeg windows编译安装及入门指南-CSDN博客 的头文件和依赖库如下&#xff1a; main 函数如下&#xff1a; extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <libavutil/timestamp.h> #in…

OpenCV-8RGB和BGR颜色空间

一. RGB和BGR 最常见的色彩空间就是RGB&#xff0c;人眼也是基于RGB的色彩空间去分辨颜色。 OpenCV默认使用的是BGR. BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同。 二.HSV, HSL和YUV 1.HSV(HSB) OpenCV用的最多的色彩空间是HSV. Hue&#xff1a;色相&…

【分享】5种方法将Excel设置为“只读”

将Excel表格设置以“只读方式”打开&#xff0c;可以提醒或者防止表格被随意改动&#xff0c;今天小编来分享一下将Excel设置为“只读”的5种方法。 方法一&#xff1a;通过“保护工作簿”设置 首先&#xff0c;打开Excel表格依次点击菜单选项卡【文件】→【信息】→【保护工作…

【无标题】CTF之SQLMAP

拿这一题来说 抓个包 复制报文 启动我们的sqlmap kali里边 sqlmap -r 文件路径 --dump --dbs 数据库 --tables 表

数据库操作习题12.12

考虑如下的人员数据&#xff0c;其中加下划线的是主码&#xff0c;数据库模式由四个关系组成: employee (empname, street, city) works (empname, compname, salary) company(id, compname, city) managers (empname, mgrname) 其中 关系 employee 给出人员的基本信息,包括人员…

浅析 SaaS、CRM、OA、ERP、eHR、进销存、财务系统的区别

在当今数字化时代&#xff0c;各种企业管理软件如雨后春笋般涌现&#xff0c;为企业的日常管理和运营带来了极大的便利。其中&#xff0c;SaaS、CRM、OA、ERP、eHR、进销存、财务系统是我们常常会听到的软件。这些软件各具特色&#xff0c;为企业解决了不同的问题。它们到底是什…