Menu
CoddyTech

Phân tích đặc điểm các cụm

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 11 trên 51.

Chương này biến các số cụm thành những nhóm mà mọi người có thể sử dụng. Đến cuối chương, mỗi cụm đều có một tên:

120 khách tham quan công viên chủ đề được biểu thị bằng các chấm, số giờ ở công viên trên trục ngang và số trò chơi đã tham gia trên trục dọc, chia thành ba nhóm có tên trong chú giải: Người thích cảm giác mạnh ở phía trên bên phải, Gia đình ở giữa, Khách tham quan nhanh ở phía dưới bên trái

Một con số như 2 chẳng nói lên điều gì. Hồ sơ mới cho biết ý nghĩa: giá trị trung bình của từng đặc trưng trong cụm. Thêm nhãn vào dưới dạng một cột, rồi nhóm lại:

park["cluster"] = km.labels_
print(park.groupby("cluster").mean().round(1))

Lệnh này in ra một hàng cho mỗi cụm:

         hours  rides   age
cluster
0          6.0    6.2  38.4
1          2.4    3.0  45.8
2          6.8   13.9  20.7

Giờ hãy đọc các hàng như những từ ngữ. Cụm 2 gồm những người trẻ tuổi, ở lại 7 giờ và đi 14 chuyến: những người thích cảm giác mạnh. Cụm 1 rời đi sớm: những khách tham quan nhanh.

challenge icon

Thử thách

Trung bình

Một quán karaoke muốn tìm hiểu về khách của mình. Đoạn code khởi đầu chia họ thành 3 cụm; names chứa tên cho từng cụm, từ cụm có ít lượt ghé mỗi tháng nhất đến cụm có nhiều lượt nhất.

  1. Thêm nhãn vào guests dưới dạng một cột cluster.
  2. Lập hồ sơ các cụm: tính giá trị trung bình và số khách trong mỗi cụm, rồi sắp xếp theo visits_month.
  3. In một dòng cho mỗi cụm, gồm tên cụm và các giá trị trung bình được làm tròn đến 1 chữ số thập phân.

Với một quán khác:

Once in a while: 30 guests, 1.4 visits a month, 2.5 songs, 3.2 hours
Regulars: 45 guests, 3.0 visits a month, 4.6 songs, 2.0 hours
Superfans: 15 guests, 7.4 visits a month, 9.2 songs, 2.8 hours

Tự làm thử

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

# 110 khách của một quán karaoke: visits a month, số bài hát mỗi lần đến, số giờ mỗi lần đến
guests = pd.read_csv("karaoke.csv")
scaled = StandardScaler().fit_transform(guests)
km = KMeans(n_clusters=3, n_init=10, random_state=0)
km.fit(scaled)

# Tên các nhóm, sắp theo số lần đến mỗi tháng từ ít nhất đến nhiều nhất
names = ["Once in a while", "Regulars", "Superfans"]

# 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