sklearn聚类算法之HAC
生活随笔
收集整理的這篇文章主要介紹了
sklearn聚类算法之HAC
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基本思想
層次凝聚聚類算法(Hierarchical Agglomerative Clustering)是一種效果很好的聚類算法,簡稱HAC,它的主要思想是先把每個樣本點當做一個聚類,然后不斷地將其中最近的兩個聚類進行合并,直到滿足某個迭代終止條件,比如當前聚類數是初始聚類數的20%,80%的聚類數都被合并了。總結來說,HAC的具體實現步驟如下所示。
????(1)將訓練樣本集中的每個數據點都當做一個聚類;
????(2)計算每兩個聚類之間的距離,將距離最近的或最相似的兩個聚類進行合并;
????(3)重復上述步驟,直到滿足迭代終止條件
在這個算法中,相似度的度量方式有如下四種方式:
????(1)Single-link:兩個不同聚類中離得最近的兩個點之間的距離,即MIN;
????(2)Complete-link:兩個不同聚類中離得最遠的兩個點之間的距離,即MAX;
????(3)Average-link:兩個不同聚類中所有點對距離的平均值,即AVERAGE;
????(4)Ward-link:兩個不同聚類聚在一起后離差平方和的增量
API學習
| n_clusters | int or None, default=2 | 表示聚類數,和distance_threshold中必須有一個是None |
| affinity | str or callable, default=‘euclidean’ | 相似度度量函數,可以是’euclidean’/‘manhattan’/'cosine’等 |
| memory | str or object with the joblib | 緩存計算過程的文件夾路徑 |
| connectivity | array-like or callable, default=None | 可用來定義數據的給定結構,即對每個樣本給定鄰居樣本 |
| compute_full_tree | ‘auto’ or bool, default=‘auto’ | 如果為True,當聚類數較多時可用來減少計算時間 |
| linkage | {‘ward’, ‘complete’, ‘average’, ‘single’}, default=‘ward’ | 表示不同的度量方法,默認為’ward’方法 |
| distance_threshold | float, default=None | 如果不為None,表示簇不會聚合的距離閾值,此時n_clusters必須不為None,compute_full_tree必須為None |
| compute_distances | bool, default=False | 如果為True,即使不使用distance_threshold,也計算簇間距離,可用來可視化樹狀圖 |
| n_clusters_ | int | 聚類數 |
| labels_ | ndarray of shape(n_samples) | 分類結果 |
| n_leaves_ | int | 層次樹的樹葉數量 |
| n_connected_components_ | int | 在圖中有聯系的部分的數量 |
| n_features_in_ | int | 擬合期間的特征個數 |
| feature_names_in | ndarray of shape(n_features_in_,) | 擬合期間的特征名稱 |
| children_ | array-like of shape (n_samples-1, 2) | 每一個非葉子節點的孩子 |
| distances_ | array-like of shape (n_nodes-1,) | children_中各節點之間的距離 |
| fit(X[, y]) | Fit the hierarchical clustering from features, or distance matrix. |
| fit_predict(X[, y]) | Fit and return the result of each sample’s clustering assignment. |
| get_params([deep]) | Get parameters for this estimator. |
| set_params(**params) | Set the parameters of this estimator. |
代碼示例
>>> from sklearn.cluster import AgglomerativeClustering >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [4, 2], [4, 4], [4, 0]]) >>> clustering = AgglomerativeClustering().fit(X) >>> clustering AgglomerativeClustering() >>> clustering.labels_ array([1, 1, 1, 0, 0, 0])優秀作品學習
test1.py
運行結果:
test2.py
運行結果:
總結
以上是生活随笔為你收集整理的sklearn聚类算法之HAC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本玩梦幻西游开启时自动全屏,而且两边
- 下一篇: 康卡斯特使持续升级,以有线电视