如何在我的数据集中应用 k 均值?
数据挖掘
r
聚类
k-均值
异常检测
2022-03-03 18:18:06
4个回答
Kmeans 仅适用于数值数据,因此
- 把你的分类数据扔出去,
- 标准化您的数字数据,
- 计算选定度量的距离矩阵(例如,
dist()使用euclidean), - 运行
kmeans(distance_matrix,k=3)(尝试 k=3 说 k=7) - 查看
model$cluster以获取数据点类
正如@user2974951 所说,K-means 用于数值数据。还有其他聚类算法也适用于分类数据,例如K-modes。
但是让我们考虑您的数据并尝试了解它是否是数字:
- square_id - 是标识符,所以它很可能不代表数据点之间的关系。除非确实如此,否则它不是您应该用于算法的功能。
- country_code - 代表一个国家,所以一个直观的建模方法是分类使用它。您可能会考虑是否可以以任何方式对其进行量化(例如,通过推导国家之间的距离),但这将在很大程度上取决于您的问题的背景,因此需要进一步考虑。
- activity_date - 日期是定量的,但您需要将日期格式转换为一致的数字表示,例如通过Unix time,这是自 1970 年 1 月 1 日以来经过的时间。
- activity_time - 也许这是活动时间?如果是这样的话,我建议在时间的表示上把它和activity_date合并。
- total_activity - 似乎是您唯一的上下文数据,以科学记数法表示。幸运的是它是数字的,所以你只能在它上面应用 K-means。但这会导致聚集在一条数值线上。
这是关于如何使用您拥有的数据。但是,剩下的问题是您实际上可以做什么?
探索数据以了解它是值得的。例如,您为什么不尝试二维地绘制数据以了解它所代表的含义?例如,您可以绘制 country vs total_activity,或 time vs total_activity。您可以通过映射第三个特征(在我的两个建议中分别为时间或国家)来增强表示。您可以在时间与活动图上用颜色表示国家,或在国家与活动图上用颜色亮度(如HSL 颜色表示)或点大小表示时间。
KMeans不适用于此类数据。
数学很重要。检查 k-means 的目标函数,以及优化它是否对您的应用程序有意义 - 可能没有。那么这个钉子的螺丝刀是错误的。
其它你可能感兴趣的问题
