初识Python线性回归

线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。初次接触“线性回归”这个词,我们可以把它分开来看,其中“线性”表示线性模型,而“回归”则表示回归问题,也就是用线性模型来解决回归问题。

预测方法

预测方法

预测的结果是明确的几类时,使用决策树。
例1: 根据气象数据预测天气是晴、雨、阴、雾、霾哪种情况。
例2: 根据交通数据预测交通是否拥堵。

预测的结果一系列连续的值时,使用线性回归方法。
例1: 根据海拔高度预测温度。
例2: 根据父亲身高预测孩子身高。

小结

线性回归的预测方法和决策树是相似的:

  • 先分析数据,找出特征和结果之间的关系
  • 再根据它们的关系进行预测
  • 最后不断地调试参数,使预测的结果更加准确

线性回归方法

前提条件

特征和结果之间,需要是线性关系的。
线性关系
如果两级数据在散点图上呈现出一条直线的样子,那么它们具有线性关系。
线性回归

预测步骤

  1. 分析特征和结果之间的关系
  2. >> 可以优先从倍数关系入手

  3. 使用数学表达式进行预测
  4. >> 预测的结果可能是有误差的

  5. 计算平均误差,根据平均误差调试参数
  6. >> 只看一条数据或者几条数据的误差不够全面
    >> 下半场误差越小,预测的越准确

  7. 确定最终的预测表达式

调参方向

通过不断地调整数学表达式中的数字,使平均误差逐渐变小的过程叫做调参;调整的数字在人工智能中也称作参数。
调参时,如果误差变大,说明调整的方向不对,那就要往相反的方向调整,只要误差一直在变小,就说明调整的方向是正确的,直到误差的值不能再继续减小为止。

应用举例

帮助玩具店老板预测销售额

玩具店老板记录的人流量和销售额存储在记录.csv
线性回归记录.csv中选择一条数据,比如第一条,可以看到,当人流量是10时,销售额是120, 120除以10等于12。

可以使用表达式 销售额=12*人流量 进行预测

py

import pandas

data = pandas.read_csv('记录.csv')
people = data['人流量']

pre_sale = []
real_sale = data['销售额']

for x in people:
    #调整参数,减小误差
    y = 12 * x     #使用数学表达式进行预测
    pre_sale.append(y)

num = len(pre_sale)
s = 0
for i in range(num):
    if pre_sale[i] >= real_sale[i]:
        s += pre_sale[i] - real_sale[i]
    else:
        s += real_sale[i] - pre_sale[i]

print('平均误差', s / sum)
#计算平均误差,根据平均误差调试参数

确定最终的预测表达式 (当平均误差最小时)

注意事项

计算平均误差时,当预测值大于等于真实值时,误差是用预测值减去真实值,否则用真实值减去预测值。

搞定联欢会

预测活动费用

观察数据,选择预测方法
活动费用数据中有人数和费用两列,其中,人数是特征列,费用是结果列
线性回归

费用是很多不同的数值,预测费用可以使用线性回归
使用线性回归的前提—特征和结果必须有线性关系。

线性回归

观察散点图,可以看出来,人数和费用之间有线性关系,可以使用线性回归预测费用。

探索: 结果与特征的关系

生活中的大多数情况,都不刚好是倍数关系,而是几位多几的关系。通过数据,我们很难知道特征与结果是不是倍数关系,所以一般都会几倍多几的形式。

预测结果=参数1*特征+参数2

费用和人数的关系,是几倍多几的关系
费用=参数1*人数+参数2
线性回归

探索:调参
费用=参数1*人数+参数2

需要调整这两个参数,使误差尽可能的小

参数初始值

初始的时候,这两个参数都可以随便取一个值,因为无论参数的初始值是多少,根据误差不断调整,都可以找到最好的值。

小技巧

参数1:查看数据,从数据中任意取一条,计算出结果与特征的倍数,然后把这个倍数作为参数1的初始值。
参数2:可以选取一个自己喜欢的数字作为初始值。

调参方法

在每次调参之前,需要先把四周的误差都看一看。
线性回归

原则:哪里误差低就向哪里走

调参流程图

线性回归

调参小口诀

想要预测得准确,误差最小是秘诀
如何可使误差小,不断调参少不了
要问参数怎么调,比较误差很重要
看看自己和四周,哪里最小向哪走
直到周围大数绕,最小误差就找到

足迹的秘密

选择特征

身高是连续的数据,可以使用线性回归的方法来预测。
使用线性回归的前提是:特征与结果之间是线性关系。

当有多个特征时,可以画出每个特征与结果的散点图,然后选择与结果是线性关系的特征。
观察散点图,发现有2个特征与结果是线性关系:鞋印长度、步长
为了预测更准,我们使用这两个特征来进行预测。

编写关系式

选择特征后,进行预测的3个步骤:

  1. 编写关系式
  2. 只有1个特征与结果是线性关系时,关系式:
    预测结果=参数1*特征+参数2
    有2个特征与结果是线性关系时,关系式:
    预测结果=参数1*特征1+参数2*特征2+参数3

    鞋印长度和步长2个特征都与身高是线性关系,所以预测小偷身高的关系式是
    预测身高=参数1*鞋印长度+参数2*步长+参数3

  3. 计算误差
  4. 计算出预测值和真实值之间的平均误差
    在for循环中,依次取出预测身高和实际身高,计算它们的差值,累加起来,最后用累加的差值除以数据量,就能得到平均误差。

    py
    
    s=0
    for i in range((len(predict))):
        if height[i] > prdict[i]:
            s += height[i] - prdict[i]
        else:
            s += predict[i] - height[i]
    s = s/len(predict)
    
  5. 调参,减小误差
  6. 通过调整3个参数的值,减小关系式的误差。
    只有1个特征时,通过计算a增加、a减小、b增加、b减小这4个方向的误差来决定调参方向

    有2个特征时,则通过计算a增加、a减小、b增加、b减小、c增加、c减小这6个方向的误差来决定调参方向

工具书

编写代码时,可以打开左则文件夹中的工具书,查找所需函数的用法。
线性回归

写于2023年5月8日
没有伞的孩子,必须学会努力奔跑。

赞助 点赞 0

跨境B2B商城系统等人对本文发表了1条热情洋溢的评论。
  • 跨境B2B商城系统说道: 0
    感谢分享啊
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用*标注