在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ Scipy簇聚
Scipy積分
Scipy優(yōu)化算法
Scipy特殊包
Scipy簇聚
Scipy ODR
Scipy Ndimage
Scipy插值
Scipy CSGraph
Scipy輸入和輸出
Scipy開(kāi)發(fā)環(huán)境安裝
Scipy簡(jiǎn)介
Scipy常量
Scipy統(tǒng)計(jì)函數(shù)
Scipy Linalg
Scipy空間
Scipy FFTpack
Scipy基本功能
Scipy教程

Scipy簇聚

K均值聚類(lèi)是一種在一組未標(biāo)記數(shù)據(jù)中查找聚類(lèi)和聚類(lèi)中心的方法。 直覺(jué)上,我們可以將一個(gè)群集(簇聚)看作 - 包含一組數(shù)據(jù)點(diǎn),其點(diǎn)間距離與群集外點(diǎn)的距離相比較小。 給定一個(gè)K中心的初始集合,K均值算法重復(fù)以下兩個(gè)步驟 -

  • 對(duì)于每個(gè)中心,比其他中心更接近它的訓(xùn)練點(diǎn)的子集(其聚類(lèi))被識(shí)別出來(lái)。
  • 計(jì)算每個(gè)聚類(lèi)中數(shù)據(jù)點(diǎn)的每個(gè)要素的平均值,并且此平均向量將成為該聚類(lèi)的新中心。

重復(fù)這兩個(gè)步驟,直到中心不再移動(dòng)或分配不再改變。 然后,可以將新點(diǎn)x分配給最接近的原型的群集。 SciPy庫(kù)通過(guò)集群包提供了K-Means算法的良好實(shí)現(xiàn)。 下面來(lái)了解如何使用它。

SciPy中實(shí)現(xiàn)K-Means

我們來(lái)看看并理解如何在SciPy中實(shí)現(xiàn)K-Means。

導(dǎo)入K-Means

下面來(lái)看看每個(gè)導(dǎo)入的函數(shù)的實(shí)現(xiàn)和用法。

from SciPy.cluster.vq import kmeans,vq,whiten

數(shù)據(jù)生成

我們需要生成(模擬)一些數(shù)據(jù)來(lái)探索聚類(lèi)。參考以下代碼 -

from numpy import vstack,array
from numpy.random import rand

# data generation with three features
data = vstack((rand(100,3) + array([.5,.5,.5]),rand(100,3)))

現(xiàn)在,我們來(lái)看看生成的模擬數(shù)據(jù),上述程序?qū)⑸梢韵螺敵觥?/p>

[[ 1.34103331  1.13924682  0.68465819]
 [ 1.28481332  0.91318917  0.84225546]
 [ 0.96498008  1.42382266  0.83564809]
 [ 1.37049373  0.66635033  1.46568707]
 [ 0.87424166  0.86090225  1.22545336]
 [ 1.0264795   0.90724604  1.46837972]
 [ 1.40996857  1.37769991  1.39805802]
 [ 0.964556    0.71632157  1.47983347]
 [ 0.69909637  1.21695335  1.46434369]
 [ 1.01887602  0.86448455  1.02242951]
 [ 0.82573176  1.19165063  1.09085707]
 [ 0.64378227  0.70673944  0.69484097]
 [ 1.16087103  0.64371977  0.89720984]
 [ 1.23410673  0.56805382  1.33534058]
 [ 0.50417695  1.29632466  0.96589447]
 [ 0.91395183  1.39173555  1.0748435 ]
 [ 1.04540644  1.20721464  0.97173727]
 ... ...
 [ 0.79250839  0.48689797  0.42250824]
 [ 0.05846914  0.83469742  0.57586067]
 [ 0.0308333   0.8642561   0.1111777 ]
 [ 0.61327069  0.43425013  0.99716439]
 [ 0.81698148  0.91098877  0.12706862]
 [ 0.60665992  0.55999208  0.57454962]
 [ 0.13894142  0.03315365  0.43182983]
 [ 0.62293781  0.34701877  0.61229591]]

根據(jù)每個(gè)要素標(biāo)準(zhǔn)化一組觀察值。 在運(yùn)行K-Means之前,使用白化重新縮放觀察集的每個(gè)特征維度是有好處的。 每個(gè)特征除以所有觀測(cè)值的標(biāo)準(zhǔn)偏差以給出其單位差異。

美化數(shù)據(jù)

我們可使用以下代碼來(lái)美白數(shù)據(jù)。

# whitening of data
data = whiten(data)
print (data)

用三個(gè)集群計(jì)算K均值

現(xiàn)在使用以下代碼計(jì)算三個(gè)群集的K均值。

# computing K-Means with K = 3 (2 clusters)
centroids,_ = kmeans(data,3)

上述代碼對(duì)形成K個(gè)簇的一組觀測(cè)向量執(zhí)行K均值。 K-Means算法調(diào)整質(zhì)心直到不能獲得足夠的進(jìn)展,即失真的變化,因?yàn)樽詈笠淮蔚∮谀硞€(gè)閾值。 在這里,可以通過(guò)使用下面給出的代碼打印centroids變量來(lái)觀察簇。

print(centroids)

上面的代碼將生成以下輸出。

print(centroids)[ [ 2.26034702  1.43924335  1.3697022 ]
                  [ 2.63788572  2.81446462  2.85163854]
                  [ 0.73507256  1.30801855  1.44477558] ]

使用下面給出的代碼將每個(gè)值分配給一個(gè)集群。

# assign each sample to a cluster
clx,_ = vq(data,centroids)

vq函數(shù)將'M'中的每個(gè)觀察向量與'N' obs數(shù)組與centroids進(jìn)行比較,并將觀察值分配給最近的聚類(lèi)。 它返回每個(gè)觀察和失真的聚類(lèi)。 我們也可以檢查失真。使用下面的代碼檢查每個(gè)觀察的聚類(lèi)。

# check clusters of observation
print (clx)

上面的代碼將生成以下輸出。

array([1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 2, 0, 2, 0, 1, 1, 1,
0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0,
0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 1,  0, 0, 0, 0, 1, 0, 0, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0,
2, 2, 2, 1, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], dtype=int32)

上述數(shù)組的不同值 - 0,1,2表示簇。