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脚本
Apr 05 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
使用SAE部署Python运行环境的教程
May 05 Python
举例详解Python中循环语句的嵌套使用
May 14 Python
Python中用于返回绝对值的abs()方法
May 14 Python
在Django中限制已登录用户的访问的方法
Jul 23 Python
对Python3中的input函数详解
Apr 22 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
关于Python中的向量相加和numpy中的向量相加效率对比
Aug 26 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 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
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
php使用curl模拟登录后采集页面的例子
2013/11/04 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP7 新增功能
2021/03/09 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
Javascript 篱式条件判断
2008/08/22 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
python中模块查找的原理与方法详解
2017/08/11 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python中有函数重载吗
2020/05/28 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
使用Python下载抖音各大V视频的思路详解
2021/02/06 Python
使用CSS3编写灰阶滤镜来制作黑白照片效果的方法
2016/05/09 HTML / CSS
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
印度尼西亚最好的小工具在线商店:Erafone.com
2019/03/26 全球购物
中专自我鉴定范文
2013/10/16 职场文书
小学信息技术教学反思
2014/02/10 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
实习报告评语
2014/04/26 职场文书
2014年销售员工作总结
2014/12/01 职场文书
教育教学读书笔记
2015/07/02 职场文书
结婚主持人致辞
2015/07/28 职场文书
六五普法学习心得体会
2016/01/21 职场文书
Django Paginator分页器的使用示例
2021/06/23 Python