初识线性回归

一、excel中数据分析功能做线性回归练习

(一)用excel打开下载的身高体重文件夹。

如果编辑受限就点击启用编辑
在这里插入图片描述

(二)添加数据分析的工具:

1.文件—更多—选项
2.点击加载项,后点击跳转
3.勾选分析工具库和分析工具库—VBA,后点击确定
在这里插入图片描述
在这里插入图片描述
4.点击查看右上角有一个数据分析,则添加成功
在这里插入图片描述

(三)用excel表完成线性回归

1.点击数据—数据分析—回归,点击确定
在这里插入图片描述
2.选择体重做Y值,身高X值,选取20个数据
输入自己适合的输出区域,选择线性拟合图,点击确定
在这里插入图片描述
2.输出图表如下
在这里插入图片描述
3.双击体重,设置坐标轴格式,点击坐标轴选项,设置最大最小值,间隔单位
在这里插入图片描述
在这里插入图片描述
4.修改后图像如下
在这里插入图片描述
图太小了可以用鼠标拉大一点儿
5.点击选择原始数据,鼠标右键
在这里插入图片描述
6.选择添加趋势线,设置趋势线格式为线性,点击选择显示公式,显示R平方值
在这里插入图片描述
8.以同样的方法选择200个数据
在这里插入图片描述
8.其图像数据如下
在这里插入图片描述
9,继续选择2000个数据
在这里插入图片描述
10.获得回归图像、方程、相关系数如下
在这里插入图片描述

二、jupyter编程(不借助第三方库),最小二乘法,重做第1题

(一)打开jupyter notebook程序
在这里插入图片描述

(二)进入页面新建文件
在这里插入图片描述
(四)代码以及结果

  1. 20组数据
    记得修改代码中下图路径为自己的身高体重文件所在路径并保持文件名字与自己下的文件名字一致
    在这里插入图片描述
    代码:
import pandas as pd
import numpy as np
from numpy import array
from numpy import mean
import os
import matplotlib.pyplot as plt
import math
df=pd.read_excel('C:\\Users\\zjh\\weights_heights.xls')
dl=df.head(20)
x=dl["Weight"]
y=dl["Height"]
plt.scatter(x,y)
plt.axis([0,180,65,72])
#计算平均值
x_mean=mean(x)
y_mean=mean(y)
num=0.0#分子
d=0.0#分母
m=0.0
for x_i,y_i in zip(x,y):
    num+=(x_i-x_mean)*(y_i-y_mean)
    d+=(x_i+x_mean)**2
    m+=(y_i+y_mean)**2
a=num/d
b=y_mean-a*x_mean
y_hat=a*x+b
plt.scatter(x,y)#散点图绘制数据x,y
plt.plot(x,y_hat,color='coral')#绘制图线
plt.axis([80,180,65,72])#规定范围
plt.show()#调用显示

显示输出
在这里插入图片描述

print("所得直线方程为y=",a,"x",b)
print("R_squred:",((num/math.sqrt(d*m)**2)))

此处编译报错weight找不到,可能是因为下载的xls文件里面有两个工作表,然后代码df=pd.read_excel(‘C:\Users\zjh\weights_heights.xls’)是默认读取第一个工作表,所以我打开该文件把要用到的拖到了第一个再运行就没报错了
在这里插入图片描述
2.200组数据
在这里插入图片描述
结果:
在这里插入图片描述
3.2000组数据
在这里插入图片描述
结果:
在这里插入图片描述
三、jupyter编程,借助skleran,重做第1题
(一)20组数据
1.代码部分
(1)调用包
记得修改下面读取excel文件的路径
在这里插入图片描述

import numpy as np
import pandas as pd
from contextlib import contextmanager as _contextmanager
import logging
from numpy import array
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import math
df=pd.read_excel('C:\\Users\\zjh\\weights_heights.xlsx')

(2)读取数据

df.shape

(3)赋值变量取20组数据

x=array(df[['Weight']].values[:20,:])
y=array(df[['Height']].values[:20,:])

(4)调用线性回归函数

model=LinearRegression(fit_intercept=True,normalize=True)
model.fit(x,y)

(5)输出斜率

print(model.coef_)

在这里插入图片描述
(6)输出截距
在这里插入图片描述
(7)输出线性回归表达式
在这里插入图片描述

(8)计算R的平方

model.score(x,y)

在这里插入图片描述
(9)绘图输出

plt.figure()
plt.scatter(x,y)#散点图绘制原始数据
plt.plot(x,y_hat,color='coral')
plt.show()

在这里插入图片描述
(二)200组数据
1.代码,其他与第一题类似
在这里插入图片描述
结果:
在这里插入图片描述
(三)2000组数据
1.代码与第一题类似
在这里插入图片描述
2.结果
在这里插入图片描述
四、总结
用python写代码加深了我对线性回归的认识,然后excel和jupyter借用skleran来做线性回归比较简单,不用对线性回归有多少了解也能做,在本次实验中由于下载的文件有两个工作表,导致读取excel文件时读取到了非目标工作表导致编译出错。修改了相关事物后得以成功。
参考链接:
https://blog.csdn.net/weixin_56102526/article/details/120495151

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值