用python画DCA临床决策曲线

之前在这抄了一份python画DCA的代码,但是因为网页缩进问题自己摸索了好久。而且代码中有一些细节的地方原作者没有予以标识。这里对这些可能引起错误的地方做出一些说明。
1.输入的格式,pred_ans可以是预测结果(如二分类结果0或1),也可以是预测概率(如二分类结果中,该样本分到阳性的概率0.xxx),Y输入则是测试集的标签。如图所示
在这里插入图片描述

在这里插入图片描述
2.代码中的
jiduan.append((78-(103-78)*pt/(1-pt))/103)
78改为自己测试集标签的阳性数量,103改为自己测试集的总数(也可以小公式搞定但是我懒)

3.代码中ylim改为标签阳性率。

这里写自定义目录标题


def dca(pred_ans, Y):
pt_arr = []
net_bnf_arr = []
jiduan = []
pred_ans = pred_ans.ravel()
for i in range(0,100,1):
pt = i /100
#compiute TP FP
pred_ans_clip = np.zeros(pred_ans.shape[0])
for j in range(pred_ans.shape[0]):
if pred_ans[j] >= pt:
pred_ans_clip[j] = 1
else:
pred_ans_clip[j] = 0
TP = np.sum((Y) * np.round(pred_ans_clip))
FP = np.sum((1 - Y) * np.round(pred_ans_clip))
net_bnf = ( TP-(FP * pt/(1-pt)) )/Y.shape[0]
print(‘pt {}, TP {}, FP {}, net_bf {}’.format(pt,TP,FP,net_bnf))
pt_arr.append(pt)
net_bnf_arr.append(net_bnf)
jiduan.append((78-(103-78)*pt/(1-pt))/103)
plt.plot(pt_arr, net_bnf_arr, color=‘red’, lw=2, linestyle=‘–’,label=‘R H B P ^{HBP} HBP’)
plt.plot(pt_arr, np.zeros(len(pt_arr)), color=‘k’, lw=2, linestyle=‘–’,label=‘None’)
# data_test = data_test.ravel()
pt_np = np.array(pt_arr)
# jiduan = (np.sum(data_test)-(len(data_test)-np.sum(data_test)*pt_np)/(1-pt_np))/len(data_test)
plt.plot(pt_arr, jiduan , color=‘b’, lw=2, linestyle=‘dotted’,label=‘All’)
plt.xlim([0.0, 1.0])
plt.ylim([-0.05, 0.75])
plt.xlabel(‘Risk Threshold’, font1)
plt.ylabel(‘Net Benefit’, font1)
plt.title(‘Validation Dataset’, font1)
plt.legend(loc=“right”)
plt.grid()
# plt.savefig(“DCA.png”)
plt.show()

这里放出截图供大家对着缩进
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值