Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penjelasan terperinci algoritma pengelompokan hierarki dalam Python

Penjelasan terperinci algoritma pengelompokan hierarki dalam Python

WBOY
WBOYasal
2023-06-10 09:28:372548semak imbas

Algoritma pengelompokan hierarki ialah algoritma pembelajaran tanpa pengawasan yang mengumpulkan titik data Ia juga dipanggil pengelompokan hierarki atau algoritma pengelompokan hierarki. Ia secara berterusan menggabungkan titik atau kelompok yang paling serupa berdasarkan persamaan atau jarak antara titik, dan akhirnya memperoleh struktur pokok (juga dipanggil pokok pengelompokan atau pokok klasifikasi), membahagikan semua titik kepada beberapa kelompok .

Python ialah salah satu bahasa pengaturcaraan yang digunakan secara meluas, dengan banyak alatan pemprosesan data dan visualisasi yang berkuasa, dan terdapat banyak pelaksanaan algoritma pengelompokan hierarki. Dalam artikel ini, kita akan membincangkan kaedah dan beberapa amalan terbaik untuk melaksanakan algoritma pengelompokan hierarki dalam Python.

Penyediaan data

Sebelum memulakan pengelompokan hierarki, anda perlu menyediakan set data untuk pengelompokan. Secara umumnya, set data ini harus memenuhi syarat berikut:

  • Set data hendaklah berupa data bukan angka boleh menyebabkan ralat dalam algoritma.
  • Set data hendaklah dipraproses, iaitu, ia telah menjalani penyeragaman, pemilihan ciri atau operasi prapemprosesan lain untuk menghapuskan bias dan hingar data.

Dalam Python, kita boleh menggunakan perpustakaan panda untuk memuatkan, menyediakan dan praproses data. panda menyediakan struktur data DataFrame, yang boleh mengendalikan data jadual dengan mudah. Berikut ialah contoh mudah:

import pandas as pd

# 读取csv文件
data = pd.read_csv('data.csv')

# 对数据进行预处理(比如标准化)
data = (data - data.mean()) / data.std()

Di mana, kami mula-mula memanggil fungsi read_csv panda untuk membaca fail csv, dan kemudian menormalkan data baca untuk meletakkan data ke dalam algoritma.

Pilihan algoritma pengelompokan

Dalam Python, terdapat banyak algoritma pengelompokan untuk dipilih dan algoritma pengelompokan hierarki adalah salah satu daripadanya. Walau bagaimanapun, ia memerlukan pemilihan algoritma yang sesuai berdasarkan ciri dan keperluan data.

Dalam algoritma pengelompokan hierarki klasik, terdapat dua kaedah pemautan utama: jarak minimum dan jarak maksimum. Kaedah jarak minimum (atau ketersambungan mudah) membandingkan titik paling hampir serupa dalam dua populasi, manakala kaedah jarak maksimum (atau jumlah ketersambungan) membandingkan titik paling kurang serupa dalam dua populasi. Di samping itu, terdapat kaedah pautan purata (juga dipanggil algoritma UPGMA), yang menggunakan jarak purata antara dua kumpulan untuk mengira persamaan. Dalam Python, kita boleh menggunakan fungsi linkage daripada perpustakaan scipy untuk melaksanakan pengelompokan hierarki. Berikut ialah contoh mudah:

from scipy.cluster.hierarchy import linkage

# 进行层次聚类
Z = linkage(data, method='single')

Dalam contoh ini, kami menggunakan fungsi linkage untuk pengelompokan jarak minimum. Parameter pertama fungsi ini ialah data dan parameter kedua ialah kaedah pautan untuk digunakan. Di sini kami menggunakan kaedah 'single', iaitu kaedah pautan jarak minimum.

Visualisasi struktur pokok

Struktur pokok ialah bahagian teras algoritma pengelompokan hierarki, yang boleh divisualisasikan menggunakan dendrogram. Python menyediakan banyak alat untuk visualisasi, dua daripada yang paling popular ialah perpustakaan matplotlib dan seaborn.

Berikut ialah contoh mudah melukis dendrogram menggunakan perpustakaan matplotlib:

import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram

fig, ax = plt.subplots(figsize=(15, 10))

# 绘制树状图
dendrogram(Z, ax=ax, leaf_font_size=8)
plt.show()

Dalam contoh ini, kita mula-mula mencipta kanvas dengan paksi kapak dan kemudian memanggil fungsi dendrogram Draw gambar rajah pokok. Parameter pertama fungsi ini ialah matriks Z, dan parameter kedua ialah objek paksi. leaf_font_size Parameter digunakan untuk melaraskan saiz daun.

Menggunakan perpustakaan seaborn kita boleh mendapatkan visualisasi yang lebih cantik dan interaktif. Berikut ialah contoh menggunakan perpustakaan seaborn untuk melukis dendrogram:

import seaborn as sns

sns.set(style='white')

# 将聚类结果转换为DataFrame
df = pd.DataFrame({'x': data.index, 'y': Z[:, 2]})

# 绘制树状图
sns.scatterplot(x='x', y='y', data=df, s=50, legend=False)
plt.show()

Dalam contoh ini, kita mula-mula menukar hasil pengelompokan ke dalam bingkai data, dan kemudian menggunakan fungsi scatterplot dalam perpustakaan seaborn untuk lukis dendrogram . sParameter digunakan untuk melaraskan saiz mata.

Pemilihan kelompok

Dalam algoritma pengelompokan hierarki, terdapat dua kaedah untuk memilih kelompok: berdasarkan jarak (iaitu ketinggian dalam dendrogram) dan berdasarkan kuantiti. Berdasarkan jarak bermakna menetapkan jarak maksimum atau jarak minimum sebagai ambang dan membelah dendrogram untuk membentuk kelompok. Berasaskan nombor merujuk kepada memilih bilangan kelompok tertentu, biasanya bermula dari jarak maksimum atau minimum. Kedua-dua kaedah mempunyai kelebihan dan kekurangan dan perlu dipilih mengikut kes.

Berikut ialah contoh mudah untuk menukar hasil pengelompokan hierarki kepada senarai kelompok:

from scipy.cluster.hierarchy import fcluster

# 将层次聚类结果转换为簇列表
clusters = fcluster(Z, t=2.0, criterion='distance')

Dalam contoh ini, kami menggunakan fungsi fcluster untuk menukar hasil pengelompokan hierarki kepada senarai kelompok. Parameter pertama fungsi ini ialah matriks Z, parameter kedua ialah ambang, dan parameter ketiga ialah kriteria untuk menentukan jenis ambang.

Ringkasan

Dalam artikel ini, kami membincangkan kaedah dan beberapa amalan terbaik untuk melaksanakan algoritma pengelompokan hierarki dalam Python. Kami mula-mula melihat penyediaan data dan kemudian membincangkan pemilihan algoritma dan visualisasi struktur pokok. Akhir sekali, kita membincangkan kaedah pemilihan kelompok. Kaedah ini boleh membantu kami memahami dengan lebih baik algoritma pengelompokan hierarki, supaya kami boleh menggunakannya pada data kami sendiri dan membuat kesimpulan yang berguna.

Atas ialah kandungan terperinci Penjelasan terperinci algoritma pengelompokan hierarki dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn