机器学习算法:朴素贝叶斯|python与r语言代码实现

朴素贝叶斯

它是一种基于贝叶斯定理的分类技术,具有预测者之间的独立性假设。简单地说,朴素贝叶斯分类器假定类中的特定特征的存在与任何其他特征的存在无关。例如,水果如果是红色的、圆的、直径约3英寸的,那么久可以被认为是一个苹果。即使这些特征彼此依赖或存在其他特征,朴素贝叶斯分类器将考虑所有这些属性来独立地区分这种水果是苹果的概率。

朴素贝叶斯模型易于建立,特别适用于非常大的数据集。虽然简单,但朴素贝叶斯是已知的高性能甚至高度复杂的分类方法。

Bayes定理为P(C)、P(X)和P(X,C)的后验概率p(C* x)的计算提供了一种途径。请看下面的方程式:

在这里,

  • P(C x)是给定(属性)的类(目标)的后验概率。
  • P(C)是类的先验概率。
  • P(x,c)是预测给定类的概率。
  • P(x)是预测器的先验概率。

例子:让我们用一个例子来理解它。下面我有一个训练数据集的天气和相应的目标变量“玩”。现在,我们需要根据天气情况来判断玩家是否想玩。让我们按照下面的步骤来执行它。

步骤1:将数据集转换为频率表

步骤二:通过发现阴暗概率=0.29和概率为0.64的概率来创建似然表。

步骤三:使用朴素贝叶斯方程计算每个类的后验概率。具有最高后验概率的类是预测的结果。

问题:如果天气晴朗,玩家会想玩,这个说法是正确的吗?

我们可以用上面讨论的方法求解它,所以P(Yes | Sunny) = P( Sunny | Yes) * P(Yes) / P (Sunny)

这里我们有P (Sunny |Yes) = 3/9 = 0.33, P(Sunny) = 5/14 = 0.36, P( Yes)= 9/14 = 0.64 得出, P (Yes | Sunny) = 0.33 * 0.64 / 0.36 = 0.60,具有较高的概率。

朴素贝叶斯使用类似的方法来预测基于不同属性的不同类别的概率。该算法主要用于文本分类,存在多类问题。

Python 代码

#Import Library
from sklearn.naive_bayes import GaussianNB
#Assumed you have, X (predictor) and Y (target) for training data set and x_test(predictor) of test_dataset
# Create SVM classification object model = GaussianNB() # there is other distribution for multinomial classes like Bernoulli Naive Bayes, Refer link
# Train the model using the training sets and check score
model.fit(X, y)
#Predict Output
predicted= model.predict(x_test)

R 语言代码

library(e1071)
x <- cbind(x_train,y_train)
# Fitting model
fit <-naiveBayes(y_train ~ ., data = x)
summary(fit)
#Predict Output 
predicted= predict(fit,x_test)
THE END