分析聚类特征
本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 11 课,共 51 课。
本章会把聚类编号变成大家都能使用的群组。学完本章后,每个聚类都有一个名称:
像 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 的成员离开得早:他们是匆匆到访的人。
挑战
中等一家卡拉 OK 酒吧想了解自己的顾客。起始代码将顾客分成 3 个簇;names 中存放了每个簇的名称,按每月到访次数从少到多排列。
- 将标签添加到
guests,作为cluster列。 - 分析各个簇:计算它们的均值和顾客人数,并按
visits_month排序。 - 每个簇打印一行,包含它的名称和保留 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"]
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
无监督学习中的所有课
自己练习: Python 在线编译器