为了账号安全,请及时绑定邮箱和手机立即绑定

Python实现线性回归

难度初级
时长 1小时 5分
学习人数
综合评分8.77
32人评价 查看评价
9.0 内容实用
8.8 简洁易懂
8.5 逻辑清晰
  • 直接运算的问题

    1. 矩阵需要满秩

    2. 运算性能

    查看全部
    0 采集 收起 来源:梯度下降

    2020-02-17

  • 最小二乘法模型

    查看全部
    0 采集 收起 来源:最小二乘法

    2020-02-17

  • 线性回归的数学表示

    查看全部
  • θ=theta

    alpha是学习速率[0,1]——

            //保证梯度下降的速率不要太快,在一个合适的区间之内,是函数迅速收敛,找到局部最小值

    theta=theta-alpha(theta * X - Y)*X

    np.sum()/组数——加权平均


    import numpy as np
    from numpy.linalg import inv
    from numpy import dot
    from numpy import mat
    
    if __name__ == "__main__":
        # 训练数据
        x = mat([1, 2, 3]).reshape(3, 1)  # 1行3列转化为3行1列
        y = 2 * x
    
        #梯度下降:
        # 原理:多次更新theta的值,通过theta与x,y的关系来得到theta
        # theta = theta - alpha*(theta*x-y)*x  (alpha取值为0到1,保证梯度下降的变化速率不要太快,在一个合适的区间之内,使得函数迅速收敛,找到局部最小值)
        theta = 1.0  #初始化theta
        alpha = 0.1  #初始化alpha
        for i in range(100):
            theta = theta + np.sum(alpha * (y - dot(x, theta)) * x.reshape(1, 3))/3   # np.sum 求加权平均值
    
        print(theta)


    查看全部
  • import numpy as np
    from numpy.linalg import inv
    from numpy import dot
    from numpy import mat
    
    
    if __name__ == "__main__":
        A = np.mat([1, 1])  # 1行2列的矩阵
        print('A:\n', A)
        Arr = np.array([1,1])  #数组
        print("Arr:\n",Arr)
    
        #A矩阵是1*2转化为2*1
        print("A矩阵转化2行1列:", A.reshape(2, 1))
        # A矩阵转置
        print('A.T:\n', A.T)  # 1行2列 转置为 2行1列
    
        print("-------------------------")
        B = mat([[1,2],[2,3]])  #2*2的矩阵
        print('B:\n',B)
        #求B矩阵的逆矩阵
        print('B的逆矩阵:\n', inv(B))
        #获取B矩阵的第一行
        print("B矩阵的第一行",B[0, :]) #第一行所有列
        #获取B矩阵的第一列
        print("B矩阵的第一列:", B[:, 0]) #所有行第一列
        print("B矩阵转化为1行4列:\n", B.reshape(1, 4))
    
        # A: 1*2 B: 2*2
        print('A*B:\n', dot(A,B))
        # A.T 2*1 B:2*2
        print('B*A:\n', dot(B,A.T))  #B矩阵*A的转置矩阵


    查看全部
    0 采集 收起 来源:开发准备

    2019-10-26

  • 梯度下降算法

    查看全部
    0 采集 收起 来源:梯度下降

    2019-10-26

  • 直接计算的问题

    查看全部
    0 采集 收起 来源:梯度下降

    2019-10-26

  • 最小二乘法模型

    向量表示

        Y=θX,θ和X是矩阵


    L=1/2(θX-Y)^T(θX-Y)

    第二行为损失函数(欧几里得距离/向量中向量空间的距离)

                //这个损失函数是线性的,而神经网络的损失函数是非线性的


    查看全部
    0 采集 收起 来源:最小二乘法

    2019-10-26

  • 线性回归的数据表示


    查看全部
  • 什么是线性回归

    y~x :y与x是一对一的关系,映射到几何上就是二维坐标系中的直线方程

    Y = θX

    通过训练,得到θ的过程,就是线性回归算法。

    其中:x是输入,y是输出,是结果

    查看全部
  • 12345

    查看全部
  • 那么总的来说梯度下降是为了优化线性回归运行代码的运算性能和简洁化来实现的,那线性回归的最终效果对于算法,机器学习,甚至是人工智能会起到怎样的作用?

    线性回归在算法和机器学习里所占比重是多少?还是说线性回归是机器学习不可或缺的一个算法?为了提高严谨性么?


    查看全部
    0 采集 收起 来源:梯度下降

    2019-06-16

  • dfjdifjdifjidjif


    查看全部
    0 采集 收起 来源:梯度下降

    2019-06-16

  • 线性回归的数学表示:

    https://img1.sycdn.imooc.com//5d020b4f00018ac506100234.jpg

    查看全部
  • 最小二乘法模型

    A=(seta*x-y) (A为一维列向量)

    L=1/2*A^2 = (seta*x-y)^T (seta*x-y)=x^T*seta^T*seta*x-x^T*setaT*y-y^T*seta*x+y^T*y

    L对seta求偏导:1/2*{x^T*x*[seta+(seta^T)^T] - x^T*y - (y^T*x)^T}=1/2[2*x^T*x*seta - 2*x^T*y] = x^T*x*seta - x^T*y

    令L'=0有seta = (x^T*x)^-1*(x^T*y)

    所以当seta = (x^T*x)^-1*(x^T*y)时L最小

    查看全部
    0 采集 收起 来源:最小二乘法

    2019-01-13

举报

0/150
提交
取消
课程须知
1、有机器学习基础 2、有一定的python基础
老师告诉你能学到什么?
1、线性回归的概念 2、最小二乘法的python实现 3、梯度下降的python实际 4、编程处理线性回归分析的一般方法

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!