无法设置 xticks 以选择适当的截止阈值
Unable to set xticks for selecting appropriate cut-off threshold
在模型评估阶段,我观察到我的模型预测值在 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()
但我希望 x 轴应该显示阈值而不是 0 到 10 之间的数字。
我尝试设置了 xticks 但结果如下:
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()
我在哪里犯了错误?
您可以将 sensitivity
和 specificity
绘制为一维图,而不是将它们绘制为二维图 thresholds
。只需将它作为 x 轴添加到您的绘图中即可。
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()
结果如下。
在模型评估阶段,我观察到我的模型预测值在 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()
但我希望 x 轴应该显示阈值而不是 0 到 10 之间的数字。
我尝试设置了 xticks 但结果如下:
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()
您可以将 sensitivity
和 specificity
绘制为一维图,而不是将它们绘制为二维图 thresholds
。只需将它作为 x 轴添加到您的绘图中即可。
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()
结果如下。