Python中的聚類分析實例

王林
發布: 2023-06-10 12:30:07
原創
3032 人瀏覽過

聚類分析是一種常用的資料分析方法,可以將資料集劃分為不同的群組或類別。 Python 提供了多種聚類演算法,我們可以根據不同的需求選擇不同的演算法進行分析。本文將介紹一些 Python 中常用的聚類演算法,並給出實例應用。

一、K-Means 演算法

K-Means 演算法是一個常用的聚類演算法,根據歐幾裡得距離將資料分組。此演算法將資料集分為 k 個簇,其中每個簇的中心點是簇中所有成員的平均值。演算法的具體步驟如下:

  1. 隨機選擇 k 個點作為初始的簇中心。
  2. 計算所有資料點與簇中心的距離,並將每個資料點歸為距離最近的簇。
  3. 根據新的歸類結果,重新計算每個簇的中心點。
  4. 重複第 2 步和第 3 步,直到簇不再改變或達到指定的迭代次數。

下面是使用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 繪製聚類結果。

二、層次聚類演算法

層次聚類演算法是一種自底向上的聚類演算法,根據資料的相似度,將資料逐步合併為更大的簇。此演算法的具體步驟如下:

  1. 將每個資料點視為一個單獨的簇。
  2. 計算兩個距離最近的簇之間的距離。
  3. 將距離最近的兩個群集合併為一個新簇。
  4. 重複第 2 步和第 3 步,直到將所有簇合併為一個簇或達到指定的聚類數量。

以下是使用層次聚類演算法進行聚類分析的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 演算法是一種基於密度的聚類演算法,可根據資料集的密度將資料點分為不同的簇。演算法的具體步驟如下:

  1. 隨機選擇一個未存取的資料點作為核心點。
  2. 找出與核心點距離不超過給定半徑的所有點,作為一個以該核心點為中心的密度可達區域。
  3. 如果一個點在另一個核心點的密度可達區域內,則將其和該核心點合併為一個簇。
  4. 重複第 1 步到第 3 步,直到沒有新的核心點被存取。

下面是使用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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!