Con trăn cụm phường

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ả

Chạy ví dụ »

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ả

Chạy ví dụ »

Ở đây, chúng ta làm điều tương tự với thư viện scikit-learning của Python. Sau đó, trực quan hóa trên một cốt truyện 2 chiều

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ả

Chạy ví dụ »

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]
y = [21, 19, 24, 17, 16, 25, 24, 22, 21, 21]
0

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

Chủ Đề