初识线性回归

  • 一、数学原理分析
    • 线性回归
    • 最小二乘法
  • 二、EXCEL简单处理
    • 20组数据
    • 200组数据
    • 2000组数据
    • 20000组数据
  • 三、python语言设计最小二乘法计算(使用anaconda的jupyterlab)
    • 使用工具介绍
    • 不调用包的python计算
    • 调用包的python计算
  • 四、参考材料

一、数学原理分析

线性回归

当两个变量存在准确、严格的直线关系时,可以用Y=a+bX,表示两者的函数关系。
其中X 为自变量(independent variable);Y是因变量( dependent variable )。
但在实际生活当中,由于其它因素的干扰,许多双变量之间的关系并不是严格的函数关系,不能用函数方程来准确反映,为了区别于两变量间的函数方程,我们称这种关系为回归关系,用直线方程来表示这种关系称为回归直线或线性回归。

最小二乘法

计算原理:最小二乘法,即保证各实测点到回归直线的纵向距离的平方和最小,并使计算出的回归方程最能代表实测数据所反映出的直线趋势。
相关公式:




Y的总变异分解:

R的平方取值在0到1之间,反映了回归贡献的相对程度。

二、EXCEL简单处理

处理的文件地址,可自行下载。

20组数据

使用excel绘制的图片:

200组数据

使用excel绘制的图片:

2000组数据

使用excel绘制的图片:

20000组数据

使用excel绘制的图片:

三、python语言设计最小二乘法计算(使用anaconda的jupyterlab)

使用工具介绍

使用了Anaconda里的一个工具jupyterlab,可在Anaconda官网自行下载。
打开anaconda里的jupyterlab,将会以网页方式打开:

点击python创建一个文件:

不调用包的python计算

#不掉包实现一元线性回归
import pandas as pd
def read_file(raw):#根据行数来读取文件df = pd.read_excel('..\\source\\weights_heights(身高-体重数据集).xls',sheet_name ='weights_heights')height=df.iloc[0:raw,1:2].valuesweight=df.iloc[0:raw,2:3].valuesreturn height,weightdef array_to_list(array):#将数组转化为列表array=array.tolist()for i in range(0,len(array)):array[i]=array[i][0]return arraydef unary_linear_regression(x,y):#一元线性回归,x,y都是列表类型xi_multiply_yi=0xi_square=0;x_average=0;y_average=0;f=xfor i in range(0,len(x)):xi_multiply_yi+=x[i]*y[i]x_average+=x[i]y_average+=y[i]xi_square+=x[i]*x[i]x_average=x_average/len(x)y_average=y_average/len(x)b=(xi_multiply_yi-len(x)*x_average*y_average)/(xi_square-len(x)*x_average*x_average)a=y_average-b*x_averagefor i in range(0,len(x)):f[i]=b*x[i]+aR_square=get_coefficient_of_determination(f,y,y_average)print('R_square='+str(R_square)+'\n'+'a='+str(a)+'  b='+str(b))def get_coefficient_of_determination(f,y,y_average):#传输计算出的值f和x,y的真实值还有平均值y_average,获取决定系数,也就是R²res=0tot=0for i in range(0,len(y)):res+=(y[i]-f[i])*(y[i]-f[i])tot+=(y[i]-y_average)*(y[i]-y_average)R_square=1-res/tot return R_squareraw=[20,200,2000,20000]
for i in raw:print('数据组数为'+str(i)+":")height,weight=read_file(i)height=array_to_list(height)weight=array_to_list(weight)unary_linear_regression(height,weight)

点击运行:

得到结果(可与excel的进行对比):

调用包的python计算

与上面过程一样,只是代码发生了变化,调用了pandas的sklearn方法,会使代码简单一点,不用自己敲写算法:

#调包实现一元线性回归
from sklearn import linear_model
from sklearn.metrics import r2_score
import numpy as np
import pandas as pd
def read_file(raw):#根据行数来读取文件df = pd.read_excel('D:\weights_heights(身高-体重数据集).xls',sheet_name ='weights_heights')height=df.iloc[0:raw,1:2].valuesweight=df.iloc[0:raw,2:3].valuesreturn height,weightraw=[20,200,2000,20000]#要读取的行数
for i in raw:print('数据组数为'+str(i)+":")height,weight=read_file(i)weight_predict=weightlm = linear_model.LinearRegression()lm.fit(height,weight)b=lm.coef_a=lm.intercept_weight_predict=lm.predict(height)#计算有方程推测出来的值R_square=r2_score(weight,weight_predict)#计算方差print('b='+str(b[0][0])+' a='+str(a[0]))print('R_square='+str(R_square))

得到结果:

四、参考材料

weights_heights(身高-体重数据集).xls
简单线性回归 (统计学角度).ppt

