Python 线性回归分析以及评价指标详解


Posted in Python onApril 02, 2020

废话不多说,直接上代码吧!

"""
# 利用 diabetes数据集来学习线性回归 
# diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况。 
# 数据集中的特征值总共10项, 如下: 
 # 年龄 
 # 性别 
 #体质指数 
 #血压 
 #s1,s2,s3,s4,s4,s6 (六种血清的化验数据) 
 #但请注意,以上的数据是经过特殊处理, 10个数据中的每个都做了均值中心化处理,然后又用标准差乘以个体数量调整了数值范围。
 #验证就会发现任何一列的所有数值平方和为1. 
"""
 
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
 
# Load the diabetes dataset
diabetes = datasets.load_diabetes() 
 
# Use only one feature 
# 增加一个维度,得到一个体质指数数组[[1],[2],...[442]]
diabetes_X = diabetes.data[:, np.newaxis,2]
print(diabetes_X)
 
# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
 
# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
 
# Create linear regression object
regr = linear_model.LinearRegression()
 
# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)
 
# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)
 
# The coefficients 
# 查看相关系数 
print('Coefficients: \n', regr.coef_)
 
 
# The mean squared error 
# 均方差
# 查看残差平方的均值(mean square error,MSE) 
print("Mean squared error: %.2f"
  % mean_squared_error(diabetes_y_test, diabetes_y_pred))
 
 
# Explained variance score: 1 is perfect prediction 
# R2 决定系数(拟合优度)
# 模型越好:r2→1
# 模型越差:r2→0
print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))
 
 
# Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
 
plt.xticks(())
plt.yticks(())
 
plt.show()

对于回归模型效果的判断指标经过了几个过程,从SSE到R-square再到Ajusted R-square, 是一个完善的过程:

SSE(误差平方和):The sum of squares due to error

R-square(决定系数):Coefficient of determination

Adjusted R-square:Degree-of-freedom adjusted coefficient of determination

下面我对以上几个名词进行详细的解释下,相信能给大家带来一定的帮助!!

一、SSE(误差平方和)

计算公式如下:

Python 线性回归分析以及评价指标详解

同样的数据集的情况下,SSE越小,误差越小,模型效果越好

缺点:

SSE数值大小本身没有意义,随着样本增加,SSE必然增加,也就是说,不同的数据集的情况下,SSE比较没有意义

二、R-square(决定系数)

Python 线性回归分析以及评价指标详解

数学理解: 分母理解为原始数据的离散程度,分子为预测数据和原始数据的误差,二者相除可以消除原始数据离散程度的影响

其实“决定系数”是通过数据的变化来表征一个拟合的好坏。

理论上取值范围(-∞,1], 正常取值范围为[0 1] ------实际操作中通常会选择拟合较好的曲线计算R²,因此很少出现-∞

越接近1,表明方程的变量对y的解释能力越强,这个模型对数据拟合的也较好

越接近0,表明模型拟合的越差

经验值:>0.4, 拟合效果好

缺点:

数据集的样本越大,R²越大,因此,不同数据集的模型结果比较会有一定的误差

三、Adjusted R-Square (校正决定系数)

Python 线性回归分析以及评价指标详解

n为样本数量,p为特征数量

消除了样本数量和特征数量的影响

以上这篇Python 线性回归分析以及评价指标详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python urlopen 使用小示例
Sep 06 Python
从零学Python之hello world
May 21 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
Python Sql数据库增删改查操作简单封装
Apr 18 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python 解决中文写入Excel时抛异常的问题
May 03 Python
Python如何实现转换URL详解
Jul 02 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
Dec 10 Python
Django重设Admin密码过程解析
Feb 10 Python
Django REST framwork的权限验证实例
Apr 02 #Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
Apr 02 #Python
在 Pycharm 安装使用black的方法详解
Apr 02 #Python
Python Numpy中数据的常用保存与读取方法
Apr 01 #Python
Python PyQt5整理介绍
Apr 01 #Python
django之导入并执行自定义的函数模块图解
Apr 01 #Python
在脚本中单独使用django的ORM模型详解
Apr 01 #Python
You might like
3种平台下安装php4经验点滴
2006/10/09 PHP
无需重新编译php加入ftp扩展的解决方法
2013/02/07 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
JavaScript之自定义类型
2012/05/04 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
jquery设置表单元素为不可用的简单代码
2016/07/04 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
Vue中的数据监听和数据交互案例解析
2017/07/12 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
python使用Pycharm创建一个Django项目
2018/03/05 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python中如何写类
2020/06/29 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
梅花魂教学反思
2014/04/25 职场文书
学术会议邀请函
2015/01/30 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android