使用线性回归对身高体重数据集分析
初识线性回归
- 一、数学原理分析
- 线性回归
- 最小二乘法
- 二、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
使用线性回归对身高体重数据集分析相关推荐
- 使用Excel以及jupyter编程构建身高体重数据集的线性回归方程
目录 用excel中数据分析功能做线性回归练习 用jupyter编程(不借助第三方库),用最小二乘法 用jupyter编程,借助skleran 总结 用excel中数据分析功能做线性回归练习 1.打开 ...
- 使用Excel和jupyter拟合身高体重数据集线性回归模型
文章目录 一.使用Excel拟合线性回归模型 1.20组数据拟合 2.200组数据拟合 3.2000组数据拟合 二.用jupyter编程(不借助第三方库),用最小二乘法 3.20组数据拟合 2.200 ...
- 基于身高与体重数据集与Auto数据集分别进行线性回归和Lasso回归(代码逐行讲解,超细节)
身高体重 #还是先导入要用的包,没下载的要先去下载依赖包 import pandas as pd import statsmodels.api as sm from plotly.offline im ...
- 如何利用excel和jupyter 编程,对身高体重的数据做线性回归
文章目录 前言 一.用excel 做线性回归 (一)Excel 数据分析选项设置 (二)线性回归分析 二.用jupyter编程实现 (一)借助skleran (二)不借助第三方库,用最小二乘法 总结 ...
- 机器学习-线性回归-身高体重关系预测
基于上一篇机器学习-根据身高体重画图练习, 本篇采用回归模型,拟合身高和体重的数据,并且可以根据给定的身高预测体重. # 引用sklearn库,其中包含线性回归模块 from sklearn impo ...
- 运用最小二乘法和sklearn库分析身高体重数据
文章目录 一.使用Excel分析身高体重 二.用Jupyter Notebook编程使用最小二乘法分析身高体重 三.运用Sklearn库,导入数据模拟. 四.参考 一.使用Excel分析身高体重 (这 ...
- 小学身高体重测试软件,学生身高、体重检测汇总分析
2018年秋季,我校对全校993名学生进行体质健康检查.卫生室教师检测视力:体育组教师检测身高.体重.肺活量.镇中心卫生医院负责检查血压.龋齿.内科等16项指标,共计20项内容. 本文针对学生的身高. ...
- 新手奶爸,分享一款记录儿童身高体重的APP,并分析其中所用到的技术。
所用的技术: 1.本地数据存储(SharedPreferences + SQLite数据库) 2.databinding组件库应用. 3.RecyclerView加载列表类数据. 应用简介: 本应用是 ...
- 送书 | 使用决策树对身高体重数据进行分类
决策树(Decision Tree)是一个非参数的监督式学习方法,决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类 ...
最新文章
- 接受者操作特征曲线ROC
- python教程:关于 [lambda x: x*i for i in range(4)] 理解
- laravel 先排序后分组怎么写_插入排序的故事
- 使用Nexus私服代理其他maven仓库(jitpack、jcenter)
- 烂泥:智能DNS使用与配置
- 为什么要自学python_为什么那么多自学Python的后来都放弃了,总结起来就这些原因...
- 第一小节 初识面向对象
- 解决ssh无密码登录不成功的问题
- struts2 ajax上传文件 file空_WordPress插件漏洞分析:WPDiscuz任意文件上传漏洞
- seL4操作系统基础01:seL4 whitepaper概览
- 基础总结篇之四:Service完全解析
- windows server 2008r2 如何隐藏iis版本号_如何拥有自己炫酷的个人博客
- linux的boot可用fat格式吗,u-boot中的FAT命令
- RabbitMQ 菜鸟教程
- 设计模式系列2-设计模式分类及23种设计模式中英文名称对照
- python比对excel表数据中的差异_Python比对EXCEL数据
- GBK UTF-8 ASCLL url编码集合
- VS好用系列之选择性粘贴
- matlab 康托尔集,【德国数学康托尔构造的这个图形叫分形,称做康托尔集.从长度为1的...-康托尔-谭榷刨同学...
- 爪哇国新游记之八----读写文件及数组排序
热门文章
- 最新数据处理 之 最新DSM(AW3D30)数据批量拼接--文末附数据获取方式
- APP无法验证服务器什么意思,无法验证app需要互联网连接以认证
- Intent之Action详解
- 给最近要离职的朋友一些建议 No.190
- notepad++安装autosave插件来自动保存
- 新手小白做短视频自媒体,入门流程分享,让你少走很多弯路
- java商务英语_商务英语中如何表达“也许”
- 极客日报:为什么QQ比微信更受年轻人欢迎?iPhone13出现红绿双色屏;Spring Boot 2.6.1 发布
- java设置窗体焦点_JAVA之关于swing窗体设置默认焦点-Go语言中文社区
- 分享万能java字符串编码转换工具类