基于支持向量机的鸢尾花分类与ROC曲线分析

本文将介绍如何使用支持向量机 (SVM) 对经典的鸢尾花数据集进行分类,并利用ROC曲线评估模型性能。

**代码实现:**pythonfrom sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.svm import SVCfrom sklearn.metrics import accuracy_score, roc_curve, roc_auc_scoreimport matplotlib.pyplot as plt

加载鸢尾花数据集iris = load_iris()

划分数据集为训练集和测试集X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

创建SVC模型并进行训练model = SVC(probability=True)model.fit(X_train, y_train)

在测试集上进行预测y_pred = model.predict(X_test)

计算准确率accuracy = accuracy_score(y_test, y_pred)print('准确率:', accuracy)

获取每个类别的概率y_prob = model.predict_proba(X_test)

计算ROC曲线和AUC值 (以第三个类别为例)fpr, tpr, thresholds = roc_curve(y_test, y_prob[:, 2], pos_label=2)roc_auc = roc_auc_score(y_test, y_prob[:, 2])print('AUC值:', roc_auc)

绘制ROC曲线plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)plt.plot([0, 1], [0, 1], 'k--')plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('Receiver Operating Characteristic')plt.legend(loc='lower right')plt.show()

代码解读:

  1. 加载数据集并划分训练集和测试集: 我们使用 sklearn.datasets 中的 load_iris() 函数加载鸢尾花数据集,并使用 train_test_split() 函数将数据集划分为训练集和测试集。2. 创建SVC模型并训练: 我们使用 sklearn.svm 中的 SVC 类创建一个支持向量机模型,并使用训练集对其进行训练。3. 预测和评估: 使用训练好的模型对测试集进行预测,并计算准确率。4. 计算ROC曲线和AUC值: 使用 predict_proba() 方法获取每个类别的预测概率,然后使用 roc_curve()roc_auc_score() 函数计算ROC曲线和AUC值。5. 绘制ROC曲线: 使用 matplotlib 库绘制ROC曲线。

总结:

本文介绍了如何使用支持向量机进行鸢尾花分类,并使用ROC曲线评估模型性能。ROC曲线和AUC值是评估分类模型性能的重要指标,可以帮助我们更好地理解模型的预测能力。

基于支持向量机的鸢尾花分类与ROC曲线分析

原文地址: https://www.cveoy.top/t/topic/64J 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录