一元线性回归笔记

1.一元线性回归

一元线性回归就是只包括一个自变量和一个因变量且二者之间的关系可以用一条直线表示,如果回归分析中包含两个或以上的自变量且因变量和自变量之间的关系是线性的,那么这种回归分析就叫多元线性回归分析。

如果再增添一个自变量房间数,数据集就如下图所示

按照同样的方法,这时回归方程就可以表示为

 

 2.运用梯度下降

首先肯定还是要构建损失函数,既然我们要求θ,我们对θ就有一个预期,当然是求出的结果最大程度拟合我们的样本,这时我们就可以构建一个函数:

 

来描述我们得到的θ的方程和真实值之间的误差,这个误差是越小越好,我们就自然而然的想到用梯度下降的方法来求θ。

于是我们得到θ的迭代公式:

 这里运用的就是批量梯度下降,对于每一个θ我们可以设置一定的迭代次数,或者当θ的变化值小于我们设置的某个阈值(如0.0001)时停止迭代,或者说损失函数的变化值小于某一阈值,这种方法的复杂度高,但得到的结果较精确。

import matplotlib.pyplot as plt
from numpy import *
import matplotlib
matplotlib.rcParams['font.family'] ='SimHei'    #更改默认设置,将图中的汉字设为黑体
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
X=[[1.0,1.0,1.0,1.0,1.0,1.0,1.0],[1.50,2.00,2.50,3.00,3.50,4.00,6.00]]
Y=[64.50,74.50,84.50,94.50,114.50,154.50,184.50]
x=mat(X).T
y=mat(Y)
def gd(x,y):            #批量梯度下降,每次更新使用所有的数据
    m,n=shape(x)
    alpha=0.001
    w=ones((n,1))       #权重矩阵
    for i in range(10000):
        q=x*w       #预测的输出
        e=q-y.T      #损失值
        w=w-alpha*(x.T*e)    #梯度下降更新参数
    return w
w=gd(x,y)
print(w)
plt.scatter(X[1],Y)  #画出x,y的散点图
a=arange(0,10,0.5)
#print(a)
s=w[0,0]+w[1,0]*a
plt.plot(a,s)
plt.xlabel('面积')
plt.ylabel('每平米房价')
plt.show()

你可能感兴趣的:(线性回归,回归,机器学习)