Python 散点图线性拟合_Python:简述线性回归(机器学习)

1659d0c99632a05016067f8346aa25e8.png

本文包含以下内容:

  • 机器学习
  • 简述线性回归

一、机器学习

1.定义:将普通计算机的算法,通过数据模型后输出结果,可以随着学习时长模型优化越来越好。

2.机器学习的步骤:提出问题——理解数据——数据清洗——构建模型——评估预测,其中最重要的就是机器学习算法(即模型),最后需要对模型进行评估预测。

3.理解数据特征及其标签:特征是数据的一些属性,标签是通过机器学习对数据的预测结果

二、简述线性回归

1.准备工作:安装sklearn(全名Scikit-learn)

Scikit-learn 是开源的 Python 库,通过统一的界面实现机器学习、预处理、交叉验证及可视化算法。

scikit-learn 网站:https://scikit-learn.org

2.相关性分析

创建一个具有线性相关的数据集

from 

6449e4959f8fcad6a22da30365c87eeb.png

以学习时间为X轴,分数为Y轴画出数据散点图

#提取特征和标签
#特征features
exam_X=examDf.loc[:,'学习时间']
#标签labes
exam_y=examDf.loc[:,'分数']
#绘制散点图
import matplotlib.pyplot as plt

#散点图
plt.scatter(exam_X, exam_y, color="b", label="exam data")

#添加图标标签
plt.xlabel("Hours")
plt.ylabel("Score")
#显示图像
plt.show()

c438c84705ffc24ec80dc063e36f13a6.png

可以看出分数会随着学习时间增加而变大,两者之间有线性相关关系

  • 三种线性相关性

0cf1f0f64f25f622b225850285cf5a02.png
  • 如何相关性程度:我们需要设计一个统计量,这个统计量应该具有以下两个功能

43f5bf87b40f5d5895826e109a84ff9b.png

(1)协方差:cov(X,Y)=E[(X-E[X])(Y-E[Y])]

2665127ca0e0b441a7202998ad2f80b1.png
其中E[]W为期望

缺点:数据的变化幅度会很大的影响协方差

(2)相关系数:是标准化后的协方差,消除了数据变化幅度影响,反映的是数据每单位变化的相似程度

2271b67ef1abc15807e056e1a02f0443.png

具有以下两个功能:

3e97bd64d215494e885d202184809dc4.png

相关系数的意义:

1)两个变量的相关性方向。r<0 为负线性相关,r>0 为正线性相关。相关系数r的三个极值:r=1,r=-1,r=0。

2)相关性大小:表示两个单位的相关性程度。r=0.6~1:强相关;r=0.3~0.6:中等程度相关;r=0~0.3:弱相关

相关系数的Python实现:pandas下的corr()函数

508b3b8a2c329b9861a4068cf2c033ec.png

3.最佳拟合线:是指找到一条最佳的回归直线对观测值的拟合程度最好。

y = bx + a 其中b是回归系数,a是截距

f9415b9fb5ec1d2275232853b57d6e0a.png
让散点尽可能的落到直线上

如何求得a和b?

ef1fc8fc5d8772f261ca624f25e91710.png

最小二乘法就是使得误差平方和的值最小即:误差=实际值-预测值

4.线性回归的实现

(1)提取特征和标签

2e6343b18d438b4ee19d56530904fc2e.png

(2)建立训练数据和测试数据

485dacab6e1422fa1181fce8e58b527b.png

绘制数据散点图

3c53dd6e84b997ee93fd5f22f271b950.png

(3)用训练数据训练模型

cd6395ffb1296e769ab4d0eead61d9a7.png

01772a1b816fbd0215d9ca23d5dc5a6b.png

通过搜索引擎发现,报错原因是训练数据只输入了一个特征,需要用array.reshape(-1, 1)来改变数组的形状。

补充知识:reshape行的参数是-1表示什么呢?例如reshape(-1,列数)如果行的参数是-1,就会根据所给的列数,自动按照原始数组的大小形成一个新的数组。例如reshape(-1,1)就是改变成1列的数组,这个数组的长度是根据原始数组的大小来自动形成的。

5dd60e27029f43d1b94fbd922058263e.png

a311bf53dda2ac8e6319220e49f7196b.png
原始数据是2行*3列,改变后为6行*1列

修改bug后:

step1:将训练数据导入sklearn的线性模型训练模型

aad588af4969f9ca133e124ead78912b.png

step2:求出线性回归方程,其中intercept为截距、coef为回归系数

6a1bfe822f9acb0d8b1a3b1a68890352.png

step3:绘图查看最佳拟合线和散点

64aba507b196e8c17c80bf6672d6a981.png

(4)模型评估(使用测试数据)

评估模型精准度:决定系数R平方

a885c03d4a0e01d3dc78f1df30b40555.png

6cee7e1bc391e31211acdb4213d5673c.png

代码实现

65bc4b1081b4d7d4c31e4ff6023d7ac9.png

(5)把训练数据集(图中蓝色的点),和测试数据集(图中红色的点)放到一张图上来比较看

790c2094d8c7abf5617daa48f5af5abd.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值