朴素贝叶斯python代码
时间: 2023-07-09 16:49:49 浏览: 135
以下是朴素贝叶斯分类器的Python代码:
```
from sklearn.naive_bayes import GaussianNB
# 构建数据集
X = [[1, 2], [2, 3], [3, 1], [4, 3]]
Y = [1, 1, 2, 2]
# 创建朴素贝叶斯分类器
clf = GaussianNB()
# 训练模型
clf.fit(X, Y)
# 预测新数据
print(clf.predict([[2, 2]]))
```
在这个例子中,我们使用 `GaussianNB` 类来创建一个高斯朴素贝叶斯分类器。我们使用一个简单的数据集来训练模型,并使用 `predict` 方法来预测新数据。
相关问题
高斯朴素贝叶斯python代码
高斯朴素贝叶斯是一种基于贝叶斯定理的概率分类算法,常用于文本分类、垃圾邮件过滤等场景。在Python中,我们可以使用scikit-learn库来实现高斯朴素贝叶斯模型。下面是一个简单的例子:
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score
# 加载数据集(这里以Iris数据集为例)
iris = load_iris()
X = iris.data
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建并训练高斯朴素贝叶斯模型
gnb = GaussianNB()
gnb.fit(X_train, y_train)
# 预测测试集
y_pred = gnb.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 使用方法示例(如果需要处理新样本):
# new_data = [[...]] # 新的数据点
# prediction = gnb.predict(new_data)
```
在这个代码片段中,我们首先加载了Iris数据集,然后划分了训练集和测试集,接着创建了一个GaussianNB模型,并使用训练数据对其进行拟合。最后,我们对测试集进行预测,并计算了模型的预测准确率。
朴素贝叶斯python代码实例垃圾邮件
好的,下面是一个朴素贝叶斯分类器的 Python 代码实例,用于分类垃圾邮件和非垃圾邮件:
```python
import os
import io
import numpy as np
import pandas as pd
from collections import Counter
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
# 加载数据集
def load_data(path):
data = []
targets = []
for filename in os.listdir(path):
with io.open(os.path.join(path, filename), 'r', encoding='utf-8', errors='ignore') as f:
data.append(f.read())
if 'spm' in filename:
targets.append(1) # 垃圾邮件
else:
targets.append(0) # 非垃圾邮件
return data, targets
# 将邮件转换为词频向量
def vectorize(data):
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(data)
return X.toarray(), vectorizer.vocabulary_
# 训练模型
def train(X_train, y_train):
clf = MultinomialNB()
clf.fit(X_train, y_train)
return clf
# 测试模型
def test(clf, X_test, y_test):
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
return accuracy, precision, recall, f1
# 主函数
if __name__ == '__main__':
# 加载数据集
data, targets = load_data('./data')
# 将数据集分为训练集和测试集
split_point = int(0.8 * len(data))
X_train, y_train = vectorize(data[:split_point])
X_test, y_test = vectorize(data[split_point:])
# 训练模型
clf = train(X_train, y_train)
# 测试模型
accuracy, precision, recall, f1 = test(clf, X_test, y_test)
print('Accuracy:', accuracy)
print('Precision:', precision)
print('Recall:', recall)
print('F1 Score:', f1)
```
在这个代码实例中,我们使用了 `CountVectorizer` 将邮件转换为词频向量,然后使用 `MultinomialNB` 训练朴素贝叶斯分类器,并测试模型的准确率、精确率、召回率和 F1 Score。
阅读全文