scikit-learn 中的机器学习算法秘籍

你必须亲自动手实践。

你可以阅读所有博客文章,观看世界上所有的视频,但除非你开始练习,否则你实际上无法真正掌握机器学习。

scikit-learn Python 库非常容易上手。尽管如此,我看到很多初学者在入门时犹豫不决。在这篇博文中,我想提供一些使用 scikit-learn 进行监督分类算法的非常简单的示例。

通过我的新书《Python 机器学习精通》来**启动你的项目**,书中包含分步教程和所有示例的Python 源代码文件。

让我们开始吧。

mean-shift clustering algorithm

Scikit-Learn 菜谱

你不需要了解和使用 scikit-learn 中的所有算法,至少一开始是这样。选择一两个(或几个),只用那些进行练习。

在这篇文章中,你将看到 5 个监督分类算法的菜谱,这些算法应用于 scikit-learn 库自带的小型标准数据集。

这些菜谱是有原则的。每个示例都是

  • 独立的:每个代码示例都是一个独立的、完整的、可执行的菜谱。
  • 纯代码:每个菜谱的重点在于代码,而对机器学习理论的阐述最少。
  • 简单的:菜谱展示了常见的用例,这可能正是你想要的。
  • 一致的:所有代码示例都以一致的方式呈现,并遵循相同的代码模式和风格约定。

这些菜谱不探讨给定算法的参数。它们提供了一个你可以复制粘贴到你的文件、项目或 Python REPL 中并立即开始使用的框架。

这些菜谱向你展示了你可以立即开始练习 scikit-learn。停止拖延。

逻辑回归

逻辑回归将逻辑模型拟合到数据,并对事件的概率(0到1之间)进行预测。

此菜谱展示了如何将逻辑回归模型拟合到鸢尾花数据集。由于这是一个多类分类问题,而逻辑回归的预测在0到1之间,因此使用了“一对多”方案(每个类一个模型)。

有关配置算法参数的更多信息,请参阅逻辑回归的 API 参考。另请参阅用户指南的逻辑回归部分

朴素贝叶斯

朴素贝叶斯使用贝叶斯定理来模拟每个属性与类别变量的条件关系。

此菜谱展示了如何将朴素贝叶斯模型拟合到鸢尾花数据集。

有关配置算法参数的更多信息,请参阅高斯朴素贝叶斯的 API 参考。另请参阅用户指南的朴素贝叶斯部分

k-最近邻

k-最近邻 (kNN) 方法通过定位与给定数据实例相似的实例(使用相似性函数)来做出预测,并返回最相似数据实例的平均值或多数。kNN 算法可用于分类或回归。

此菜谱展示了如何使用 kNN 模型对鸢尾花数据集进行预测。

有关配置算法参数的更多信息,请参阅k-最近邻的 API 参考。另请参阅用户指南的k-最近邻部分

分类与回归树

分类和回归树 (CART) 是通过选择最佳分割数据的分割点来从数据集中构建的,以便分离类别或正在进行的预测。CART 算法可用于分类或回归。

此菜谱展示了如何使用 CART 模型对鸢尾花数据集进行预测。

有关配置算法参数的更多信息,请参阅CART 的 API 参考。另请参阅用户指南的决策树部分

支持向量机

支持向量机 (SVM) 是一种使用经过转换的问题空间中的点来最佳地将类别分成两组的方法。通过“一对多”方法支持多类别分类。SVM 还通过对具有最小允许误差的函数进行建模来支持回归。

此菜谱展示了如何使用 SVM 模型对鸢尾花数据集进行预测。

有关配置算法参数的更多信息,请参阅SVM 的 API 参考。另请参阅用户指南的SVM 部分

总结

在这篇文章中,你看到了 5 个独立的菜谱,演示了一些最受欢迎和强大的监督分类问题。

每个示例的代码都不到 20 行,你可以复制粘贴并立即开始使用 scikit-learn。停止阅读,开始练习。选择一个菜谱并运行它,然后开始调整参数,看看它对结果有什么影响。

发现 Python 中的快速机器学习!

Master Machine Learning With Python

在几分钟内开发您自己的模型

...只需几行 scikit-learn 代码

在我的新电子书中学习如何操作
精通 Python 机器学习

涵盖自学教程端到端项目,例如
加载数据可视化建模调优等等...

最终将机器学习带入
您自己的项目

跳过学术理论。只看结果。

查看内容

