使用scikit中的聚类
這是一次數據實驗。基于七月算法鄒博講義和scikit-lean官網。
聚類:就是對大量未知標注的數據集,按數據的內在相似性將數據劃分為多個類別,使得類別內的數據相似性較大而類別間的相似性較小。
1 k-means算法
參數:聚類的數目
描述:k-means將 包含N個樣本量的數據集X,分到不相交的聚類C中。每個聚類由樣本的平均值決定,通常這個平均值被稱為質心(中心點)。k-means算法就是要尋找質心,使得簇內平方和最小。k-均值通常被稱為勞埃德算法。
∑ni=0minμj∈c(∥∥μj?xi∥∥)2
步驟:假定輸入樣本X=x1,x2,x3...xn,輸入聚類數目k。
1 選擇初始的k個類別中心μ1,μ2,...μk。
2 對于每個樣本xi,將其標記為距離類別中心最近的類別,labeli=argmin1≤j≤k||xi?μj||
3 將每個類別中心更新為 所有屬于這個類別的樣本的均值μj=1|Cj|∑i∈Cjxi
4 重復步驟2 和 3 ,直到符合退出條件。
5 退出條件可以是:一定的迭代次數;簇中心變化率;最小平方誤差。
注意:
0 k-means最后獲得的是局部最優解。
1 前提假設聚類是凸的,并且是同質的(各向同性的)。在遇到細長的形狀、不規則流形狀的時候是無效的。
2 衡量數據相似度的計算方法有很多:歐氏距離、杰卡德相似系數、余弦相似度、Pearson相似系數、Hellinger距離等。
3 高緯度災難,當樣本維數很高的時候,計算量很大,這時候可以先用PCA,之后再調用k-means。
4 算法效果高度依賴初始簇中心點的選擇。在scikit-learn中可以使用k-means++選擇質心,這樣選擇質心相互距離會比較遠,好于隨機選擇。
5 在scikit-learn有一個參數:n_jobs,可以指定處理器個數。默認值是1;n_jobs=-1,使用所有的處理器;n_jobs=-2,有一個處理器不使用。并行處理在X 系統下會出問題。
6 對異常點(噪音)的處理能力差。
Mini Batch K-Means
MiniBatchKMeans是KMeans的變種。不同之處是每次從樣本集中隨機選擇一小部分樣本進行計算,以減少運行時間。
試驗
1執行iris.data看效果。不同的聚類數目,不同的迭代次數。(我顯然理解不了這個效果)。
2 執行digitsdateset。比較了初始值選用:k-means++,random,pca選擇的主成分三種方法的效果。
聚類效果評價
1 Adjusted Rand index(ARI)
2 Mutual Information based scores(AMI)
3 homogeneity
4 completeness
5 V-measure
6 Fowlkes-Mallows scores
7 Silhouette Coefficient
8 Calinski-Harabaz Index
繼續試驗
1文本聚類
總結
以上是生活随笔為你收集整理的使用scikit中的聚类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线常用正则表达式可视化生成与测试工具与
- 下一篇: eclipse导入class文件