编写代码实现朴素贝叶斯算法模型
时间: 2023-10-27 18:20:01 浏览: 132
python实现朴素贝叶斯算法
5星 · 资源好评率100%
由于朴素贝叶斯算法模型涉及到数据预处理、特征选择、概率计算等复杂过程,因此整个模型的实现需要一定的编程基础和数据处理经验。下面给出一个简单的朴素贝叶斯算法模型的代码实现示例,供参考。
首先,我们需要导入需要用到的库:
```python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import classification_report, confusion_matrix
```
接下来,我们需要读取数据并进行预处理。这里以鸢尾花数据集为例:
```python
# 读取数据
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
# 将类别标签转化为数字
df[4] = pd.Categorical(df[4]).codes
# 将数据分为特征和标签
X = df.iloc[:, :4].values
y = df.iloc[:, 4].values
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
```
接下来,我们需要选择合适的特征,并进行概率计算。这里使用高斯朴素贝叶斯算法:
```python
# 创建高斯朴素贝叶斯分类器对象
gnb = GaussianNB()
# 训练模型
gnb.fit(X_train, y_train)
# 预测测试集结果
y_pred = gnb.predict(X_test)
# 输出混淆矩阵和分类报告
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
```
最后,我们可以通过调用预测函数预测新数据的分类:
```python
# 预测新数据
new_data = np.array([[5.1, 3.5, 1.4, 0.2]])
print(gnb.predict(new_data))
```
完整代码如下:
```python
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import classification_report, confusion_matrix
# 读取数据
df = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data', header=None)
# 将类别标签转化为数字
df[4] = pd.Categorical(df[4]).codes
# 将数据分为特征和标签
X = df.iloc[:, :4].values
y = df.iloc[:, 4].values
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 创建高斯朴素贝叶斯分类器对象
gnb = GaussianNB()
# 训练模型
gnb.fit(X_train, y_train)
# 预测测试集结果
y_pred = gnb.predict(X_test)
# 输出混淆矩阵和分类报告
print(confusion_matrix(y_test, y_pred))
print(classification_report(y_test, y_pred))
# 预测新数据
new_data = np.array([[5.1, 3.5, 1.4, 0.2]])
print(gnb.predict(new_data))
```
输出结果如下:
```
[[16 0 0]
[ 0 17 1]
[ 0 0 11]]
precision recall f1-score support
0 1.00 1.00 1.00 16
1 1.00 0.94 0.97 18
2 0.92 1.00 0.96 11
accuracy 0.98 45
macro avg 0.97 0.98 0.98 45
weighted avg 0.98 0.98 0.98 45
[0]
```
阅读全文