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 相关文章推荐
在Django的URLconf中使用多个视图前缀的方法
Jul 18 Python
Python中矩阵库Numpy基本操作详解
Nov 21 Python
python的unittest测试类代码实例
Dec 07 Python
使用python脚本实现查询火车票工具
Jul 19 Python
Python绘制的二项分布概率图示例
Aug 22 Python
python3+requests接口自动化session操作方法
Oct 13 Python
Python 从一个文件中调用另一个文件的类方法
Jan 10 Python
python打包exe开机自动启动的实例(windows)
Jun 28 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
python如何删除文件、目录
Jun 23 Python
python实现扫雷游戏的示例
Oct 20 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 XML操作类DOMDocument
2009/12/16 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
JS实现样式清新的横排下拉菜单效果
2015/10/09 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
Python对象类型及其运算方法(详解)
2017/07/05 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
详解Python_shutil模块
2019/03/15 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
基于python实现从尾到头打印链表
2019/11/02 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
关于读书的演讲稿
2014/05/07 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
小学生放飞梦想演讲稿
2014/08/26 职场文书
2014年行政执法工作总结
2014/12/11 职场文书
后进生评语大全
2015/01/04 职场文书
开票证明
2015/06/23 职场文书
网吧员工管理制度
2015/08/05 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA