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函数参数*args**kwargs用法实例
Dec 04 Python
Python程序设计入门(5)类的使用简介
Jun 16 Python
Python自定义scrapy中间模块避免重复采集的方法
Apr 07 Python
python利用lxml读写xml格式的文件
Aug 10 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
基于python 处理中文路径的终极解决方法
Apr 12 Python
python批量修改文件编码格式的方法
May 31 Python
Sanic框架流式传输操作示例
Jul 18 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
python3中确保枚举值代码分析
Dec 02 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
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
2011/08/18 PHP
php中实现简单的ACL 完结篇
2011/09/07 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
smarty表格换行实例
2014/12/15 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
Yii2语言国际化自动配置详解
2018/08/22 PHP
自动更新作用
2006/10/08 Javascript
javascript String 对象
2008/04/25 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
sublime text 3配置使用python操作方法
2017/06/11 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
Python数据结构之栈、队列及二叉树定义与用法浅析
2018/12/27 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
python批量创建指定名称的文件夹
2019/03/21 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
仓库管理专业个人的自我评价
2013/12/30 职场文书
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
2021/05/27 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers