日日碰狠狠躁久久躁96avv-97久久超碰国产精品最新-婷婷丁香五月天在线播放,狠狠色噜噜色狠狠狠综合久久 ,爱做久久久久久,高h喷水荡肉爽文np肉色学校

億信ABI

一站式數據分析平臺

ABI(ALL in one BI)是億信華辰歷經19年匠心打造的國產化BI工具,技術自主可控。它打通從數據接入、到數據建模與處理、再到數據分析與挖掘整個數據應用全鏈路,可滿足企業經營中各類復雜的分析需求,幫助企業實現高效數字化轉型。

億信ABI

一站式數據分析平臺

億信華辰深耕商業智能十多年,
打造一體化的填報、處理、可視化平臺。

數據分析案例分享:1個完整的聚類分析怎么做?

時間:2025-04-25來源:愛數據LoveData瀏覽數:49

這篇文章從對聚類的感性認識到聚類算法的實現:k個初始中心點的選擇,中心點的迭代,直到算法收斂得到聚類結果。

但有幾個問題需要回答:

如何判斷數據是否適合聚類?

k類是如何確定的?

遇到數據集小的時候,如何得到直觀的聚類圖?

遇到非凸集數據,聚類要如何實現?

先看一幅以R語言繪制的圖,適合聚類嗎?

> library(fMultivar)> set.seed(1234)> df<-rnorm2d(1000,rho=.5)> df<-as.data.frame(df)> plot(df,main="bivariable normal distribution with rho=0.5")

顯然,這幅圖中的數據不適合聚類!因為數據是從相關系數為0.5的正態分布中抽取了1000個觀測值!

如果采用中心點的聚類方法PAM,那么情況是否一致???

> library(cluster)> library(ggplot2)> fit<-pam(df,k=2)> df$clustering<-factor(fit$clustering)>ggplot(data=df,aes(x=V1,y=V2,color=clustering,shape=clustering))+geom_point()+ggtitle("clustering of Bivariate normal data")> plot(nc$All.index[,4],type="o",ylab="CCC",xlab="number of clusters",col="blue")

通過對正態分布數據作基于中心點的聚類,我們發現出現了單峰分布,這表明數據是人為劃分的,而不是”真實意義的類“。

事實上,聚類方法是無監督方法,到底靠不靠譜還是得看是否符合常識,現在又增加了一個方法:如果多種方法都傾向于相似的聚類,那么聚類結果會更加穩?。?

k值是如何確定的了?

> wssplot<-function(data,nc=15,seed=1234){+ wss<-(nrow(data)-1)*sum(apply(data,2,var))+ for (i in 2:nc){+ set.seed(seed)+ wss[i]<-sum(kmeans(data,centers=i)$withinss)}+ plot(1:nc,wss,type="b",xlab="number of clusters",ylab="within groups sum of squares")}> wssplot(df)> library("NbClust")> nc<-NbClust(df,min.nc=2,max.nc = 15,method="kmeans")

wssplot()推薦聚類個數選擇2,或3較為合適!3之后,斜率下降越來越平緩,意味著繼續增加類別,并不能帶來多大的提升!

NbClust()推薦聚類個數為2,或3;意味著26個評價指標中,其中8項傾向選擇2,5項選擇3類!

如何選出最佳聚類個數的?

包中定義了幾十個評估指標,聚類數目從2~15(自己設定),然后遍歷聚類數目,通過看這些評估指標在多少聚類個數時達到最優。

基于五種營養標準的27類魚、禽、肉的相同點和不同點是什么?是否有一種方法能把這些食物分成若干個有意義的類?

> data(nutrient,package="flexclust") #加載數據> row.names(nutrient)<-tolower(row.names(nutrient))#將行名改為小寫> nutrient.sacled<-scale(nutrient) #標準化處理> d<-dist(nutrient.sacled) #計算歐幾里得距離> fit.average<-hclust(d,method="average")#采用平均聯動法進行聚類>plot(fit.average,hang=-1,cex=.8,main="average linkage clustering")#繪制最后的聚類圖

對于數據量較小時,聚類圖可以很好展示類之間的界限!

解讀聚類圖:從下向上看,最開始所有的觀測值都是一類,兩兩合并,最終成為一類。

k-means聚類的缺點及改進。

均值的使用意味著所有的變量必須是連續的,并且這個方法很有可能被異常值影響(所以有了k-medoids和k-medians)。

k-medoids基于中位數進行聚類,雖然可以排除異常值影響,但找中心點需要排序,所以計算速度很慢!

它在非凸聚類(例如U型)情況下也會變得很差(所以有了kernel k-means)。

數據集大時容易出現局部最優,需要預先選定k個中心點,對K個中心點選擇敏感(所以有了k-means++?)。

因為要算均值,所以只限于數值型數據;不適用categorical類型數據(分類型數據,比如男,女;商品類型;后來有了k-modes)。

其它的聚類方法

PAM,圍繞中心點的劃分(PAM),在異常值上表現的很穩?。?

K均值聚類一般選擇歐幾里得距離,要求數據類型是數值型且是連續變量;而PAM可以使用任意的距離計算;可以容納混合數據類型,不僅限于連續變量;

與k-means一樣,PAM也需要提前確定k類;

中心點是動態變化的:通過計算中心點到每個觀測值之間的距離的總和最小來選擇中心點;直到最后中心點不再變化。

層次劃分聚類

層次劃分聚類最大的優點:可解釋性好,能產生高質量的類(小而美)。

缺點:時間復雜度高,不能跑大型數據集(改進的算法有BIRCH,數據類型是numerical);在某種意義上分層算法是貪婪的,一旦一個觀測值被分配給一個類,它就不能在后面的過 程中被重新分配;容錯機制弱,一步錯步步錯。

k-means中的觀測值不會永遠被分配到一類中。

Mean-Shift聚類

Mean shift算法,又稱均值漂移算法,這是一種基于核密度估計的爬山算法,可用于聚類、圖像分割、跟蹤等。它的工作原理基于質心,這意味著它的目標是定位每個簇/類的質心,即先算出當前點的偏移均值,將該點移動到此偏移均值,然后以此為新的起始點,繼續移動,直到滿足最終的條件(找出最密集的區域)。優點:不需要提前確定k類

這里還有更多的問題:

相似性/相異性的度量:數據本身的相似性,或特征的相似性。

度量方法:距離,余弦距離等

聚類算法如何選擇:根據數據特點和想要的聚類個數作選擇。

數據如何作處理:離散傅里葉變換可以提取數據的頻域信息,離散小波變換除了頻域之外,還可以提取到時域信息。

降維,比如常見的PCA與SVD作為線性方法,受到廣泛的應用,還有基于非線性的方法比如流形學習等。降維與聚類算法結合最好的莫過是譜聚類(先將數據轉換成鄰接矩陣,再轉換成Laplacian矩陣,再對Laplacian矩陣進行特征分解,把最小的K個特征向量排列在一起作為特征,然后適用k-means聚類)。

(部分內容來源網絡,如有侵權請聯系刪除)
立即申請數據分析/數據治理產品免費試用 我要試用
customer

在線咨詢

在線咨詢

點擊進入在線咨詢