聚類分析是一種常用的資料分析方法,可以將資料集劃分為不同的群組或類別。 Python 提供了多種聚類演算法,我們可以根據不同的需求選擇不同的演算法進行分析。本文將介紹一些 Python 中常用的聚類演算法,並給出實例應用。
一、K-Means 演算法
K-Means 演算法是一個常用的聚類演算法,根據歐幾裡得距離將資料分組。此演算法將資料集分為 k 個簇,其中每個簇的中心點是簇中所有成員的平均值。演算法的具體步驟如下:
下面是使用K-Means 演算法進行聚類分析的Python 實例:
import numpy as np from sklearn.cluster import KMeans from sklearn.datasets import make_blobs import matplotlib.pyplot as plt # 生成随机数据 X, y = make_blobs(n_samples=300, centers=4, random_state=42) # 运行 K-Means 算法 kmeans = KMeans(n_clusters=4, random_state=42) y_pred = kmeans.fit_predict(X) # 绘制聚类结果 plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.title("K-Means Clustering") plt.show()
上述程式碼中,使用make_blobs 函數產生了一個包含300 個樣本點的資料集,共包含4 個簇。然後使用 KMeans 函數進行聚類,指定簇的數量為 4,並透過 fit_predict 方法得到每個資料點的分類結果。最後使用 Matplotlib 繪製聚類結果。
二、層次聚類演算法
層次聚類演算法是一種自底向上的聚類演算法,根據資料的相似度,將資料逐步合併為更大的簇。此演算法的具體步驟如下:
以下是使用層次聚類演算法進行聚類分析的Python 實例:
from sklearn.cluster import AgglomerativeClustering from sklearn.datasets import make_moons import matplotlib.pyplot as plt # 生成随机数据 X, y = make_moons(n_samples=200, noise=0.05, random_state=42) # 运行层次聚类算法 agglomerative = AgglomerativeClustering(n_clusters=2) y_pred = agglomerative.fit_predict(X) # 绘制聚类结果 plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.title("Agglomerative Clustering") plt.show()
上述程式碼中,使用make_moons 函數產生了一個包含200 個樣本點的資料集,並使用AgglomerativeClustering 函數進行聚類,指定簇的數量為2。最後使用 Matplotlib 繪製聚類結果。
三、DBSCAN 演算法
DBSCAN 演算法是一種基於密度的聚類演算法,可根據資料集的密度將資料點分為不同的簇。演算法的具體步驟如下:
下面是使用DBSCAN 演算法進行聚類分析的Python 實例:
from sklearn.cluster import DBSCAN from sklearn.datasets import make_moons import matplotlib.pyplot as plt # 生成随机数据 X, y = make_moons(n_samples=200, noise=0.05, random_state=42) # 运行 DBSCAN 算法 dbscan = DBSCAN(eps=0.2, min_samples=5) y_pred = dbscan.fit_predict(X) # 绘制聚类结果 plt.scatter(X[:, 0], X[:, 1], c=y_pred) plt.title("DBSCAN Clustering") plt.show()
上述程式碼中,使用make_moons 函數產生了一個包含200 個樣本點的資料集,並使用DBSCAN 函數進行聚類,指定了半徑和最小樣本數的閾值。最後使用 Matplotlib 繪製聚類結果。
總結
本文介紹了 Python 中的三種常用聚類演算法,並給出了對應的實例應用。聚類演算法是一種十分有用的資料分析方法,可以幫助我們發現資料中的隱藏模式和關係。在實際應用中,我們可以根據資料的特性和需求選擇不同的演算法進行分析。
以上是Python中的聚類分析實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!