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 相关文章推荐
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
一步步教你用Python实现2048小游戏
Jan 19 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
python机器人运动范围问题的解答
Apr 29 Python
python实现随机漫步方法和原理
Jun 10 Python
Python适配器模式代码实现解析
Aug 02 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
Python守护进程实现过程详解
Feb 10 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
python numpy库np.percentile用法说明
Jun 08 Python
解决Python字典查找报Keyerror的问题
May 26 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
php实现webservice实例
2014/11/06 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
Bootstrap弹出框(modal)垂直居中的问题及解决方案详解
2016/06/12 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
实现python版本的按任意键继续/退出
2016/09/26 Python
详解Python3中字符串中的数字提取方法
2017/01/14 Python
浅谈Python peewee 使用经验
2017/10/20 Python
Python 如何提高元组的可读性
2019/08/26 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
C语言编程题
2015/03/09 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
施工资料员的岗位职责
2013/12/22 职场文书
中文师范生自荐信
2014/01/30 职场文书
薪酬专员岗位职责
2014/02/18 职场文书
信息管理应届生求职信
2014/03/07 职场文书
企业安全生产承诺书
2014/05/22 职场文书
美化环境标语
2014/06/20 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
电影地道战观后感
2015/06/04 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL
python_tkinter事件类型详情
2022/03/20 Python