使用线性回归对身高体重数据集分析相关推荐

  1. 使用Excel以及jupyter编程构建身高体重数据集的线性回归方程

    目录 用excel中数据分析功能做线性回归练习 用jupyter编程(不借助第三方库),用最小二乘法 用jupyter编程,借助skleran 总结 用excel中数据分析功能做线性回归练习 1.打开 ...

  2. 使用Excel和jupyter拟合身高体重数据集线性回归模型

    文章目录 一.使用Excel拟合线性回归模型 1.20组数据拟合 2.200组数据拟合 3.2000组数据拟合 二.用jupyter编程(不借助第三方库),用最小二乘法 3.20组数据拟合 2.200 ...

  3. 基于身高与体重数据集与Auto数据集分别进行线性回归和Lasso回归(代码逐行讲解,超细节)

    身高体重 #还是先导入要用的包,没下载的要先去下载依赖包 import pandas as pd import statsmodels.api as sm from plotly.offline im ...

  4. 如何利用excel和jupyter 编程,对身高体重的数据做线性回归

    文章目录 前言 一.用excel 做线性回归 (一)Excel 数据分析选项设置 (二)线性回归分析 二.用jupyter编程实现 (一)借助skleran (二)不借助第三方库,用最小二乘法 总结 ...

  5. 机器学习-线性回归-身高体重关系预测

    基于上一篇机器学习-根据身高体重画图练习, 本篇采用回归模型,拟合身高和体重的数据,并且可以根据给定的身高预测体重. # 引用sklearn库,其中包含线性回归模块 from sklearn impo ...

  6. 运用最小二乘法和sklearn库分析身高体重数据

    文章目录 一.使用Excel分析身高体重 二.用Jupyter Notebook编程使用最小二乘法分析身高体重 三.运用Sklearn库,导入数据模拟. 四.参考 一.使用Excel分析身高体重 (这 ...

  7. 小学身高体重测试软件,学生身高、体重检测汇总分析

    2018年秋季,我校对全校993名学生进行体质健康检查.卫生室教师检测视力:体育组教师检测身高.体重.肺活量.镇中心卫生医院负责检查血压.龋齿.内科等16项指标,共计20项内容. 本文针对学生的身高. ...

  8. 新手奶爸,分享一款记录儿童身高体重的APP,并分析其中所用到的技术。

    所用的技术: 1.本地数据存储(SharedPreferences + SQLite数据库) 2.databinding组件库应用. 3.RecyclerView加载列表类数据. 应用简介: 本应用是 ...

  9. 送书 | 使用决策树对身高体重数据进行分类

    决策树(Decision Tree)是一个非参数的监督式学习方法,决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类 ...

最新文章

  1. 接受者操作特征曲线ROC
  2. python教程:关于 [lambda x: x*i for i in range(4)] 理解
  3. laravel 先排序后分组怎么写_插入排序的故事
  4. 使用Nexus私服代理其他maven仓库(jitpack、jcenter)
  5. 烂泥:智能DNS使用与配置
  6. 为什么要自学python_为什么那么多自学Python的后来都放弃了,总结起来就这些原因...
  7. 第一小节 初识面向对象
  8. 解决ssh无密码登录不成功的问题
  9. struts2 ajax上传文件 file空_WordPress插件漏洞分析:WPDiscuz任意文件上传漏洞
  10. seL4操作系统基础01:seL4 whitepaper概览
  11. 基础总结篇之四:Service完全解析
  12. windows server 2008r2 如何隐藏iis版本号_如何拥有自己炫酷的个人博客
  13. linux的boot可用fat格式吗,u-boot中的FAT命令
  14. RabbitMQ 菜鸟教程
  15. 设计模式系列2-设计模式分类及23种设计模式中英文名称对照
  16. python比对excel表数据中的差异_Python比对EXCEL数据
  17. GBK UTF-8 ASCLL url编码集合
  18. VS好用系列之选择性粘贴
  19. matlab 康托尔集,【德国数学康托尔构造的这个图形叫分形,称做康托尔集.从长度为1的...-康托尔-谭榷刨同学...
  20. 爪哇国新游记之八----读写文件及数组排序

热门文章

  1. 最新数据处理 之 最新DSM(AW3D30)数据批量拼接--文末附数据获取方式
  2. APP无法验证服务器什么意思,无法验证app需要互联网连接以认证
  3. Intent之Action详解
  4. 给最近要离职的朋友一些建议 No.190
  5. notepad++安装autosave插件来自动保存
  6. 新手小白做短视频自媒体,入门流程分享,让你少走很多弯路
  7. java商务英语_商务英语中如何表达“也许”
  8. 极客日报:为什么QQ比微信更受年轻人欢迎?iPhone13出现红绿双色屏;Spring Boot 2.6.1 发布
  9. java设置窗体焦点_JAVA之关于swing窗体设置默认焦点-Go语言中文社区
  10. 分享万能java字符串编码转换工具类