朴素贝叶斯分类器python代码
时间: 2023-11-12 22:57:04 浏览: 174
朴素贝叶斯分类器(Naive Bayes Classifier)是一种常见的机器学习算法,用于分类问题。下面是一个简单的朴素贝叶斯分类器的Python代码示例:
```python
from sklearn.naive_bayes import GaussianNB
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_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)
# 创建模型并训练
model = GaussianNB()
model.fit(X_train, y_train)
# 预测测试集
y_pred = model.predict(X_test)
# 输出预测结果
print("预测结果:", y_pred)
```
相关问题
朴素贝叶斯分类器python代码实现
朴素贝叶斯分类器是一种基于贝叶斯定理和特征条件独立假设的分类方法,适用于文本分类、垃圾邮件过滤、情感分析等领域。
以下是使用Python实现朴素贝叶斯分类器的代码示例:
```python
import numpy as np
class NaiveBayes:
def __init__(self):
self.classes = None
self.class_priors = None
self.feature_probs = None
def fit(self, X, y):
# 获取类别
self.classes = np.unique(y)
n_classes = len(self.classes)
# 计算每个类别的先验概率
self.class_priors = np.zeros(n_classes)
for i, c in enumerate(self.classes):
self.class_priors[i] = np.sum(y == c) / float(len(y))
# 计算每个类别下每个特征的条件概率
n_features = X.shape
self.feature_probs = np.zeros((n_classes, n_features, 2))
for i, c in enumerate(self.classes):
X_c = X[y == c]
for j in range(n_features):
self.feature_probs[i, j, 0] = np.sum(X_c[:, j] == 0) / float(len(X_c))
self.feature_probs[i, j, 1] = np.sum(X_c[:, j] == 1) / float(len(X_c))
def predict(self, X):
y_pred = []
for x in X:
probs = []
for i, c in enumerate(self.classes):
# 计算后验概率
posterior_prob = np.log(self.class_priors[i])
for j in range(len(x)):
posterior_prob += np.log(self.feature_probs[i, j, x[j]])
probs.append(posterior_prob)
# 取最大后验概率对应的类别作为预测结果
y_pred.append(self.classes[np.argmax(probs)])
return y_pred
```
以上代码实现了一个简单的朴素贝叶斯分类器,其中`fit`方法用于训练模型,`predict`方法用于预测新样本的类别。在训练过程中,先计算每个类别的先验概率,然后计算每个类别下每个特征的条件概率。在预测过程中,计算每个类别的后验概率,取最大后验概率对应的类别作为预测结果。
用西瓜数据集3.0训练一个朴素贝叶斯分类器python代码
以下是一个使用西瓜数据集3.0训练朴素贝叶斯分类器的Python代码示例:
```python
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, classification_report
# 加载西瓜数据集3.0
data = pd.read_csv('watermelon3.csv')
# 特征和标签
X = data.drop('label', axis=1)
y = data['label']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 初始化朴素贝叶斯分类器(高斯朴素贝叶斯)
gnb = GaussianNB()
# 训练模型
gnb.fit(X_train, y_train)
# 预测
y_pred = gnb.predict(X_test)
# 评估模型
print("Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:\n", classification_report(y_test, y_pred))
```
这段代码做了以下几件事:
1. 导入必要的库,包括pandas用于数据处理,sklearn用于模型训练和评估。
2. 加载西瓜数据集3.0(假设文件名为watermelon3.csv)。
3. 分离特征(X)和标签(y)。
4. 将数据集划分为训练集和测试集,测试集占30%。
5. 初始化高斯朴素贝叶斯分类器。
6. 使用训练数据拟合模型。
7. 对测试数据进行预测。
8. 评估模型性能,包括准确率和详细的分类报告。
阅读全文
相关推荐











