Python 散点图线性拟合_机器学习之利用Python进行简单线性回归分析

ed04ed171fc7e4801dbbc966fbb43d0b.png
前言:在利用机器学习方法进行数据分析时经常要了解变量的相关性,有时还需要对变量进行回归分析。本文首先对人工智能/机器学习/深度学习、相关分析/因果分析/回归分析等易混淆的概念进行区分,最后结合案例介绍如何利用Python进行简单线性回归分析。

6563365d7f3a55233070223a4be981af.png

一、机器学习

1.1什么是机器学习

谈到机器学习,人们会很容易联想到人工智能和深度学习,我们通过这三个概念的对比来说明三者的区别和联系。

人工智能Artificial Inteligence:这个概念早在1956年就被提出,当时科学家梦想着用当时刚刚出现的计算机来构造复杂的、拥有像人类智慧特性的机器。目前,AI的分支很多,诸如专家系统、机器学习、自然语言处理以及推荐系统等。

机器学习Mechine Learning:机器学习是实现人工智能的一种方法,是使用算法解析数据、并从中学习,然后对真实世界中事件作出决策或预测。机器学习是通过大量数据来“训练”算法模型,利用算法从数据中学习如何完成任务。学习方法可以分为:监督学习(如分类)、无监督学习(如聚类)等。(下面介绍一些基础概念)

  • 学习(learning):是指找到特征(feature)和标签(label)的映射(mapping)关系。
  • 有监督学习(supervised learning):不仅将训练数据(特征)丢给计算机,还把分类的结果(数据具有的标签)也一并丢给计算机分析,如分类和回归;
  • 无监督学习(unsupervised learning):只提供训练数据(特征),不给结果(标签),计算机只能利用其计算能力分析数据的特征,然后得到一些数据集合,集合内的数据在某些特征上相同或相似,如聚类分析;
  • 半监督学习(semi-supervised learning):给计算机大量训练数据与少量分类结果(具有同一标签的集合)。
  • 聚类(clustering):无监督学习的结果,聚类的结果将产生若干组集合,同集合中对象彼此相似,与其他集合中对象相异。
  • 分类(classification)与回归(regression):有监督学习的两大应用,其区别在于分别产生离散或连续的结果(分类及回归方法的区别在下文中有较详细分析)。
起名困难症用户:机器学习之利用Python进行逻辑回归分析​zhuanlan.zhihu.com
ce05fdbbd99f7fa93c8ca6aa1ef43910.png

深度学习Deep Learning:深度学习是机器学习的一种方法,其本身会用到有监督和无监督的学习方法来训练深度神经网络。

82554f5d9fda073c3ecfd35cdd10b9e4.png
人工智能、机器学习、深度学习三者的关系

1.2机器学习的步骤

利用机器学习方法分析、解决问题的过程可分为五个步骤:

e4dc2ad6d180caf4e6439f86a332d11b.png
机器学习主要步骤

1.提出问题

明确要分析的问题,为后续的机器学习过程提供目标。

2.理解数据(采集并查看数据)

采集数据(根据研究问题采集数据);导入数据(从不同数据源读取数据);查看数据信息(描述统计信息、数据缺失值、异常值情况等,可以结合具体图表来直观查看数据)。

3.数据清洗(数据预处理)

数据预处理是数据分析过程中关键的一环,数据质量决定了机器学习分析的上限,而具体采用的算法和模型只是逼近这个上限。(包括缺失数据处理、异常值处理、数据类型转换、列名重命名、数据排序、选择子集、特征工程等步骤)

4.构建模型

根据研究的问题以及数据的特点选择合适的算法,将训练数据放入所选择的机器学习算法中构建相应的模型,有时需要对多种算法模型进行比较,甚至进行模型整合。

5.模型评估

利用测试数据对得到的模型效果进行评估,具体评估指标依据研究的问题及采用的模型进行选择,常用到的指标需根据模型的类型而定,如分类模型常用准确率、ROC-AUC等,而回归模型可以用决定系数等。

各类学习器评价指标 - MsSpark的博客 - CSDN博客​blog.csdn.net
322e9f2a58df4379fb9d3305de50534d.png

1.3特征(feature)和标签(label)

机器学习中经常遇到特征及标签两个概念:

特征:数据的特征,描述数据的属性。

标签:数据的标签,对数据的预测结果。

1.4Python机器学习包sklearn

Python提供了强大的sklearn包,可以调用不同机器学习方法解决问题。我们并不需要一开始就掌握sklearn中每种机器学习方法,只需在用到某个机器学习方法时,再去sklearn中找对应算法的用法即可。本文第三部分会以调用sklearn包中LinearRegression方法进行简单线性回归分析为例,说明如何使用Python进行数据分析。

