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 字符串split的用法分享
Mar 23 Python
简要讲解Python编程中线程的创建与锁的使用
Feb 28 Python
用Python写一个无界面的2048小游戏
May 24 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
python实现剪切功能
Jan 23 Python
Python实现查找字符串数组最长公共前缀示例
Mar 27 Python
python图形工具turtle绘制国际象棋棋盘
May 23 Python
pandas分区间,算频率的实例
Jul 04 Python
Python模块的制作方法实例分析
Dec 21 Python
Pandas的数据过滤实现
Jan 15 Python
教你怎么用Python生成九宫格照片
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
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
2010/07/04 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
javascript实现的简单计时器
2015/07/19 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
JSON与XML的区别对比及案例应用
2016/11/11 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
vee-validate vue 2.0自定义表单验证的实例
2018/08/28 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
Vue中使用Echarts仪表盘展示实时数据的实现
2020/11/01 Javascript
在Python中使用dict和set方法的教程
2015/04/27 Python
Python字符串逐字符或逐词反转方法
2015/05/21 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
python opencv把一张图片嵌入(叠加)到另一张图片上的实现代码
2020/06/11 Python
python excel和yaml文件的读取封装
2021/01/12 Python
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
意大利运动服减价商店:ScontoSport
2020/03/10 全球购物
2014婚礼司仪主持词
2014/03/14 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
志愿者工作心得体会
2016/01/15 职场文书
漫画「请问您今天要来点兔子吗?」最新杂志彩页公开
2022/03/24 日漫
MySQL实现配置主从复制项目实践
2022/03/31 MySQL