29 条对《Scikit-learn 机器学习算法集锦》的回复

  1. DR Venugopala Rao Manneni 2016年4月7日 下午5:31 #

    感谢 Jason 的这些内容。您能否也提供神经网络 (MLP) 的内容?

  2. Ajinkya 2016年6月12日 上午8:48 #

    感谢这个信息丰富的教程。
    您能解释一下逻辑回归是如何用于涉及多个类别的分类的吗?
    谢谢

    • Jason Brownlee 2016年6月14日 上午8:14 #

      Ajinkya,好问题。

      通常,你可以将一个为二元(两类)分类设计的算法,通过使用“一对多”的元算法将其转化为多类分类算法。你创建 n 个模型,其中 n 是类别的数量。每个模型都会进行预测,提供一个预测向量,最终的预测可以取为具有最高概率的类别对应的模型。

      这可以与逻辑回归一起使用,并且在支持向量机中非常流行。

      关于“一对多”元算法的更多信息
      https://en.wikipedia.org/wiki/Multiclass_classification

  3. Nicolas 2016年11月23日 上午1:12 #

    非常感谢您提供的这些有用的示例!我找了很多地方才找到这个网站。您确实为我节省了很多时间和精力来完成大学的 ML 课程作业 🙂

    继续保持出色的工作!

    • Jason Brownlee 2016年11月23日 上午9:00 #

      Nicolas,很高兴听到这个消息。

      • Ash 2018年10月24日 上午2:11 #

        嗨 Jason,我该如何选择算法来比较一个“字符串”值的最近匹配,然后再测试其准确性?例如,我的数据中有一个国家值为 FR,但我需要 FRA,我该如何确保我预测 FRA 并向最终用户提供准确的预测匹配?抱歉,这是一个非常基本的问题,但我刚接触 ML,所以才问。

        • Jason Brownlee 2018年10月24日 上午6:31 #

          抱歉,我没有关于字符串匹配/相似性算法的资料。

  4. Gill Bates 2017年2月11日 上午3:18 #

    亲爱的 Jason,
    干得漂亮。
    您能否展示如何实现其他算法或“如何钓鱼”?
    谢谢。

  5. lalit 2017年4月6日 下午9:32 #

    测试数据不应用于训练。这里您将完整的训练数据用作测试数据,这是错误的。

    • Jason Brownlee 2017年4月9日 下午2:39 #

      是的,我同意。这些只是关于如何在 sklearn 中拟合模型的示例。

    • Adi Usman 2019年10月20日 上午9:39 #

      感谢这个精彩的入门教程。它确实帮助我入门了。您能否解释一下如何解释结果?

  6. Brian Tremaine 2017年7月28日 上午3:17 #

    感谢您的教程,非常有帮助。

    我运行了 MNIST 数字识别,使用了朴素贝叶斯 (GaussianNB),结果与最近邻相比非常差。sklearn 是否有使用先验概率的贝叶斯函数?我搜索过但没找到。

    谢谢,
    Brian

    • Jason Brownlee 2017年7月28日 上午8:33 #

      我认为 sklearn 中的朴素贝叶斯应该会使用先验概率。

      先验概率被忽略的唯一情况是当它们对等式没有贡献时(例如,两个类具有相同数量的观测值)。

  7. Jarrell R Dunson 2017年10月24日 上午6:53 #

    问题……我正在尝试运行 `sklearn.naive_bayes import GaussianNB` 的代码

    但在 Python 3.5 或 3.6 中似乎不起作用……

    这是只在 Python 2 中运行的吗?

    • Jason Brownlee 2017年10月24日 下午3:57 #

      不。它可以在 py2 和 py3 中运行。

      也许检查一下你的 sklearn 版本?

  8. Jarrell R Dunson 2017年10月25日 上午12:51 #

    谢谢……升级了 sklearn,就可以工作了。

  9. DG 2018年3月1日 上午8:46 #

    感谢您的信息,您能否发布有关使用定量和定性数据进行聚类分析或 K-means 的类似示例?

  10. Jesús Martínez 2018年4月18日 上午1:20 #

    太棒了。Scikit-learn 很棒。感谢分享!

  11. Fredrick Ughimi 2019年2月11日 上午4:08 #

    您好 Jason,感谢您为此付出的时间和精力。教程非常流畅且信息丰富。继续加油。

  12. Jim 2019年3月3日 上午9:42 #

    嗨,Jason,

    对于逻辑回归,我收到警告,建议我同时设置 solver 和 multi_class 参数。所以我使用了 `model = LogisticRegression(solver=”newton-cg”, multi_class=”ovr”)`,这解决了这些警告。

    您能否分享一下这两个参数的作用?

    谢谢,
    Jim

  13. SIYABONGA 2021年9月18日 上午5:07 #


    我该如何绘制 kNN 分类器预测的类别的散点图?

    谢谢你

    此致
    Siya

留下回复

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。