用Excel+Anoconda-jupyter做线性回归

分别使用Excel,jupyter,jupyter+sklearn做线性回归练习

    • 一、用Excel中数据分析功能做线性回归
      • 1.准备工作:配置Excel
      • 2.分别取20、200、2000、20000组数据来做线性回归
    • 二、用jupyter编程(不借助第三方库)来做线性回归
      • 1.打开jupyter步骤
      • 2.代码
    • 三、用jupyter编程(借助第三方库sklearn)来做线性回归
    • 小小的总结
    • 参考文献

一、用Excel中数据分析功能做线性回归

1.准备工作:配置Excel

(1)打开文件后,点击文件——选项——加载项——转到——勾选——确定
请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

(2)步骤
点击 数据分析——回归——确定
请添加图片描述

请添加图片描述

2.分别取20、200、2000、20000组数据来做线性回归

(1)20组数据:
请添加图片描述

请添加图片描述

(2)200组数据:
请添加图片描述

请添加图片描述

(3)2000组数据:
请添加图片描述

请添加图片描述

(4)20000组数据:
请添加图片描述

请添加图片描述

二、用jupyter编程(不借助第三方库)来做线性回归

1.打开jupyter步骤

请添加图片描述

选择红框中链接在网页中打开:
请添加图片描述

新建:
请添加图片描述

2.代码

#不掉包实现一元线性回归
import pandas as pd
import matplotlib.pyplot as plt
def read_file(raw):#根据行数来读取文件df = pd.read_excel('D:\BaiduNetdiskDownload\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))print(f'线性回归方程为:y={b}x {a}\n')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)

结果:
请添加图片描述

三、用jupyter编程(借助第三方库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:\BaiduNetdiskDownload\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))print('线性回归方程为:y='+str(b[0][0])+'x '+str(a[0])+'\n')

结果:请添加图片描述

小小的总结

Excel的数据分析是一个很方便的工具,使用起来也很方便快捷;相对来说,用jupyter编程,对于我就比较难上手了,但对于线性回归还是有些茫然,代码是参考大佬的,属实写不太出来,但还是去运行了一遍,算是验证性学习了。

参考文献

  1. 大佬的博客—最小二乘法构建线性回归方程
  2. 怎么用excel做线性回归分析
  3. Anaconda的使用及Jupyter Notebook基本操作


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部