Phương pháp nào của thư viện Sklearn được sử dụng để triển khai thuật toán phân cụm theo thứ bậc trong Python?

Máy học không giám sát sử dụng thuật toán Máy học để phân tích và phân cụm các tập dữ liệu không được gắn nhãn. Các thuật toán hiệu quả nhất của Học không giám sát là quy tắc phân cụm và kết hợp. Phân cụm theo thứ bậc là một trong những thuật toán phân cụm được sử dụng để tìm mối quan hệ và mẫu ẩn từ tập dữ liệu chưa được gắn nhãn. Bài viết này sẽ trình bày chi tiết về phân cụm theo cấp bậc bằng cách trình bày cách triển khai thuật toán, số lượng ước tính cụm bằng phương pháp Elbow và sự hình thành các dendrogram bằng Python. Chúng tôi sẽ sử dụng Jupyter Notebook và AWS SageMaker Studio cho mục đích triển khai và trực quan hóa

Mục lục

  • Phân cụm theo thứ bậc là gì?
    • Thuật toán phân cụm theo thứ bậc hoạt động như thế nào?
    • Đo khoảng cách giữa hai cụm
    • Dendrogram trong phân cụm phân cấp
  • Triển khai thuật toán phân cụm theo cấp bậc
    • Khám phá và chuẩn bị tập dữ liệu
    • Trực quan hóa Dendrogram
    • Sử dụng phương pháp Elbow để ước tính số cụm
    • Triển khai phân cụm theo thứ bậc kết tụ
  • Tóm lược

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

Khi Machine Learning ngày càng trở nên phổ biến, cả người mới bắt đầu và chuyên gia đều cầ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 Machine Learning tốt nhất có thể giúp hiểu rõ 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 bắt kịp với bối cảnh luôn thay đổi. Trong cả hai trường hợp, một số lý do chính để xem những cuốn sách này có thể hữu ích. Đầu tiên, chúng cung cấp một cái nhìn tổng quan toàn diện về chủ đề này, chủ yếu là về các thuật toán học má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 máy học trong các tình huống thực tế. Khi máy học tiếp tục phát triển, không còn nghi ngờ gì nữa, những cuốn sách này sẽ tiếp tục là tài nguyên thiết yếu cho bất kỳ ai có kiến ​​thức trước đây muốn đi trước xu hướng

Phân cụm theo thứ bậc là gì?

Phân cụm theo cấp bậc là một thuật toán Học máy không giám sát khác được sử dụng để nhóm các bộ dữ liệu chưa được gắn nhãn thành một cụm. Nó phát triển hệ thống phân cấp của các cụm dưới dạng cấu trúc hình cây được gọi là dendrogram. Chương trình dendro là sơ đồ cây hiển thị mối quan hệ phân cấp giữa các bộ dữ liệu khác nhau

Các vòng lặp FOR lồng nhau trong Python

Các vòng lặp FOR lồng nhau trong Python

Vui lòng bật JavaScript

Các vòng lặp FOR lồng nhau trong Python

Đôi khi, kết quả của phân cụm K-means và phân cụm theo thứ bậc có thể trông giống nhau, nhưng cả hai đều khác nhau tùy thuộc vào cách chúng hoạt động

Phân cụm theo thứ bậc sử dụng hai cách tiếp cận khác nhau để tạo các cụm

  • Kết hợp tổng hợp là một cách tiếp cận từ dưới lên trong đó thuật toán bắt đầu bằng việc lấy tất cả các điểm dữ liệu dưới dạng các cụm đơn lẻ và hợp nhất chúng cho đến khi chỉ còn lại một cụm
  • Phép chia ngược lại với thuật toán tổng hợp sử dụng phương pháp tiếp cận từ trên xuống dưới [thuật toán này lấy tất cả các điểm dữ liệu của một cụm duy nhất và chia chúng cho đến khi mọi điểm dữ liệu trở thành một cụm mới]

Một trong những lợi thế đáng kể nhất của Phân cụm theo thứ bậc so với K-mean là thuật toán không cần biết số lượng cụm được xác định trước. Chúng ta có thể chỉ định số lượng cụm tùy thuộc vào cấu trúc dendrogram

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

Hãy tập trung vào phương pháp Kết tụ để mô tả cách thức hoạt động của thuật toán phân cụm theo thứ bậc. Phương pháp này bắt đầu nối các điểm dữ liệu của tập dữ liệu gần nhau nhất và lặp lại cho đến khi nó hợp nhất tất cả các điểm dữ liệu thành một cụm duy nhất chứa toàn bộ tập dữ liệu

