python数据分析:回归分析(regression analysis)

何为回归分析:

回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的多少,分为一元回归和多元回归分析;按照因变量的多少,可分为简单回归分析和多重回归分析;按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。

在大数据分析中,回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。

回归分析的主要应用场景是进行预测和控制,例如计划制定、KPI制定、目标制定等方面;也可以基于预测的数据与实际数据进行比对和分析,确定事件发展程度并给未来行动提供方向性指导。

常用的回归算法包括线性回归、二项式回归、对数回归、指数回归、核SVM、岭回归、Lasso等。

回归分析相关系数

回归方程一般为y=ax+b的形式,其中a为变量x的回归系数,相关系数为R,判定系数为即R2

  • 回归系数:其绝对值大小能说明自变量与因变量之间的变化比例
  • 判定系数:自变量对因变量的方差解释,为回归平方和与总离差平方和之比值
  • 相关系数:也称解释系数,衡量变量间的相关程度,其本质是线性相关性的判断

ps:

  • 如果有多个自变量的话R2代表的这两个自变量共同影响的结果。假如在线性回归中只有一个自变量,那么判定系数等于相关系数的平方。
  • 回归系数和相关系数大于0,正相关;小于0,负相关。

使用回归模型应该注意自变量的变化,如果新增了自变量,或者训练模型时遗漏了重要变量,这样会导致模型参数有偏差,预测不准确;如果自变量的范围超出了之前训练时的范围,那么原来的模型也不适用。

判定系数经常作为拟合好坏的主要参照指标,当一个新的指标加入模型后发现模型不变,此时无法根据判定系数来反推该指标的重要性程度,例如该指标无效(或有效)。

回归分析算法选择:

  • 最普通的,最基础的,基于为最小二乘法的普通线性回归最合适;适合规律明显,数据结构简单的数据。
  • 如果数据变量少可以通过散点图发现自变量和因变量之间规律,然后确定使用何种回归方法
  • 自变量之间存在较强的共线性,使用对多重共线性处理的算法,如岭回归算法。
  • 如果数据集噪音较多,使用主成分回归
  • 高纬度变量下,使用正则化回归方法效果较好,例如Lasso,Ridge和ElasticNet,或者使用逐步回归从中挑选出影响显著的自变量来建立回归模型。
  • 同时验证多个算法,并想从中选择一个来做做好的你和,使用交叉验证做多个模型效果对比,并通过R-square、Adjusted R-square、AIC、BIC以及各种残差、误差项指标做综合评估。
  • 注重模型的解释性,线性回归、指数回归、对数回归、二项或多项式回归要优于核回归、支持向量回归机等
  • 集成方法,可以使用集成算法对确认的算法做组合使用。

python 代码实现

import numpy as np
import pandas as pd
from sklearn.linear_model import BayesianRidge, LinearRegression, ElasticNet
from sklearn.svm import SVR
from sklearn.ensemble.gradient_boosting import GradientBoostingRegressor   # 集成算法
from sklearn.model_selection import cross_val_score    # 交叉验证
from sklearn.metrics import explained_variance_score, mean_absolute_error, mean_squared_error, r2_score  
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline# 数据导入
df = pd.read_csv('https://raw.githubusercontent.com/ffzs/dataset/master/boston/train.csv', usecols=['lstat', 'indus', 'nox', 'rm', 'medv'])# 可视化数据关系
sns.set(style='whitegrid', context='notebook')   #style控制默认样式,context控制着默认的画幅大小
sns.pairplot(df, size=2)
plt.savefig('x.png')

在这里插入图片描述

# 相关度
corr = df.corr()
# 相关度热力图
sns.heatmap(corr, cmap='GnBu_r', square=True, annot=True)
plt.savefig('xx.png')

在这里插入图片描述

可见自变量lstat与因变量medv强负相关,自变量rm与因变量medv强正相关

