Python 機器學習 KMeans聚類演算法

2021-09-29 08:04:27 字數 3193 閱讀 7396

k- means是迭代動態聚類演算法中的一種,其中k表示類別數,means表示均值,屬於無監督學習演算法.k-means演算法的步驟:第一步:確定乙個超引數k,就是將樣本聚集為幾類

第二步:在所有樣本中隨機選擇k個點,作為中心

第三步:依次計算除這k個中心點外的每乙個點和k個中心點的距離,找出最近的距離

第四步: 將所有點劃分到各自和k個中心點最近的那個中心點的簇中去

第五步: 所有樣本被劃分為k各類別,有了k個堆資料,分別計算k個簇的中心

第六步: 生成k個新的中心點,以這k個中心重新到第三步開始執行

第七步:終止條件: 所有樣本點的分類結果不在變化或達到設定演算法的最大迭代次數

工具:jupyter notebook

工具庫: sklearn

# 導包

import numpy as np

import matplotlib.pyplot as plt

from sklearn.datasets import make_blobs

from sklearn.cluster import kmeans

# 設定圖風格

plt.style.

use(

'seaborn'

)# 設定輸出中文

plt.rcparams[

'font.sans-serif']=

['simhei'

]plt.rcparams[

'axes.unicode_minus'

]= false

#生成樣本集

# x為樣本特徵,y為樣本簇類別, 共1000個樣本,

# 每個樣本 2 個特徵,共4個簇,

# 簇中心在[-1

,-1]

,[0,

0],[

1,1]

,[2,

2],

# 簇標準差分別為[

0.4,

0.2,

0.2,

0.2]

x, y =

make_blobs

(n_samples=

1000

,n_features=2,

centers=[[

-1,-

1],[

0,0]

,[1,

1],[

2,2]

],cluster_std=

[0.4

,0.2

,0.2

,0.2

],random_state=

666)

# 生成散點圖檢視資料布局

# 繪製學習曲線,選擇合適的k值

#建立空列表,用於儲存模型的 inertia 值

l =[

]for i in range(2

,11):

#例項化kmeans物件

kmeans =

kmeans

(n_clusters = i , random_state=

666)

#訓練模型

kmeans.

fit(x)

# 將模型的inertia值儲存到列表中

l.(kmeans.inertia_)

# 使用列表值繪製學習曲線

# 第一張圖畫出折線圖

plt.

plot

(range(2

,11),l)

#第二章圖繪製出資料點

#通過學習曲線,選擇k=

4 的時候為最優

# 重新建模

kmeans =

kmeans

(n_clusters=

4,random_state=

666)

#訓練模型,並將聚類結果儲存到變數中

y_pred = kmeans.

fit_predict

(x)# 生成聚類散點圖

plt.

scatter

(x[:,0

],x[:,

1],marker=

'o',c=y_pred,cmap=

'rainbow'

)# 生成中心點

# 匯入輪廓係數

from sklearn.metrics import silhouette_score

#計算輪廓係數

silhouette_score

(x,y_pred)

#得到結果:

0.6793483930665349

# 輪廓係數: 評價聚類效果

# 取值範圍: 最高值為1,最差值為-

1# 評估:達到0.4可用,達到0.6非常好

# 0附近的值表示重疊的聚類,負值通常表示樣本已被分配到錯誤的集群。

# 建模完成

機器學習實戰之KMean

kmeans演算法步驟 1.確定聚類個數k 2.隨機選擇k個質心 3.對於所有樣本點 根據樣本點到質心的距離分類 4.分類完成後,如果所有樣本點的類別沒有變化,演算法結束 如果有變化,重新計算質心 當前類中樣本的平均值 回到步驟3 幾個問題 1.聚類個數k的確定 2.初始時質心的選取 3.容易出現區...

機器學習(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...

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

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