处理包含多个值的特征

数据挖掘 机器学习 聚类 数据集 数据清理
2022-03-05 07:03:53

我有以下格式的数据集:


电影ID | 演员 | 导演 | 语言 | 发布年份 | 类型

1 | Anil Kapoor;Manisha Koirala;Jackie Shroff;Anupam Kher;Danny Denzongpa;Pran | 维杜维诺德乔普拉 | 欣 | 1994 | 剧情;爱情;爱国


如您所见,Actors 和 Genre 列有多个值。我需要对这个数据集进行聚类分析。我不知道处理此类数据的最佳方法是什么。我正在考虑两种可能的解决方案(不知道这是否是解决此类问题的正确方法)--

  1. 将列(例如“Actors”)拆分为多个列,例如 Actors 1、Actor2、...,然后执行集群分析。
  2. 行拆分,即将单行数据转换为多行,每行对应一个列值,如“演员”和“流派”。

请建议我处理此类数据以进行聚类分析的最佳方法。

4个回答

你需要重新考虑你的方法。而不是“我可以编写什么代码来使事情正常运行”,您需要问“什么是正确的做法,以及如何实现它”。

聚类很难(容易运行,很难得到好的结果)。

对非连续数据进行聚类更加困难。

人们在这里创建很多错误结果的原因是因为你有无数种方法来加权不同的值和属性,基本上你可以通过调整参数来获得几乎任何你想要的结果。不要让自己被“一次热编码”一切的常见黑客所吸引;它只是表明人们不(想)知道他们在做什么。

要获得可靠的结果,您需要非常清楚自己的假设,例如“我假设所有参与者都具有同等代表性,而 Jaccard 测量的重叠是相似性的一个很好的指标”(我不同意这里,参与者应该是加权)。然后你需要对流派做同样的事情。在这里,计算流派的相似性就更成问题了。在那之后,您需要将所有这些不同的相似之处合并为一个。这可能是最困难的一步,并且将涉及更多的加权参数。

总而言之,我想说:无论你做什么,聚类在统计上都不可靠。选择了太多参数,甚至没有充分的理由(但没有证据)证明这种方式比另一种选择它们的方式更好。特别是,您永远不会知道是否存在具有不同参数的更好的聚类。

您应该创建多个新列 - 每个演员一列,然后如果电影中存在相应的演员,则将其设置为 1,否则设置为 0。流派也一样。它被称为一种热编码,并确保数据被视为分类而不是连续的。

使用一种热编码会起作用,但会增加您的尺寸。我的建议是你应该用它的频率替换标签。如果你想使用一种热编码,那么你首先找到数据中很少见的标签,并将它们全部组合成一个标签,然后应用一种热编码,这将帮助你控制你的维度。

您可以尝试一种热编码(虚拟变量)。如果你使用 Python,Pandas 库有 get_dummies() 函数。