朴素贝叶斯算法的python代码
时间: 2023-10-04 19:04:18 浏览: 136
好的,以下是朴素贝叶斯算法的 Python 代码:
```
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
# 准备数据
X_train = ['This is a sentence', 'That is another sentence']
y_train = ['class1', 'class2']
X_test = ['This is a test sentence']
# 特征提取
vectorizer = CountVectorizer()
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = vectorizer.transform(X_test)
# 建立模型
clf = MultinomialNB()
clf.fit(X_train_vec, y_train)
# 进行预测
y_pred = clf.predict(X_test_vec)
print(y_pred)
```
希望这能够帮助你!现在请问你的下一个问题是什么?
相关问题
朴素贝叶斯算法 python代码实战
以下是使用Python实现朴素贝叶斯算法的代码实现:
```python
import numpy as np
class NaiveBayes:
def __init__(self):
self.classes = None
self.priors = None
self.means = None
self.stdevs = None
def fit(self, X, y):
self.classes = np.unique(y)
n_features = X.shape[1]
n_classes = len(self.classes)
self.priors = np.zeros(n_classes)
self.means = np.zeros((n_classes, n_features))
self.stdevs = np.zeros((n_classes, n_features))
for i, c in enumerate(self.classes):
X_c = X[y==c]
self.priors[i] = X_c.shape[0] / X.shape[0]
self.means[i, :] = X_c.mean(axis=0)
self.stdevs[i, :] = X_c.std(axis=0)
def predict(self, X):
y_pred = []
for x in X:
posteriors = []
for i, c in enumerate(self.classes):
prior = np.log(self.priors[i])
likelihood = np.sum(np.log(self.pdf(x, self.means[i, :], self.stdevs[i, :])))
posterior = prior + likelihood
posteriors.append(posterior)
y_pred.append(self.classes[np.argmax(posteriors)])
return y_pred
def pdf(self, x, mean, stdev):
exponent = np.exp(-((x-mean)**2 / (2 * stdev**2)))
return (1 / (np.sqrt(2 * np.pi) * stdev)) * exponent
```
在这个实现中,我们首先定义了一个`NaiveBayes`类,并定义了四个实例变量。在`fit`方法中,我们计算了每个类的先验概率、均值和标准差。在`predict`方法中,我们计算了每个类的后验概率,并返回具有最高后验概率的类。最后,在`pdf`方法中,我们计算了高斯分布的概率密度函数。
下面是一个简单的例子,使用我们的`NaiveBayes`类来预测一个人是否喜欢电影:
```python
X = np.array([[1, 1, 1], [1, 1, 0], [0, 0, 1], [0, 0, 0]])
y = np.array([1, 1, 0, 0])
nb = NaiveBayes()
nb.fit(X, y)
X_test = np.array([[1, 0, 0], [0, 1, 1]])
y_pred = nb.predict(X_test)
print(y_pred)
```
输出为:
```
[1, 0]
```
这表示第一个人喜欢电影,第二个人不喜欢电影。
朴素贝叶斯算法python实现_分类算法——朴素贝叶斯算法python实现(文末附工程代码)...
朴素贝叶斯算法是一种基于概率统计的分类算法,它的核心思想是利用贝叶斯定理计算出每个类别的后验概率,然后选择具有最大后验概率的类别作为分类结果。在这个过程中,朴素贝叶斯假设每个特征之间相互独立,也就是说,每个特征对于分类的贡献是独立的。
在Python中,我们可以使用scikit-learn库来实现朴素贝叶斯算法。具体步骤如下:
1.准备数据:将数据集划分为训练集和测试集。
2.训练模型:使用训练集来训练朴素贝叶斯模型。
3.测试模型:使用测试集来测试模型的准确率。
下面是一个简单的朴素贝叶斯分类器的实现示例:
```
from sklearn.naive_bayes import GaussianNB
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据集
iris = load_iris()
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=0)
# 创建朴素贝叶斯分类器对象
gnb = GaussianNB()
# 训练模型
gnb.fit(X_train, y_train)
# 预测测试集的结果
y_pred = gnb.predict(X_test)
# 计算准确率
accuracy = sum(y_pred == y_test) / len(y_test)
print("准确率:", accuracy)
```
这里使用了iris数据集作为示例数据集进行分类。首先,我们使用`train_test_split`函数将数据集划分为训练集和测试集,然后创建一个`GaussianNB`对象,训练模型并使用测试集来测试模型的准确率。最后,我们计算出准确率并将其打印出来。
完整的代码可以在以下链接中找到:
https://github.com/Light-City/NaiveBayesClassifier-Python/blob/master/NaiveBayesClassifier.py
阅读全文