5.线性回归算法
2021-02-09 19:21
                         标签:重点   城市   自己的   销售额   class   目标   mil   bsp   特征    1.本节重点知识点用自己的话总结出来,可以配上图片,以及说明该知识点的重要性。 (1)本节课的内容思维导图   监督学习:可以用于映射出该实例的类别。 无监督学习:我们只知道特征,并不知道答案,不同的实例具有一定的相似性,把那些相似的聚集在一起。   (2)回归与分类的区别 回归与分类的区别最主要是要看预测的目标函数是否连续,连续变量预测的为回归,例如:预测明天的气温是多少度,这是回归任务,而对离散变量的预测称为分类,例如:预测明天天气是晴还是阴,这是一个分类任务,做预测前首先要分清他是回归任务还是分类任务,这样才能选择合适的算法预测。 (3)回归算法可以运用的领域 1)房价预测       面积对价格的影响       2)销售额的预测       3)贷款额度的预测   (4)线性关系模型   (5)数组与矩阵的运算 数组: 0维:1,2,3 1维:[1,2,3] 2维:[[1,2,3],[4,5,6]]两行三列2*3 3维:[[[1,2,3],[4,5,6],[4,5,6],[4,5,6]]] 矩阵: 1.矩阵必须是二维的 2.矩阵满足了特殊的运算要求 相同的内容,执行数组与矩阵的乘法运算   数组的乘法运算: [[1,2,3,4],                        [[1*1,2*2,3*3,4*4],          [[1,4,9,16], [5,6,7,8],    *  [1,2,3,4]=   [5*1,6*2,7*3,8*4],    =      [5,12,21,32], [9,10,11,12]]                   [9*1,10*2,11*3,12*4]]      [9,20,33,48]] 矩阵的乘法运算:(两个矩阵相乘,前者的列数一定与后者的行数相等(m行*n列) *(h行*k列)=(m行,k列) 主要方法:用左边矩阵的第一行,逐个乘以右边矩阵的列,第一行与第一列各个元素的乘积相加,第一行与第二列的各个元素的乘积相加... [[1,2,3,4],         [ [1],               [[1*1+2*2+3*3+4*4],       [5,6,7,8],    *     [2],       =       [5*1+6*2+7*3+8*4],       =     [[30],[70],[110]] [9,10,11,12]]     [3],               [9*1+10*2+11*3+12*4]]                          [4] ]    矩阵的这种运算正好可以满足了线性回归的计算基础,所以我们首先要学会矩阵的运算 (6)损失函数       (7)两种减少误差的方式 1)最小二乘法之正规方程       T:将矩阵转置(行变列,列变行) X-1 :求逆矩阵(X*?=单位矩阵 ,?就是x的逆矩阵) 2)最小二乘法之梯度下降法         在单变量的函数中,梯度其实就是函数的微分,代表着函数在某个给定点的切线的斜率。 在多变量函数中,梯度是一个向量,向量有方向,梯度的方向就指出了函数在给定点的上升最快的方向。 代码 import random 循环10次,损失loss还比较大,w和b里实际值12,4还相差较大       随着训练次数的变化Loss值的变化:       循环100次,损失变小,w和b更加接近实际值   随着训练次数的变化Loss值的变化:         2.思考线性回归算法可以用来做什么? 可以根据已有的城市人口和利润的数据,运用线性回归的算法法预测城市人口和所获利润之间的关系,可以预测人口与利润之间的关系,知道大概多少人口的城市,利润有多少,可以预测城市人口的变化,已经人口老龄化的趋势,还可以预测房价的变化等等   5.线性回归算法 标签:重点   城市   自己的   销售额   class   目标   mil   bsp   特征    原文地址:https://www.cnblogs.com/chock/p/12748791.html









import time
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()   #权重
print(w)
b = random.random()   #偏置
print(b)
# y=wx+b
a1 = []
b1 = []
for i in range(1):
    for x, y in zip(_xs, _ys):  #遍历_xs和_ys
        print("x=",x,"y=",y)
        o = w * x + b           #预测值
        print("o=")
        e = (o - y)             #误差
        print("e=",e)
        loss = e ** 2           #平方损失函数
        dw = 2 * e * x          #对(w*x+b)^2求w的偏导数,梯度
        db = 2 * e * 1          #对(w*x+b)^2求b的偏导数,梯度
        w = w - 0.1 * dw        #梯度下降w
        b = b - 0.1 * db        #梯度下降b
        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()



上一篇:c++复制构造函数使用
下一篇:超简单的jq图片上传