Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Việc sử dụng máy học không được giám sát & NBSP; Thuật toán học máy để phân tích và phân cụm các bộ dữ liệu không nhãn. Các thuật toán hiệu quả nhất của việc học không giám sát là phân cụm và các quy tắc liên kết. Phân cụm phân cấp là một trong những thuật toán phân cụm được sử dụng để tìm một mối quan hệ và mô hình ẩn từ bộ dữ liệu không được dán nhãn. Bài viết này sẽ bao gồm các phân cụm phân cấp một cách chi tiết bằng cách chứng minh việc triển khai thuật toán, số lượng ước tính cụm bằng phương pháp khuỷu tay và hình thành các dendrogram sử dụng python. Chúng tôi sẽ sử dụng Jupyter Notebook và AWS Sagemaker Studio cho mục đích thực hiện và trực quan hóa.clustering and association rules. Hierarchical clustering is one of the clustering algorithms used to find a relation and hidden pattern from the unlabeled dataset. This article will cover Hierarchical clustering in detail by demonstrating the algorithm implementation, the number of cluster estimations using the Elbow method, and the formation of dendrograms using Python. We will use Jupyter Notebook and AWS SageMaker Studio for implementation and visualization purposes.

Show

Mục lục

  • Phân cụm phân cấp là gì?
    • Thuật toán phân cụm phân cấp hoạt động như thế nào?
    • Đo khoảng cách bewteen hai cụm
    • Dendrogram trong phân cụm phân cấp
  • Việc thực hiện thuật toán phân cụm theo phân cấp
    • Khám phá và chuẩn bị bộ dữ liệu
    • Dendrogram
    • Sử dụng phương pháp khuỷu tay để ước tính số lượng cụm
    • Thực hiện phân cụm phân cấp kết tụ
  • Bản tóm tắt

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Sách học máy tốt nhất cho người mới bắt đầu và chuyên gia

Khi học máy ngày càng phổ biến, cả người mới bắt đầu và các chuyên gia cần luôn cập nhật những tiến bộ mới nhất. Đối với người mới bắt đầu, hãy xem những cuốn sách học máy tốt nhất có thể giúp hiểu rõ về những điều cơ bản. Đối với các chuyên gia, đọc những cuốn sách này có thể giúp theo kịp với cảnh quan luôn thay đổi. Trong cả hai trường hợp, một vài lý do chính để kiểm tra những cuốn sách này có thể có lợi. Đầu tiên, họ cung cấp một cái nhìn tổng quan toàn diện về vấn đề này. Thứ hai, họ cung cấp những hiểu biết sâu sắc từ các chuyên gia hàng đầu trong lĩnh vực này. Và thứ ba, họ đưa ra lời khuyên cụ thể về cách áp dụng các khái niệm học máy trong các kịch bản trong thế giới thực. Khi học máy tiếp tục phát triển, không có nghi ngờ gì về việc những cuốn sách này sẽ tiếp tục là nguồn lực thiết yếu cho bất cứ ai muốn đi trước đường cong.

Phân cụm phân cấp là gì?

Thuật toán phân cụm phân cấp hoạt động như thế nào?dendrogram. A dendrogram is a tree diagram showing hierarchical relationships between different datasets.

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Đo khoảng cách bewteen hai cụmK-means clustering and hierarchical clustering may look similar, but they both differ depending on how they work.

Dendrogram trong phân cụm phân cấp

Việc thực hiện thuật toán phân cụm theo phân cấp

  • Khám phá và chuẩn bị bộ dữ liệu is a bottom-up approach in which the algorithm starts with taking all data points as single clusters and merging them until one cluster is left.
  • Dendrogram is the reverse to the agglomerative algorithm that uses a top-bottom approach (it takes all data points of a single cluster and divides them until every data point becomes a new cluster).
Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Sử dụng phương pháp khuỷu tay để ước tính số lượng cụm

Dendrogram trong phân cụm phân cấp

Thuật toán phân cụm phân cấp hoạt động như thế nào?

Đo khoảng cách bewteen hai cụm

Dendrogram trong phân cụm phân cấp

Việc thực hiện thuật toán phân cụm theo phân cấp

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Khám phá và chuẩn bị bộ dữ liệu

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Dendrogram

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Sử dụng phương pháp khuỷu tay để ước tính số lượng cụm

Đo khoảng cách bewteen hai cụm

Dendrogram trong phân cụm phân cấpLinkage methods can calculate this distance:

Việc thực hiện thuật toán phân cụm theo phân cấp is the shortest distance between the closest points of the clusters calculated by any distance finding method (the most popular is the Euclidean distance).

Dendrogram trong phân cụm phân cấp

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Việc thực hiện thuật toán phân cụm theo phân cấp is the longest distance between the two points of two different clusters. This linkage method allows you to create tighter clusters than a single linkage approach.

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Liên kết centroid là khoảng cách giữa trung tâm của hai cụm. is the distance between the centroid of two clusters.

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Tùy thuộc vào các mô -đun Python, có thể có những cách khác để đo khoảng cách giữa các cụm. Xin vui lòng, hãy tham khảo tài liệu mô -đun để hiểu rõ hơn về những gì mà chính xác đo.

Dendrogram trong phân cụm phân cấp

Dendrogram là một cấu trúc giống như cây lưu trữ từng bước của quá trình thực hiện thuật toán phân cấp. Trong biểu đồ dendrogram, trục x hiển thị tất cả các điểm dữ liệu và trục y cho thấy khoảng cách giữa chúng. Dendrogram dưới đây mô tả sự hình thành của các cụm.

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Khi chúng ta có dendrogram cho các cụm, chúng ta có thể đặt một ngưỡng (một đường nét ngang ngang màu đỏ) để thấy trực quan số lượng các lớp đầu ra từ tập dữ liệu sau khi thực hiện thuật toán.threshold (a red horizontal dashed line) to visually see the number of output classes from the dataset after algorithm execution.

Ngưỡng là khoảng cách tối thiểu cần thiết giữa các cụm gần nhất để coi chúng như một cụm riêng biệt. Đây là biến miền kiến ​​thức mà bạn cần xác định chính mình. Nếu bạn không có đủ thông tin về miền kinh doanh của mình, bạn có thể sử dụng các phương thức sau để xác định số lượng cụm trong tập dữ liệu (hãy xem các phương thức 7 7 để chọn số lượng cụm tối ưu của bài viết để tìm việc triển khai mã số). is minimum distance required between the nearest clusters to treat them as a separate clusters. This is knowledge domain variable which you need to define yourself. If you don’t have enough information about your business domain, you can use the following methods to define the number of clusters in the dataset (take a look at the “7 methods for selecting the optimal number of clusters” article to find the implementation code).

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Ví dụ, đối với giá trị ngưỡng là 7, số lượng cụm sẽ là 2. Đối với giá trị ngưỡng bằng 3, chúng tôi sẽ nhận được 4 cụm, v.v.

Việc thực hiện thuật toán phân cụm theo phân cấp

Hãy để thực hiện thuật toán phân cụm phân cấp để nhóm các khách hàng của trung tâm thương mại (bạn có thể nhận bộ dữ liệu & nbsp; tại đây) bằng máy tính xách tay Python và Jupyter.

Liên kết được Tài trợ

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

Để chia khách hàng thành các danh mục, chúng tôi cần các mô -đun Python sau:

  • SKearn
  • matplotlib
  • gấu trúc
  • Numpy
  • SeaBall
  • âm mưu
  • Yellowbrick

Bạn có thể cài đặt các mô -đun này bằng cách chạy các lệnh sau trong ô của Notebook Jupyter:

%pip install sklearn
%pip install matplotlib
%pip install pandas
%pip install numpy
%pip install seaborn
%pip install plotly
%pip install yellowbrick
%pip install chart_studio

Trong phần này, chúng tôi sẽ sử dụng dữ liệu phân khúc khách hàng trung tâm. Bạn có thể tải xuống bộ dữ liệu từ liên kết này.

Khám phá và chuẩn bị bộ dữ liệu

Hãy để nhập bộ dữ liệu bằng mô -đun

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv('Hierarchical_clustering_data.csv')