# 自变量
X = df[['lstat', 'rm']].values
# 因变量
y = df[df.columns[-1]].values# 设置交叉验证次数
n_folds = 5# 建立贝叶斯岭回归模型
br_model = BayesianRidge()# 普通线性回归
lr_model = LinearRegression()# 弹性网络回归模型
etc_model = ElasticNet()# 支持向量机回归
svr_model = SVR()# 梯度增强回归模型对象
gbr_model = GradientBoostingRegressor()# 不同模型的名称列表
model_names = ['BayesianRidge', 'LinearRegression', 'ElasticNet', 'SVR', 'GBR']
# 不同回归模型
model_dic = [br_model, lr_model, etc_model, svr_model, gbr_model]
# 交叉验证结果
cv_score_list = []
# 各个回归模型预测的y值列表
pre_y_list = []# 读出每个回归模型对象
for model in model_dic:# 将每个回归模型导入交叉检验scores = cross_val_score(model, X, y, cv=n_folds)# 将交叉检验结果存入结果列表cv_score_list.append(scores)# 将回归训练中得到的预测y存入列表pre_y_list.append(model.fit(X, y).predict(X))
### 模型效果指标评估 ###
# 获取样本量,特征数
n_sample, n_feature = X.shape
# 回归评估指标对象列表
model_metrics_name = [explained_variance_score, mean_absolute_error, mean_squared_error, r2_score]
# 回归评估指标列表
model_metrics_list = []
# 循环每个模型的预测结果
for pre_y in pre_y_list:# 临时结果列表tmp_list = []# 循环每个指标对象for mdl in model_metrics_name:# 计算每个回归指标结果tmp_score = mdl(y, pre_y)# 将结果存入临时列表tmp_list.append(tmp_score)# 将结果存入回归评估列表model_metrics_list.append(tmp_list)
df_score = pd.DataFrame(cv_score_list, index=model_names)
df_met = pd.DataFrame(model_metrics_list, index=model_names, columns=['ev', 'mae', 'mse', 'r2'])# 各个交叉验证的结果
df_score

在这里插入图片描述

# 各种评估结果
df_met

在这里插入图片描述

### 可视化 ###
# 创建画布
plt.figure(figsize=(9, 6))
# 颜色列表
color_list = ['r', 'g', 'b', 'y', 'c']
# 循环结果画图
for i, pre_y in enumerate(pre_y_list):# 子网络plt.subplot(2, 3, i+1)# 画出原始值的曲线plt.plot(np.arange(X.shape[0]), y, color='k', label='y')# 画出各个模型的预测线plt.plot(np.arange(X.shape[0]), pre_y, color_list[i], label=model_names[i])plt.title(model_names[i])plt.legend(loc='lower left')
plt.savefig('xxx.png')
plt.show()

在这里插入图片描述

以上可见梯度增强回归(GBR)是所有模型中拟合效果最好的

评估指标解释:

  • explained_variance_score:解释回归模型的方差得分,其值取值范围是[0,1],越接近于1说明自变量越能解释因变量的方差变化,值越小则说明效果越差。
  • mean_absolute_error:平均绝对误差(Mean Absolute Error, MAE),用于评估预测结果和真实数据集的接近程度的程度,其值越小说明拟合效果越好。
  • mean_squared_error:均方差(Mean squared error, MSE),该指标计算的是拟合数据和原始数据对应样本点的误差的平方和的均值,其值越小说明拟合效果越好。
  • r2_score:判定系数,其含义是也是解释回归模型的方差得分,其值取值范围是[0,1],越接近于1说明自变量越能解释因变量的方差变化,值越小则说明效果越差。

参考:
《python数据分析与数据化运营》 宋天龙
https://blog.csdn.net/cymy001/article/details/78556968

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

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

相关文章

你还在手撸SQL?ChatGPT笑晕在厕所

文章目录 你还在手撸SQL?ChatGPT笑晕在厕所一、背景二、面向Chat编程1. 数据库设计2. 建表语句3. 加中文注释4. 数据模拟5. 查询成绩6. 修改课程任课老师7. 删除课程8. 删除一个有关联数据的课程 总结 你还在手撸SQL?ChatGPT笑晕在厕所 一、背景 经典3…

如何使用 OpenAI API ChatGPT,通过自然语言生成 SQL 语句(简易版)

简介 Human Language to SQL Translator 是一个可以通过ChatGPT 可以生成 SQL 语句的网站。 开源地址: https://github.com/whoiskatrin/sql-translator 这里使用 python 对其进行了复现 代码 """自然语言生成 SQL """ import op…

写sql真就有手就行?ChatGPT让sql变得如此简单

前言介绍 随着数据库的应用越来越广泛,不仅仅是开发人员需要操作数据库,在日常的办公、数据分析场景,数据库的操作也变得越来越重要和普及,但是很多人面对sql增删改查的各种sql语法,又打了退堂鼓。近期ChatGPT的流行&…

人工智能中的图灵测试

大家都知道,人工智能是一个交叉性的学科,它涉及到很多的技术,比如机器学习、深度学习、人工神经网络等技术,当然还少不了图灵测试。在人工智能中,图灵测试非常实用,可以说没有图灵测试,我们现在…

【人工智能】图灵测试

图灵测试(The Turing test)由艾伦麦席森图灵发明,指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。 进行多次测试后,如果有…

资讯 | 图灵测试已经无法评估现在的人工智能了!

随着人工智能成为我们技术领域中重要组成部分,每一种新的工具和技术都需要一个基准。目前位置,最广为人知的AI基准测试工具就是图灵测试。 自1950年图灵测试提出来以后,人工智能领域已经取得了长足的发展。但,越来越清楚的是&…

itchat--使用python实现与图灵机器人交互

