要绘制朴素贝叶斯和支持向量机分类器的准确率曲线,需要进行以下步骤:
- 导入必要的库:matplotlib、numpy、sklearn中的朴素贝叶斯和支持向量机分类器等。
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
- 加载数据集:在这个示例中,我们将使用sklearn自带的鸢尾花数据集。
iris = datasets.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)
svm = SVC()
svm.fit(X_train, y_train)
- 绘制准确率曲线:使用不同的测试数据集大小来计算准确率,并将结果绘制成曲线。
test_sizes = np.linspace(0.1, 1.0, num=10)
gnb_scores = []
svm_scores = []
for size in test_sizes:
X_test_subset, _, y_test_subset, _ = train_test_split(X_test, y_test, test_size=size, random_state=42)
gnb_pred = gnb.predict(X_test_subset)
gnb_scores.append(accuracy_score(y_test_subset, gnb_pred))
svm_pred = svm.predict(X_test_subset)
svm_scores.append(accuracy_score(y_test_subset, svm_pred))
plt.plot(test_sizes, gnb_scores, label='Naive Bayes')
plt.plot(test_sizes, svm_scores, label='SVM')
plt.xlabel('Test Set Size')
plt.ylabel('Accuracy Score')
plt.legend()
plt.show()
这段代码将在x轴上以测试数据集大小的比例为单位,在y轴上以准确率为单位绘制朴素贝叶斯和支持向量机分类器的准确率曲线。