# dataset 
dataset.head()
0.

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv('Hierarchical_clustering_data.csv')

# dataset 
dataset.head()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Bước quan trọng tiếp theo là kiểm tra xem bộ dữ liệu của chúng tôi có chứa bất kỳ giá trị null nào không. Lớp DataFrame của mô -đun Pandas cung cấp phương thức

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv('Hierarchical_clustering_data.csv')

# dataset 
dataset.head()
1 trả về số lượng của các giá trị null, nếu có.

Liên kết được Tài trợ

# checking for null values
dataset.isnull().sum()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

# importing the required modules
import matplotlib.pyplot as plt
import seaborn as sns

# graph size
plt.figure(1 , figsize = (15 , 6))
graph = 0 

# for loop
for x in ['Age' , 'Annual Income (k$)' , 'Spending Score (1-100)']:
    graph += 1
    
    # ploting graph
    plt.subplot(1 , 3 , graph)
    plt.subplots_adjust(hspace = 0.5 , wspace = 0.5)
    sns.distplot(dataset[x] , bins = 15)
    plt.title('Distplot of {}'.format(x))

# showing the graph
plt.show()

Output:

Liên kết được Tài trợ

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

Để chia khách hàng thành các danh mục, chúng tôi cần các mô -đun Python sau:

# importing preprocessing 
from sklearn import preprocessing 

# lable encoders
label_encoder = preprocessing.LabelEncoder() 

# converting gender to numeric values
dataset['Genre'] = label_encoder.fit_transform(dataset['Genre'])

# head
dataset.head()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

SKearn

Liên kết được Tài trợ

# graph size
plt.figure(1, figsize = (20 ,8))

# creating heatmap
sns.heatmap(dataset)

# showing graph
plt.show()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

Để chia khách hàng thành các danh mục, chúng tôi cần các mô -đun Python sau:

Liên kết được Tài trợ

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

# importing the required module
import scipy.cluster.hierarchy as sch

# graph size
plt.figure(1, figsize = (16 ,8))

# creating the dendrogram
dendrogram = sch.dendrogram(sch.linkage(dataset, method  = "ward"))

# ploting graphabs
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Euclidean distances')
plt.show()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Để chia khách hàng thành các danh mục, chúng tôi cần các mô -đun Python sau:

SKearn

Liên kết được Tài trợ

# Import ElbowVisualizer
from sklearn.cluster import AgglomerativeClustering
from yellowbrick.cluster import KElbowVisualizer
model = AgglomerativeClustering()

# k is range of number of clusters.
visualizer = KElbowVisualizer(model, k=(2,30), timings=False)
# Fit data to visualizer
visualizer.fit(dataset)
# Finalize and render figure
visualizer.show()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

Để chia khách hàng thành các danh mục, chúng tôi cần các mô -đun Python sau:

Liên kết được Tài trợ

import scipy.cluster.hierarchy as sch

# size of image
plt.figure(1, figsize = (16 ,8))  
plt.grid(b=None)

# creating the dendrogram 
dend = sch.dendrogram(sch.linkage(dataset, method='ward'))

# theroshold
plt.axhline(y=175, color='orange')

# ploting graphabs
plt.title('Dendrogram')
plt.xlabel('Customers')
plt.ylabel('Euclidean distances')
plt.show()

Output:

Hướng dẫn elbow method hierarchical clustering python - phương pháp khuỷu tay phân cấp cụm phân cấp python

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân chia khách hàng thành các nhóm dựa trên doanh số, nhu cầu của họ, v.v ... Chủ doanh nghiệp có thể sử dụng phân khúc này để làm việc với mọi phân khúc khách hàng và cải thiện mối quan hệ giữa công ty và khách hàng hoặc tăng doanh thu từ Danh mục khách hàng.

Để chia khách hàng thành các danh mục, chúng tôi cần các mô -đun Python sau:

Liên kết được Tài trợ

import plotly as plt
import plotly.graph_objects as go

# calling the agglomerative algorithm
model = AgglomerativeClustering(n_clusters = 8, affinity = 'euclidean', linkage ='average')

# training the model on dataset
y_model = model.fit_predict(dataset)

