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

Python实现线性回归

难度初级
时长 1小时 5分
学习人数
综合评分8.77
32人评价 查看评价
9.0 内容实用
8.8 简洁易懂
8.5 逻辑清晰
  • 最小二乘法模型

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

    2018-07-25

  • 线性回归的数学表示

    查看全部
  • 实际的意义

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

    2018-07-25

  • 技术的背景

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

    2018-07-25

  • 线性回归的课程安排

    查看全部
    0 采集 收起 来源:课程安排

    2018-07-25

  • 同步更新

    for i in range(10000):

        temp[0]=theta[0] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        temp[1]=theta[1] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        temp[2]=theta[2] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        temp[3]=theta[3] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        theta=temp


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

    2018-07-24

  • import numpy as np

    from numpy.linalg import inv

    from numpy import dot

    from numpy import mat

    import pandas as pd;


    dataset = pd.read_csv('data.csv')

    #print(dataset)


    temp = dataset.iloc[:,2:5]

    temp['X0']=1    #截距

    X=temp.iloc[:,[3,0,1,2]]    #读取temp的第3,0,1,2列

    #print(X)

    #iloc[m,n]  m-行  n-列

    Y=dataset.iloc[:,1].values.reshape(150,1)

    #print(Y)


    theta = dot(dot(inv(dot(X.T,X)),X.T),Y)

    print(theta)


    theta=np.array([1.,1.,1.,1.]).reshape(4,1)

    alpha=0.1   #学习速率

    X0=X.iloc[:,0].values.reshape(150,1)

    X1=X.iloc[:,1].values.reshape(150,1)

    X2=X.iloc[:,2].values.reshape(150,1)

    X3=X.iloc[:,3].values.reshape(150,1)

    for i in range(10000):

        temp[0]=theta[0] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        temp[1]=theta[1] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        temp[2]=theta[2] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        temp[3]=theta[3] + alpha*np.sum((Y-dot(X,theta))*X0)/150.0

        theta=temp

    print(theta)


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

    2018-07-24

  • temp=dataset.iloc[:,2:5]

    读取数据方法——定义了一个函数 iloc()

    temp = dataset.iloc[:,2:5]

    把X读出来

    temp['x0']=1

    偏移

    X=temp.iloc[:,[3,0,1,2]]

    显示顺序  第3列  第0列  第1列  第2列


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

    2018-07-24

  • 生成‘data.csv’文件的python代码

    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('X1,X2,X3,Y\n')

      for i in range(200):

       random.seed()

       x1 = random.random() * 10

       x2 = random.random() * 10

       x3 = random.random() * 10

       y = Y(x1, x2, x3)

       try:

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

       except Exception as e:

        print ('Write Error')

        print (str(e))

     

    Produce()


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

    2018-07-23

  • 在命令行行python文件

    》》》python "D:\Python\demo03.py"

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

    2018-07-23

  • >>> import numpy as np

    >>> from numpy.linalg import inv

    >>> from numpy import dot

    >>> from numpy import mat

    >>> import pandas as pd

    >>> dataset=pd.read_csv('data.csv')

    >>> print(dataset)


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

    2018-07-23

  • 掌握python梯度下降求解线性分析模型参数

    θ=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

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

    >>> Y=2*X

    >>> theta=1.0

    >>> alpha=0.1

    >>> for i in range(100):

    ...     theta=theta + np.sum(alpha*(Y-dot(X,theta))*X.reshape(1,3))/3.0

    ...

    >>> print(theta)

    2.0

    >>>


    查看全部
  • 本次不要截距,用一个过原点的方程来作为例子

    y=2x

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

    θ=(X^T  X)^-1  *   X^T  Y

    >>> import numpy as np

    >>> from numpy.linalg import inv

    >>> from numpy import dot

    >>> from numpy import mat

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

    >>> Y=2*X

    >>> theta=dot(dot(inv(dot(X.T,X)),X.T),Y)

    >>> print(theta)

    [[2.]]

    >>>


    查看全部
  • A.reshape(1,2)

    把A输出成1行2列的形式

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

    2018-07-23

  • https://img1.sycdn.imooc.com//5b559f810001d7c602520092.jpg

    inv是求矩阵的逆

    dot是矩阵点乘dot(A,B)

    mat是矩阵是二维的

    Array数组维度是一维的

    ".T"  矩阵的转置

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

    2018-07-23

举报

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

微信扫码,参与3人拼团

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

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