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....