01-线性回归

线性回归的优点:

  • 速度快,一旦训练完毕,就不再需要数据集
  • 线性回归是所有机器学习的基础,概念非常重要

线性回归的缺点:

  • 不是特别容易理解,要多敲代码,多思考

image-20191117234709192

为什么需要线性回归

试图找到自变量(independent variable)与因变量(dependent variable)之间的关系

给你房间的面积,求解房屋的价格。

image-20191113200110216

线性回归就是求解m和b的过程。

注意:自变量可以有很多个,不只一个,房屋面积,离市中心距离,卧室数量,卫生间数量这些都可以当作自变量。

打开excel绘制趋势图

image-20191113212831866

线性回归就是求解m = 122.6 b=1.086的过程。

初步理解梯度下降

梯度下降基本上是所有复杂机器学习框架的基石

初始数据集

面积 房价
80 200
95 230
104 245
112 247
125 259
135 262
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import numpy as np
data = np.array([
    [80,200],
    [95,230],
    [104,245],
    [112,247],
    [125,259],
     [135,262]
])

import matplotlib.pyplot as plt
%matplotlib notebook  
fig = plt.figure(figsize=(6, 6), dpi=80)
plt.xlim(70 ,140)
plt.ylim(0, 300)
plt.scatter(data[:,0],data[:,1],c='r',marker='o',label='like')
plt.show()

image-20191113213006902

课外阅读

爱因斯坦的小板凳

爱因斯坦小的时候,老师布置手工作业,让他们回家做出一个小板凳第二天交给老师。第二天,同学们都争先恐后的教出自己的作品,然而爱因斯坦却交给老师一个制作得很粗糙,一条凳腿还钉偏了的小板凳。

当时老师十分的不满,拿着板凳对同学说道:“你们有谁见过这么糟糕的凳子?”当时全班同学都笑翻了纷纷摇头。这时候老师又生气的对着爱因斯坦说:“我想,世界上不会再有比这更坏的凳子了。”

这时候爱因斯坦红着脸,走到老师前面,坚定的说:“有,老师,还有比这更坏的凳子。”于是全班同学停止了笑声,疑惑的望着爱因斯坦。

只见爱因斯坦走回自己的座位,并且从书桌下拿出两个更为粗糙的木板凳,说道:“这是我第一次和第二次制作的,而刚交上去的是第三个虽然不能让人满意,但是比起这两个要强得多。”

看到这里,原本生气的老师不再生气的指责爱因斯坦,而全班同学也再也没有嘲笑过爱因斯坦。

读后感: 没有对比就没有伤害。没有对比就没有进步。

第一个小板凳

 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
import numpy as np
data = np.array([
    [80,200],
    [95,230],
    [104,245],
    [112,247],
    [125,259],
     [135,262]
])
import matplotlib.pyplot as plt
%matplotlib notebook  
fig = plt.figure(figsize=(6, 6), dpi=80)
plt.xlim(70 ,140)
plt.ylim(0, 300)
plt.scatter(data[:,0],data[:,1],c='r',marker='o',label='like')

X = np.linspace(70, 140, 7)  # -pi到pi之间的7个点
price = np.ones(7)*100
plt.plot(X,price)

plt.annotate(r'$y=0x+100$',
             xy=(100, 100),  xytext=(+10, +50),
             textcoords='offset points', fontsize=12,
             arrowprops=dict(arrowstyle="->"))

plt.show()

走过路过,千万不要错过,所有同源统统一百万,一百万买不到吃亏,买不到上当。

image-20191113214759083

第二个小板凳

 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
import numpy as np
data = np.array([
    [80,200],
    [95,230],
    [104,245],
    [112,247],
    [125,259],
     [135,262]
])
import matplotlib.pyplot as plt
%matplotlib notebook  
fig = plt.figure(figsize=(6, 6), dpi=80)
plt.xlim(70 ,140)
plt.ylim(0, 300)
plt.scatter(data[:,0],data[:,1],c='r',marker='o',label='like')

X = np.linspace(70, 140, 7)  # -pi到pi之间的7个点
price = np.ones(7)*200
plt.plot(X,price)

plt.annotate(r'$y=0x+100$',
             xy=(100, 100),  xytext=(+10, +50),
             textcoords='offset points', fontsize=12,
             arrowprops=dict(arrowstyle="->"))

plt.show()

image-20191113214927076

第三个小板凳

 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
import numpy as np
data = np.array([
    [80,200],
    [95,230],
    [104,245],
    [112,247],
    [125,259],
     [135,262]
])
import matplotlib.pyplot as plt
%matplotlib notebook  
fig = plt.figure(figsize=(6, 6), dpi=80)
plt.xlim(70 ,140)
plt.ylim(0, 300)
plt.scatter(data[:,0],data[:,1],c='r',marker='o',label='like')

X = np.linspace(70, 140, 7)  # -pi到pi之间的7个点
price = np.ones(7)*246
plt.plot(X,price)

plt.annotate(r'$y=0x+246$',
             xy=(100, 246),  xytext=(+10, +20),
             textcoords='offset points', fontsize=12,
             arrowprops=dict(arrowstyle="->"))

plt.show()

image-20191113223151746

思考题:

哪一个小板凳更好

如何用数据说话,用数据说明哪个小板凳好

  • 第一个小板凳
面积 预测价 真实价 差价
80 100 200 100
95 100 230 130
104 100 245 145
112 100 247 147
125 100 259 159
135 100 262 162

总计误差,843万

  • 第二个小板凳
面积 预测价 真实价 差价
80 200 200 0
95 200 230 30
104 200 245 45
112 200 247 47
125 200 259 59
135 200 262 62

总计误差,243万

  • 第三个小板凳
面积 预测价 真实价 差价
80 246 200 -46
95 246 230 -16
104 246 245 -1
112 246 247 1
125 246 259 13
135 246 262 16

总计误差(绝对值),93万