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爬虫实现教程转换成 PDF 电子书
Feb 19 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
对Python3中的input函数详解
Apr 22 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
详解python中的index函数用法
Aug 06 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
python groupby 函数 as_index详解
Dec 16 Python
信号生成及DFT的python实现方式
Feb 25 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
pytorch中[..., 0]的用法说明
May 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制作静态网站的模板框架(二)
2006/10/09 PHP
PHP添加MySQL数据记录代码
2008/06/07 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php实现的双色球算法示例
2017/06/20 PHP
Laravel获取所有的数据库表及结构的方法
2019/10/10 PHP
js不是基础的基础
2006/12/24 Javascript
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
推荐一个自己用的封装好的javascript插件
2015/01/29 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
一个简单不报错的summernote 图片上传案例
2016/07/11 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
vue脚手架搭建项目的兼容性配置详解
2018/07/17 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
Python实现二叉树的最小深度的两种方法
2019/09/30 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
python中append函数用法讲解
2020/12/11 Python
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
铁路个人事迹材料
2014/01/30 职场文书
汽车队司机先进事迹材料
2014/02/01 职场文书
保险专业自荐信范文
2014/02/20 职场文书
医药销售自我评价200字
2014/09/11 职场文书
单位委托书怎么写
2014/09/21 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2015年消防工作总结
2015/04/24 职场文书
毕业论文答辩演讲稿
2015/06/23 职场文书
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang