P(后|红) = P(后∩红)/ P(红)
P(女王|红色)= 2/26 = 0.077
贝叶斯定理(Bayes' law | Bayes' rule): 以托马斯贝叶斯命名。贝叶斯定理描述了基于一些先验条件的事件概率。
Bayes’ Theorem
其中 A 和 B 是事件,P(B) ≠0
P(A|B) 是 条件概率 :在 B 为真的情况下,事件 A 发生的概率。它也被称为 后验概率 .
P(B|A) 也是一个 条件概率 :在 A 为真的情况下,事件 B 发生的概率。它也被称为 似然概率 .
P(A) 是 先验概率。
P(B) 是 边际概率。
朴素贝叶斯的假设: 朴素贝叶斯的基本假设是每个特征 独立平等 对结果的贡献。让我们考虑一个示例以便更好地理解。考虑具有 Outlook 和 Temperature 功能的天气预报问题,目标列 Play 可以是“Yes”或“No”。
Dataset
基于朴素贝叶斯的假设,我们假设特征彼此独立并且每个特征具有相同的重要性。例如,仅了解 Outlook 和温度并不能完美地预测结果。因此,假定所有属性的贡献相同。
在这个例子中,我们需要 根据天气的特点,对天气是否适合玩进行分类。 根据我们的例子,贝叶斯定理可以写成:
其中 y 是目标列,Play 和 X 是特征。 X 给出为:
其中 x1, x2,…xn 代表特征。通过代入 X 的值并使用链式法则展开我们得到,
由于给定数据集的分母相同,因此我们可以使用比例常数将其删除,并可以给出:
在我们的例子中,目标列只有两个结果,“是”和“否”,但如果结果是多变量的,我们必须找到具有最大概率的类。
所以现在我们必须计算 P(y)、类概率和 P(Xi|y) 即条件概率。让我们尝试计算 Outlook 和 Temperature 列的频率和可能性。
今天在一组新数据上测试一下=(晴天,热)
P(是|今天) = P(晴|是)*P(热|是)*P(是)
= 1/8*1/8*8/12
= 0.0104 P(无|今天) = P(晴|无)*P(热|无)*P(无)
= 1*1/2*4/12
= 0.1667
P(是|今天)+ P(否|今天)= 1
P(是|今天) = 0.0104/(0.0104+0.1667)
= 0.06
P(否|今天) = 0.1667/(0.0104+0.1667)
= 0.94
由于 P(No|today) > P(Yes|today),所以天气不适合玩。
朴素贝叶斯分类器的类型:
多项朴素贝叶斯分类器: 广泛用于自然语言处理(NLP)任务。它使用贝叶斯定理预测文本的标签,并计算给定样本的每个标签的可能性,并以更大的概率输出标签。
伯努利朴素贝叶斯分类器: 在伯努利朴素贝叶斯分类器中,预测变量是独立的布尔变量。它用于文档分类,其中使用二进制术语出现(文档中是否存在单词)而不是术语频率。
高斯朴素贝叶斯分类器: 在高斯朴素贝叶斯中,假设与每个特征相关的连续值按照高斯分布(正态分布)分布。高斯朴素贝叶斯的条件概率由下式给出:
使用最大似然估计参数 σy 和 μy。
朴素贝叶斯分类器的优点:
适用于具有许多特征的数据。
与其他算法相比,它在多类预测中表现良好。
当我们训练模型时它收敛得更快
朴素贝叶斯分类器的缺点: 它假设所有特征都是独立的,或者它们之间没有影响性能的相关性。
朴素贝叶斯分类器的应用:
文本分类如 垃圾邮件检测 和 情绪分析 .
它可用于 文件分类。
它可以用于 实时预测 因为朴素贝叶斯分类器是一个热切的学习者。
使用 Python 实现朴素贝叶斯分类器
我们必须在泰坦尼克号数据集中找到乘客是否幸存。
# 导入必要的库 将熊猫导入为 pd
将 matplotlib.pyplot 导入为 plt #加载csv文件
df = pd.read_csv('titanic_dataset.csv')
df.sample(5) df.drop(['PassengerId','Name','SibSp','Parch','Ticket','Cabin','Embarked'],axis='columns',inplace=True)
df['Sex'] = df['Sex'].apply(lambda x:1 if x=='male' else 0)
df.head()
# 检查缺失值
df.isnull().sum()
# 检查异常值
将 seaborn 导入为 sns
sns.boxplot(df['年龄'])
BoxPlot
由于我们在 Age 列中有 177 个缺失值,并且也很少有异常值,因此我们将用中位数而不是均值替换空值。
df['年龄'] = df.Age.fillna(df.Age.median())
X = df.drop('幸存者',axis=1)
y = df['幸存的'] #将数据吐到训练/测试中 从 sklearn.model_selection 导入 train_test_split
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,stratify=y) 从 sklearn.naive_bayes 导入 GaussianNB
gnb = GaussianNB()
gnb.fit(X_train,y_train) gnb.score(X_test, y_test) y_pred = gnb.predict(X_test) 从 sklearn.metrics 导入混淆矩阵
厘米 = 混淆矩阵(y_test,y_pred)
综上所述,在本文中,我们了解了条件概率,如何在朴素贝叶斯算法中使用贝叶斯定理,朴素贝叶斯的优缺点及其应用。对于实际实施,请访问我的 GitHub 存储库。
希望你喜欢它!快乐学习。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明
本文链接:https://www.qanswer.top/40056/25043017