Con trăn SLINK
Như chúng ta đã biết, phân cụm tổng hợp theo thứ bậc bắt đầu bằng việc coi mỗi quan sát là một cụm riêng lẻ, sau đó hợp nhất các cụm lặp lại cho đến khi tất cả các điểm dữ liệu được hợp nhất thành một cụm duy nhất. Dendrograms được sử dụng để biểu thị kết quả phân cụm theo thứ bậc Show
Các cụm được hợp nhất dựa trên khoảng cách giữa chúng và để tính khoảng cách giữa các cụm chúng ta có các loại liên kết khác nhau tiêu chí liên kếtNó xác định khoảng cách giữa các bộ quan sát như là một hàm của khoảng cách theo cặp giữa các quan sát
Trong bài viết này, chúng tôi mong muốn tìm hiểu quy trình Phân cụm bằng Phương pháp Liên kết Đơn Phân cụm bằng liên kết đơnBắt đầu với việc nhập các thư viện cần thiết import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline import scipy.cluster.hierarchy as shc from scipy.spatial.distance import squareform, pdist Hãy để chúng tôi tạo dữ liệu đồ chơi bằng cách sử dụng numpy. ngẫu nhiên. mẫu thử ngẫu nhiên a = np.random.random_sample(size = 5) b = np.random.random_sample(size = 5) Khi chúng tôi tạo các điểm dữ liệu ngẫu nhiên, chúng tôi sẽ tạo khung dữ liệu gấu trúc point = ['P1','P2','P3','P4','P5'] data = pd.DataFrame({'Point':point, 'a':np.round(a,2), 'b':np.round(b,2)}) data = data.set_index('Point') data Xem qua dữ liệu đồ chơi của chúng tôi. Trông sạch sẽ. Hãy để chúng tôi chuyển sang các bước phân cụm Bước 1. Trực quan hóa dữ liệu bằng Biểu đồ phân tánplt.figure(figsize=(8,5)) plt.scatter(data['a'], data['b'], c='r', marker='*') plt.xlabel('Column a') plt.ylabel('column b') plt.title('Scatter Plot of x and y')for j in data.itertuples(): plt.annotate(j.Index, (j.a, j.b), fontsize=15)Âm mưu phân tán của a, b (Hình ảnh của tác giả) Bước 2. Tính ma trận khoảng cách trong phương pháp Euclide bằng pdistdist = pd.DataFrame(squareform(pdist(data[[‘a’, ‘b’]]), ‘euclidean’), columns=data.index.values, index=data.index.values) Để thuận tiện cho chúng ta, sẽ chỉ xem xét các giá trị cận dưới của ma trận như hình bên dưới Ma trận khoảng cách Bước 3. Tìm khoảng cách nhỏ nhất và hợp nhất chúng thành một cụmTa thấy các điểm P3, P4 có khoảng cách nhỏ nhất là “0. 30232”. Vì vậy, trước tiên chúng tôi sẽ hợp nhất chúng thành một cụm Bước 4. Tính lại ma trận khoảng cách sau khi tạo cụmCập nhật khoảng cách giữa cụm (P3,P4) thành P1 = Min(dist(P3,P4), P1)) -> Min(dist(P3,P1),dist(P4,P1)) = Tối thiểu(0. 59304, 0. 46098) = 0. 46098 Cập nhật khoảng cách giữa cụm (P3,P4) thành P2 = Min(dist(P3,P4), P2) -> Min(dist(P3,P2),dist(P4,P2)) = Tối thiểu(0. 77369, 0. 61612) = 0. 61612 Cập nhật khoảng cách giữa cụm (P3,P4) thành P5 = Min(dist(P3,P4), P5) -> Min(dist(P3,P5),dist(P4,P5)) = Tối thiểu(0. 45222, 0. 35847) = 0. 35847 Cập nhật ma trận khoảng cách Lặp lại các bước 3,4 cho đến khi chúng ta còn lại một cụm duy nhất Sau khi tính toán lại ma trận khoảng cách, chúng ta cần tìm lại khoảng cách nhỏ nhất để tạo cụm Ta thấy các điểm P2, P5 có khoảng cách nhỏ nhất là “0. 32388”. Vì vậy, chúng tôi sẽ nhóm chúng thành một cụm và tính toán lại ma trận khoảng cách Cập nhật khoảng cách giữa cụm (P2,P5) thành P1 = Min(dist((P2,P5),P1)) -> Min(dist(P2,P1), dist(P5,P1)) = Tối thiểu(1. 04139, 0. 81841) = 0. 81841 Cập nhật khoảng cách giữa cụm (P2,P5) thành (P3,P4) = Min(dist((P2,P5), (P3,P4))) -> = Min(dist(P2,(P3,P4)), dist(P5,(P3,P4))) = Tối thiểu(khoảng cách(0. 61612, 0. 35847)) = 0. 35847 Sau khi tính toán lại ma trận khoảng cách, chúng ta cần tìm lại khoảng cách nhỏ nhất Cụm (P2,P5) có khoảng cách nhỏ nhất với cụm (P3,P4) “0. 35847”. Vì vậy, chúng tôi sẽ nhóm chúng lại với nhau Cập nhật khoảng cách giữa cụm (P3,P4,P2,P5) thành P1 = Tối thiểu(khoảng cách(((P3,P4),(P2,P5)), P1)) = Tối thiểu(0. 46098, 0. 81841) = 0. 46098 Với điều này, chúng tôi đã hoàn thành việc có được một cụm duy nhất Về mặt lý thuyết, dưới đây là các bước phân cụm
Chúng ta có thể hình dung điều tương tự bằng cách sử dụng dendrogram plt.figure(figsize=(12,5)) plt.title("Dendrogram with Single inkage") dend = shc.dendrogram(shc.linkage(data[['a', 'b']], method='single'), labels=data.index) Độ dài của các đường thẳng đứng trong dendrogram cho thấy khoảng cách. Ví dụ khoảng cách giữa các điểm P2, P5 là 0. 32388 Việc phân cụm từng bước mà chúng tôi đã thực hiện cũng giống như chương trình dendro 🙌 Ghi chú kết thúcĐến cuối bài viết này, chúng ta đã quen thuộc với hoạt động chuyên sâu của phân cụm theo cấp bậc Liên kết đơn. Trong bài viết sắp tới, chúng ta sẽ tìm hiểu các phương thức liên kết khác Người giới thiệu phân cụm theo thứ bậc Phân cụm liên kết đơn Liên kết GitHub Repo để thanh toán Jupyter Notebook Tôi hy vọng blog này sẽ giúp hiểu được hoạt động của Phân cụm phân cấp liên kết đơn. Xin hãy cho nó một cái vỗ tay 👏. học tập vui vẻ. 😊 Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định của Tác giả Công dụng của dendrogram là gì?Chúng ta có thể sử dụng dendrogram để thể hiện mối quan hệ giữa bất kỳ loại thực thể nào miễn là chúng ta có thể đo lường mức độ tương đồng của chúng với nhau . Trong phân tích từ vựng, chúng tôi so sánh sự phân bố của các từ khác nhau giữa toàn bộ văn bản hoặc các đoạn văn bản.
Python phân cụm liên kết trung bình là gì?Mối liên kết trung bình — Khoảng cách giữa tất cả thành viên của một cụm và tất cả thành viên của cụm khác được tính . Sau đó, giá trị trung bình của các khoảng cách này được sử dụng để xác định cụm nào sẽ hợp nhất.
Python phân cụm kết tụ là gì?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 tuân 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.
Sự khác biệt giữa liên kết đơn và cụm liên kết hoàn chỉnh là gì?Liên kết đơn - Bạn liên kết hai cụm dựa trên khoảng cách tối thiểu giữa 2 phần tử. Một nhược điểm của phương pháp này là nó có xu hướng tạo ra các cụm dài mỏng do bạn tạo liên kết chỉ dựa trên 2 điểm. Liên kết hoàn chỉnh - Bạn liên kết 2 cụm dựa trên khoảng cách tối đa giữa 2 phần tử |