互联网技术 / 互联网资讯 · 2024年1月25日

Python实现机器学习的简单方法

用朴素贝叶斯分类器解决现实世界里的机器学习问题。

朴素贝叶斯Na&iuMl;ve Bayes是一种分类技术,它是许多分类器建模算法的基础。基于朴素贝叶斯的分类器是简单、快速和易用的机器学习技术之一,而且在现实世界的应用中很有效。

朴素贝叶斯是从贝叶斯定理Bayes”” theoReM发展来的。贝叶斯定理由18世纪的统计学家托马斯&Middot;贝叶斯提出,它根据与一个事件相关联的其他条件来计算该事件发生的概率。比如,帕金森氏病患者通常嗓音会发生变化,因此嗓音变化就是与预测帕金森氏病相关联的症状。贝叶斯定理提供了计算目标事件发生概率的方法,而朴素贝叶斯是对该方法的推广和简化。

解决一个现实世界里的问题

这篇文章展示了朴素贝叶斯分类器解决现实世界问题的能力。我会假设你对机器学习有基本的了解,所以文章里会跳过一些与机器学习预测不大相关的步骤,比如数据打乱和数据切片。如果你是机器学习方面的新手或者需要一个进修课程,请查看《An intRodUCtion to MacHine learning TODay》和《Getting staRted wITh open souRce MacHine leaRning》。

朴素贝叶斯分类器是有监督的、属于生成模型的、非线性的、属于参数模型的和基于概率的。

在这篇文章里,我会演示如何用朴素贝叶斯预测帕金森氏病。需要用到的数据集来自UCI机器学习库。这个数据集包含许多语音信号的指标,用于计算患帕金森氏病的可能性;在这个例子里我们将使用这些指标中的前8个:

MDVP:Fo(Hz):平均声带基频 MDVP:FHi(Hz):最高声带基频 MDVP:Flo(Hz):最低声带基频 MDVP:JITteR(%)、MDVP:JITteR(Abs)、MDVP:RAP、MDVP:PPQ和JITteR:DDP:5个衡量声带基频变化的指标

这个例子里用到的数据集,可以在我的GITHub仓库里找到。数据集已经事先做了打乱和切片。

用Python实现机器学习

接下来我会用Python来解决这个问题。我用的软件是:

Python 3.8.2 Pandas 1.1.1 scikIT-leaRn 0.22.2.post1

Python有多个朴素贝叶斯分类器的实现,都是开源的,包括:

NLTK Na&iuMl;ve Bayes:基于标准的朴素贝叶斯算法,用于文本分类 NLTK PosITive Na&iuMl;veBayes:NLTK Na&iuMl;ve Bayes的变体,用于对只标注了一部分的训练集进行二分类 ScikIT-leaRn GauSSian Na&iuMl;veBayes:提供了部分拟合方法来支持数据流或很大的数据集(LCTT译注:它们可能无法一次性导入内存,用部分拟合可以动态地增加数据) ScikIT-leaRn MultinoMial Na&iuMl;ve Bayes:针对离散型特征、实例计数、频率等作了优化 ScikIT-leaRn BeRnoulli Na&iuMl;ve Bayes:用于各个特征都是二元变量/布尔特征的情况

在这个例子里我将使用skleaRn GauSSian NAIve Bayes。

我的Python实现在nAIve_bayes_paRkinsons.py里,如下所示:

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.