本来不想写太多关于这方面的基础知识的,但是为了加强理解,我想不妨直接写博文记录也是一个好的选择,也可以顺便帮助需要的人,何乐而不为呢?
那么开始吧。我在原课程的基础上进行那么一点点修改。
这不是一个小白教程,需要自行取了解一些基础知识,基础知识我仅仅是一笔带过。
算法原理
众所周知,线性回归算法是以一条直线来将一些散点进行分类的算法,而这条直线通常可理解为y(x)=mx+b
/y=mx+b
这样的函数(这是最简单的线性回归算法实例),其中m
为直线的斜率,而y
为直线的截距,而x
为直线的自变量。
如下图,我们要将图1的散点,通过图2一条直线进行适当良好的分类开来:
- 图1
- 图2
求解m
:
如图:
求解b
:
如图:
实际上这与所谓的感知机
是一样的原理(相关的知识可见李航老师的书籍《统计需诶下方法》)。再者,经过python实现编写对应的公式再进行可视化验证即可完成任务了。
算法实现
因为仅仅是为了说明算法的实现,所以数值就随便取的来用了。
数值取值:
|
|
代码实现公式原理
|
|
画图预测展示
|
|
如图:
这样就完成任务了。
完整代码
|
|
铺助理解链接
补充R平方理论以及检验假设
强烈建议查看书籍学习了解相关的统计知识:
这是一本好书。
关于R平方理论
又称决定系数/判定系数。这是检验一个线性回归中y
变量的变差与x
变量的变差比例的系数,比例越大说明这个线性方程的拟合效果越好(可简单的理解为,它就是衡量一个线性回归算法的拟合精确度的)。它与相关系数也是有关系的。
就不再多说了,这篇文章不是给小白看的教程,只注重实践部分。
公式
图一:
这个公式还可变换为:
其中r^2 = SSR/SST = 1 - SSE/SST
亦成立,所以这里的r^2 = SSR/SST = 1 - SSE/SST
公式即对应着图一的公式,这样就好理解下面写的代码了。
目的是检验上方的ys
取值(即测试数据点的坐标y轴线的取值点)与训练得出的y(x)
(即上方程序中的regression_line
)的拟合效果如何(会有一个量化值出现)。
可参考:
代码实现演示
|
|
代入以上完整代码:
|
|
将会输出一个
R
的平方值,用以衡量拟合效果如何。
关于检验假设
关于检验假设,这是一个可检验数据是否符合相关算法的一个验证,也可理解为先假设,然后去验证对不对(验证假设对不对)。这可与关于R平方理论(输出效果量化值)结合,从而可得出算法对于多类不同数据的拟合效果如何。
在此之后将通过伪随机生成器(可理解只要是计算机生成的随机数都是伪随机数)来进行一段实例演示。
代码实现演示
这里既是一个简单的随机数据生成器,与相关性、方差有关,为其中的参数选择。
|
|
完整代码
|
|
结果展示
会输出一个R
平方值和一张由于随机数据为基础的训练图表。