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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
python基础教程之元组操作使用详解
Mar 25 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
快速了解python leveldb
Jan 18 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
Pandas中Series和DataFrame的索引实现
Jun 27 Python
Python编译为二进制so可执行文件实例
Dec 23 Python
Selenium自动化测试工具使用方法汇总
Jun 12 Python
python交互模式基础知识点学习
Jun 18 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
解决python3安装pandas出错的问题
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中字符串与多进制转换函数的实例代码
2016/11/03 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
accesskey 提交
2006/06/26 Javascript
jquery 图片上传按比例预览插件集合
2011/05/28 Javascript
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
2015/05/14 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
Vuex简单入门
2017/04/19 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
详解Ubuntu安装angular-cli遇到的坑
2018/09/08 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
python网络编程学习笔记(四):域名系统
2014/06/09 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
使用python进行广告点击率的预测的实现
2019/07/04 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
以特惠价提供在线奢侈品购物:FRMODA.com
2018/01/25 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
建筑工程专业毕业生自荐信
2013/10/19 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
村干部培训方案
2014/05/02 职场文书
团员自我评价范文
2015/03/10 职场文书