Menu
CoddyTech

Cụm và nhãn đã biết

Thuộc phần Học không giám sát trong hành trình Machine Learning của Coddy. Bài học 13 trên 51.

Khi đã có nhãn nhưng k-means chưa từng thấy chúng, hãy kiểm tra kết quả: pd.crosstab đếm từng cặp cụm và nhãn.

labels = KMeans(n_clusters=3, n_init=10, random_state=0).fit_predict(X)
print(pd.crosstab(labels, kind))

Với 150 hạt cà phê thuộc 3 loại, được phân cụm theo độ dài và hàm lượng caffeine: mỗi hàng là một cụm, mỗi cột là một loại:

Bảng đếm 3 × 3, các cụm theo hàng và các loại cà phê theo cột: arabica, liberica, robusta. Cụm 0 có 49 hạt robusta; cụm 1 có 48 hạt arabica, 3 hạt liberica và 1 hạt robusta; cụm 2 có 47 hạt liberica và 2 hạt arabica

Mỗi cụm chủ yếu gồm một loại, chỉ có 6 hạt đậu nằm lạc nhóm. Và k-means chưa từng thấy nhãn nào.

Tuy vậy, các cụm không phải là lớp. Sự tương đồng cao có nghĩa là các lớp khác nhau về dữ liệu. Sự tương đồng thấp là một phát hiện, không phải lỗi.

challenge icon

Thử thách

Trung bình

Các cụm k-means có tìm được các loài hoa iris không? Mã khởi đầu chuẩn hóa các bông hoa, lưu tên của chúng trong species, đọc k rồi phân cụm chúng.

  1. Lập bảng chéo giữa các cụm và loài.
  2. Với mỗi loài, in ra số lượng lớn nhất trong một cụm, trên tổng số của loài đó.
  3. Đếm số cụm chỉ chứa một loài.

Với một khu vườn khác và k = 3:

setosa: 48 of 50 share a cluster
versicolor: 41 of 50 share a cluster
virginica: 33 of 50 share a cluster
Clusters with one species: 0 of 3

Tự làm thử

import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans

# 150 bông hoa diên vĩ đã được chuẩn hóa, cùng tên loài của từng bông, được ẩn khỏi k-means
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
species = iris.target_names[iris.target]

k = int(input())
labels = KMeans(n_clusters=k, n_init=10, random_state=0).fit_predict(X)

# Viết code của bạn bên dưới
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Học không giám sát

Tự luyện tập: Trình biên dịch Python online