基于Python将数据集按照科学方法(如:二八原则),划分为训练集和测试集并利用朴素贝叶斯模型预测测试集上的数据类别,并计算准确率(accuracy)、精确率(precision)、召回率(recall)、F1值,给出具体可运行代码
时间: 2024-09-12 17:11:26 浏览: 46
基于Python,我们可以使用`sklearn`库中的功能来完成这个任务。首先,我们利用`train_test_split`函数将数据集按照二八原则(即80%训练集和20%测试集)进行划分,接着使用朴素贝叶斯模型进行训练和预测,最后计算准确率、精确率、召回率和F1值。以下是一个示例代码:
```python
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
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)
# 初始化朴素贝叶斯模型
gnb = GaussianNB()
# 训练模型
gnb.fit(X_train, y_train)
# 预测测试集
y_pred = gnb.predict(X_test)
# 计算性能指标
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred, average='weighted')
recall = recall_score(y_test, y_pred, average='weighted')
f1 = f1_score(y_test, y_pred, average='weighted')
print(f"准确率(Accuracy): {accuracy:.2f}")
print(f"精确率(Precision): {precision:.2f}")
print(f"召回率(Recall): {recall:.2f}")
print(f"F1值(F1 Score): {f1:.2f}")
```
在这段代码中,我们首先导入必要的库和函数,然后加载`iris`数据集作为示例。通过`train_test_split`函数,我们按照80%和20%的比例将数据分为训练集和测试集。接着,我们创建一个朴素贝叶斯分类器`GaussianNB`,使用训练集对其进行训练,并在测试集上进行预测。最后,使用`sklearn.metrics`中的函数计算并打印出准确率、精确率、召回率和F1值。
阅读全文