Phương pháp khuỷu tay K-Means và phân tích hình bóng với Yellowbrick và Scikit-Learn PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

K-Means Phương pháp khuỷu tay và phân tích hình bóng với Yellowbrick và Scikit-Learn

Giới thiệu

K-Means là một trong những thuật toán phân cụm phổ biến nhất. Bằng cách có các điểm trung tâm vào một cụm, nó nhóm các điểm khác dựa trên khoảng cách của chúng đến điểm trung tâm đó.

Nhược điểm của K-Means là phải chọn số lượng cụm, K, trước khi chạy thuật toán nhóm các điểm.

Nếu bạn muốn đọc hướng dẫn chuyên sâu về Phân cụm K-Means, hãy xem “Phân cụm K-Means với Scikit-Learn”.

Phương pháp khuỷu tay và phân tích hình bóng

Các kỹ thuật được sử dụng phổ biến nhất để chọn số K là Phương pháp khuỷu tayPhân tích Silhouette.

Để tạo điều kiện thuận lợi cho việc lựa chọn Ks, gạch vàng thư viện kết thúc mã với vòng lặp for và một biểu đồ mà chúng ta thường viết thành 4 dòng mã.

Để cài đặt Yellowbrick trực tiếp từ sổ tay Jupyter, hãy chạy:

! pip install yellowbrick

Hãy xem cách nó hoạt động với một tập dữ liệu quen thuộc đã là một phần của Scikit-learn, Iris tập dữ liệu.

Bước đầu tiên là nhập tập dữ liệu, KMeansyellowbrick thư viện và tải dữ liệu:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
from yellowbrick.cluster import KElbowVisualizer, SilhouetteVisualizer

iris = load_iris()

Lưu ý ở đây, chúng tôi nhập KElbowVisualizerSilhouetteVisualizer từ yellowbrick.cluster, đó là những mô-đun chúng tôi sẽ sử dụng để trực quan hóa kết quả Elbow và Silhouette!

Sau khi tải tập dữ liệu, trong data khóa của nhóm (kiểu dữ liệu là phần mở rộng của từ điển) là các giá trị của các điểm mà chúng ta muốn phân cụm. Nếu bạn muốn biết những con số đại diện cho điều gì, hãy xem iris['feature_names'].

Được biết, bộ dữ liệu Iris chứa ba loại tròng đen: 'versicolor', 'virginica' và 'setosa'. Bạn cũng có thể kiểm tra các lớp trong iris['target_names'] để xác minh.

Vì vậy, chúng ta có 4 tính năng để phân cụm và chúng nên được tách thành 3 cụm khác nhau theo những gì chúng ta đã biết. Hãy xem liệu kết quả của chúng tôi với Phương pháp khuỷu tay và Phân tích hình bóng có chứng thực điều đó hay không.

Đầu tiên, chúng tôi sẽ chọn các giá trị tính năng:

print(iris['feature_names']) 
print(iris['target_names']) 

X = iris['data']

Sau đó, chúng ta có thể tạo một KMeans mô hình, một KElbowVisualizer() ví dụ sẽ nhận mô hình đó cùng với số ks mà một số liệu sẽ được tính toán, trong trường hợp này là từ 2 để 11 Ks.

Sau đó, chúng tôi điều chỉnh trình hiển thị với dữ liệu bằng cách sử dụng fit() và hiển thị cốt truyện với show(). Nếu chỉ số không được chỉ định, trình hiển thị sẽ sử dụng méo mó chỉ số, tính toán tổng các khoảng cách bình phương từ mỗi điểm đến trung tâm được chỉ định của nó:

model = KMeans(random_state=42)

elb_visualizer = KElbowVisualizer(model, k=(2,11))
elb_visualizer.fit(X)    
elb_visualizer.show()  

Bây giờ, chúng tôi đã có một Điểm méo hình khuỷu tay cho KMeans Clustering đồ thị có đánh dấu đường thẳng đứng sẽ là số ks tốt nhất, trong trường hợp này, 4.

Có vẻ như Phương pháp khuỷu tay với số liệu biến dạng không phải là lựa chọn tốt nhất nếu chúng ta không biết số lượng cụm thực tế. Liệu Silhouette cũng có chỉ ra rằng có 4 cụm không? Để trả lời câu hỏi đó, chúng ta chỉ cần lặp lại đoạn mã cuối cùng với một mô hình có 4 cụm và một đối tượng trình hiển thị khác:

model_4clust = KMeans(n_clusters = 4, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_4clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

điểm bóng cho k có nghĩa là cụm sử dụng phương pháp khuỷu tay

Mã hiển thị Silhouette Plot of KMeans Clustering cho 150 mẫu ở 4 trung tâm. Để phân tích các cụm này, chúng ta cần xem xét giá trị của hệ số hình bóng (hoặc điểm số), giá trị tốt nhất của nó gần bằng 1. Giá trị trung bình mà chúng ta có là 0.5, được đánh dấu bằng đường thẳng đứng, và không tốt như vậy.

Chúng ta cũng cần xem xét sự phân bố giữa các cụm - một ô tốt có kích thước tương tự của các khu vực được phân cụm hoặc các điểm được phân bổ tốt. Trong biểu đồ này, có 3 cụm nhỏ hơn (số 3, 2, 1) và một cụm lớn hơn (số 0), đây không phải là kết quả mà chúng tôi mong đợi.

Xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, các tiêu chuẩn được ngành công nghiệp chấp nhận và bảng lừa đảo đi kèm. Dừng lệnh Googling Git và thực sự học nó!

Hãy lặp lại cùng một âm mưu cho 3 cụm để xem điều gì xảy ra:

model_3clust = KMeans(n_clusters = 3, random_state=42)

sil_visualizer = SilhouetteVisualizer(model_3clust)
sil_visualizer.fit(X)    
sil_visualizer.show()

hình bóng cho các cụm kmeans

Bằng cách thay đổi số lượng cụm, điểm hình bóng đã 0.05 cao hơn và các cụm cân bằng hơn. Nếu chúng ta không biết số cụm thực tế, bằng cách thử nghiệm và kết hợp cả hai kỹ thuật, chúng ta đã chọn 3 thay vì 2 như số lượng Ks.

Đây là một ví dụ về cách kết hợp và so sánh các số liệu khác nhau, vizual hóa dữ liệu và thử nghiệm với các giá trị khác nhau của các cụm là quan trọng để đưa kết quả đi đúng hướng. Và ngoài ra, việc có một thư viện hỗ trợ việc phân tích có thể giúp ích như thế nào trong quá trình đó!

Dấu thời gian:

Thêm từ xếp chồng lên nhau