美文网首页
机器学习第四课_线性回归

机器学习第四课_线性回归

作者: 素心似锦 | 来源:发表于2020-03-29 22:24 被阅读0次

    我们所谓的建模过程,其实就是找到一个模型,最大程度的拟合我们的数据。 在简单线回归问题中,模型就是我们的直线方程:y = ax + b 。

    要想最大的拟合数据,本质上就是找到没有拟合的部分,也就是损失的部分尽量小,就是损失函数(loss function)(也有算法是衡量拟合的程度,称函数为效用函数(utility function)):

    因此,推导思路为:

    通过分析问题,确定问题的损失函数或者效用函数;

    然后通过最优化损失函数或者效用函数,获得机器学习的模型

    近乎所有参数学习算法都是这样的套路,区别是模型不同,建立的目标函数不同,优化的方式也不同。

    回到简单线性回归问题,目标:

    [if !vml]

    [endif]

    ###简单线性回归算法的实现

     

    import numpy as np

    import matplotlib.pyplot as plt

    x = np.array([1.,2.,3.,4.,5.])

    y = np.array([1.,3.,2.,3.,5,])

    plt.scatter(x,y)

    plt.axis([0,6,0,6])

    plt.show()

    # 首先要计算x和y的均值

    x_mean = np.mean(x)

    y_mean = np.mean(y)

    # a的分子num、分母d

    num = 0.0

    d = 0.0

    for x_i,y_i in zip(x,y):   # zip函数打包成[(x_i,y_i)...]的形式

       num = num + (x_i - x_mean) * (y_i - y_mean)

        d= d + (x_i - x_mean) ** 2

    a = num / d

    b = y_mean - a * x_mean

    y_hat = a * x + b

    plt.scatter(x,y)    #绘制散点图

    plt.plot(x,y_hat,color='r')    #绘制直线

    plt.axis([0,6,0,6])

    plt.show()

    x_predict = 6

    y_predict = a * x_predict + b

    print(y_predict)

    ##向量化运算

    import numpy as np

    import time

    a = np.random.rand(1000000)

    b = np.random.rand(1000000)

    tic = time.time()

    c = np.dot(a, b)

    toc = time.time()

    print("c: %f" % c)

    print("vectorized version:" +str(1000*(toc-tic)) + "ms")

    c = 0

    tic = time.time()

    for i in range(1000000):

        c+= a[i] * b[i]

    toc = time.time()

    print("c: %f" % c)

    print("for loop:" +str(1000*(toc-tic)) + "ms")

    相关文章

      网友评论

          本文标题:机器学习第四课_线性回归

          本文链接:https://www.haomeiwen.com/subject/zrcpuhtx.html