機器學習之K Mean聚類演算法

2022-01-22 13:31:24 字數 2504 閱讀 3255

知識點:

#

coding = utf-8

import

numpy as np

import

pandas as pd

from sklearn.cluster import

kmeans

"""非監督學習:

聚類演算法:

1、隨機再資料當中抽取三個樣本,當作三個類別的中心點(k1,k2,k3)

2、計算其餘的點分別到這三個中心點的距離,每乙個樣本有三個距離(a,b,c)

從中選出距離最近的乙個點作為自己的標記形成三個族群

3、分別計算這三個族群的平均值,把三個平均值與之前的三個舊中心點進行比較

如果相同,結束聚類,如果不相同,把三個平均值當作新的中心點,重複第二步驟

聚類的作用:做在分類之前,利用分類的資料進行**

api:sklearn.cluster.kmeans(n_clusters=8,init=『k-means++』)

k-means聚類

n_clusters:開始的聚類中心數量

init:初始化方法,預設為'k-means ++』

labels_:預設標記的型別,可以和真實值比較(不是值比較)

聚類演算法評估標準:外部距離最大化,內部距離最小化

輪廓係數:1、計算樣本1到自身類別的點距離的平均值a_i ---->內部距離

2、計算樣本1分別到其他類別下的所有點的平均距離,b_1,c_1 ---->外部距離

取其中的最小的值當作b_i

3、sc_i = (bi-ai)/max(bi,ai)

若 b_i >> a_i ,sc_i = 1 完美

若 b_i << a_i ,sc_i = -1 最差

api:sklearn.metrics.silhouette_score(x, labels)

計算所有樣本的平均輪廓係數

x:特徵值

labels:被聚類標記的目標值

類別的多少,可以通過檢視輪廓係數判斷 sc_i > 0 ,則表明聚類效果不錯

"""

**:

#

coding = utf-8

import

numpy as np

from sklearn.cluster import

kmeans

from sklearn.datasets import

make_blobs

import

matplotlib.pyplot as plt

from sklearn.metrics import

silhouette_score

defkmean():

"""kmean測試

:return:

"""#

資料處理

x_train, y_train = make_blobs(n_features=28)

print

(x_train.shape)

print

(type(x_train))

print(x_train[1])

print

(y_train)

#聚類km = kmeans(n_clusters=3)

km.fit(x_train)

y_pre =km.predict(x_train)

print("

**結果

",y_pre)

###############輪廓係數#####################

var =silhouette_score(x_train,y_pre)

print("

輪廓係數:

",var) #

輪廓係數越大,說明聚類的效果越好

############散點圖展示######################

plt.figure(figsize=(20,20))

#colored = ['orange', 'green', 'blue', 'purple']

colored = ['

orange

', '

green

', '

blue']

#colored = ['orange', 'green']

colr = [colored[i] for i in

y_pre]

plt.scatter(x_train[:, 1], x_train[:, 2],color=colr)

plt.show()

return

none

if__name__ == '

__main__':

kmean()

輪廓係數:

sklearn機器學習 聚類演算法K Means

n init k均值演算法將在不同質心種子下執行的次數。就慣性而言,最終結果將是n init個連續執行的最佳輸出。max iter 單次執行的k均值演算法的最大迭代次數。tol 預設 1e 4,關於frobenius範數的相對容差,該範數表示兩個連續迭代的聚類中心的差異,以宣告收斂。precompu...

K mean聚類演算法

k mean演算法屬於非監督類演算法,模型相對簡單。目標函式 j sum dj i 演算法 1 初始化k個點 2 樣本xi,到k個點的距離為 dk xi uk j argmin j dk xi屬於cj 3 更新引數 uk sum xi i sum i 重複2和3,終止條件j的變化很小或者uk變化很小...

機器學習(7)K mean聚類

聚類屬於非監督學習,k mean是聚類中經典演算法。非監督學習即是只有樣本沒有標籤。訓練資料集 其中x i rnx i rn 和聚類數量kk 將資料劃分為kk類 演算法輸出是kk個聚類中心 1,2,k 1,2,k和每個資料點x i x i 所在的分類。步驟 1,初始化k個聚類中心 1,2,k 1,2...