⑴ K均值聚類分析的原理
在訓練圖像中,數據事件數量非常多。如果將這些數據事件逐一與模擬區域數據模式進行比對,對計算機性能要求高,計算效率低下。對數據事件分析發現,很多數據事件具有很高的相似性,可以將其劃分為同一類。這樣大大減少數據事件的個數,提高了運算效率。基於這樣考慮,聚類分析技術被引入到多點地質統計學中。
J.B.MacQueen在1967年提出的K-means演算法是到目前為止用於科學和工業應用的諸多聚類演算法中一種極有影響的技術。它是聚類方法中一個基本的劃分方法,常常採用誤差平方和准則函數作為聚類准則函數,誤差平方和准則函數定義為
多點地質統計學原理、方法及應用
式中:mi(i=1,2,…,k)是類i中數據對象的均值,分別代表K個類。
K-means演算法的工作原理:首先隨機從數據集中選取K個點作為初始聚類中心,然後計算各個樣本到聚類中的距離,把樣本歸到離它最近的那個聚類中心所在的類。計算新形成的每一個聚類的數據對象的平均值來得到新的聚類中心,如果相鄰兩次的聚類中心沒有任何變化,說明樣本調整結束,聚類准則函數已經收斂。本演算法的一個特點是在每次迭代中都要考察每個樣本的分類是否正確。若不正確,就要調整,在全部樣本調整完後,再修改聚類中心,進入下一次迭代。如果在一次迭代演算法中,所有的樣本被正確分類,則不會有調整,聚類中心也不會有任何變化,這標志著已經收斂,因此演算法結束。
基本步驟如下:
a.對於數據對象集,任意選取K個對象作為初始的類中心;
b.根據類中對象的平均值,將每個對象重新賦給最相似的類;
c.更新類的平均值,即計算每個類中對象的平均值;
d.重復b和c步驟;
e.直到不再發生變化。
圖2-7是利用K-means方法做的一個數據事件的聚類分析結果。數據類定義為10個。數據事件來自於圖2-8,採用的數據樣板是8×8的數據樣板。
K-means演算法優點為當聚類是密集的,且類與類之間區別明顯時,效果較好。對於處理大數據集,這個演算法是相對可伸縮和高效的,缺點主要有三個:
圖2-7 K-means方法聚類結果
圖2-8 用於聚類的訓練圖像,數據樣板選擇為8*8
1)在K-means演算法中K是事先給定的,這個K值的選定是非常難以估計的。很多時候,事先並不知道給定的數據集應該分成多少個類別才最合適。這是K-means演算法的一個不足。
2)在K-means演算法中,首先需要根據初始聚類中心來確定一個初始劃分,然後對初始劃分進行優化。這個初始聚類中心的選擇對聚類結果有較大的影響,一旦初始值選擇的不好,可能無法得到有效的聚類結果,這也成為K-means演算法的一個主要問題。
3)從K-means演算法框架可以看出,該演算法需要不斷地進行樣本分類調整,不斷地計算調整後的新的聚類中心,因此當數據量非常大時,演算法的時間開銷是非常大的。所以需要對演算法的時間復雜度進行分析、改進,提高演算法應用范圍。
⑵ 如何用MATLAB對股票數據做聚類分析
直接調kmeans函數。
k = 3;%類別數
idx = kmeans(X, k);%idx就是每個樣本點的標號。
⑶ K-均值聚類K值如何自動選取
貌似有人提出了計算輪廓系數的方法,進行反復迭代,找到合適的k值
⑷ 如何使用sklearn k-mean對數據進行聚類分析
#-*-coding:utf-8-*-
fromsklearn.clusterimportKMeans
fromsklearn.externalsimportjoblib
importnumpy
final=open('c:/test/final.dat','r')
data=[line.strip().split(' ')forlineinfinal]
feature=[[float(x)forxinrow[3:]]forrowindata]
#調用kmeans類
clf=KMeans(n_clusters=9)
s=clf.fit(feature)
prints
#9個中心
printclf.cluster_centers_
#每個樣本所屬的簇
printclf.labels_
#用來評估簇的個數是否合適,距離越小說明簇分的越好,選取臨界點的簇個數
printclf.inertia_
#進行預測
printclf.predict(feature)
#保存模型
joblib.mp(clf,'c:/km.pkl')
#載入保存的模型
clf=joblib.load('c:/km.pkl')
'''
#用來評估簇的個數是否合適,距離越小說明簇分的越好,選取臨界點的簇個數
foriinrange(5,30,1):
clf=KMeans(n_clusters=i)
s=clf.fit(feature)
printi,clf.inertia_
'''
⑸ 關於K均值聚類分析,可以進行多維分析嗎怎麼判斷其有效性。還有K值的選擇可以隨意定嗎
回答:
1、k均值聚類的數據的維數是沒有限制的,可以是一維的標量,也可以是多維的向量,只要數據是數值形式的就可以了。
2、你說的有效性有些模糊,是聚類結果的好壞么?如果是的話,可以通過判斷迭代收斂後的目標函數值,函數值越小說明效果越好。這是因為k均值容易陷入局部極值得到次優解,對於不同的初始化中心結果可能會不同。因此,可以可以多行幾次不同出始化中心的k均值,選擇具有最優目標函數值的(最小的那個)作為相對較好的一個結果。至於,能否達到最好的目標函數值,至今沒有特別好的方法,一些方法可以部分的避免陷入局部最優解,比如比較著名與簡單的是global k-means,還有利用函數逼近的一些方法就比較麻煩了。
3、k值是你自己指定的,沒有限制,當讓了不能少於2也不能大於數據個數。
以上回答,全為手打,請給分!!!
⑹ K均值聚類
k均值聚類演算法(k-means clustering algorithm)是一種迭代求解的聚類分析演算法,其步驟是隨機選取K個對象作為初始的聚類中心,然後計算每個對象與各個種子聚類中心之間的距離,把每個對象分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。每分配一個樣本,聚類的聚類中心會根據聚類中現有的對象被重新計算。這個過程將不斷重復直到滿足某個終止條件。終止條件可以是沒有(或最小數目)對象被重新分配給不同的聚類,沒有(或最小數目)聚類中心再發生變化,誤差平方和局部最小。
⑺ spss中K-means聚類分析後計算每一類數值的標准差和均值
用一下analyze菜單——compare means——means命令,點開options想算什麼隨你選
⑻ k-均值聚類分析法是什麼意思
非常復雜的公式原理我也說不清楚,簡單的說
k-均值聚類 對所有聚類的變數有個要求就是必須是連續性數值變數
既然是連續性數值變數,那麼就可以就求出n個變數的均值點,
然後將每個個案的變數均值與總體的均值點在空間中比較,就可以找出位置上接近的點作為一類
這個就是大概的原理了,
不過用這個方法還有個難點 是需要自己指定聚類的類別數量,通常可以先採用系統聚類法 初步看大致聚成幾類,然後再用這個方法進一步確認比較一下