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实现list反转实例汇总
Nov 11 Python
Python计算字符宽度的方法
Jun 14 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
Apr 29 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
python flask中动态URL规则详解
Nov 22 Python
TensorFlow2.0:张量的合并与分割实例
Jan 19 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
Python中的Cookie模块如何使用
Jun 04 Python
keras读取h5文件load_weights、load代码操作
Jun 12 Python
Python requests接口测试实现代码
Sep 08 Python
使用Django实现商城验证码模块的方法
Jun 01 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
让mayfish支持mysqli数据库驱动的实现方法
2010/05/22 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
JS交换变量的方法
2015/01/21 Javascript
js实现StringBuffer的简单实例
2016/09/02 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
Vue.js原理分析之nextTick实现详解
2020/09/07 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
python实现猜拳游戏项目
2020/11/30 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
演讲稿开场白
2014/01/13 职场文书
目标管理责任书
2014/04/15 职场文书
任命书格式
2014/06/05 职场文书
代理人委托书
2014/08/01 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
学习保证书
2015/01/17 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python