评估支持向量机分类中混淆矩阵和roc曲线的代码
时间: 2023-10-05 15:09:10 浏览: 104
以下是使用Python中的scikit-learn库来评估支持向量机分类模型的混淆矩阵和ROC曲线的示例代码:
```python
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import confusion_matrix, roc_curve, roc_auc_score
import matplotlib.pyplot as plt
# 加载示例数据集
iris = datasets.load_iris()
X = iris.data[:, :2]
y = iris.target
# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# 训练支持向量机分类模型
svm = SVC(kernel='linear', probability=True)
svm.fit(X_train, y_train)
# 预测测试集样本的分类结果
y_pred = svm.predict(X_test)
# 计算混淆矩阵并绘制热力图
cm = confusion_matrix(y_test, y_pred)
plt.imshow(cm, cmap=plt.cm.Blues)
plt.colorbar()
plt.xlabel('Predicted label')
plt.ylabel('True label')
plt.xticks([0, 1, 2], ['Setosa', 'Versicolor', 'Virginica'])
plt.yticks([0, 1, 2], ['Setosa', 'Versicolor', 'Virginica'])
plt.show()
# 计算ROC曲线并绘制
y_pred_proba = svm.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba, pos_label=2)
roc_auc = roc_auc_score(y_test, y_pred_proba)
plt.plot(fpr, tpr, color='darkorange', label='ROC curve (AUC = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
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()
```
这段代码首先加载了scikit-learn库中的iris数据集,然后将数据集拆分为训练集和测试集。接着训练了一个线性核支持向量机分类器,并使用测试集数据进行预测。然后用预测结果计算了混淆矩阵,并将其展示为热力图。最后,使用预测概率值计算了ROC曲线,并绘制在图表上。
阅读全文