本文实例讲述了PHP实现机器学习之朴素贝叶斯算法。分享给大家供大家参考,具体如下:
机器学习已经在我们的生活中变得随处可见了。比如从你在家的时候温控器开始工作到智能汽车以及我们口袋中的智能手机。机器学习看上去已经无处不在并且是一个非常值得探索的领域。但是什么是机器学习呢?通常来说,机器学习就是让系统不断的学习并且对新的问题进行预测。从简单的预测购物商品到复杂的数字助理预测。
在这篇文章我将会使用朴素贝叶斯算法Clasifier作为一个类来介绍。这是一个简单易于实施的算法,并且可给出满意的结果。但是这个算法是需要一点统计学的知识去理解的。在文章的最后部分你可以看到一些实例代码,甚至自己去尝试着自己做一下你的机器学习。
起步
那么,这个Classifier是要用来实现什么功能呢?其实它主要是用来判断给定的语句是积极地还是消极的。比如,“Symfony is the best”是一个积极的语句,“No Symfony is bad”是一个消极的语句。所以在给定了一个语句之后,我想让这个Classifier在我不给定一个新的规则的情况就返回一个语句类型。
我给Classifier命名了一个相同名称的类,并且包含一个guess方法。这个方法接受一个语句的输入,并且会返回这个语句是积极的还是消极的。这个类就像下面这样:
class Classifier { public function guess($statement) {} }
我更喜欢使用枚举类型的类而不是字符串作为我的返回值。我将这个枚举类型的类命名为Type,并且包含两个常量:一个POSITIVE,一个NEGATIVE。这两个常量将会当做guess方法的返回值。
class Type { const POSITIVE = 'positive'; const NEGATIVE = 'negative'; }
初始化工作已经完成,接下来就是要编写我们的算法进行预测了。
朴素贝叶斯
朴素贝叶斯算法是基于一个训练集合工作的,根据这个训练集从而做出相应的预测。这个算法运用了简单的统计学以及一点数学去进行结果的计算。比如像下面四个文本组成的训练集合:
语句 | 类型 |
Symfony is the best | Positive |
PhpStorm is great | Positive |
Iltar complains a lot | Negative |
No Symfony is bad | Negative |