python的算法有哪些_Python入门5大机器学习算法(附代码),你知道哪几个?

u=2261236970,3034668406&fm=173&app=25&f=JPEG?w=640&h=427&s=5050CD339D72C3C61048B4C2030060B3

Python语法简单,功能多样,是开发人员最喜爱的AI开发编程语言之一。 对于开发人员来说,Python在机器学习上的应用非常令人高兴,因为它比C ++和Java等语言要简单。 Python也是一种非常便携的语言,因为它可以在Linux,Windows,Mac OS和UNIX平台上使用。 Python也很受开发人员的欢迎,因为它允许开发人员创建交互式,可解释式性,模块化,动态,可移植和高级的代码,这使得它比Java语言更独特。下面我们看下Python的5个机器学习算法(附代码)

1、线性回归

线性回归通常用于根据连续变量估计实际数值(房价、呼叫次数、总销售额等)。我们通过拟合最佳直线来建立自变量和因变量的关系。这条最佳直线叫做回归线,并且用 Y= a *X + b 这条线性等式来表示。

理解线性回归的最好办法是回顾一下童年。假设在不问对方体重的情况下,让一个五年级的孩子按体重从轻到重的顺序对班上的同学排序,你觉得这个孩子会怎么做?他(她)很可能会目测人们的身高和体型,综合这些可见的参数来排列他们。这是现实生活中使用线性回归的例子。实际上,这个孩子发现了身高和体型与体重有一定的关系,这个关系看起来很像上面的等式。

在这个等式中:

Y:因变量a:斜率x:自变量b :截距系数 a 和 b 可以通过最小二乘法获得。

参见下例。我们找出最佳拟合直线 y=0.2811x+13.9。已知人的身高,我们可以通过这条等式求出体重。

u=1047387316,3067464471&fm=173&app=25&f=JPEG?w=640&h=232&s=780C347297344C235A5098DA0000E0B1

线性回归的两种主要类型是一元线性回归和多元线性回归。一元线性回归的特点是只有一个自变量。多元线性回归的特点正如其名,存在多个自变量。找最佳拟合直线的时候,你可以拟合到多项或者曲线回归。这些就被叫做多项或曲线回归。

u=2999791591,3886887777&fm=173&app=25&f=JPEG?w=640&h=214&s=C15245320F224D201ECDC5DA0000D0B2

2、逻辑回归

别被它的名字迷惑了!这是一个分类算法而不是一个回归算法。该算法可根据已知的一系列因变量估计离散数值(比方说二进制数值 0 或 1 ,是或否,真或假)。简单来说,它通过将数据拟合进一个逻辑函数来预估一个事件出现的概率。因此,它也被叫做逻辑回归。因为它预估的是概率,所以它的输出值大小在 0 和 1 之间(正如所预计的一样)。

u=2658324957,4292750103&fm=173&app=25&f=JPEG?w=640&h=387&s=DD148019685030C2980BDE860300608D

让我们再次通过一个简单的例子来理解这个算法。

假设你的朋友让你解开一个谜题。这只会有两个结果:你解开了或是你没有解开。想象你要解答很多道题来找出你所擅长的主题。这个研究的结果就会像是这样:假设题目是一道十年级的三角函数题,你有 70%的可能会解开这道题。然而,若题目是个五年级的历史题,你只有30%的可能性回答正确。这就是逻辑回归能提供给你的信息。

从数学上看,在结果中,几率的对数使用的是预测变量的线性组合模型。

在上面的式子里,p 是我们感兴趣的特征出现的概率。它选用使观察样本值的可能性最大化的值作为参数,而不是通过计算误差平方和的最小值(就如一般的回归分析用到的一样)。

现在你也许要问了,为什么我们要求出对数呢?简而言之,这种方法是复制一个阶梯函数的最佳方法之一。我本可以更详细地讲述,但那就违背本篇指南的主旨了。

请点击此处输入图

u=492790989,464360282&fm=173&app=25&f=JPEG?w=640&h=332&s=D88C3C7233BB44291AF5B0DA0000E0B3

片描述

u=3561829337,1710481797&fm=173&app=25&f=JPEG?w=640&h=223&s=250854320B22652048FC84DA0000C0B2

3、支持向量机

这是一种分类方法。在这个算法中,我们将每个数据在N维空间中用点标出(N是你所有的特征总数),每个特征的值是一个坐标的值。

u=2163133004,3925445693&fm=173&app=25&f=JPEG?w=640&h=374&s=01B075320B12584300D414DA0000C0B2

举个例子,如果我们只有身高和头发长度两个特征,我们会在二维空间中标出这两个变量,每个点有两个坐标(这些坐标叫做支持向量)。

u=777239517,1930623297&fm=173&app=25&f=JPEG?w=640&h=199&s=4820357287344C221EF5E4DA0000C0B3

上面示例中的黑线将数据分类优化成两个小组,两组中距离最近的点(图中A、B点)到达黑线的距离满足最优条件。这条直线就是我们的分割线。接下来,测试数据落到直线的哪一边,我们就将它分到哪一类去。

更多请见:支持向量机的简化

将这个算法想作是在一个 N 维空间玩 JezzBall。需要对游戏做一些小变动:

比起之前只能在水平方向或者竖直方向画直线,现在你可以在任意角度画线或平面。游戏的目的变成把不同颜色的球分割在不同的空间里。球的位置不会改变。Python代码

u=3789753166,1722675147&fm=173&app=25&f=JPEG?w=640&h=129&s=1D0A5C324F6665220E5DC0DE000010B2

4、Gradient Boosting 和 AdaBoost 算法

当我们要处理很多数据来做一个有高预测能力的预测时,我们会用到 GBM 和 AdaBoost 这两种 boosting 算法。

boosting 算法是一种集成学习算法。它结合了建立在多个基础估计值基础上的预测结果,来增进单个估计值的可靠程度。这些 boosting 算法通常在数据科学比赛如 Kaggl、AV Hackathon、CrowdAnalytix 中很有效。

u=2453208555,185747927&fm=173&app=25&f=JPEG?w=638&h=170&s=0D0A54320F2645220A4DA0D2000010B2

GradientBoostingClassifier 和随机森林是两种不同的 boosting 树分类器。人们常常问起这两个算法之间的区别。

5、决策树

这是我最喜爱也是最频繁使用的算法之一。这个监督式学习算法通常被用于分类问题。令人惊奇的是,它同时适用于分类变量和连续因变量。在这个算法中,我们将总体分成两个或更多的同类群。这是根据最重要的属性或者自变量来分成尽可能不同的组别。想要知道更多,可以阅读:简化决策树。

u=2805992910,1840408564&fm=173&app=25&f=JPEG?w=579&h=426&s=01B66D33018FC4EB526CC9DA000080B3

在上图中你可以看到,根据多种属性,人群被分成了不同的四个小组,来判断 “他们会不会去玩”。为了把总体分成不同组别,需要用到许多技术,比如说 Gini、Information Gain、Chi-square、entropy。

理解决策树工作机制的最好方式是玩Jezzball,一个微软的经典游戏(见下图)。这个游戏的最终目的,是在一个可以移动墙壁的房间里,通过造墙来分割出没有小球的、尽量大的空间。

u=3667323199,3903547383&fm=173&app=25&f=JPEG?w=290&h=174&s=3E2052231635378A4C1568D6010010A2

因此,每一次你用墙壁来分隔房间时,都是在尝试着在同一间房里创建两个不同的总体。相似地,决策树也在把总体尽量分割到不同的组里去。

Python是一种多范式编程语言,支持面向对象,面向过程和函数式编程风格。 由于它拥有简单的函数库和理想的结构,Python很适合神经网络和自然语言处理(NLP)解决方案的开发。Python具有丰富多样的库和工具。2.在不必实施的情况下进行算法测试。3.Python的面向对象设计提高了开发人员的工作效率。4.与Java和C ++相比,Python在开发中运行速度更快。

u=1527524143,223593890&fm=173&app=25&f=JPEG?w=495&h=274&s=2994ED16978578EAC86845DF000080A2

好了,今天就知识就分享到这里,获取更多资源,欢迎在评论区留言讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值