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 linecache.getline()读取文件中特定一行的脚本
Sep 06 Python
把大数据数字口语化(python与js)两种实现
Feb 21 Python
Python标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python函数式编程指南(三):迭代器详解
Jun 24 Python
numpy中loadtxt 的用法详解
Aug 03 Python
python使用celery实现异步任务执行的例子
Aug 28 Python
基于python的selenium两种文件上传操作实现详解
Sep 19 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
Python参数传递机制传值和传引用原理详解
May 22 Python
使用keras内置的模型进行图片预测实例
Jun 17 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
浅析Python中的随机采样和概率分布
Dec 06 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 smarty的预保留变量总结
2008/12/04 PHP
php生成图片验证码的实例讲解
2015/08/03 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
详解js运算符单竖杠“|”与“||”的用法和作用介绍
2016/11/04 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
Nodejs之http的表单提交
2017/07/07 NodeJs
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
nodeJs爬虫的技术点总结
2018/05/13 NodeJs
微信小程序提交form操作示例
2018/12/30 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
vue+elementUI动态增加表单项并添加验证的代码详解
2020/12/17 Vue.js
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python函数的周期性执行实现方法
2016/08/13 Python
梯度下降法介绍及利用Python实现的方法示例
2017/07/12 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Python 下载及安装详细步骤
2019/11/04 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
小学音乐教学反思
2014/02/05 职场文书
北体毕业生求职信
2014/02/28 职场文书
师德师风自我评价范文
2014/09/11 职场文书
医生个人年终总结
2015/02/28 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang
Mysql中mvcc各场景理解应用
2022/08/05 MySQL
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers