scipy.cluster.vq.kmeans() 和 scipy.cluster.vq.kmeans2() 方法之間有什麼區別?
scipy.cluster.vq() 包含兩種實現 k 均值聚類的方法,即 kmeans() 和 kmeans2()。這兩種方法的工作方式存在顯著差異。讓我們來了解一下:
scipy.cluster.vq.kmeans(obs, k_or_guess, iter=20, thresh=1e-05, check_finite=True) - kmeans() 方法透過對一組觀測向量執行 k 均值演算法來形成 k 個聚類。為了確定質心的穩定性,該方法使用閾值來比較觀測值與其相應質心之間平均歐幾里德距離的變化。該方法的輸出是一個程式碼本,用於對映質心到程式碼,反之亦然。
scipy.cluster.vq.kmeans2(data, k, iter=10, thresh=1e-05, minit='random', missing='warn', check_finite=True) - kmeans2() 方法透過執行 k 均值演算法將一組觀測向量分類到 k 個聚類中。與 kmeans() 方法不同,kmeans2() 方法不使用閾值來檢查收斂性。kmeans2() 的引數也比 kmeans() 方法多。它有額外的引數來決定質心的初始化方法、處理空聚類以及驗證輸入矩陣是否只包含有限數字。
示例
使用 kmeans() 方法計算 K 均值:
#importing the required Python libraries:
import numpy as np
from numpy import vstack,array
from numpy.random import rand
from scipy.cluster.vq import whiten, kmeans, vq
#Random data generation:
data = vstack((rand(200,2) + array([.5,.5]),rand(150,2)))
#Normalizing the data:
data = whiten(data)
# computing K-Means with kmeans() method
centroids, mean_value = kmeans(data, 3)
print("Code book :
", centroids, "
")
print("Mean of Euclidean distances :", mean_value.round(4))輸出
Code book : [[2.45420231 3.19421081] [2.77295342 1.74582367] [0.99156276 1.35546602]] Mean of Euclidean distances : 0.791
對相同的陣列資料使用 kmeans2() 方法計算 K 均值:
#importing the required Python libraries:
import numpy as np
from numpy import vstack,array
from numpy.random import rand
from scipy.cluster.vq import whiten, kmeans2
#Random data generation:
data = vstack((rand(200,2) + array([.5,.5]),rand(150,2)))
#Normalizing the data:
data = whiten(data)
# computing K-Means with kmeans2() method
centroids, clusters = kmeans2(data, 3, minit='random')
print("Code book :
", centroids, "
")
print(("Clusters :", clusters))輸出
Code book :
[[3.07353603 2.71692674]
[1.07148876 0.74285308]
[1.64579292 2.29821454]]
('Clusters :', array([2, 0, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0,
2, 2, 1, 2, 2, 2, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2,
0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 0,
0, 0, 2, 2, 0, 2, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 2,
2, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 0,
2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 0, 0, 2, 0,
2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
2, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0,
2, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 2, 0,
2, 0, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 2, 2, 1, 1,
2, 2, 1, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 1,
1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 1, 2, 2,
1, 2, 1, 0, 2, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 2, 2, 1, 1,
2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2,
1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 2,
2, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1],
dtype=int32))
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP