机器学习算法Python实现-线性回归分析

1、代价函数

其中:

下面就是要求出theta,使代价最小,即代表我们拟合出来的方程距离真实值最近

共有m条数据,其中代表我们要拟合出来的方程到真实值距离的平方,平方的原因是因为可能有负值,正负可能会抵消

前面有系数的原因是下面求梯度是对每个变量求偏导,可以消去

实现代码:

注意这里的X是真实数据前加了一列1,因为有theta(0)

2、梯度下降算法

代价函数对求偏导得到:

所以对theta的更新可以写为:

其中为学习速率,控制梯度下降的速度,一般取0.01,0.03,0.1,0.3.....

为什么梯度下降可以逐步减小代价函数

假设函数

泰勒展开:

令: ,即负梯度方向乘以一个很小的步长

将代入泰勒展开式中:

可以看出,是取得很小的正数,也是正数,所以可以得出:

所以沿着负梯度放下,函数在减小,多维情况一样。

实现代码

3、均值归一化

目的是使数据都缩放到一个范围内,便于使用梯度下降算法

其中为所有此feture数据的平均值

可以是最大值-最小值,也可以是这个feature对应的数据的标准差

实现代码:

注意预测的时候也需要均值归一化数据

4、最终运行结果

代价随迭代次数的变化

5、使用scikit-learn库中的线性模型实现

导入包

归一化

线性模型拟合

预测

实例及数据请入传送门:https://github.com/lawlite19/MachineLearning_Python/tree/master/LinearRegression

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180318A1BZ0E00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券