【发布时间】:2018-05-10 04:25:19
【问题描述】:
我正在研究 K-means 聚类算法。有很多可用的示例,但我找不到解释我正在尝试做什么的示例。
我的数据集包含客户及其购买。数据集中的每 1 表示客户购买了该商品。 0 表示未购买。
0,0,0,0,1,0,1,0,0,1
1,0,0,1,0,0,0,1,1,0
1,1,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0
从左到右代表不同的项目。 从上到下代表客户。我想聚集客户。所以数据集中有 4 个维度,会有 10 个点。
现在我正在尝试从该数据集中创建点以用于后续步骤。我想创建一个包含所有点对象的列表,然后将它们分配给正确的集群,但我不知道在创建点对象时如何处理这 4 个不同的维度。
class Point
{
public int ClusterNumber { get; set; }
public int X { get; set; }
public int Y { get; set; }
public Point(int clusterNumber, int CustomerId, int ProductId)
{
ClusterNumber = clusterNumber;
X = CustomerId;
Y = ProductId;
}
}
【问题讨论】:
-
您要对客户进行聚类还是对商品进行聚类?你想建多少个集群?
-
使用
X和Y作为基于客户 ID 和产品 ID 的实际点坐标没有任何意义。建议您可以“订购”这些点或“排列”它们,但客户 ID=4 并不比客户 ID=7 更“接近”点(物品也是如此)。 -
@Progman 我想对客户进行集群。所以我得到10分。集群的数量并不重要。可以是 1,2 或更多。是的,你是对的,但我应该如何订购它们。多维部分让我一头雾水
-
您希望通过什么指标来聚集客户?为什么要将 id=4、7 和 8 的客户聚集在一起,而将 id=2 的客户放在另一个集群中(以总共两个集群为例)?更具体地说:客户与聚类点之间的“距离”是多少?
-
购买相同产品的客户聚集在同一个集群中。 (指定的数据集是总集的一部分)