我正試圖評估在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. 模型OCL評估與對象評估
- 2. R包函數中的標準評估與非標準評估
- 3. 斷開連接的數據集
- 4. 使用斷開連接的數據
- 5. 斷開與數據庫的連接
- 6. 評估/診斷時間連接在建立之前在SYN_RECV中
- 7. 評估在指令中傳遞的對象
- 8. Nhibernate - 在斷開連接的會話中引用瞬態對象
- 9. 如何從連接池中刪除斷開的連接對象?使用c3p0
- 10. 在沒有對象的情況下評估(評估itemText.style)
- 11. 在Keras中預測和評估指標
- 12. 評估對象爲布爾
- 13. 什麼數據結構用於對象的評估順序?
- 14. OOP數據庫連接/斷開類
- 15. 數據集如何斷開連接?
- 16. 開關評估
- 17. Keil MCB1700評估板的軟件中斷
- 18. 如何在ng-Class指令中評估範圍對象?
- 19. jQuery的評估對象與VAL()
- 20. 評估字符串對象(JavaScript)的
- 21. 在斷開連接的情況下移除對象socket.io
- 22. 使用MVC框架RC1更新斷開連接的LINQ對象
- 23. 斷開連接之前的NodeJS連接
- 24. 斷開與MS Access數據庫的所有開放連接
- 25. Node.js的對象陣列數據連接
- 26. 面向對象的數據庫連接
- 27. 斷開的連接原因
- 28. 斷開連接的DataSet
- 29. 斷開與Openstack的連接?
- 30. 在.NET中創建斷開連接的數據行