我正試圖評估在3D MRI卷(大腦)中分割區域的算法的準確性。我一直在使用Dice,Jaccard,FPR,TNR,Precision ...等,但我只是按像素進行的(I.E. FNs =假負像素數)。是否有一個python軟件包(或僞代碼)在病變級別執行此操作?例如,計算TP作爲我的算法檢測到的病變數(grd trth中的3d斷開連接的對象)?通過這種方式,病變的大小對準確度指標的影響不大。MRI數據中斷開連接的對象的評估指標
-1
A
回答
1
0
這裏是我最終寫的代碼來完成這項任務。請讓我知道是否有人看到任何錯誤。
def distance(p1, p2,dim):
if dim==2: return math.sqrt((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2)
elif dim==3: return math.sqrt((p2[0] - p1[0])**2 + (p2[1] - p1[1])**2+ (p2[2] - p1[2])**2)
else: print 'error'
def closest(true_cntrd,pred_pts,dim):
dist_list=[]
for pred_pt in pred_pts:
dist_list.append(distance(true_cntrd, pred_pt,dim))
min_idx = np.argmin(dist_list)
return pred_pts[min_idx],min_idx
def eval_disconnected(y_true,y_pred,dim):
y_pred=y_pred>0.5
label_pred, numobj_pred = label(y_pred)
label_true, numobj_true = label(y_true)
true_labels,pred_labels=np.arange(numobj_true+1)[1:],np.arange(numobj_pred+1)[1:]
true_centroids=center_of_mass(y_true,label_true,true_labels)
pred_centroids=center_of_mass(y_pred,label_pred,pred_labels)
if len(pred_labels)==0:
TP,FN,FP=0,len(true_centroids),0
return TP,FN,FP
true_lbl_hit_list=[]
pred_lbl_hit_list=[]
for (cntr_true,lbl_t) in zip(true_centroids,np.arange(numobj_true+1)[1:]):
closest_pred_cntr,idx = closest(cntr_true,pred_centroids,dim)
closest_pred_cntr=tuple(int(coor) for coor in closest_pred_cntr)
if label_true[closest_pred_cntr]==lbl_t:
true_lbl_hit_list.append(lbl_t)
pred_lbl_hit_list.append(pred_labels[idx] )
pred_lbl_miss_list = [pred_lbl for pred_lbl in pred_labels if not(pred_lbl in pred_lbl_hit_list)]
true_lbl_miss_list = [true_lbl for true_lbl in true_labels if not(true_lbl in true_lbl_hit_list)]
TP=len(true_lbl_hit_list) # all the grd truth labels that were predicted
FN=len(true_lbl_miss_list) # all the grd trth labels that were missed
FP=len(pred_lbl_miss_list) # all of the predicted labels that didn't hit
return TP,FN,FP
相關問題
- 1. 更新斷開連接的對象圖
- 2. 模型OCL評估與對象評估
- 3. R包函數中的標準評估與非標準評估
- 4. 斷開連接的數據集
- 5. 使用斷開連接的數據
- 6. 斷開與數據庫的連接
- 7. VBA評估指標匹配
- 8. 評估VHDL中的指數函數
- 9. 評估/診斷時間連接在建立之前在SYN_RECV中
- 10. 評估在指令中傳遞的對象
- 11. 斷開pycurl中的連接
- 12. Nhibernate - 在斷開連接的會話中引用瞬態對象
- 13. 在沒有對象的情況下評估(評估itemText.style)
- 14. 如何從連接池中刪除斷開的連接對象?使用c3p0
- 15. 在Keras中預測和評估指標
- 16. 評估對象爲布爾
- 17. AngularJS評估遞延對象
- 18. 什麼數據結構用於對象的評估順序?
- 19. 數據集如何斷開連接?
- 20. OOP數據庫連接/斷開類
- 21. 如何在評估中檢索評估者的數據?
- 22. 數組指針評估
- 23. 評估數據集中的數字
- 24. 開關評估
- 25. Keil MCB1700評估板的軟件中斷
- 26. php mysql斷開連接是否真的斷開連接?
- 27. 如何在ng-Class指令中評估範圍對象?
- 28. 什麼是Marketo的評估對象?
- 29. 評估字符串對象(JavaScript)的
- 30. jQuery的評估對象與VAL()