DBSCAN 非凸資料集聚類

2021-08-30 02:50:37 字數 2200 閱讀 4643

k-means 本質上是將樣本空間劃分成 k 個 voronoi 區域,決定了劃分結果的 k 個簇一定是凸集,因而該方法對非凸區域的鑑別效果非常不好。

下面使用 dbscan 對上面非凸分布的資料聚類。

本例中 dbscan 選擇的引數為:eps=0.5, min_samples=5

即要求乙個團簇內點(非邊界、非雜訊點)在半徑為 eps 的範圍內至少有 min_sample 個點,邊界點至少在滿足上述條件乙個內點的 eps 範圍內,其餘為雜訊點。

圖中的黑點為 dbscan 演算法得出的雜訊點。

生成上圖資料的函式如下:

def

gen_ring

(r, var, num)

: r_array = np.random.normal(r,var,num)

t_array =

[ np.random.random()*

2*np.math.pi for i in

range

(num)

] data =

[[r_array[i]

*np.math.cos(t_array[i]),

r_array[i]

*np.math.sin(t_array[i])]

for i in

range

(num)

]return data

defgen_gauss

(mean,cov,num)

:return np.random.multivariate_normal(mean,cov,num)

defgen_clusters()

: data = gen_ring(1,

0.1,

100)3,

0.1,

300),0

)5,0.1

,500),

0)mean =[7

,7] cov =[[

0.5,0]

,[0,

0.5]

]100),

0)return np.

round

(data,

4)

凸優化 非凸優化

凸 convex vs 非凸的概念,數學定義就不寫了,介紹個直觀判斷乙個集合是否為convex的方法,如下圖 簡單的測試乙個集合是不是凸的,只要任意取集合中的倆個點並連線,如果說連線段完全被包含在此集合中,那麼這個集合就是凸集,例如左圖所示。凸優化有個非常重要的定理,即任何區域性最優解即為全域性最優...

非凸問題尋優

模擬退火演算法 simulated annealing,sa 1983年由 kirkpatrick 等人提出,並將其成功應用於組合優化問題。退火 是物理學術語,指對物體加溫後再冷卻的過程。模擬退火演算法源於晶體冷卻的過程,如果晶體不處於最低能量狀態,給固體加熱再冷卻,隨著溫度緩慢下降,固體中的原子按...

python分析集聚程度 水平聚集密集資料點

我在乙個2d numpy陣列中有一組大約34000個資料標籤,它們各自的特徵 狀態概率 被視覺化為散點圖,看起來是 很容易看到b點的大部分資料。我想用聚類演算法來提取底部區域。我不追求完美的結果。這只是關於提取大多數b點。在 到目前為止,我已經嘗試了dbscan演算法 import sklearn....