มีอัลกอริธึมการทำคลัสเตอร์หลายประเภทในแมชชีนเลิร์นนิง อัลกอริทึมเหล่านี้สามารถนำมาใช้ใน Python ในบทความนี้ ให้เรามาอภิปรายและใช้อัลกอริธึม 'Mean−Shift' โดยใช้ Python เป็นอัลกอริทึมการจัดกลุ่มที่ใช้เป็นวิธีการเรียนรู้แบบไม่มีผู้ดูแล
ในอัลกอริธึมนี้ ไม่มีการตั้งสมมติฐานใดๆ นี่หมายความว่ามันเป็นอัลกอริธึมที่ไม่มีพารามิเตอร์ อัลกอริทึมนี้จะกำหนดจุดข้อมูลให้กับบางคลัสเตอร์ซ้ำๆ ซึ่งทำได้โดยการย้ายจุดข้อมูลเหล่านี้ไปยังจุดข้อมูลที่มีความหนาแน่นสูงสุด
จุดข้อมูลที่มีความหนาแน่นสูงนี้เรียกว่าเซนทรอยด์ของคลัสเตอร์ ความแตกต่างระหว่างอัลกอริธึมการเปลี่ยนค่าเฉลี่ยและ K หมายถึงการจัดกลุ่มคือ ในอดีต (K–หมายถึง) จำเป็นต้องระบุจำนวนคลัสเตอร์ล่วงหน้า
เนื่องจากจำนวนคลัสเตอร์ถูกพบโดยใช้ K หมายถึงอัลกอริทึมตามข้อมูลที่มีอยู่
ให้เราเข้าใจขั้นตอนในอัลกอริทึม Mean-shift -
-
จุดข้อมูลถูกกำหนดให้กับคลัสเตอร์ของตัวเอง
-
จากนั้นจึงกำหนดเซนทรอยด์ของคลัสเตอร์เหล่านี้
-
ตำแหน่งของเซนทรอยด์เหล่านี้มีการปรับปรุงซ้ำๆ
-
ถัดไป กระบวนการจะย้ายไปยังบริเวณที่มีความหนาแน่นสูงขึ้น
-
เมื่อเซนทรอยด์ไปถึงตำแหน่งที่ไม่สามารถเคลื่อนที่ต่อไปได้ กระบวนการจะหยุด
ให้เราเข้าใจว่ามันสามารถนำมาใช้ใน Python ได้อย่างไรโดยใช้ scikit−learn −
ตัวอย่าง
import numpy as np from sklearn.cluster import MeanShift import matplotlib.pyplot as plt from matplotlib import style style.use("ggplot") from sklearn.datasets.samples_generator import make_blobs centers = [[3,3,1],[4,5,5],[11,10,10]] X, _ = make_blobs(n_samples = 950, centers = centers, cluster_std = 0.89) plt.title("Implementation of Mean-Shift algorithm") plt.xlabel("X-axis") plt.ylabel("Y-axis") plt.scatter(X[:,0],X[:,1]) plt.show() ms = MeanShift() ms.fit(X) labels = ms.labels_ clusterCent = ms.cluster_centers_ print(clusterCent) numCluster = len(np.unique(labels)) print("Estimated clusters:", numCluster) colors = 10*['r.','g.','b.','c.','k.','y.','m.'] for i in range(len(X)): plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 3) plt.scatter(clusterCent[:,0],clusterCent[:,1], marker=".",color='k', s=20, linewidths = 5, zorder=10) plt.show()
ผลลัพธ์
[[ 3.05250924 3.03734994 1.06159541] [ 3.92913017 4.99956874 4.86668482] [10.99127523 10.02361122 10.00084718]] Estimated clusters: 3
คำอธิบาย
-
แพ็คเกจที่จำเป็นจะถูกนำเข้าและกำหนดนามแฝงเพื่อให้ใช้งานง่าย
-
'ggplot' ถูกกำหนดให้กับฟังก์ชัน 'use' ที่มีอยู่ในคลาส 'style'
-
ฟังก์ชัน "make_blobs" ใช้เพื่อสร้างคลัสเตอร์ของข้อมูล
-
ฟังก์ชัน set_xlabel, set_ylabel และ set_title ใช้เพื่อจัดเตรียมป้ายกำกับสำหรับแกน "X", แกน "Y" และชื่อ
-
มีการเรียกฟังก์ชัน "MeanShift" และกำหนดให้กับตัวแปร
-
ข้อมูลเหมาะสมกับโมเดล
-
มีการกำหนดป้ายกำกับและจำนวนคลัสเตอร์
-
ข้อมูลนี้ถูกพล็อต และพล็อตแบบกระจายสำหรับข้อมูลที่พอดีกับโมเดลก็จะแสดงขึ้นด้วย
-
จะแสดงบนคอนโซลโดยใช้ฟังก์ชัน "แสดง"