Ví dụ: hãy lấy sáu điểm dữ liệu làm tập dữ liệu của chúng tôi và xem xét các bước của thuật toán phân cụm theo cấp bậc tổng hợp

Bước đầu tiên của thuật toán là lấy mọi điểm dữ liệu thành một cụm riêng biệt. Nếu có N điểm dữ liệu, số cụm sẽ là N

Bước tiếp theo của thuật toán này là lấy hai điểm hoặc cụm dữ liệu gần nhất và hợp nhất chúng để tạo thành một cụm lớn hơn. Tổng số cụm trở thành N-1

Các lần lặp lại thuật toán tiếp theo sẽ tiếp tục hợp nhất hai cụm gần nhất cho đến khi chỉ còn lại một cụm

Sau khi thuật toán kết hợp tất cả các điểm dữ liệu vào một cụm duy nhất, nó có thể xây dựng chương trình dendro mô tả hệ thống phân cấp của cụm

Đo khoảng cách giữa hai cụm

Khoảng cách giữa các cụm hoặc điểm dữ liệu là rất quan trọng đối với phân cụm theo thứ bậc. Một số phương pháp Liên kết có thể tính toán khoảng cách này

Liên kết đơn là khoảng cách ngắn nhất giữa các điểm gần nhất của cụm được tính bằng bất kỳ phương pháp tìm khoảng cách nào [phổ biến nhất là khoảng cách Euclide]

Liên kết hoàn chỉnh là khoảng cách xa nhất giữa hai điểm thuộc hai cụm khác nhau. Phương pháp liên kết này cho phép bạn tạo các cụm chặt chẽ hơn so với phương pháp liên kết đơn lẻ

Liên kết tâm là khoảng cách giữa tâm của hai cụm

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

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

dendrogram là một cấu trúc dạng cây lưu trữ từng bước của quy trình thực thi 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 hiển thị khoảng cách giữa chúng. Chương trình dendro dưới đây mô tả sự hình thành các cụm

