基于支持向量机的鸢尾花分类与ROC曲线分析
基于支持向量机的鸢尾花分类与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()
代码解读:
- 加载数据集并划分训练集和测试集: 我们使用
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值是评估分类模型性能的重要指标,可以帮助我们更好地理解模型的预测能力。
原文地址: https://www.cveoy.top/t/topic/64J 著作权归作者所有。请勿转载和采集!