R 基于规则的近似相同个体分组(不是聚类?)

R 基于规则的近似相同个体分组(不是聚类?),r,scala,sparql,cluster-analysis,rule-engine,R,Scala,Sparql,Cluster Analysis,Rule Engine,我有大约1000行的数据集(或者大约100行的数千个RDF三元组)。从表格的角度来看,每一行代表一个人参与某个过程。数据是有噪声的,看起来是独立的个体实际上可能是同一个人我需要根据规则授权为数据中建模的每个独特的人分配新的标识符,但我甚至不知道这种做法是否有名称。 我熟悉各种聚类方法,但这对我来说似乎不同。我不知道唯一个体的真实数量,我不想找到它们之间距离最小的个体。我想找到满足我的合作者提供的一些规则的个人 例如,如果我有以下数据: +-------------+-----+---------

我有大约1000行的数据集(或者大约100行的数千个RDF三元组)。从表格的角度来看,每一行代表一个人参与某个过程。数据是有噪声的,看起来是独立的个体实际上可能是同一个人我需要根据规则授权为数据中建模的每个独特的人分配新的标识符,但我甚至不知道这种做法是否有名称。

我熟悉各种聚类方法,但这对我来说似乎不同。我不知道唯一个体的真实数量,我不想找到它们之间距离最小的个体。我想找到满足我的合作者提供的一些规则的个人

例如,如果我有以下数据:

+-------------+-----+------------+--------+
| Transaction | ID  |    DOB     | Gender |
+-------------+-----+------------+--------+
|           1 | 111 | 5/5/1969   | M      |
|           2 | 112 | 6/6/1966   | F      |
|           3 | 113 | 7/7/1970   | F      |
|           4 | 113 | 9/9/1970   | F      |
|           5 | 114 | 2/3/2000   | M      |
|           6 | 114 | 2/4/2000   | F      |
|           7 | 115 | 9/10/2001  | M      |
|           8 | 115 | 11/11/2001 | F      |
+-------------+-----+------------+--------+
这些详尽的规则

  • 具有相同标识符和相同性别的人是相同的 人
  • 具有相同标识符和出生日期的人 在一天之内,另一个人就是同一个人
那么解决办法就是

+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
| Transaction | ID  |    DOB     | Gender | UniqueIdByRules |                        Notes                        |
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
|           1 | 111 | 5/5/1969   | M      | A               |                                                     |
|           2 | 112 | 6/6/1966   | F      | B               |                                                     |
|           3 | 113 | 7/7/1970   | F      | C               |                                                     |
|           4 | 113 | 9/9/1970   | F      | C               | IDs identical, genders identical                    |
|           5 | 114 | 2/3/2000   | M      | D               |                                                     |
|           6 | 114 | 2/4/2000   | F      | D               | IDs identical, birthdates within one day of another |
|           7 | 115 | 9/10/2001  | M      | E               |                                                     |
|           8 | 115 | 11/11/2001 | F      | F               |                                                     |
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
我的“最佳语言”是R,但我的项目的核心语言是Scala。所以我特别感兴趣的是可以在R、Scala或Java中合理实现的解决方案。原始数据以表格形式出现,但在我的过程中很早就被转换为RDF三元组,那么SWRL是否相关?我的一位合作者偶然地建议用PyCLIPS来解决这类问题,那么也许Jess或Drools是相关的

  • 我的问题/任务叫什么
  • 除了彻底的两两比较外,还有其他解决方案吗
  • 因为我有两条(或更多)规则,其中一条不需要标识,我会在及物性方面遇到问题吗
    • 这称为带有“if语句”的“for循环”


      按ID对数据排序,遍历所有ID。如果不止一个,请使用
      if
      语句检查您的情况。

      您的确切问题是什么?您想从初始数据帧中获得最终数据帧吗?或者您已经有了解决方案,您只是想找出流程的名称?谢谢,@RameshMaharjan。我还没有实现任何东西。我手工把期末考试和首字母打出来。除了彻底的两两比较外,我想不出任何方法来进行1天的出生日期比较,这似乎不是很有效。规则将来可能会改变,所以我正在寻找一些可概括的东西。@MarkMiller您的示例数据中有一个小错误,即id
      113
      不会根据性别进行匹配rule@AKSW:谢谢,我编辑了it@MarkMiller一般的任务不是简单地称为重复数据消除吗?如果是这样,我想在RDF中这叫做链接发现,在您的例子中,链接应该是
      owl:sameAs
      。我的意思是,最终,您希望找到具有相同标识的实体,尽管某些数据可能会相互冲突。最后一步是数据融合,在这里你可以解决冲突等等