`
zzhonghe
  • 浏览: 248332 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Python机器学习快速入门系列4: 线性回归

 
阅读更多
网上找的机器学习的资料对于新手来说往往很难, 经常一上来就甩你一堆像外星文一样的公式方程,然后就把你满腔的学习热情给无情浇灭, 让你觉得是不是该回去学下数学再好好做人。笔者也是一样屡屡被虐,才略有领悟, 回过头来看,发现其实机器学习入门本来可以不这么艰难。 Python机器学习快速入门系列文章,希望能够以简单易懂、通俗而有趣的方式,把大家带入Machine Learning的世界。关注微信公众号“Tunky的实用主义”, 一边学习,一边分享。
 
 
1.猜数游戏

在正式进入线性回归之前,先玩一个猜数的游戏:

x= 1 ,         3,      8,        9,        15       16
y= 2,       6.3,      15,      21,       ?         ?
 
依据X和Y的关系,   我们猜x=15,  y可能会对应30左右,     x=16,y可能会对应32左右
但我们会什么不会猜100, 或者其他更大的数,  因为肉眼判断的Y大概是X的2倍, 虽然有点误差, 但是整体方向上应该错不了。
y=2*x
 
这就是一个简单的线性回归, 你找到了一个系数2, 对于任何要预测的目标值,  你用输入值乘以系数2,  得到预测的结果。
 
 
2. 升级猜数游戏
现在我们加大猜数的难度, 把x这组数据替换成二维的数组, 也就是说, x=[0.5,1] 对应y是1, 求x=[6,15] 对应的y取值 
 
        0.5       1.4     3.7      4         6         6.1
x=   1 ,         3,       8,        9,        15       16
y=   2,        6.3,      15,      21,       ?         ?
 
这就是典型的线性回归问题, 我们先暂时不回答, 相信看到后面就能解答。
 
 
3. 线性回归数学定义
在点阵里面找1条直线, 计算所有点到这条直线的距离, 如果距离之和最短, 那么这条直线就是需要的结果。对于需要预测的y的值, 找到x在直线上所对应的y值, y=x * w  就是预测结果(w就是直线)
 

 
因此, 如果需要解答猜数游戏, 那么首先就要找到 w 的值。
 
这种场景下, 计算w的值, 前辈们已经推导出了公式:
 
假设x和y都是矩阵, 那么这个系数w叫做回归系数, 取值为:
 
w = (xT * x)-1 *x* y
 
至于为什么公式是这么写的, 我们不需要操心, 就像计算圆形的面积是是( πr)一样不需要我们再推导一遍。
 
通俗翻译过来就是:(下面这段话看不懂赶紧复习系列2)
  • x矩阵的转置乘以x矩阵
  • 对这个新矩阵的结果取逆矩阵
  • 逆矩阵再乘以x矩阵的转置
  • 最后乘以y矩阵。
 
 
4. 回归系数的Python实现
这堆数学概念看起来超复杂, 但是用python来实现, so easy!
 环境搭建参见系列1文章
import numpy as np
 
#x矩阵
xMatrix=np.mat([            
   [0.5, 1   ],
   [1.4  3   ],
   [3.7, 8   ],
   [4,   9   ] 
] )          

#y矩阵
yMatirx=np.mat([
   [2  ],
   [6.3],
   [15 ],
   [21 ]
])

#实现公式: 详细解释参见系列2文章
w=(xMatrix.T * xMatrix).I * (xMatrix.T * yMatrix)
 
 
5. 使用回归系统进行预测
 
把需要预测的值整理成矩阵
newxMatrix=np.mat([
   [6,    15   ],
   [6.1  16   ] 
])
 
#用回归系数计算
predictYMatrix=newxMatrix * w
 
print predictYMatrix
 
得到结果: 47.71369295 ,  56.79128631   就是那2个猜出来的y值
 
 
6. 绘图查看数据分布和预测结果
 绘图详细介绍参见系列3文章
import matplotlib.pyplot as plt
 
newxMatrix=np.mat([
   [0.5, 1   ],
   [1.4, 3   ],
   [3.7, 8   ],
   [4,   9   ] ,
   [6   ,  15   ],
   [6.1 ,  16   ]
])
 
#红色为预测值
newyMatrix=np.mat([
   [2  ],
   [6.3],
   [15 ],
   [21 ],
   [47.7 ],                
   [56.7 ],
])
 
#把newxMatrix转换成一维数组, 每个值除以该列的平均值(绘图表现方便,无其他意义)
xMeanMatrix= (newxMatrix[:,0]/newxMatrix[:,0].mean() + newxMatrix[:,1]/newxMatrix[:,1].mean())
 
plt.figure()   #创建图表
x=xMeanMatrix[:,0].flatten().A[0]
y=newyMatrix[:,0].flatten().A[0]
plt.scatter(x,y)  #画点
plt.plot(x,y)     #画线   
 

 
(图中不是直线,是因为把二维矩阵合并成了一维来绘图了)
 
 
7. SKLearn无脑实现线性回归
 
sklearn是个机器学习非常好的包, 好到使用者根本不需要了解什么算法, 算法特性,公式等。 上手直接预测:
 
步骤:
  • 输入x, y数据训练
  • 输入newX, 输出预测的newY值
 
import sklearn
 
#x矩阵
xMatrix=np.mat([            
   [0.5, 1   ],
   [1.4  3   ],
   [3.7, 8   ],
   [4,   9   ] 
] )          

#y矩阵
yMatirx=np.mat([
   [2  ],
   [6.3],
   [15 ],
   [21 ]
])
 
#预测输入xp矩阵
xpMatrix=np.mat([
   [6   ,  15   ],
   [6.1 ,  16   ]
])
classifier=LinearRegression()
classifier.fit(xMatrix,yMatrix)

yPredict=classifier.predict(xpMatrix)
print yPredict
 
计算得出   51.66894737  ,   62.92736842   , 虽然和我们自己实现预测的值47 和 56 有些差异, 但大方向是基本一致, 也算相互验证。
 
 
  • 大小: 19.2 KB
  • 大小: 9.2 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    零起点PYTHON机器学习快速入门.rar

    "零起点PYTHON机器学习快速入门"这个压缩包文件,显然是为了帮助那些对Python和机器学习感兴趣但无任何基础的人设计的教程。 首先,Python的基础知识是入门的基石。你需要了解Python的基本语法,包括变量、数据类型...

    《零起点 Python 机器学习快速入门》:复制的简易机器学习入门 Iris 数据集线性回归.zip

    随着统计学的发展,统计学习在机器学习中占据了重要地位,支持向量机(SVM)、决策树和随机森林等算法的提出和发展,使得机器学习能够更好地处理分类、回归和聚类等任务。进入21世纪,深度学习成为机器学习领域的...

    python机器学习教程-从零开始掌握Python机器学习:十四步教程.pdf

    【Python机器学习基础】 Python作为机器学习的首选语言,因其简洁的语法和强大的库支持而备受推崇。在开始机器学习之旅之前,首先需要掌握Python的基础编程技能。这包括理解变量、数据类型、控制结构(如if-else,...

    吴恩达传统机器学习作业代码(python jupyter):线性回归、逻辑回归、神经网络、SVM、Kmeans决策树和自动调参数

    吴恩达传统机器学习作业代码(python jupyter):线性回归、逻辑回归、神经网络、SVM、Kmeans决策树和自动调参数 吴恩达老师的机器学习课后习题Python 包含有8个单元,附带数据集,轻松入门机器学习。 适合人工智能...

    Python3天快速入门机器学习项目资料.zip

    在本套"Python3天快速入门机器学习项目资料"中,你将获得一系列关于机器学习基础知识的详尽指导,特别适合初学者。机器学习是人工智能的一个分支,它使计算机能够通过经验来改善其表现,而无需显式编程。在这个快速...

    3天入门Python机器学习.zip

    在本文中,我们将深入探讨"3天入门Python机器学习"这一主题,这是一份压缩包文件,包含了关于机器学习基础知识的教程。通过这份资源,初学者可以在短短三天内建立起对机器学习的基本理解,并掌握一些核心算法的实现...

    基于python实现机器学习KNN、简单线性回归、多元线性回归、基于梯度下降的PCA的源码+超详细注释.zip

    基于python实现机器学习KNN、简单线性回归、多元线性回归、基于梯度下降的PCA的源码+超详细注释.zip基于python实现机器学习KNN、简单线性回归、多元线性回归、基于梯度下降的PCA的源码+超详细注释.zip基于python实现...

    Python3机器学习实战教程.zip

    "机器学习实战教程(十二):线性回归提高篇之乐高玩具套件二手价预测.pdf"和"机器学习实战教程(十一):线性回归基础篇之预测鲍鱼年龄.pdf"两部分则关注线性回归,分别讨论了线性回归的理论和实践应用,包括最小...

    黑马python机器学习入门笔记

    《黑马Python机器学习入门笔记》是一份针对初学者编写的指南,旨在帮助读者掌握Python语言在机器学习领域的基本应用。这份笔记将带你踏入这个充满无限可能的领域,通过Python这门易学且强大的编程语言,开启你的数据...

    【附代码数据】python机器学习回归实例代码.pdf

    "Python 机器学习回归实例代码" 本资源为 Python 机器学习回归实例代码,旨在解决广告媒体与销售额之间的关系问题。...该实例代码可以作为机器学习入门者的参考,帮助他们更好地理解机器学习的基本概念和实现方法。

    python机器学习算法源代码.zip

    Python机器学习算法源代码是一个非常宝贵的资源,它涵盖了多种常用的学习模型,包括线性回归、逻辑回归、决策树、K-近邻(KNN)、朴素贝叶斯、支持向量机(SVM)、人工神经网络(ANN)以及K-Means聚类。这些算法在...

    机器学习入门实例三——线性回归预测网店销售额的数据集

    线性回归预测网店销售额的数据集

    Python3天快速入门机器学项目资料.7z

    在本压缩包“Python3天快速入门机器学习项目资料.7z”中,你将找到一系列的资源,帮助你快速掌握Python3的基础以及其在机器学习领域的应用。这个压缩包包含多个子文件,分别对应不同阶段的学习内容,从第一天到第三...

    [B]Python机器学习基础教程1

    综上所述,这本书为读者提供了一个全面的Python机器学习入门平台,涵盖了从数据预处理、模型选择、评估到实际应用的整个流程。通过阅读和实践,读者将具备基础的机器学习能力和解决实际问题的能力。

    使用Python快速入门机器学习

    要快速入门机器学习,首先需要理解机器学习的基本概念,如监督学习、无监督学习、强化学习等,以及常见的机器学习算法,如线性回归、决策树、支持向量机等。 接下来,可以通过安装Python及其机器学习库(如scikit-...

    Python机器学习教程.docx

    在深入探讨Python机器学习之前,首先要明白Python是一种高级编程语言,因其简洁明了的语法和强大的库支持而备受青睐,特别是在数据分析和机器学习领域。Python不仅适合初学者,也适用于专业人士,它能够处理从简单的...

    python 机器学习入门资料

    这篇概述将深入探讨Python在机器学习中的应用,以及如何通过这份"python 机器学习入门资料"来快速入门。 首先,理解机器学习的基本概念至关重要。机器学习是人工智能的一个分支,其目标是让计算机通过数据学习和...

    利用python机器学习教程入门1

    总之,"利用Python机器学习教程入门1"旨在通过科比生涯数据,让初学者掌握Python在机器学习中的应用。无论你是体育爱好者还是数据分析新手,这个教程都将帮助你踏上数据科学的旅程,逐步提升你的技能,为未来的项目...

    Python机器学习基础教程.docx

    Python 机器学习基础教程 本教程主要涵盖机器学习的基础概念、Python 语言基础和机器学习...本教程旨在帮助读者快速入门机器学习领域,掌握 Python 语言基础和机器学习算法的实现,提高自己的技术能力和实践应用能力。

    吴恩达机器学习作业Python实现(logistic回归)

    在吴恩达老师的机器学习课程中,逻辑回归被作为入门的分类模型来讲解,它通过一个非线性的sigmoid函数将线性回归的结果转换为0到1之间的概率值,进而进行类别预测。 **Python实现逻辑回归** Python作为数据科学...

Global site tag (gtag.js) - Google Analytics