赞
踩
朴素贝叶斯(Naive Bayes) 是一种基于贝叶斯定理的简单而强大的分类算法,特别适用于文本分类等高维数据集。它被称为“朴素”,因为它假设特征之间是相互独立的,这在现实中可能不完全成立,但这种假设在许多实际应用中表现出令人惊讶的有效性。
贝叶斯定理描述了在给定条件下事件发生的概率,公式如下:
P ( C ∣ X ) = P ( X ∣ C ) ⋅ P ( C ) P ( X ) P(C|X) = \frac{P(X|C) \cdot P(C)}{P(X)} P(C∣X)=P(X)P(X∣C)⋅P(C)
朴素贝叶斯的“朴素”假设是,特征之间是条件独立的,即:
P ( X ∣ C ) = P ( x 1 ∣ C ) ⋅ P ( x 2 ∣ C ) ⋅ … ⋅ P ( x n ∣ C ) P(X|C) = P(x_1|C) \cdot P(x_2|C) \cdot \ldots \cdot P(x_n|C) P(X∣C)=P(x1∣C)⋅P(x2∣C)⋅…⋅P(xn∣C)
其中, X = ( x 1 , x 2 , … , x n ) X = (x_1, x_2, \ldots, x_n) X=(x1,x2,…,xn) 表示特征向量的每一个特征。
计算先验概率 (P©):
计算条件概率 (P(X|C)):
计算后验概率 (P(C|X)):
分类决策:
高斯朴素贝叶斯(Gaussian Naive Bayes):
多项式朴素贝叶斯(Multinomial Naive Bayes):
伯努利朴素贝叶斯(Bernoulli Naive Bayes):
优点:
缺点:
sklearn
):import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import accuracy_score, classification_report # 示例数据:假设这是文本分类任务的词频矩阵 data = { 'word1': [1, 2, 0, 1, 0], 'word2': [0, 1, 0, 1, 2], 'word3': [0, 0, 1, 2, 1], 'word4': [1, 0, 2, 1, 1], 'class': [0, 1, 0, 1, 0] } df = pd.DataFrame(data) # 特征和标签 X = df.drop(columns='class') y = df['class'] # 分割数据集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 初始化并训练朴素贝叶斯模型 model = MultinomialNB() model.fit(X_train, y_train) # 预测和评估 y_pred = model.predict(X_test) print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}") print(classification_report(y_test, y_pred))
MultinomialNB
类初始化并训练一个多项式朴素贝叶斯模型。朴素贝叶斯是一种简单而高效的分类算法,特别适用于文本分类和高维数据。尽管它的独立性假设可能在现实中不成立,但在许多实际应用中,朴素贝叶斯仍能表现出色。它的实现简单,计算复杂度低,适合处理大规模数据集,是许多应用中的首选模型之一。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。