43cf833a83880786c9ff4abfc2e2d2f1.png
sklearn algorithm cheat-sheet

二、相关分析及回归分析

机器学习常用来解决相关分析和回归分析的问题,本文接下来主要介绍两者的相关概念及评估指标,以及它们的区别与联系。

2.1相关分析及回归分析

  • 相关分析(Correlation analysis):研究两个或两个以上处于同等地位的随机变量间的相关关系的统计分析方法。
  • 回归分析(Regression analysis):确定两种或两种以上变量间相互依赖定量关系的统计分析方法,将变量分为因变量和自变量。

两者的区别:

  • 相关分析中涉及的变量不区分自变量和因变量,变量之间关系是对等的;回归分析中,需要根据研究对象的性质和研究分析的目的,区分变量为自变量和因变量。
  • 相关分析主要通过“相关系数”反映变量间相关程度的大小,因为变量间关系是对等的,所有相关系数是唯一的;回归分析中,自变量和因变量之间可能存在多个回归方程。

两者的联系:

  • 相关分析是回归分析的基础和前提,回归分析是相关分析的深入和继续。
  • 相关分析表现变量间数量变化的相关程度,回归分析表现变量间数量相关的具体形式。
  • 只有变量间存在高度相关时,进行回归分析需求具体形式才有意义。

2.2线性相关性类型及回归分析类型

2.2.1线性相关性类型

以两个变量的简单线性相关为例:

散点图(直观判断变量间是否有相关性的最佳方法):结合散点图来直观显示各个变量之间的相关性。

三种线性相关性:正线性相关(总体表现直线朝上);负线性相关;非线性相关。

71cf59a5c3afa090180212909811bfb4.png

2.2.2回归分析类型

根据不同的维度对回归分析进行分类:

  • 一元回归和多元multivariate回归分析(因变量多少);
  • 简单回归和多重multiple回归分析(自变量多少);
  • 线性回归和非线性回归(自变量及因变量间关系类型)。

2.3衡量指标

2.3.1衡量变量间相关度的指标

符号(反映两个变量的相关性方向);大小(表示两个变量相关性程度)

  • 指标一:协方差

协方差(cov(data,bias=1)):描述变量间相互关系,两随机向量X,Y之间的协方差定义为cov(X,Y)=E[(X-E(X))(Y-E(Y))],E表示数学期望。可通俗的理解为,两个变量在变化过程中是同方向变化还是反方向变化?以及同向或反向程度如何?

符号表示相关性方向;大小表示相关性程度。

该指标缺点:容易受到变量量纲影响。

87d3d0713200be048643b80e066a2851.png
  • 指标二:相关系数

相关系数(corrcoef(data)):先对变量做标准化变换(除相应标准差),然后再计算协方差,把先标准化变换后做协方差运算定义为变量间的相关系数(皮尔逊相关系数)。可以理解为是剔除两个变量量纲影响,标准化后的特殊协方差。

654b8f2eb18af1feb1b3bfe117d148d6.png

37731f36431078bf9336c78ce7884a55.png

47532a2445e0643594e2776908679760.png

相关系数与协方差对比:

  1. 相关系数是一个无单位的量,绝对值不超过1,它描述了变量间的线性相关程度。
  2. 当变量间相关系数为0时,变量间不存在线性趋势关系,但可能存在非线性趋势关系。
  3. 当变量间相关系数的绝对值为1时,一个变量是另一变量的线性函数;当变量间相关系数越接近1时,变量间线性趋势越明显。
  4. 在用协方差描述变量间的相关程度时会受到变量的量纲和数量级的影响,即使对于同样的一组变量,当变量的量纲和数量级发生变化时,协方差也会随之改变。

2.3.2衡量回归模型精确度的指标

>>>先介绍回归分析中的最佳拟合线(回归方程)

最佳拟合线即能最准确预测出所有点真实值的线。

91fc2f7c7d74105f63ace3c7b146f6aa.png

如何求出回归方程中的截距和回归系数(最小二乘法:使误差平方和最小)

8d6ac84ce16db141a46236271dc00c31.png

指标三:决定系数R平方(coefficient of determination)

决定系数(model.score()):评估得到的回归方程是否较好拟合样本数据的统计量。(以下是与决定系数相关的重要指标,以及决定系数的计算过程)

9a6b6a4ce3572be5793777a50b4ad43c.png

总的平方和:观测值与平均值的离差平方和

69008a6f8bb1e6be2b61f652a7b9549d.png

误差平方和:观测值与预估值的离差平方和

1df204d7c2044fad2845c534418ac80f.png

