zoukankan      html  css  js  c++  java
  • 2020.04.21 线性回归算法

    1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性

    2.思考线性回归算法可以用来做什么?(大家尽量不要写重复)

    3.自主编写线性回归算法 ,数据可以自己造,或者从网上获取。(加分题)

    答:

    1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性。

    ①回归算法的概念:

     

    ②回归和分类的区别(举例子):

    ③线性回归的用途:房价预测,销售额预测,贷款额度预测;

    线性回归分单因素和多因素的影响,单因素的为一个单线性回归,如果是多因素,那就是一个多线性回归;

    线性回归的数据是连续性的;

    ④线性回归的定义以及形式:

    ⑤引入矩阵和数组的区别:

     

    ⑥引入损失函数(由于线性回归有误差),也称最小二乘法,有两种方式;

     

    ⑦减少误差的方法(优化线性回归的策略);(重点)

    .正规方程:

     

    .梯度下降法:

     

    误差必不可少,但是能尽量减少,就可以对模型的准确性有了一个更高的提升。

    梯度下降代码:

     

    import random
    import matplotlib.pyplot as plt
    
    # 产生数据
    _xs = [0.1 * x for x in range(0, 10)]
    _ys = [12 * i + 4 for i in _xs]
    print(_xs)
    print(_ys)
    
    w = random.random()
    b = random.random()
    
    a1 = []
    b1 = []
    for i in range(100):
        for x, y in zip(_xs, _ys):
            o = w * x + b
            e = (o - y)
            loss = e ** 2
            dw = 2 * e * x
            db = 2 * e * 1
            w = w - 0.1 * dw
            b = b - 0.1 * db
            print('loss={0},w={1},b={2}'.format(loss, w, b))
        a1.append(i)
        b1.append(loss)
        plt.plot(a1, b1)
        plt.pause(0.1)
    
    plt.show()

    可视化结果可以知道,随着训练的增加,loss不断下降,逐步下降,从最初的203,可以知道梯度下降法的结果还是如意的。

     

    2.思考线性回归算法可以用来做什么?(大家尽量不要写重复)

    ①一个产品的使用期限,例如摄像头,考虑天气原因,电压等有关的影响因素;

    ②人口增长分析,考虑国民总收入,居民消费价格指数增长率和人均 GDP 等因素;

    ③预测天气的情况,考虑云量以及风速等相关因素。

     

    3.自主编写线性回归算法 ,数据可以自己造,或者从网上获取。(加分题)

    对波士顿房价进行预测,并可视化;

    代码如下:

    from sklearn.datasets import load_boston
    from sklearn.linear_model import LinearRegression
    import matplotlib.pyplot as plt
    data = load_boston()
    data_all = data['data']
    x = data_all[:,5:6]
    y = data['target']
    model_LR = LinearRegression()
    model_LR.fit(x,y)
    print("输出模型的权值:",model_LR.coef_)
    print("输出模型的截距:",model_LR.intercept_)
    pre = model_LR.predict(x)
    #使用可视化的方式对比拟合出的线性回归方程与真实房价的分布情况
    plt.scatter(x,y) #真实房价的分布
    plt.plot(x,pre,color='r') #拟合出的线性回归方程
    plt.legend(['real','pre'])
    plt.show()

    运行截图:

     可视化结果:

     

  • 相关阅读:
    asp.net url传参中使用javascript过滤中文乱码
    Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)【转】
    element.firstChild
    NHibernate使用Criteria分页显示并返回记录总数 【转】
    动态生成select选项全接触Javascript技术【转】
    struts中ApplicationResources.properties支持中文
    博客园博客美化方法大全[附源码]
    fileinput模块
    python学习
    遗忘的果实
  • 原文地址:https://www.cnblogs.com/Azan1999/p/12742952.html
Copyright © 2011-2022 走看看