文章目录
*
– 一. 用excel中数据分析功能
–
+ 1.1 导入数据集
+ 1.2 创建散点图
+ 1.3 数据分析
– 二. 用jupyter编程,不借助第三方库
–
+ 2.1 安装jupter
+ 2.2 编程
+ 2.3 运行结果
– 三.借助skleran对数据进行拟合
– 四. 参考文献
一. 用excel中数据分析功能
1.1 导入数据集
; 1.2 创建散点图
插入->散点图
选中数据,选择第一种样式
在生成的表格右上角勾选上生成渐近线
点击渐近线右边选择渐近线格式,更多选项
结果如下
1.3 数据分析
选中20组数据
选中前200组数据
选择前2000组数据
; 二. 用jupyter编程,不借助第三方库
2.1 安装jupter
打开Windows终端命令行,先输入 pip install jupyter notebook
,在输入 jupyter notebook
,打开我们的jupyter工具,如下所示
在jupyter的web网页中创建python文件(不能关闭命令行,否则创建不了),如下所示:
先导入数据集文件,这样就不用去寻找文件地址了
上传之后就能看到
; 2.2 编程
原理:
首先引入需要的包:
import numpy as np
import pandas
import xlrd
import matplotlib.pyplot as plt
参考文献:Python报错ModuleNotFoundError: No module named ‘numpy’
这里我们发现缺少了numpy,所以我们在命令行运行
pip install numpy
,安装完之后运行 pyton
,在运行 from numpy import *
如果没有保错证明安装成功(如果还有缺少的module,执行类似操作)现在在运行我们的代码
将表格中数据存入到数组之中
data = xlrd.open_workbook("weights_heights(身高-体重数据集).xls")
table = data.sheets()[1]
x=[]
y=[]
for i in range (1,5000):
x.append(table.cell(i,1).value)
y.append(table.cell(i,2).value)
展示散点图(200组数据为例)
plt.scatter(x[0:200], y[0:200])
plt.show()
计算代码:
def f(a):
sum=0
pingjunx=0
pingjuny=0
chu=0
for i in range(0,a):
pingjunx+=x[i]
pingjuny+=y[i]
pingjuny/=a
pingjunx/=a
for i in range(0,a):
sum+=(x[i]-pingjunx)*(y[i]-pingjuny)
chu+=(x[i]-pingjunx)*(x[i]-pingjuny)
B1=sum/chu
B0=pingjuny-B1*pingjunx
print(B1)
print(B0)
xx = np.linspace(0,100, 100)
yy = B1*xx+B0
plt.scatter(x[0:a], y[0:a],s = 1)
plt.xlim(62,74)
plt.ylim(0,180)
print("相关系数R^2为")
shang=0
xia1=0
xia2=0
for i in range (0,a):
xia1+=(x[i]-pingjunx)*(x[i]-pingjunx)
xia2+=(y[i]-pingjuny)*(y[i]-pingjuny)
shang+=(x[i]-pingjunx)*(y[i]-pingjuny)
print(shang*shang/(xia1*xia2))
plt.plot(xx, yy, c='orange')
plt.show()
return
2.3 运行结果
选取20组数据
选取200组数据
选取2000组数据
; 三.借助skleran对数据进行拟合
引入我们需要的包
from sklearn import linear_model
通过sklearn中的api创建一个线性回归模型,选取a个数据进行拟合输出截距以及斜率
def ff(a):
model = linear_model.LinearRegression()
model.fit(np.array(x[0:a]).reshape(-1, 1),np.array(y[0:a]).reshape(-1, 1))
print(model.coef_)
print(model.intercept_)
选取20个数据
200组数据
2000组数据
可以看到sklearn它的一元线性回归方程也是通过最小二乘法来实现以至于得到了同样的结果
四. 参考文献
https://www.cnblogs.com/lwtt/p/15358625.html
Original: https://blog.csdn.net/qq_55691662/article/details/120569410
Author: 保护奶猫
Title: 用excel中数据分析功能做线性回归练习,分别选取20、200、2000(或20000)组数据,记录回归方程式、R2;用jupyter编程(不借助第三方库),用最小二乘法;借助skleran
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/635602/
转载文章受原作者版权保护。转载请注明原作者出处!