回归平方和:预估值与平均值的离差平方和

72aef62ace80d27af9c760ff65eb720a.png

三个平方和之间的关系

7c34d3dc2ddc263c786570abfb25dd9d.png

决定系数的计算(回归平方和与总平方和的商)

决定系数与相关系数对比:

  • 决定系数表示回归线拟合程度,即有多少百分比的y波动可以被回归线描述;相关系数表示变量间的相关关系。
  • 决定系数大小:R平方越高,回归模型越精确,取值为[0,1];相关系数等于 (相关性方向符号+or-)决定系数开方,取值为[-1,1]。
  • 决定系数越大则拟合优度越好,但具体问题要具体分析;相关系数绝对值越大说明变量相关性越强。

2.4相关关系与因果关系

注意不能混淆相关关系和因果关系,相关分析只能表明变量是如何或以怎样的程度彼此联系在一起的。

三、回归分析的Python实现

利用Python中的sklearn包进行简单线性回归分析。

3.1提出问题

探究“学习时长”和“学习成绩”之间是否存在相关性关系,如果有找出其回归方程。

3.2理解数据

1、导入数据包

import 

2、创建数据并查看数据

#创建数据并查看数据

3、提取特征值和标签

#特征值:解释变量(自变量),一般加X为后缀

4、利用散点图查看数据间关系

import 

322e1f616ffa0b2c7542f78397becf83.png

5、求出变量间相关系数

#变量间的相关系数

从散点图中,我们可以看出学习时长和学习成绩之间应该存在线性相关关系,且相关系数为0.9379呈现强线性相关关系(模型选择时,我们会创建线性回归模型进行拟合)。

3.3构建模型

1、从数据集中分离出训练数据train和测试数据test

from 

绘制散点图,查看训练集和测试集数据的分布情况

import 

07226af0e27cd077561c12c16ee5b506.png

2、创建线性回归模型

#导入线性回归模型

3、训练模型

#导入模型的数据应为一列数据

3.4模型评估

1、查看模型得分(即决定系数大小)

#查看模型得分

2、求出并绘制模型拟合线(模型的回归方程)y=a+bx

#模型拟合线(模型的回归方程)y=a+bx

67e4b8d10d3ff54e5614a65b781263f1.png

四、总结

机器学习方法有很多,这些方法有些很容易混淆,比如相关分析/回归分析/因果分析以及聚类分析/分类分析等,在使用时要注意区分其异同点。

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

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

相关文章

Flask 第三方组件之 Migrate

flask-migrate是flask的一个扩展模块,主要是扩展数据库表结构的.类似于Django的python manage.py migrate 官方文档: http://flask-migrate.readthedocs.io/en/latest/ 安装 pip install flask-migrate 使用举例 from flask import Flask from flask_sqlalchemy import SQLA…

html section 布局,section标签的用法

标签的用法由于昨晚发了一篇文章http://www.zcool.com.cn/article/ZMzA3MzI.html,有一个网友评论问 的用法。所以现在举例来说明一下:html5引入了标签,用于描述文档的结构,它同标签的意思一样。但是在特定环境中,两者又…

清北学堂Day4

(1)第一题 财富(treasure) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有n个小伙伴。每个小伙伴有一个身高hi。 这个游戏是这样的,LYK生活的环境是以身高为美的环境,因此在这里的每个人都羡慕比自己身高高的人&#xff…

visio中公式太小_visio绘图中的数据计算

在绘流程图时,我们有时候会想直接在流程图上做计算,比如化工设计时精馏塔计算理论塔板数。在VISIO中,实现这个功能还是比较容易,举一个最简单的例子。如下图所示,等号后面的数字可以根据前面的数字变化。实现过程如下&…

ltsc系统激活_WIN10_X64企业版LTSC 电脑公司装机版 202008

文件: WIN10_X64_LTSC_ZJ202008.esd大小: 7431429353 字节(6.92G)MD5: A3A3B15ED47216E177C924D2E07E0799SHA1: 3A647265E0C8234225C633407093BAA07253FB34CRC32: 32E791E9(注意,下载文件有一定几率损坏,如文件值不对请重新下载!)360安全云盘…

zabbix 安装_安装zabbix

准备一个纯净环境10.0.0.99首先修改yum源,修改为zabbix清华源,清华源玉zabbix官方源都是同步的,下载速度更快!zabbix官方Download Zabbix​www.zabbix.com点击下载,下面有zabbix的历史版本以及官方安装文档可以查看到不…

拓展欧几里得 [Noi2002]Savage

对于一个野人,他(她?)所在的位置,(C[i]x*p[i])%ans,是的,暴力枚举每一个ans,用拓展欧几里得求出每两个wildpeople(wildrage?)相遇的年份,如果小于最小的寿限…

