Menu
CoddyTech

分析聚类特征

本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 11 课,共 51 课。

本章会把聚类编号变成大家都能使用的群组。学完本章后,每个聚类都有一个名称:

120 名主题公园游客以点表示,横轴表示在园内的小时数,纵轴表示乘坐的游乐设施数量,分为三组,图例中的名称分别是:右侧上方的刺激项目爱好者,中间的家庭游客,左侧下方的快速游览者

像 2 这样的数字说明不了什么。它的画像可以说明问题:簇内每个特征的平均值。将标签添加为一列,然后分组:

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

这会为每个聚类打印一行:

         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

现在把这些行读作文字。簇 2 的成员年轻,停留 7 小时,乘坐 14 次:他们是追求刺激的人。簇 1 的成员离开得早:他们是匆匆到访的人。

challenge icon

挑战

中等

一家卡拉 OK 酒吧想了解自己的顾客。起始代码将顾客分成 3 个簇;names 中存放了每个簇的名称,按每月到访次数从少到多排列。

  1. 将标签添加到 guests,作为 cluster 列。
  2. 分析各个簇:计算它们的均值和顾客人数,并按 visits_month 排序。
  3. 每个簇打印一行,包含它的名称和保留 1 位小数的均值。

对于另一家酒吧:

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

亲手试试

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

# 一家卡拉 OK 酒吧的 110 位客人:visits a month,每次唱的歌数、每次停留的小时数
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)

# 各组的名称,按每月到访次数从少到多排列
names = ["Once in a while", "Regulars", "Superfans"]

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

无监督学习中的所有课

自己练习: Python 在线编译器