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 相关文章推荐
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
pip命令无法使用的解决方法
Jun 12 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python实现n个数中选出m个数的方法
Nov 13 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
局域网内python socket实现windows与linux间的消息传送
Apr 19 Python
如何获取Python简单for循环索引
Nov 21 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
分享Python异步爬取知乎热榜
Apr 12 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和ACCESS写聊天室(六)
2006/10/09 PHP
Php获取金书网的书名的实现代码
2010/06/11 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
基于jQuery创建鼠标悬停效果的方法
2015/03/07 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
jQuery UI Draggable + Sortable 结合使用(实例讲解)
2017/09/07 jQuery
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
原生javascript实现文件异步上传的实例讲解
2017/10/26 Javascript
Vue组件中slot的用法
2018/01/30 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
小程序实现锚点滑动效果
2019/09/23 Javascript
vue实现表单录入小案例
2019/09/27 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
教大家使用Python SqlAlchemy
2016/02/12 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
新年主持词
2014/03/27 职场文书
文明寝室标语
2014/06/13 职场文书
交通事故代理词范文
2015/05/23 职场文书