
下面是一个完整的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_score
、confusion_matrix
、classification_report
:用于评估模型效果。
你可以根据自己的数据集替换data
中的内容,调整相关的特征和标签。