kmeans演算法初步

2021-09-13 17:25:49 字數 1453 閱讀 2120

# -*- coding: utf-8 -*-

"""created on tue mar 26 09:11:21 2019

@author: hadron

"""from sklearn.datasets import make_blobs

import matplotlib.pyplot as plt

if __name__ ==

'__main__'

: n =

400 centers =

4'''

make_blobs函式是為聚類產生乙個資料集和相應的標籤

n_samples:表示資料樣本點個數,預設值100

n_features:表示資料的維度,預設值是2

centers:產生資料的中心點,預設值3

cluster_std:資料集的標準差,浮點數或者浮點數序列,預設值1.0

center_box:中心確定之後的資料邊界,預設值(-10.0, 10.0)

shuffle :洗亂,預設值是true

random_state:官網解釋是隨機生成器的種子

返回值說明:

(1) x : array of shape [n_samples, n_features],the generated samples.生成的樣本資料集。

(1) y : array of shape [n_samples],the integer labels for cluster membership of each sample.樣本資料集的標籤。

'''# 生成400個2維樣本點集合,中心點4個

data, y = make_blobs(n_samples=n, n_features=

2, centers=centers)

''' matplotlib.pyplot.scatter(x, y, s=none, c=none, marker=none, cmap=none, norm=none, vmin=none, vmax=none, alpha=none, linewidths=none, verts=none, edgecolors=none, *, data=none, **kwargs)

引數說明:

(1)x,y:表示的是大小為(n,)的陣列,也就是我們即將繪製散點圖的資料點

(2)c:表示的是顏色,也是乙個可選項。預設是藍色'b',表示的是標記的顏色,或者可以是乙個表示顏色的字元,或者是乙個長度為n的表示顏色的序列等等

'''#利用pyplot模組的scatter函式繪製散點圖

plt.scatter(data[:,

0], data[:,

1], c=y)

plt.show(

)

執行結果

k means演算法不足

a.k 不確定 對於初始條件和聚類的個數 k 並沒有乙個標準的方法來給定。初始條件不同會對結果產生比較大的影響,因為有時演算法會跳入區域性最優。所以解決方法之一,就是多次執行演算法,隨機分割,比較結果之間的差異。b.區域性最優 如果要達到全域性最優,需要用到其他一些技術,比如模擬退火或者遺傳演算法等...

Kmeans演算法實現

include opencv2 highgui highgui.hpp include opencv2 core core.hpp include using namespace cv using namespace std static void help int main int argc ch...

K means演算法上

在資料探勘中,k means演算法是一種cluster analysis的演算法,其主要是來計算資料聚集的演算法,主要通過不斷地取離種子點最近均值的演算法。問題k means演算法主要解決的問題如下圖所示。我們可以看到,在圖的左邊有一些點,我們用肉眼可以看出來有四個點群,但是我們怎麼通過電腦程式找出...