如何使用算法KNeighborsClassifier绘制多条ROC曲线?我想绘制不同k的ROC曲线。
这就是我所拥有的,但它会绘制不同的数字,我想将所有这些结合起来
k_range = range(1, 20)
for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
model = knn.fit(X_train, Y_train)
y_predict_proba = model.predict_proba(X_test).tolist()
probabilities = np.array(y_predict_proba)[:, 1]
fpr, tpr, _ = roc_curve(Y_test, probabilities)
# roc_auc = (auc(fpr, tpr))
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend(loc="lower right")
plt.show()
答案 0 :(得分:0)
我弄清楚出了什么问题,万一有人会想要这样做:
for k in k_range:
knn = KNeighborsClassifier(n_neighbors=k)
model = knn.fit(X_train, Y_train)
y_predict_proba = model.predict_proba(X_test).tolist()
probabilities = np.array(y_predict_proba)[:, 1]
fpr, tpr, _ = roc_curve(Y_test, probabilities)
roc_auc = auc(fpr, tpr)
color = ['blue', 'orange', 'red', 'green', 'coral',
'grey', 'indigo', 'gold', 'lime', 'olive',
'pink', 'navy', 'magenta', 'yellow', 'tomato',
'turquoise', 'yellowgreen', 'maroon', 'lightblue']
plt.plot(fpr, tpr, color=color[k - 1], lw=1, label='ROC (area = %f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([-0.05, 1.05])
plt.ylim([-0.05, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend(loc="lower right")
plt.show()