ML入门系列 线性回归模型

 

先搞一个最low的一元线性回归

对房价数据集监督学习进行线性回归

1、一元线性回归

y=ax+b+ε

 

y 为应变量 dependent variable 
x 为自变量 independent variable 
a 为斜率 coeffient 
b 为截距 intercept 
ε (读作epsilon)为误差,正态分布 

 

2、找到一组a和b,使得ε最小 
y^=ax+by^=ax+b 
ε=y−y^ 

 

观测样本:房价数据集  面积与价格 y=ax+b+ε

回归线:y^=ax+by^=ax+b

误差:ε=y−y^

损失函数:在此取方差为损失函数

MSE(Mean Square Error)是方差的平均值

最小二乘法:Least Squares Method(LSM)

这里的损失函数,用的是0.5 * MSE 

优化:寻找损失函数J的最小值

            求损失函数对于a和b的偏微分:

             

 迭代超参数:α=0.01

                    为使得J最小进行迭代的优化方法:

                  

                  如此循环往复得出使得J最小的a与b

安装Jupyter Notebook

        pip install jupyter notebook

        pip install numpy

        pip install matplotlib

        启动 jupyter notebook

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = [55,68,120,80,380] #房屋面积m2
x = np.reshape(x,newshape=(5,1)) / 100.0
y =  [200, 312, 534, 245, 1500] #房屋总价w
y = np.reshape(y,newshape=(5,1)) / 100.0
plt.scatter(x,y)

#模型
def model(a, b, x):
    return a*x + b
#损失函数
def cost_function(a, b, x, y):
    n = 5
    return 0.5/n * (np.square(y-a*x-b)).sum()
#优化
def optimize(a,b,x,y):
    n = 5
    alpha = 1e-1
    y_hat = model(a,b,x)
    da = (1.0/n) * ((y_hat-y)*x).sum()
    db = (1.0/n) * ((y_hat-y).sum())
    a = a - alpha*da
    b = b - alpha*db
    return a, b


a = 0
b = 0

def iterate(a,b,x,y,times):
    for i in range(times):
        a,b = optimize(a,b,x,y)

    y_hat=model(a,b,x)
    cost = cost_function(a, b, x, y)
    print (a,b,cost)
    plt.scatter(x,y)
    plt.plot(x,y_hat)
    return a,b


a,b = iterate(a,b,x,y,1)

a,b = iterate(a,b,x,y,10)

a,b = iterate(a,b,x,y,100)

a,b = iterate(a,b,x,y,1000)

a,b = iterate(a,b,x,y,10000)

第一次迭代

 

最终房价模型

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值