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

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里,如下所示: