机器学习——简单线性回归(下)

1、简单线性回归模型举例:汽车卖家做电视广告数量与卖出汽车数量:

(1)对于上面示例中给定的点,如何连出适合简单线性回归模型的最佳线性回归线?

将上述实例中的5个点在坐标系中绘出,

目的:找到一个方程可以模拟出最好的回归线;最好的回归线是最能够体现实例点的分布趋势的直线。

量化是最好的回归线的数学方法是:

即:使得对于每个实例点的真实值与估计值只差的平方和最小的回归线

注:是给出的数据的真实值,是估计的值,也就是画出的回归线上对应的值。

(2)计算

通过对给出的条件求导,让导数为0,求出

b1=[(1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20)]/[(1-2)^2+(3-2)^2+(2-2)^2+(1-2)^+(3-2)^2]=20/4=5

b0=20-5*2=10

可以得出估计线性回归方程为:

(3)预测

假设有一周广告数量为6,预测汽车销量是多少?

直接将x_given=6带入上面的估计线性回归方程,得出预测的汽车销量为:y_hat = 5*6+10=40

(4)在Python中实现上面的例子

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:ZhengzhengLiu

import numpy as np
def fitSLR(x,y):    #x,y分别是两个列表list
    n=len(x)
    dinominator = 0   #分母
    numerator = 0     #分子
    for i in range(0,n):
        numerator += (x[i]-np.mean(x))*(y[i]-np.mean(y))
        dinominator += (x[i]-np.mean(x))**2
    print("numerator:",numerator)
    print("dinominator:",dinominator)
    b1 = numerator/float(dinominator)
    b0 = np.mean(y)-b1*np.mean(x)

    return b0,b1

def predict(x,b0,b1):
    return b0+b1*x

x = [1,3,2,1,3]
y = [14,24,18,17,27]

b0,b1 = fitSLR(x,y)
print("intercept:",b0,"slope:",b1)

x_test = 6
y_test = predict(x_test,b0,b1)
print("y_test:",y_test)
运行结果:

numerator: 20.0
dinominator: 4.0
intercept: 10.0 slope: 5.0
y_test: 40.0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值