机器学习之SLR

  1. 关于线性回归
    线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,运用十分广泛。其表达形式为y = w’x+e,e为误差服从均值为0的正态分布。
    线性回归的目的包括:
    1、用于“预测”目标值。比如根据工资预测可贷款额度,根据商场人流预测销售额,根据河流水深预测降雨量等。
    2、用于变量“分析”。比如喝可乐对于体重的影响,汽车速度对于油耗的影响等。

先学习什么是一元线性回归
回归分析只涉及到两个变量的,称一元回归分析。一元回归的主要任务是从两个相关变量中的一个变量去估计另一个变量,被估计的变量,称因变量,可设为Y;估计出的变量,称自变量,设为X。回归分析就是要找出一个数学模型Y=f(X),使得从X估计Y可以用一个函数式去计算。当Y=f(X)的形式是一个直线方程时,称为一元线性回归。这个方程一般可表示为Y=A+BX。根据最小平方法或其他方法,可以从样本数据确定常数项A与回归系数B的值。A、B确定后,有一个X的观测值,就可得到一个Y的估计值。回归方程是否可靠,估计的误差有多大,都还应经过显著性检验和误差计算。有无显著的相关关系以及样本的大小等等,是影响回归方程可靠性的因素。
比如给出的数据的散点图如下
在这里插入图片描述
根据简单线性回归做出的预测如下

在这里插入图片描述

简单线性回归主要包括四个步骤:计算均值和方差,计算协方差,估算系数,作出预测。

第一步,计算均值和方差
训练数据中估计输入和输出变量的均值和方差。平均值可以计算为:
mean(x) = sum(x) / count(x)
下面的mean函数就是这个功能
在这里插入图片描述
方差的计算公式:
variance = sum( (x - mean(x))^2 )
计算方差的函数
在这里插入图片描述
给出数据集进行测试
在这里插入图片描述
结果如下
在这里插入图片描述

第二步,计算协方差
协方差的计算公式
covariance = sum((x(i) - mean(x)) * (y(i) - mean(y)))
计算协方差的函数
在这里插入图片描述
给出数据集进行测试
在这里插入图片描述
结果如下
在这里插入图片描述

第三步,估算系数
我们必须在简单线性回归中估计两个系数的值。
第一个是B1,可以估算为:
B1 = sum((x(i) - mean(x)) * (y(i) - mean(y))) / sum( (x(i) - mean(x))^2 )
可以化简为
B1 = covariance(x, y) / variance(x)
接下来,我们需要估计B0的值,也称为截距,因为它控制与y轴相交的直线的起点。
B0 = mean(y) - B1 * mean(x)
函数如下
在这里插入图片描述
给出数据进行测试
在这里插入图片描述
结果如下
在这里插入图片描述
现在我们已经知道如何估算系数了,下一步是使用它们

第四步,做出预测
简单线性回归模型是由训练数据估计的系数定义的一条线。一旦估计了系数,我们就可以使用它们进行预测。
使用简单线性回归模型进行预测的等式如下:
y = b0 + b1 * x
下面是一个名为simple_linear_regression()的函数,它实现预测函数以对测试数据集进行预测。
在这里插入图片描述
我们再写两个函数,一个用于预测评估
在这里插入图片描述
一个用于估计预测的均方根误差
在这里插入图片描述
给出数据进行测试
在这里插入图片描述
完整代码在4.py
结果如下
在这里插入图片描述
给出的均方误差为0.693

一元线性回归的主要工作就是上述流程,接下来我们将其应用于实际问题,这次数据集名为insurance.csv, 该数据集被称为“瑞典汽车保险”数据集,根据索赔总数(x)预测数千瑞典克朗(y)中所有索赔的总付款额。
这意味着对于新的索赔(x),我们将能够预测索赔的总支付额(y)。
一般情况下,传统方法得到的均方根误差为80左右,而使用本次介绍的一元线性回归,可以大大降低

全部代码在SLR.py中,除了上面提到的函数之外,还加了其他的函数
加载数据集并将字符串转换为浮点类型
在这里插入图片描述
将数据集分为训练集和测试集
在这里插入图片描述
代码中使用60%数据的训练数据集来准备模型,并对剩余的40%进行预测
运行结果如下
在这里插入图片描述
可以看到打印出的均方根误差为38,比传统方法得出的误差81要好的多了
参考:
1.<机器学习实战>
2. https://www.youtube.com/watch?v=7fmDOkysWHQ
3.<机器学习>(周志华的西瓜书)
4. https://machinelearningmastery.com/category/algorithms-from-scratch/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值