excel
jupyter
什么是线性回归
在二十世纪二十年代以前,科学家基于传统牛顿力学、相对论等理论的成功,认为世界是由因果规律支配的,一切事物都严格遵守因果律和自然法则。也就是苹果会掉下来是因为有力在拉它,太阳在转也是因为有力在拉它。推导到最后就发现世界必须有一个源头提供原始的力,最终侧面证明了上帝的存在
二十世纪二十年代,开创量子力学的哥本哈根学派科学家波尔、海森伯认则为认为世界上一切事物的发生都是不确定的,只能用概率也就是发生的可能性来描述事物运动规律。也就是说世间一切的事儿都符合于某种概率分布而不是因果,可以用概率模型来表示一切规律。
机器学习就是希望通过历史数据来找到事物背后的模式(pattern),而线性模型就是描述事物背后规律的一种方法。线性回归要做的是就是找到一个数学公式能相对较完美地把所有自变量组合(加减乘除)起来,得到的结果和目标接近。
三种方式对身高体重做线性回归
利用excel中数据分析功能做线性回归(20.200.20000组数据)
1打开加载项中的分析工具库
2数据-分析-数据分析中选择回归
1)20组
回归结果
从上表可以看出回归方程为: H=0.078832W+58.15127
R平方为: 0.325423 H-W模型拟合度中等
而显著性水平P为0.008 属于非常显著
2)200组
回归方程: H=0.090333W+56.45743
R平方为: 0.309995
3)20000组
回归方程: H=0.081842*W+57.58395
R平方为: 0.251339
利用jupyter使用最小二乘法编程
利用的公式
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
points = np.genfromtxt("D:/weights_heights.csv",delimiter=",")
#将wh.csv文件中的数据赋值给points
#将points中的数据分别赋给x,y,求回归方程y=ax+b
x=points[1:21,2]; //20,200,20000分别为21,201,20001
y=points[1:21,1];
#根据自己需要使用数据的个数更改[]中的值
pccs = np.corrcoef(x, y)
c,d=pccs
e,f=c
x_mean = np.mean(x)
y_mean = np.mean(y)
xsize = x.size
zi = (x * y).sum() - xsize * x_mean *y_mean
mu = (x ** 2).sum() - xsize * x_mean ** 2
a = zi / mu
b = y_mean - a * x_mean
a = np.around(a,decimals=2)
b = np.around(b,decimals=2)
print(f'回归线方程:y = {a}x + {b}')
print(f'相关系数为{f}')
#使用第三方库skleran画出拟合曲线
y1 = a*x + b
plt.scatter(x,y)
plt.plot(x,y1,c='r')
20:
200:
20000:
借助skleran库
代码
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
points = np.genfromtxt("D:/weights_heights.csv",delimiter=",")
#将wh.csv文件中的数据赋值给points
#将points中的数据分别赋给x,y,求回归方程y=ax+b
x=points[1:21,2];
y=points[1:21,1];
#根据自己需要使用数据的个数更改[]中的值
pccs = np.corrcoef(x, y)
c,d=pccs
e,f=c
x_mean = np.mean(x)
y_mean = np.mean(y)
xsize = x.size
zi = (x * y).sum() - xsize * x_mean *y_mean
mu = (x ** 2).sum() - xsize * x_mean ** 2
a = zi / mu
b = y_mean - a * x_mean
a = np.around(a,decimals=2)
b = np.around(b,decimals=2)
print(f'回归线方程:y = {a}x + {b}')
print(f'相关系数为{f}')
#使用第三方库skleran画出拟合曲线
y1 = a*x + b
plt.scatter(x,y)
plt.plot(x,y1,c='r')
结果与不借助skleran时相同
小结
线性回归的定义,是利用最小二乘函数对一个或多个自变量之间关系进行建模的方法。回归回归其实他更像一种倒推,从数据,方程中倒推变量之间的关系。从身高体重这一例子中初始回归,可以看出身高与体重拟合度一般,但仍有很高的显著度。