我有一个来自某些关联规则挖掘的大型 csv 文件。其中两列是规则和置信度得分。
规则列包含不同长度的项目列表,例如
[[Dog],[Dog,Cat],[Dog,Cat,Hamster],[Dog,Cat,Hamster,Goldfish]]
置信度分数列包含 0 到 1 之间的数字列表,例如
[0.1, 0.5, 0.1, 0.5]
我想根据规则值是否是其他规则值的子集来删除冗余行,但我只想删除具有相似置信度分数的行(在置信度窗口内,比如 5%)。
在上面的例子中,剩下的行是 [Dog] 和 [Dog,Cat]。
[Dog] 会保留,因为[Dog]并且[Dog,Cat,Hamster]会因为它们的置信度分数为 0.1而被组合在一起,然后[Dog,Cat,Hamster]会被删除,因为[Dog]是 的子集,[Dog,Cat,Hamster]因此规则[Dog,Cat,Hamster]是多余的。
同样,[Dog,Cat]和[Dog,Cat,Hamster,Goldfish]两者都具有的置信度得分为0.5,和[Dog,Cat,Hamster,Goldfish]将被删除,因为[狗,猫]为[狗,猫,仓鼠,金鱼]的子集。
我知道我需要做的第一件事是查看最小规则的置信度分数,将落在该分数置信度窗口内的所有规则组合在一起,然后删除所有属于较小规则超集的规则。然后我需要移动到下一个最小的规则并做同样的事情,直到所有规则都被减少/消除。
我想知道在 Python/Pandas 中是否有一种简单的方法可以做到这一点?
我对编码很陌生,所以我不知道这是否可能。
侃侃尔雅
相关分类