Python实现朴素贝叶斯(Naive Bayes)算法


下面是一个完整的Python实现朴素贝叶斯(Naive Bayes)算法的代码示例,它涵盖了数据预处理、模型训练和预测等各个方面。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 数据集示例
data = {
    'text': [
        'I love programming',
        'Python is great',
        'I hate bugs',
        'Debugging is fun',
        'I love to solve problems',
        'Python is awesome',
        'I hate errors',
        'Programming is fun'
    ],
    'label': [1, 1, 0, 1, 1, 1, 0, 1]  # 1表示正面,0表示负面
}

df = pd.DataFrame(data)

# 分离特征和标签
X = df['text']
y = df['label']

# 将文本数据转换为词频矩阵
vectorizer = CountVectorizer()
X_vectorized = vectorizer.fit_transform(X)

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_vectorized, y, test_size=0.3, random_state=42)

# 初始化并训练模型
nb_model = MultinomialNB()
nb_model.fit(X_train, y_train)

# 进行预测
y_pred = nb_model.predict(X_test)

# 打印预测结果
print("预测标签:", y_pred)
print("真实标签:", y_test.to_numpy())

# 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

# 输出混淆矩阵
print("混淆矩阵:/n", confusion_matrix(y_test, y_pred))

# 输出分类报告
print("分类报告:/n", classification_report(y_test, y_pred))

解释:

  • CountVectorizer:将文本转化为词频矩阵,使每个单词的出现频率成为特征。
  • MultinomialNB:适用于多项式分布的数据,适用于文本分类任务。
  • train_test_split:将数据集拆分为训练集和测试集。
  • accuracy_scoreconfusion_matrixclassification_report:用于评估模型效果。

你可以根据自己的数据集替换data中的内容,调整相关的特征和标签。

下面是一个完整的Python实现朴素贝叶斯(Naive Bayes)算法的代码示例,它涵盖了数据预处理、模型训练和预测等各个方面。

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report

# 数据集示例
data = {
    'text': [
        'I love programming',
        'Python is great',
        'I hate bugs',
        'Debugging is fun',
        'I love to solve problems',
        'Python is awesome',
        'I hate errors',
        'Programming is fun'
    ],
    'label': [1, 1, 0, 1, 1, 1, 0, 1]  # 1表示正面,0表示负面
}

df = pd.DataFrame(data)

# 分离特征和标签
X = df['text']
y = df['label']

# 将文本数据转换为词频矩阵
vectorizer = CountVectorizer()
X_vectorized = vectorizer.fit_transform(X)

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_vectorized, y, test_size=0.3, random_state=42)

# 初始化并训练模型
nb_model = MultinomialNB()
nb_model.fit(X_train, y_train)

# 进行预测
y_pred = nb_model.predict(X_test)

# 打印预测结果
print("预测标签:", y_pred)
print("真实标签:", y_test.to_numpy())

# 计算模型的准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")

# 输出混淆矩阵
print("混淆矩阵:/n", confusion_matrix(y_test, y_pred))

# 输出分类报告
print("分类报告:/n", classification_report(y_test, y_pred))

解释:

  • CountVectorizer:将文本转化为词频矩阵,使每个单词的出现频率成为特征。
  • MultinomialNB:适用于多项式分布的数据,适用于文本分类任务。
  • train_test_split:将数据集拆分为训练集和测试集。
  • accuracy_scoreconfusion_matrixclassification_report:用于评估模型效果。

你可以根据自己的数据集替换data中的内容,调整相关的特征和标签。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在