简单线性回归(下)

来源:互联网 发布:淘宝内衣女模特叫名字 编辑:程序博客网 时间:2024/05/17 01:22

1. 简单线性回归模型举例:

汽车卖家做电视广告数量与卖出的汽车数量:

这里写图片描述

1.1 如何画出适合简单线性回归模型的最佳回归线?

这里写图片描述

这里写图片描述

使sum of squares最小

计算过程

这里写图片描述

这里写图片描述

这里写图片描述

分子 = (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-20)+(3-2)(27-20) 
= 6 + 4 + 0 + 3 + 7 
= 20

分母 = (1-2)^2 + (3-2)^2 + (2-2)^2 + (1-2)^2 + (3-2)^2 
= 1 + 1 + 0 + 1 + 1 
= 4

b1 = 20/4 =5

b0 = 20 - 5*2 = 20 - 10 = 10

1.2 预测:

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

这里写图片描述

x_given = 6

Y_hat = 5*6 + 10 = 40

1.3 Python实现:

测试代码:

import numpy as npdef fitSLR(x,y):    n = len(x)    denominator = 0    numerator = 0    for i in range(0,n):        numerator += (x[i] - np.mean(x))*(y[i] - np.mean(y))        denominator += (x[i] - np.mean(x))**2    print("numerator: "+str(numerator))    print("denominator: "+str(denominator))    b1 = numerator/float(denominator)    b0 = np.mean(y) - b1*np.mean(x)    return b0,b1def predict(x,b0,b1):    return b0+x*b1x = [1,3,2,1,3]y = [14,24,18,17,27]b0,b1 = fitSLR(x,y)print("intercept: "+str(b0))print("slope: "+str(b1))x_test = 6y_test = predict(x_test,b0,b1)print("y_test: "+str(y_test))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

测试结果:

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