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求斐波那契数列示例分享
Feb 14 Python
python time模块用法实例详解
Sep 11 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
flask + pymysql操作Mysql数据库的实例
Nov 13 Python
python 编码规范整理
May 05 Python
Sanic框架安装与简单入门示例
Jul 16 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
对django 模型 unique together的示例讲解
Aug 06 Python
Django 请求Request的具体使用方法
Nov 11 Python
Python底层封装实现方法详解
Jan 22 Python
Python实现单例模式的5种方法
Jun 15 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
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
手机平板等移动端适配跳转URL的js代码
2014/01/25 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
2015/10/21 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
基于JavaScript实现五子棋游戏
2020/08/26 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
性能优化篇之Webpack构建速度优化的建议
2019/04/03 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python解析xml文件操作实例
2014/10/05 Python
python实现搜索本地文件信息写入文件的方法
2016/02/22 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
利用Anaconda简单安装scrapy框架的方法
2018/06/13 Python
python3使用SMTP发送简单文本邮件
2018/06/19 Python
Flask框架信号用法实例分析
2018/07/24 Python
Python timeit模块的使用实践
2020/01/13 Python
Python中的全局变量如何理解
2020/06/04 Python
Django form表单与请求的生命周期步骤详解
2020/06/07 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
圣诞节红领巾广播稿
2014/02/03 职场文书
学校工会工作总结2015
2015/05/19 职场文书
创业计划书之冷饮店
2019/09/27 职场文书
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python