应用场景 七夕快到了,看着那些情侣在一起腻腻歪歪,整天短消息停不下来,众多苦逼的程序猿或许只能对着电脑了。是不是羡慕嫉妒恨呢!手机另一端怎么没人和自己在一起聊天呢?是不是也想有个人可以秒回自己的消息。没事&a…

面对面的办公室——纪念艾伦•图灵百年诞辰

面对面的办公室——纪念艾伦•图灵百年诞辰 Comments>> 科学松鼠会 发表于 2012-07-07 06:44 | Tags 标签: 原创, 图灵百年诞辰 【图片出处:http://www.cs.swan.ac.uk/~csarnold/】 作者:玑衡 本文节选自作者为纪念艾伦•图灵诞辰一百…

从达特茅斯会议到图灵奖---人工智能学习分享

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。” 生活在信息大爆炸的今天…

【图灵奖得主】Jeffrey D. Ullman 斯坦福大学

【图灵奖得主】Jeffrey D. Ullman,斯坦福大学名誉教授,在线学习平台 Gradiance Corporation 的首席执行官。主要研究兴趣为编译器设计和数据库系统。毕业于哥伦比亚大学,在普林斯顿大学获得计算机科学博士学位。于 1979 年加入斯坦福大学&…

【置顶】图灵近期出版和即将出版的新书

图灵近期重点新书 堪与《重构》媲美的软件实战图书Amazon 5星评价里程碑性著作 中文书名: 修改代码的艺术 英文书名: Working Effectively with Legacy Code 原书作者: Michael Feathers 译者 : 刘未鹏 原书出版公司: Prentic…

(转)图灵测试与人工智能

什么是图灵测试? 在一篇1950年发表的著名论文《Computing Machinery and Intelligence》中,数学家阿兰图灵详细讨论了“机器能否拥有智能?”的问题。有趣的是,作为计算机科学与人工智能领域共同的先驱,图灵成功定义了什…

73年后,人工智能通过了图灵测试

73年后,人工智能通过了图灵测试! 意味着进化加速… 人工智能咋起源? 又会走向何方? 趣讲大白话:知道未来有多远,就要知道过去有多久 【趣讲信息科技112期】 **************************** 1950年&#xff1…

计算机首次通过图灵测试

今天图灵测试 2014 的举办方英国雷丁大学发布新闻稿,宣称俄罗斯人弗拉基米尔维西罗夫(Vladimir Veselov)创立的人工智能软件尤金•古斯特曼(Eugene Goostman)通过了图灵测试。如果这一结论获得确认,那么这将…

重磅!图灵奖,公布!

来源:青塔 3月22日,现年76岁的以太网发明者、3Com公司创始人鲍勃梅特卡夫(Bob Metcalfe)荣获2022年图灵奖,这一计算机科学的最高荣誉,表彰他为引领大众进入超级连接时代所做的贡献。 鲍勃梅特卡夫发明的以太…

Hinton等6位图灵奖得主、百余位顶级学者邀你加入群聊,共话人工智能下一个十年...

Geoffrey Hinton等6位图灵奖得主亲临,百余位顶级学者邀请你加入群聊「2020北京智源大会」,深入系统探讨「人工智能的下一个十年」。 自2009年深度学习崛起以来,第三波人工智能浪潮席卷全球,推动了新一波技术革命。 在这波澜壮阔的…

面对面的办公室——纪念艾伦•图灵百年诞辰 1912.6.23-2012.6.23

一、左边的办公室 冯诺伊曼教授每年换一部新凯迪拉克。早上十点,他把爱车停在帕尔玛物理实验室门口,神采奕奕地走进隔壁数学系的办公室。那时候普林斯顿高等研究院才刚成立,和数学系挤在一幢叫作Fine Hall的楼—— “还不错的楼”。冯诺伊曼教…

科普两个著名人工智能思想实验:图灵测试和中文房间

导读:人工智能的字典定义是机器模仿人类智能行为的能力。那么如何定义智能? 作者:道格罗斯(Doug Rose) 来源:大数据DT(ID:hzdashuju) 01 图灵测试 艾伦图灵是一位英国计算…

chatgpt赋能python:Python如何找出超链接的Xpath

Python如何找出超链接的Xpath 1. 什么是Xpath? Xpath是XML Path Language的缩写,意为XML路径语言,是一种用来定位XML文档中节点的语言。Xpath通过路径表达式来选取XML文档中的节点或者节点集。在Python中,使用lxml库可以解析XML…

弘玑Cyclone与RPA中国联合主办「第三届中国RPA+AI开发者大赛」

近日,弘玑Cyclone与RPA中国达成合作,双方将以联合主办「第三届中国RPAAI开发者大赛」的形式,共同推动RPA与AI技术融合运用的发展和普及,为开发者们创造一个更加开放包容、充满活力的行业新生态。 在RPA与AI技术的融合发展上&#…