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

Python实现线性回归

难度初级
时长 1小时 5分
学习人数
综合评分8.77
32人评价 查看评价
9.0 内容实用
8.8 简洁易懂
8.5 逻辑清晰
  • 0,Y,X1,X2,X3
    1,5.1,3.5,1.4,0.2
    2,4.9,3.0,1.4,0.2
    3,4.7,3.2,1.3,0.2
    4,4.6,3.1,1.5,0.2
    5,5.0,3.6,1.4,0.2
    6,5.4,3.9,1.7,0.4
    7,4.6,3.4,1.4,0.3
    8,5.0,3.4,1.5,0.2
    9,4.4,2.9,1.4,0.2
    10,4.9,3.1,1.5,0.1
    11,5.4,3.7,1.5,0.2
    12,4.8,3.4,1.6,0.2
    13,4.8,3.0,1.4,0.1
    14,4.3,3.0,1.1,0.1
    15,5.8,4.0,1.2,0.2
    16,5.7,4.4,1.5,0.4
    17,5.4,3.9,1.3,0.4
    18,5.1,3.5,1.4,0.3
    19,5.7,3.8,1.7,0.3
    20,5.1,3.8,1.5,0.3
    21,5.4,3.4,1.7,0.2
    22,5.1,3.7,1.5,0.4
    23,4.6,3.6,1.0,0.2
    24,5.1,3.3,1.7,0.5
    25,4.8,3.4,1.9,0.2
    26,5.0,3.0,1.6,0.2
    27,5.0,3.4,1.6,0.4
    28,5.2,3.5,1.5,0.2
    29,5.2,3.4,1.4,0.2
    30,4.7,3.2,1.6,0.2
    31,4.8,3.1,1.6,0.2
    32,5.4,3.4,1.5,0.4
    33,5.2,4.1,1.5,0.1
    34,5.5,4.2,1.4,0.2
    35,4.9,3.1,1.5,0.1
    36,5.0,3.2,1.2,0.2
    37,5.5,3.5,1.3,0.2
    38,4.9,3.1,1.5,0.1
    39,4.4,3.0,1.3,0.2
    40,5.1,3.4,1.5,0.2
    41,5.0,3.5,1.3,0.3
    42,4.5,2.3,1.3,0.3
    43,4.4,3.2,1.3,0.2
    44,5.0,3.5,1.6,0.6
    45,5.1,3.8,1.9,0.4
    46,4.8,3.0,1.4,0.3
    47,5.1,3.8,1.6,0.2
    48,4.6,3.2,1.4,0.2
    49,5.3,3.7,1.5,0.2
    50,5.0,3.3,1.4,0.2
    51,7.0,3.2,4.7,1.4
    52,6.4,3.2,4.5,1.5
    53,6.9,3.1,4.9,1.5
    54,5.5,2.3,4.0,1.3
    55,6.5,2.8,4.6,1.5
    56,5.7,2.8,4.5,1.3
    57,6.3,3.3,4.7,1.6
    58,4.9,2.4,3.3,1.0
    59,6.6,2.9,4.6,1.3
    60,5.2,2.7,3.9,1.4
    61,5.0,2.0,3.5,1.0
    62,5.9,3.0,4.2,1.5
    63,6.0,2.2,4.0,1.0
    64,6.1,2.9,4.7,1.4
    65,5.6,2.9,3.6,1.3
    66,6.7,3.1,4.4,1.4
    67,5.6,3.0,4.5,1.5
    68,5.8,2.7,4.1,1.0
    69,6.2,2.2,4.5,1.5
    70,5.6,2.5,3.9,1.1
    71,5.9,3.2,4.8,1.8
    72,6.1,2.8,4.0,1.3
    73,6.3,2.5,4.9,1.5
    74,6.1,2.8,4.7,1.2
    75,6.4,2.9,4.3,1.3
    76,6.6,3.0,4.4,1.4
    77,6.8,2.8,4.8,1.4
    78,6.7,3.0,5.0,1.7
    79,6.0,2.9,4.5,1.5
    80,5.7,2.6,3.5,1.0
    81,5.5,2.4,3.8,1.1
    82,5.5,2.4,3.7,1.0
    83,5.8,2.7,3.9,1.2
    84,6.0,2.7,5.1,1.6
    85,5.4,3.0,4.5,1.5
    86,6.0,3.4,4.5,1.6
    87,6.7,3.1,4.7,1.5
    88,6.3,2.3,4.4,1.3
    89,5.6,3.0,4.1,1.3
    90,5.5,2.5,4.0,1.3
    91,5.5,2.6,4.4,1.2
    92,6.1,3.0,4.6,1.4
    93,5.8,2.6,4.0,1.2
    94,5.0,2.3,3.3,1.0
    95,5.6,2.7,4.2,1.3
    96,5.7,3.0,4.2,1.2
    97,5.7,2.9,4.2,1.3
    98,6.2,2.9,4.3,1.3
    99,5.1,2.5,3.0,1.1
    100,5.7,2.8,4.1,1.3
    101,6.3,3.3,6.0,2.5
    102,5.8,2.7,5.1,1.9
    103,7.1,3.0,5.9,2.1
    104,6.3,2.9,5.6,1.8
    105,6.5,3.0,5.8,2.2
    106,7.6,3.0,6.6,2.1
    107,4.9,2.5,4.5,1.7
    108,7.3,2.9,6.3,1.8
    109,6.7,2.5,5.8,1.8
    110,7.2,3.6,6.1,2.5
    111,6.5,3.2,5.1,2.0
    112,6.4,2.7,5.3,1.9
    113,6.8,3.0,5.5,2.1
    114,5.7,2.5,5.0,2.0
    115,5.8,2.8,5.1,2.4
    116,6.4,3.2,5.3,2.3
    117,6.5,3.0,5.5,1.8
    118,7.7,3.8,6.7,2.2
    119,7.7,2.6,6.9,2.3
    120,6.0,2.2,5.0,1.5
    121,6.9,3.2,5.7,2.3
    122,5.6,2.8,4.9,2.0
    123,7.7,2.8,6.7,2.0
    124,6.3,2.7,4.9,1.8
    125,6.7,3.3,5.7,2.1
    126,7.2,3.2,6.0,1.8
    127,6.2,2.8,4.8,1.8
    128,6.1,3.0,4.9,1.8
    129,6.4,2.8,5.6,2.1
    130,7.2,3.0,5.8,1.6
    131,7.4,2.8,6.1,1.9
    132,7.9,3.8,6.4,2.0
    133,6.4,2.8,5.6,2.2
    134,6.3,2.8,5.1,1.5
    135,6.1,2.6,5.6,1.4
    136,7.7,3.0,6.1,2.3
    137,6.3,3.4,5.6,2.4
    138,6.4,3.1,5.5,1.8
    139,6.0,3.0,4.8,1.8
    140,6.9,3.1,5.4,2.1
    141,6.7,3.1,5.6,2.4
    142,6.9,3.1,5.1,2.3
    143,5.8,2.7,5.1,1.9
    144,6.8,3.2,5.9,2.3
    145,6.7,3.3,5.7,2.5
    146,6.7,3.0,5.2,2.3
    147,6.3,2.5,5.0,1.9
    148,6.5,3.0,5.2,2.0
    149,6.2,3.4,5.4,2.3
    150,5.9,3.0,5.1,1.8


    查看全部
    5 采集 收起 来源:回归分析实战

    2018-06-28

  • import numpy as np

    from numpy.linalg import inv——(矩阵的逆)

    from numpy import dot——(矩阵的点成)

    from numpy import mat——(矩阵)


    A=np.mat([1,1])——(1x2 的矩阵)

    print('A:\n',A)

    #A=np.array([1,1])——(数组)

    B=mat([1:2],[3:4])——(2x2的)

    print('B:\n',B)

    print(''A.B:',dot(A,B))——结果是错的,因为1*2和2*2矩阵是不能想乘的

    那么就需要给A矩阵转置:print('A.T:\n',A.T)

    还有对矩阵B求逆:print('B的逆:\n',inv(B))

    print(B[0,:1])——表示取出0行一列

    print(B[:,0])——表示取出的是所有行第一列,就是第一列

    print(A.reshape(2,1))——就是重新改变A矩阵的大小的,变成2*1的了;它不仅可以像转置一样还可以将3*2的变成1*6的,这是转置办不到的!

    以上矩阵的基本操作:

    接下来是线性回归的计算:

    imort numpy as np

    from numpy.linalg import inv

    from numpy import dot

    from numpy import mat

    #计算y=2x

    x=mat([1,2,3]).reshape([3,1])

    y=2*x


    #再计算theta=(x'x)^-1x'y

    theta=dot(dot(inv(dot(x.T,x)),x.T),y)

    print(theta)

    接下来是梯度下降的算法:

    (就是根据Y与X的关系不断的进行迭代计算)

    #theta=theta-alpha*(theta*X-Y)*X——alpha在(0,1)之间取值,保证下降的梯度不会太快,是函数迅速收敛,是很重的学习内容

    theta=1.

    alpha=0.1

    for i in range(100):

        theta=theta+np.sum(alpha*(Y-dot(X,theta))*X.reshape(1,3))/3.——bp.sum()可以进行加权平均,因为X是3组数,而结果theta就是一个数,所以加权平均一下,结尾出“/3.”是除以其组数

    (梯度下降是逐步逼近那个值的)

    接下来完成一个复杂的线性回归l:

    import random

    def Y(X1, X2, X3):

     return 0.65 * X1 + 0.70 * X2 - 0.55 * X3 + 1.95

    def Produce():

     filename = 'data.csv'

     with open(filename, 'w') as file:

      file.write('Unnamed: 0,Y,X1,X2,X3\n')

      for i in range(150):

       random.seed()

       x1 = random.random() * 10

       x2 = random.random() * 10

       x3 = random.random() * 10

       y = Y(x1, x2, x3)

       try:

        file.write(str(i)+','+ str(y)+ ',' +str(x1) + ',' + str(x2) + ',' + str(x3)  + '\n')

       except Exception as e:

        print ('Write Error')

        print (str(e))


    Produce()


    查看全部
    1 采集 收起 来源:回归分析实战

    2018-12-10

  • inv: 矩阵求逆

    dot: 矩阵点乘

    mat: 二维矩阵

    array: 一维数组

    .T:  矩阵的转置

    .reshape : 重新构置矩阵

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

    2018-12-06

  • 梯度下降方法(第二种代码)可以很好地解决向量方法(第一种)面对大量计算无法计算的弊端

    而梯度下降更重要的是进行同步更新

    所以需要一个temp来进行缓存

    注意矩阵的形式可能需要变形——

                            reshape( )(如果出错,改成values.reshape( ))


    查看全部
    1 采集 收起 来源:课程总结

    2018-07-24

  • inv 逆

    dot 点乘

    mat 矩阵

    array 数组

    .T  转置

    查看全部
  • 测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试

    查看全部
    1 采集 收起 来源:课程背景

    2018-03-30

  • 测试测试测试测试测试测试测试测试测试

    查看全部
    1 采集 收起 来源:课程背景

    2018-03-30

  • 线性回归算法

    矩阵算法、梯度算法

    http://img1.sycdn.imooc.com//5fa4ffab0001c2f319201200.jpg

    查看全部
    0 采集 收起 来源:课程总结

    2020-11-06

  • 梯度下降法计算http://img1.sycdn.imooc.com//5fa3bc7500014d9719201200.jpg

    查看全部
  • 矩阵的操作

    http://img1.sycdn.imooc.com//5fa3b89e00018b5319201200.jpg

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

    2020-11-05

  • 矩阵A,B的点成:np.dot(A,B)

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

    2020-05-14

  • 矩阵B的逆:np.inv(B)

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

    2020-05-14

  • 矩阵A的转置:A.T

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

    2020-05-14

  • 最小二乘法模型

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

    2020-03-09

  • 梯度下降函数

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

    2020-02-17

首页上一页1234567下一页尾页

举报

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

微信扫码,参与3人拼团

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

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