当前位置:   article > 正文

Python遇见机器学习 ---- 线性回归算法 Linear Regression_python linearregression

python linearregression

综述

“借问酒家何处有?牧童遥指杏花村。”

本文采用编译器:jupyter 

线性模型试图学得一个通过属性的线性组合来进 预测的函数,即

线性模型形式简单、易于建模,但却蕴涵着机器学习中一些重要的基本思想。许多功能更为强大的非线性模型可在线性模型的基础上通过引入层级结构或高维映射而得。此外,由于 ω 直观表达了各属性在预测中的重要性,因此线性模型有很好的可解释性。

例如,我们要判断一个西瓜是好吃的还是难吃的,现在我们拿到一个西瓜,可以直接看到它的颜色、根蒂形状,用手指敲击能听出敲声是什么样的。这里所说的“颜色”、“根蒂形状”、“敲声”就是“特征”

若在西瓜问题中学得:

则意味着可通过综合考虑色泽、根蒂和敲声来判断瓜好不好,其中根蒂最要紧,而敲声比色泽更重要。

其中,学习到线性方程的过程如图:

学习的目标是使得预测值与真实值的误差最小,这样我们的预测结果就会越准确,即

这是一个典型的最小二乘法问题。根据一系列数学推导,可以计算出a和b的值


 数学推导如下,其中牵扯到一些线性代数的知识,可以略过此部分

求极值问题,即令目标函数对a,b求导等于0

首先令J对b的偏导等于0,则有

 

之后令J对a的偏导等于0 ,则有

 

进一步化简得: 

 

即完成a,b的推导


接下来就进入激动人心的编程时刻!

01 实现Simple Linear Regression

1. 准备数据阶段:

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. x = np.array([1., 2., 3., 4., 5.])
  4. y = np.array([1., 3., 2., 3., 5.])
  5. plt.scatter(x, y)
  6. plt.axis([0, 6, 0, 6])
  7. plt.show()

2. 接下来计算a和b的值

 

  1. x_mean = np.mean(x)
  2. y_mean = np.mean(y)
  3. # 分子
  4. num = 0.0
  5. # 分母
  6. d = 0.0
  7. for x_i, y_i in zip(x, y):
  8. num += (x_i - x_mean) * (y_i - y_mean)
  9. d += (x_i - x_mean) ** 2
  10. a = num / d
  11. b = y_mean - a * x_mean
  12. a
  13. # Out[7]:
  14. # 0.80000000000000004
  15. b
  16. # Out[8]:
  17. # 0.39999999999999947
  18. # 预测线
  19. y_hat = a * x + b
  20. plt.scatter(x, y)
  21. plt.plot(x, y_hat, color='r')
  22. plt.axis([0, 6, 0, 6])
  23. plt.show()

 

3. 对某个点进行预测

  1. # 预测某个点
  2. x_predict = 6
  3. y_predict = a * x_predict + b
  4. y_predict
  5. # Out[11]:
  6. # 5.2000000000000002

使用自己的SimpleLinear Regression

代码在文末rua~

 

from playML.SimpleLinearRegression impor
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/271619
推荐阅读
相关标签
  

闽ICP备14008679号