我想在 Python 中實作一個“朋友的朋友”演算法,其中,對于 N 維空間(在我的例子中是二維的)中的一組點,兩個點被稱為“朋友”如果它們比給定的鏈接長度更接近,并且朋友的朋友也是朋友(即,如果 A 是 B 的朋友,B 是 C 的朋友,A 也是 C 的朋友)。然后,將它們之間的所有朋友點收集到一個集群中,從而產生一些最終的集群數量。動機是我通常有很強的聚類點,不同的聚類彼此相距很遠。我想在距離計算中允許任意度量(即,不一定是歐幾里得度量)。
我可以從頭開始寫下來,但我想知道它是否可以使用現有的庫或一些基于智能陣列的 Python 輕松實作。
uj5u.com熱心網友回復:
您正在尋找的是具有單個鏈接的凝聚聚類(也稱為層次聚類)。
凝聚聚類是一種演算法,您可以在其中通過從單點開始合并它們來生成一棵聚類樹。
鏈接引數定義了如何合并這些集群。單一鏈接意味著在每一步中,您將合并兩個集群,它們的點之間的最小距離是所有集群對中最小的。然后,您可以選擇一個截止點,從而得到您所要求的結果。
它在 scikit-learn 中實作,您可以使用許多距離度量或提供自定義距離矩陣。
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427796.html
上一篇:為什么sklearnLinearRegression模型不接受一維資料?
下一篇:模型圖-混淆矩陣-準確度圖
