Невозможно установить xticks для выбора соответствующего порога отсечки - PullRequest
0 голосов
/ 22 марта 2020

На этапе оценки модели я заметил, что моя модель предсказывала значения в диапазоне 30,309 - 59,556 .

Я хотел установить порог, чтобы я мог сказать, что значения, превышающие этот порог, являются правильными, иначе - неправильными.

Я установил другой порог как:

start, stop, step = min(y_pred), max(y_pred)+1, (max(y_pred) - min(y_pred))/10

for i in arange(start, stop, step):
    k.append(round(i, 2))

Это дает мне 10 различных одинаково расположенных интервалов следующим образом:

Thresholds: [30.31, 33.23, 36.16, 39.08, 42.01, 44.93, 47.86, 50.78, 53.71, 56.63, 59.56]

Я выполнил оценку модели на этих порогах и результаты таковы:

Sensitivity: [1.0, 0.999, 0.983, 0.866, 0.497, 0.197, 0.093, 0.036, 0.007, 0.0, 0.0]
Specificity: [0.0, 0.0, 0.003, 0.027, 0.172, 0.576, 0.845, 0.915, 0.971, 0.997, 1.0]

Чувствительность изменяется от 1 до 0, где специфичность от 0 до 1.

Я строю их, и результаты выглядят следующим образом:

fig = plt.figure(facecolor='white', figsize=(18, 4))
plt.title("Sensitivity vs Specificiy")
plt.plot(sensitivity, c='red')
plt.plot(specificity, c='Green')
plt.legend(['Sensitivity','Specificity'])
plt.grid(True)
plt.show()

enter image description here

Но я хочу, чтобы ось x показывала порог вместо цифр от 0 до 10.

Я пытался установить Тем не менее, следующие результаты:

fig = plt.figure(facecolor='white', figsize=(18, 4))
plt.title("Sensitivity vs Specificiy")
plt.plot(sensitivity, c='red')
plt.plot(specificity, c='Green')
plt.legend(['Sensitivity','Specificity'])
**plt.xticks(k)**
plt.grid(True)
plt.show()

enter image description here Где я совершаю ошибку?

1 Ответ

1 голос
/ 22 марта 2020

Вместо того, чтобы строить sensitivity и specificity как 1D-графики, вы можете построить их против thresholds как 2D-графики. Просто добавьте его как ось х к вашим графикам.

fig = plt.figure(facecolor='white', figsize=(18, 4))
plt.title("Sensitivity vs Specificiy")
plt.plot(thresholds, sensitivity, c='red')
plt.plot(thresholds, specificity, c='Green')
plt.legend(['Sensitivity','Specificity'])
plt.grid(True)
plt.show()

Результаты приведены ниже. enter image description here

...