Trên trang này, W3schools. com hợp tác với Học viện Khoa học Dữ liệu NYC để cung cấp nội dung đào tạo kỹ thuật số cho sinh viên của chúng tôi
Phân cụm theo thứ bậc là một phương pháp học tập không giám sát để phân cụm các điểm dữ liệu. Thuật toán xây dựng các cụm bằng cách đo lường sự khác biệt giữa dữ liệu. Học không giám sát có nghĩa là một mô hình không cần phải được đào tạo và chúng ta không cần biến "mục tiêu". Phương pháp này có thể được sử dụng trên bất kỳ dữ liệu nào để trực quan hóa và giải thích mối quan hệ giữa các điểm dữ liệu riêng lẻ
Ở đây, chúng tôi sẽ sử dụng phân cụm theo cấp bậc để nhóm các điểm dữ liệu và trực quan hóa các cụm bằng cách sử dụng cả biểu đồ dendrogram và biểu đồ phân tán
Làm thế nào nó hoạt động?
Chúng tôi sẽ sử dụng Phân cụm kết tụ, một loại phân cụm phân cấp theo cách tiếp cận từ dưới lên. Chúng tôi bắt đầu bằng cách coi từng điểm dữ liệu là cụm riêng của nó. Sau đó, chúng tôi nối các cụm với nhau có khoảng cách ngắn nhất giữa chúng để tạo các cụm lớn hơn. Bước này được lặp lại cho đến khi một cụm lớn được hình thành chứa tất cả các điểm dữ liệu
Phân cụm theo thứ bậc yêu cầu chúng tôi quyết định cả khoảng cách và phương pháp liên kết. Chúng tôi sẽ sử dụng khoảng cách euclide và phương pháp liên kết Ward, cố gắng giảm thiểu phương sai giữa các cụm
Thí dụ
Bắt đầu bằng cách trực quan hóa một số điểm dữ liệu
nhập numpy dưới dạng np
nhập matplotlib. pyplot dưới dạng plt
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16,
plt. phân tán[x, y]
plt. hiển thị []
Kết quả
QUẢNG CÁO
Bây giờ chúng tôi tính toán liên kết phường bằng khoảng cách euclide và trực quan hóa nó bằng chương trình dendro
Thí dụ
nhập numpy dưới dạng np
nhập matplotlib. pyplot dưới dạng plt
từ scipy. cụm. dendrogram nhập phân cấp, liên kết
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16,
dữ liệu = danh sách [zip [x, y]]
linkage_data = link[data, method='ward', metric='euclidean']
dendrogram[linkage_data]
plt. buổi bieu diễn[]
Kết quả
Thí dụ
nhập numpy dưới dạng np
nhập matplotlib. pyplot dưới dạng plt
từ sklearn. nhập cụm AgglomerativeClustering
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16,
dữ liệu = danh sách [zip [x, y]]
hierarchical_cluster = AgglomerativeClustering[n_clusters=2, affinity='euclidean',linked='ward']
nhãn = hierarchical_cluster. fit_predict[dữ liệu]
plt. phân tán[x, y, c=nhãn]
plt. hiển thị []
Kết quả
Ví dụ giải thích
Nhập các mô-đun bạn cần
import numpy as np
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
from sklearn.cluster import AgglomerativeClustering
Bạn có thể tìm hiểu về mô-đun Matplotlib trong "Hướng dẫn Matplotlib" của chúng tôi
Bạn có thể tìm hiểu về mô-đun SciPy trong Hướng dẫn SciPy của chúng tôi
NumPy là thư viện để làm việc với mảng và ma trận trong Python, bạn có thể tìm hiểu về mô-đun NumPy trong Hướng dẫn NumPy của chúng tôi
scikit-learning là một thư viện phổ biến cho máy học
Tạo các mảng giống với hai biến trong tập dữ liệu. Lưu ý rằng mặc dù chúng ta chỉ có hai biến ở đây, phương pháp này sẽ hoạt động với bất kỳ số lượng biến nào.
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]
Biến dữ liệu thành một tập hợp các điểm
data = list[zip[x, y]]
print[data]
Kết quả
[[4, 21], [5, 19], [10, 24], [4, 17], [3, 16], [11, 25], [14, 24], [6, 22], [10, 21], [12, 21]]
Tính toán mối liên kết giữa tất cả các điểm khác nhau. Ở đây, chúng tôi sử dụng phép đo khoảng cách euclide đơn giản và liên kết của Ward, tìm cách giảm thiểu phương sai giữa các cụm
linkage_data = linkage[data, method='ward', metric='euclidean']
Cuối cùng, vẽ kết quả trong một dendrogram. Biểu đồ này sẽ cho chúng ta thấy hệ thống phân cấp của các cụm từ dưới cùng [các điểm riêng lẻ] lên trên cùng [một cụm duy nhất bao gồm tất cả các điểm dữ liệu]
plt.show[]
cho phép chúng tôi trực quan hóa chương trình dendro thay vì chỉ dữ liệu liên kết thô
dendrogram[linkage_data]
plt.show[]
Kết quả
Thư viện scikit-learning cho phép chúng ta sử dụng phân cụm theo thứ bậc theo một cách khác. Đầu tiên, chúng tôi khởi tạo lớp AgglomerativeClustering
với 2 cụm, sử dụng cùng khoảng cách euclide và liên kết Ward
________số 8
Phương pháp .fit_predict
có thể được gọi trên dữ liệu của chúng tôi để tính toán các cụm bằng cách sử dụng các tham số đã xác định trên số lượng cụm đã chọn của chúng tôi
x = [4, 5, 10, 4, 3, 11, 14 , 6, 10, 12]
0
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]
Kết quả
Cuối cùng, nếu chúng ta vẽ cùng một dữ liệu và tô màu các điểm bằng cách sử dụng nhãn được gán cho từng chỉ mục theo phương pháp phân cụm theo cấp bậc, chúng ta có thể thấy cụm mà mỗi điểm được gán cho