# creating pandas dataframe
dataset['cluster'] = pd.DataFrame(y_model)

# creating scattered graph
trace1 = go.Scatter3d(
    
    # storing the variables in x, y, and z axis
    x= dataset['Age'],
    y= dataset['Spending Score (1-100)'],
    z= dataset['Annual Income (k$)'],
    mode='markers',
     marker=dict(
        color = dataset['cluster'], 
        size= 3,
        line=dict(
            color= dataset['cluster'],
            width= 12
        ),
        opacity=0.9
     )
)

# ploting graph 
data = [trace1]
layout = go.Layout(
    title= 'Clusters using Agglomerative Clustering',
    scene = dict(
            xaxis = dict(title  = 'Age'),
            yaxis = dict(title  = 'Spending Score'),
            zaxis = dict(title  = 'Annual Income')
        ),
    width=1024, height=512
)
fig = go.Figure(data=data, layout=layout)
plt.offline.iplot(fig)

Output:

Liên kết được Tài trợ

Bản tóm tắt

Phân cụm phân cấp là một thuật toán học tập không được giám sát nhóm các đối tượng tương tự từ bộ dữ liệu thành các cụm. Bài viết này bao gồm các phân cụm phân cấp một cách chi tiết bằng cách bao gồm việc triển khai thuật toán, số lượng ước tính cụm bằng phương pháp khuỷu tay và hình thành các dendrogram sử dụng python.

Đây là Bashir Alam, chuyên ngành khoa học máy tính và có kiến ​​thức sâu rộng về Python, học máy và khoa học dữ liệu. Tôi đã làm việc với các tổ chức và công ty khác nhau cùng với các nghiên cứu của tôi. Tôi có kiến ​​thức vững chắc và kinh nghiệm làm việc ngoại tuyến và trực tuyến, trên thực tế, tôi thoải mái hơn khi làm việc trực tuyến.

Tôi thích học các công nghệ và kỹ năng mới và tôi tin rằng tôi đủ thông minh để học các công nghệ mới trong một khoảng thời gian ngắn.

Liên kết được Tài trợ

Bạn có thể sử dụng phương pháp khuỷu tay để phân cụm phân cấp không?

Trong K-MEANS, số lượng cụm tối ưu được tìm thấy bằng phương pháp khuỷu tay. Trong phân cụm phân cấp, các dendrogram được sử dụng cho mục đích này. Các dòng dưới đây của mã vẽ một dendrogram cho bộ dữ liệu của chúng tôi.In hierarchical clustering, the dendrograms are used for this purpose. The below lines of code plot a dendrogram for our dataset.

Làm thế nào để bạn sử dụng phương pháp khuỷu tay trong Python?

Để tìm giá trị tối ưu của các cụm, phương thức khuỷu tay tuân theo các bước dưới đây: 1 thực hiện phân cụm K-mean trên một bộ dữ liệu nhất định cho các giá trị k khác nhau (dao động từ 1-10). 2 Đối với mỗi giá trị của K, tính toán giá trị WCSS. 3 sơ đồ biểu đồ/đường cong giữa các giá trị WCSS và số lượng cụm tương ứng K.

Làm thế nào để bạn thực hiện một cụm phân cấp trong Python?

Làm thế nào nó hoạt động?..
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 như plt. ....
Nhập khẩu Numpy dưới dạng NP. Nhập matplotlib.pyplot như plt. từ scipy.cluster.Hierarchy nhập khẩu dendrogram, liên kết. ....
Nhập khẩu Numpy dưới dạng NP. Nhập matplotlib.pyplot như plt. Từ sklearn.Cluster Nhập AgglomerativeClustering ..

Phương pháp khuỷu tay được sử dụng như thế nào trong phân cụm?

Trong phân tích cụm, phương pháp khuỷu tay là một phương pháp heuristic được sử dụng để xác định số lượng cụm trong tập dữ liệu.Phương pháp này bao gồm vẽ đồ thị biến thể được giải thích như là một hàm của số lượng cụm và chọn khuỷu tay của đường cong làm số lượng cụm để sử dụng.plotting the explained variation as a function of the number of clusters and picking the elbow of the curve as the number of clusters to use.