下面簡單集成算法代碼
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 創建數據集,生成 3 個中心的聚類數據,共 300 個樣本,每個樣本 2 個特征
X, _ = make_blobs(n_samples=300, centers=3, n_features=2, random_state=42)
# 進行 K 均值聚類,設置聚類數為 3
kmeans = KMeans(n_clusters=3, random_state=42)
y_pred = kmeans.fit_predict(X)
# 可視化聚類結果
plt.scatter(X[:, 0], X[:, 1], c=y_pred, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],?
s=300, c='red', marker='*', label='Centroids')
plt.legend()
plt.title('K-Means Clustering')
plt.show()
這段代碼展示了如何使用scikit-learn庫實現K均值(K-Means)聚類算法,并通過可視化呈現聚類結果。
首先是數據生成環節。代碼利用make_blobs函數創建了一個模擬數據集,其中參數n_samples=300指定生成300個樣本,centers=3定義了數據潛在的3個聚類中心,n_features=2設置每個樣本包含2個特征(便于二維可視化),random_state=42確保結果可重復。生成的數據集X是一個300行2列的數組,包含了分布在3個中心周圍的樣本點,由于未使用標簽信息,該過程屬于無監督學習的數據準備。
接下來是K均值聚類的實現。通過KMeans類初始化模型,n_clusters=3指定聚類數量為3(與數據生成時的中心數一致),random_state=42固定隨機種子以保證結果穩定。調用fit_predict方法同時完成模型訓練和預測,返回的y_pred是長度為300的數組,每個元素表示對應樣本所屬的聚類類別(0、1或2),實現了對無標簽數據的自動分組。
最后是結果可視化部分。使用matplotlib.pyplot繪制散點圖:以樣本的兩個特征分別作為橫、縱軸,用c=y_pred通過不同顏色區分聚類結果,cmap='viridis'設置配色方案;同時用紅色星號標記出聚類中心(kmeans.cluster_centers_存儲了3個中心的坐標),并通過s=300放大顯示以突出其位置。圖表添加了圖例、標題,最終通過plt.show()展示圖像。
從結果來看,可視化圖像會清晰呈現3組顏色不同的樣本點,每組點圍繞一個紅色星號(聚類中心)分布,直觀體現了K均值算法的核心思想——通過迭代計算,將數據劃分為K個聚類,使每個樣本到其所屬聚類中心的距離之和最小化。此案例中,由于使用了預設3個中心的模擬數據,聚類結果通常會與真實分布高度吻合,驗證了K均值在簡單數據集上的有效性。該代碼為理解無監督聚類算法提供了直觀示例,可通過調整n_clusters等參數觀察不同聚類數量對結果的影響。