07 聚類演算法 - 程式碼案例三 - K-Means演算法和Mini Batch K-Means演算法效果評估
03 聚類演算法 - K-means聚類
04 聚類演算法 - 程式碼案例一 - K-means聚類
05 聚類演算法 - 二分K-Means、K-Means++、K-Means||、Canopy、Mini Batch K-Means演算法
06 聚類演算法 - 程式碼案例二 - K-Means演算法和Mini Batch K-Means演算法比較
需求: 基於scikit包中的建立模擬資料的API建立聚類資料,對K-Means演算法和Mini Batch K-Means演算法構建的模型進行評估。
常規操作:
import time
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn.cluster import MiniBatchKMeans, KMeans
from sklearn import metrics
from sklearn.metrics.pairwise import pairwise_distances_argmin
from sklearn.datasets.samples_generator import make_blobs
## 設定屬性防止中文亂碼
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
一、構建資料
centers = [[1, 1], [-1, -1], [1, -1]]
clusters = len(centers)
X, Y = make_blobs(n_samples=3000, centers=centers, cluster_std=0.7, random_state=28)
Y # 在實際工作中是人工給定的,專門用於判斷聚類的效果的一個值
array([2, 0, 0, ..., 2, 2, 1])
二、構建k-means++模型
k_means = KMeans(init='k-means++', n_clusters=clusters, random_state=28)
t0 = time.time()
k_means.fit(X)
km_batch = time.time() - t0
print ("K-Means演算法模型訓練消耗時間:%.4fs" % km_batch)
K-Means演算法模型訓練消耗時間:0.1211s
三、構建Mini Batch K-Means模型
batch_size = 100
mbk = MiniBatchKMeans(init='k-means++', n_clusters=clusters,
batch_size=batch_size, random_state=28)
t0 = time.time()
mbk.fit(X)
mbk_batch = time.time() - t0
print ("Mini Batch K-Means演算法模型訓練消耗時間:%.4fs" % mbk_batch)
Mini Batch K-Means演算法模型訓練消耗時間:0.0991s
km_y_hat = k_means.labels_
mbkm_y_hat = mbk.labels_
print(km_y_hat) # 樣本所屬的類別
[0 2 2 ... 1 1 0]
k_means_cluster_centers = k_means.cluster_centers_
mbk_means_cluster_centers = mbk.cluster_centers_
print ("K-Means演算法聚類中心點:\ncenter=", k_means_cluster_centers)
print ("Mini Batch K-Means演算法聚類中心點:\ncenter=", mbk_means_cluster_centers)
order = pairwise_distances_argmin(k_means_cluster_centers,
mbk_means_cluster_centers)
order
K-Means演算法聚類中心點:
center= [[-1.0600799 -1.05662982]
[ 1.02975208 -1.07435837]
[ 1.01491055 1.02216649]]
Mini Batch K-Means演算法聚類中心點:
center= [[ 0.99602094 1.10688195]
[-1.00828286 -1.05983915]
[ 1.07892315 -0.94286826]]
array([1, 2, 0], dtype=int64)
效果評估:
score_funcs = [
metrics.adjusted_rand_score,#ARI
metrics.v_measure_score,#均一性和完整性的加權平均
metrics.adjusted_mutual_info_score,#AMI
metrics.mutual_info_score,#互資訊
]
迭代對每個評估函式進行評估操作
for score_func in score_funcs:
t0 = time.time()
km_scores = score_func(Y,km_y_hat)
print("K-Means演算法:%s評估函式計算結果值:%.5f;計算消耗時間:%0.3fs" %
(score_func.__name__,km_scores, time.time() - t0))
t0 = time.time()
mbkm_scores = score_func(Y,mbkm_y_hat)
print("Mini Batch K-Means演算法:%s評估函式計算結果值:%.5f;計算消耗時間:%0.3fs\n" %
(score_func.__name__,mbkm_scores, time.time() - t0))
相關文章
- 04聚類演算法-程式碼案例一-K-means聚類聚類演算法
- 06聚類演算法-程式碼案例二-K-Means演算法和MiniBatchK-Means演算法比較聚類演算法BAT
- 聚類演算法與K-means實現聚類演算法
- 【Python機器學習實戰】聚類演算法(1)——K-Means聚類Python機器學習聚類演算法
- 演算法金 | 一文讀懂K均值(K-Means)聚類演算法演算法聚類
- k-medoids與k-Means聚類演算法的異同聚類演算法
- 14聚類演算法-程式碼案例六-譜聚類(SC)演算法案例聚類演算法
- k-means聚類聚類
- 機器學習—聚類5-1(K-Means演算法+瑞士捲)機器學習聚類演算法
- k-means演算法筆記演算法筆記
- k-means 演算法介紹演算法
- 為什麼說K-Means是基於距離的聚類演算法?聚類演算法
- 演算法金 | 再見!!!K-means演算法
- Python中使用K-means演算法Python演算法
- 無監督學習-K-means演算法演算法
- 資料探勘 ReliefF和K-means演算法的應用演算法
- 【機器學習】K-means聚類分析機器學習聚類
- 機器學習經典演算法之K-Means機器學習演算法
- 聚類模型的演算法效能評價聚類模型演算法
- 聚類演算法聚類演算法
- 聚類之K均值聚類和EM演算法聚類演算法
- 【火爐煉AI】機器學習020-使用K-means演算法對資料進行聚類分析AI機器學習演算法聚類
- 分類演算法的評估指標演算法指標
- python實現之 K-means演算法簡單介紹Python演算法
- K-Means聚類分析以及誤差平方和SSE(Python實現)聚類Python
- 聚類演算法——DBSCAN演算法原理及公式聚類演算法公式
- 機器學習入門筆記系列(10) | K-means 演算法機器學習筆記演算法
- 聚類演算法綜述聚類演算法
- OPTICS聚類演算法原理聚類演算法
- 初探DBSCAN聚類演算法聚類演算法
- 從零開始學機器學習——K-Means 聚類機器學習聚類
- 聚類(part3)--高階聚類演算法聚類演算法
- 可伸縮聚類演算法綜述(可伸縮聚類演算法開篇)聚類演算法
- Spark中的聚類演算法Spark聚類演算法
- 深度聚類演算法敘談聚類演算法
- 深度聚類演算法淺談聚類演算法
- sklearn建模及評估(聚類)聚類
- 實踐2:如何使用word2vec和k-means聚類尋找相似的城市聚類