支持向量机模型评估绘制ROC曲线的代码实现
时间: 2023-10-07 21:08:34 浏览: 164
好的,以下是支持向量机模型评估绘制ROC曲线的代码实现:
```python
from sklearn import svm
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
import numpy as np
# 加载数据
X = np.loadtxt('data.txt', delimiter=',', usecols=(0, 1)) # 特征
y = np.loadtxt('data.txt', delimiter=',', usecols=2) # 标签
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# SVM模型训练
clf = svm.SVC(kernel='linear', probability=True)
clf.fit(X_train, y_train)
# 测试集预测
y_score = clf.predict_proba(X_test)[:, 1] # 获取预测概率
# 计算ROC曲线和AUC值
fpr, tpr, thresholds = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)
# 绘制ROC曲线
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, 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()
```
其中,`data.txt` 文件中包含特征和标签数据,`train_test_split` 函数用于划分训练集和测试集,`svm.SVC` 函数用于定义SVM模型,`predict_proba` 函数用于获取预测概率,`roc_curve` 函数用于计算ROC曲线,`auc` 函数用于计算AUC值,最后用 `matplotlib` 库绘制ROC曲线。
阅读全文