2015-12-11 33 views

回答

1

根據您的問題,到目前爲止,它是很難知道如何評估哪些是正確的(即爲什麼。該區域是否正確?是基於點的值/座標,區域中的點密度?是基於相對於較大結構(即,分支的中心)等的位置)。

這就是說;有很多機器學習算法可用;例如。 python的scikit-learn。使用監督式學習算法,您可以對某些數據進行訓練,然後可以(嘗試)找到其他數據的正確答案。

更改您的問題之前,難以提供更多答案。

如果您的所有數據如下所示,則可能需要對數據執行PCA(即降維)以將分支分爲兩個羣集。然後,您將獲得一些數據點,這些數據點不能清楚地標識爲僅屬於一個分支,然後您可以選擇(scikit-learn's PCA docs)。請注意,雖然它應該是相當準確的,但您永遠無法使用它獲得完美的圈子。

如果你只需要爲這一個數據集,你已經知道了「半徑」和中心,你能確定你的圈子(橢圓形),其半長軸(&未成年人)的中心a(& b )軸,然後使用其canonical form計算距離。

不過,使用正方形可能會更簡單。

因此,這將是這個樣子(假設1D numpy.ndarrays):

#selecting points in a square 
condition=(xarr>xmin) & (xarr<xmax) & (yarr>ymin) & (yarr<ymax) 
#depending on what you want, coordinates or value at coordinates 
xsq=xarr[condition] 
ysq=yarr[condition] 
squaredata=data[condition] 

#for ellipse: 
#x0, y0, a and b can be preset if only this function. 
in_ellipse=np.vectorize(\ 
    lambda x,y,x0,y0,a,b: np.sqrt(((x-x0)/a)**2 + ((y-y0)/b)**2)<=1.0) 
ellipsedata=data[in_ellipse(xarr,yarr,1.6,-1125,0.1,10)] 
x_ellipse=xarr[in_ellipse(xarr,yarr,1.6,-1125,0.1,10)] 
y_ellipse=yarr[in_ellipse(xarr,yarr,1.6,-1125,0.1,10)] 

爲X0,Y0,a和b的值通過看圖片只是估計了。

+0

正如我所說的,我只需要收集包含在分支中心的數據(具有任意半徑的圓)。可能嗎? – Saeed

+0

這是你在想什麼? –

+0

謝謝。這是適當的如果我想看看圖片。我不能做的是自動執行此操作。 – Saeed