Khi chúng tôi có chương trình dendro cho các cụm, chúng tôi có thể đặt ngưỡng [đường đứt nét ngang màu đỏ] để xem trực quan số lượng lớp đầu ra từ tập dữ liệu sau khi thực hiện thuật toán

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 là một cụm riêng biệt. Đây là biến miền kiến ​​thức mà bạn cần tự xác định. Nếu không có đủ thông tin về lĩnh vực kinh doanh của mình, bạn có thể sử dụng các phương pháp sau để xác định số cụm trong tập dữ liệu [hãy xem bài viết “7 phương pháp chọn số cụm tối ưu” để biết cách triển khai

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.

Triển khai thuật toán phân cụm theo cấp bậc

Hãy triển khai thuật toán phân cụm theo cấp bậc để phân nhóm khách hàng của trung tâm mua sắm [bạn có thể lấy tập dữ liệu tại đây] bằng Python và Jupyter Notebook

Trong ví dụ này, chúng tôi sẽ quan tâm đến việc phân khúc khách hàng thành các nhóm dựa trên doanh số bán hàng, 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 từng phân khúc khách hàng riêng lẻ 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 cụ thể

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

  • sklearning
  • matplotlib
  • gấu trúc
  • cục mịch
  • sinh ra biển
  • âm mưu
  • gạch vàng

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 Jupyter Notebook

%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 của Trung tâm thương mại. 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ị tập dữ liệu

Hãy nhập tập 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[]

đầu ra

Bước quan trọng tiếp theo là kiểm tra xem tập 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 giá trị null, nếu có

# checking for null values
dataset.isnull[].sum[]

đầu ra

Hãy trực quan hóa từng biến số này [Tuổi tác, Thu nhập hàng năm và Điểm chi tiêu] bằng cách sử dụng

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv['Hierarchical_clustering_data.csv']

# dataset 
dataset.head[]
2 để xem phân phối giá trị cho từng cột

# 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[]

đầu ra

Đầu ra cho thấy rằng tất cả các giá trị trong cột của chúng tôi phù hợp với phân phối gần như bình thường

Tập dữ liệu của chúng tôi chứa một cột [Thể loại] có giá trị chuỗi, vì vậy chúng tôi cần mã hóa các giá trị này thành giá trị số trước khi áp dụng thuật toán

# 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[]

đầu ra

Một cách khác để hiểu cường độ của cụm dữ liệu là sử dụng bản đồ nhiệt. Bản đồ nhiệt là một kỹ thuật trực quan hóa dữ liệu cho thấy mức độ của một hiện tượng dưới dạng màu sắc ở hai chiều. Sự thay đổi màu sắc có thể theo sắc thái hoặc cường độ, mang lại tín hiệu trực quan rõ ràng cho người đọc về cách hiện tượng được nhóm lại hoặc thay đổi theo không gian

________số 8

đầu ra

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

Chương trình trực quan hóa Dendrogram

Bây giờ chúng ta có thể tìm thấy số cụm tối ưu và giá trị ngưỡng gần đúng

Hãy sử dụng mô-đun scipy, mô-đun này có thể tự động xây dựng chương trình dendro cho tập dữ liệu

# 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[]

đầu ra

Sử dụng phương pháp Elbow để ước tính số cụm

Phương pháp Elbow cho phép bạn ước tính số lượng cụm có ý nghĩa mà chúng tôi có thể lấy ra khỏi tập dữ liệu bằng cách áp dụng lặp lại thuật toán phân cụm cho tập dữ liệu cung cấp số lượng cụm khác nhau và đo Tổng các lỗi bình phương hoặc giảm giá trị quán tính. Hãy sử dụng phương pháp Elbow cho tập dữ liệu của chúng tôi để ước tính số lượng cụm

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv['Hierarchical_clustering_data.csv']

# dataset 
dataset.head[]
0

đầu ra

Biểu đồ đầu ra cho thấy số lượng cụm tốt nhất mà chúng tôi có thể lấy từ tập dữ liệu của mình là 8

Dựa trên thông tin này, chúng tôi có thể giả định rằng giá trị ngưỡng cho tập dữ liệu này có thể xấp xỉ 175

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv['Hierarchical_clustering_data.csv']

# dataset 
dataset.head[]
1

đầu ra

Triển khai phân cụm theo thứ bậc kết tụ

Bây giờ, hãy lấy các cụm [8] và trực quan hóa chúng. Chúng tôi có ba biến chính [Tuổi, Điểm chi tiêu và Thu nhập hàng năm], mà chúng tôi có thể đưa vào biểu đồ 3D để xem phân phối dữ liệu theo nhóm

# importing the module
import pandas as pd

# importing the dataset
dataset = pd.read_csv['Hierarchical_clustering_data.csv']

# dataset 
dataset.head[]
2

đầu ra

Tóm lược

Phân cụm theo cấp bậc là một thuật toán Học không giám sát giúp nhóm các đối tượng tương tự từ tập dữ liệu thành các cụm. Bài viết này trình bày chi tiết về phân cụm theo cấp bậc bằng cách đề cập đến việc triển khai thuật toán, số lượng ước tính cụm bằng phương pháp Elbow và sự hình thành các dendrogram bằng Python

Bashir Alam

Đâ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 offline và online, trên thực tế, tôi cảm thấy 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 mình đủ thông minh để học các công nghệ mới trong thời gian ngắn

Phương pháp nào được sử dụng để phân cụm theo thứ bậc?

Giữa phân cụm tập hợp và phân chia, phân cụm tập hợp nói chung là phương pháp được ưu tiên. Ví dụ dưới đây sẽ tập trung vào các thuật toán phân cụm liên kết vì chúng phổ biến nhất và dễ thực hiện nhất.

Thư viện nào được sử dụng để phân cụm trong Python?

1. Giới thiệu. PyCaret là thư viện máy học mã nguồn mở, mã thấp bằng Python giúp tự động hóa quy trình máy học. Nó là một công cụ quản lý mô hình và học máy từ đầu đến cuối giúp tăng tốc chu kỳ thử nghiệm theo cấp số nhân và giúp bạn làm việc hiệu quả hơn.

Phương pháp nào được sử dụng trong phân cụm theo thứ bậc để tìm đúng số lượng cụm?

Để có được số lượng cụm tối ưu cho việc phân cụm theo thứ bậc, chúng tôi sử dụng a dendrogram là biểu đồ dạng cây hiển thị trình tự của . Nếu hai cụm được hợp nhất, dendrogram sẽ nối chúng thành một biểu đồ và chiều cao của nối sẽ là khoảng cách giữa các cụm đó.

Chủ Đề