CCNP-19 IS-IS试验2(BSCI)

CCNP-19 IS-IS试验2 实验拓扑:试验要求:R1 R2 R3全部采用集成的ISIS路由协议,R1 R2在区域49.0001内,R3在区域49.0002内,R1与R2之间的链路类型为L1,R2与R3之间的链路类型为L2。 试验目的:掌握基…

dijkstra算法代码_数据科学家需要知道的5种图算法(附代码)

在本文中,我将讨论一些你应该知道的最重要的图算法,以及如何使用Python实现它们。作者:AI公园导读因为图分析是数据科学家的未来。作为数据科学家,我们对pandas、SQL或任何其他关系数据库非常熟悉。我们习惯于将用户的属性以列的形…

大暴搜 chess

仔细读题,会发现吃掉敌人点对方案数的贡献很神奇。如果走的空格相同,而走的敌人点不同,对答案无贡献,而对于走的空格相同,但一种走了敌人点,另一种没走,算两个方案。。。。sb出题人语文简直是和…

html 缩略图点击预览,[每天进步一点点~] uni-app 点击图片实现预览图片列表

点击图片,实现预览图片功能,并且可循环预览图片列表!image.png一、多张图片预览html代码js代码data(){return {photos:[{ src: 图片路径1},{ src: 图片路径2},{ src: 图片路径3},……]}},methods: {// 预览图片previewImage(index) {let phot…

git ssh拉取代码_阿里云搭建git服务器

一.搭建步骤,分为两步搭建中心仓库自动同步代码到站点目录二.详细步骤如下1.先检查一下服务器上有没有安装gitgit --version如果出现版本号,说明服务器已经安装git,如图所示:2.如果没有版本信息,则先安装git&#xff1…

Word -- 列表重新编号

Word -- 列表重新编号office一言:我小心翼翼地灌溉,一日复一日地期待,那么费力,植成参天的乔木,岂愿见你终有一日从容赴死?问题 word 文档早就想解决的一个问题,这次遇到了就上网找解决掉了&…

非持久连接和持久连接

非持久连接和持久连接 HTTP既可以使用非持久连接(nonpersistent connection),也可以使用持久连接(persistent connection)。HTTP/1.0使用非持久连接,HTTP/1.1默认使用持久连接。 非持久连接 让我们查看一下非持久连接情况下从服务器到客户传送一个Web页面…

计算机开机键鼠无法识别,我得电脑一开机就检测不到键盘和鼠标

2005-10-18 16:06:131、开机后当出现dos界面时,按一下pause键(这个键在四个方向键的上边,仔细找就能找到),如果计算机启动停止,说明你的键盘起作用,主板在开机时就已经检测到了鼠标键盘。启动后不能使用鼠标键盘&#…

vs2003 局部友元访问私有不可访问_C++ 类:重载运算符与友元

18.类中重载运算符与友元上次节中学习了如何在类中重新定义赋值()运算符,实际上在一个自定义类中除了赋值()运算符外,类的对象是不可以直接使用运算符的,比如你在main函数中写这样的代码会报错:如果想解决这些报错问题&#xff0c…

Django REST framework 视图

上一部分代码在序列化部分 类继承顺序 ############### mixins.py ################ # 类中调用的方法均在 GenericAPIView 类中实现,所以下列类需要结合 GenericAPIView 使用 class ListModelMixin(object) # 查看继承类def list(self, reque…

IOS7.1.1真的像网上流传的那么好?没有任何问题么??

IOS7.1.1推送更新之后到处看到网上说711好的~~ 那么IOS7.1.1真的像网上现在流传的那么好么? 其实不然,IOS7.1.1目前众多网友反映说升级ios7.1.1之后APPstore连接不上了,提示无法连接到APPstore。 这个问题也不难解决~还是之前的老办法~ 那么今…

三校生计算机对口本科有哪些学校,宝山三校生五月对口高考报名

多次复习生活不可能像你想象得那么好,但也不会像你想象得那么糟。我觉得人的脆弱和坚强都超乎自己的想象。多种方式结合起来复习单一的复习方法,易产生消极情绪和疲劳,如果采用交谈复习法、讨论复习法、自我检查复习法多样化的复习方法&#…

localhost 已拒绝连接_【Python】MongoDB数据库的连接和操作

安装Python 要连接 MongoDB 需要 MongoDB 驱动。pip安装:python3 -m pip3 install pymongo创建数据库import pymongo myclient pymongo.MongoClient("mongodb://localhost:27017/")mydb myclient["loaderman"]注意: 在 MongoDB 中&#xff0c…