用于在Python中匹配具有相似ID字符串的两个集合的分类器

用于在Python中匹配具有相似ID字符串的两个集合的分类器,python,python-3.x,dataframe,machine-learning,scikit-learn,Python,Python 3.x,Dataframe,Machine Learning,Scikit Learn,我有两组数据,它们具有公共要素集,但ID名称的标签不同 我想看看是否有一个最佳分类器,可以帮助我根据这些特性选择哪些名称匹配是最佳选择 Set 1看起来像: Name ID1 code1 move1 year Highland 1 nc st 2002 Highland 4 nc st

我有两组数据,它们具有公共要素集,但ID名称的标签不同

我想看看是否有一个最佳分类器,可以帮助我根据这些特性选择哪些名称匹配是最佳选择

Set 1
看起来像:

Name         ID1           code1          move1        year
Highland     1             nc             st           2002
Highland     4             nc             st           2001
Highland     gt3           nc             st           2002
Highland     gt2           nc             st           2003
Mark         wt1           ns             st           2000
Mark         ws1           ns             st           1945
Mark         ost6          nc             ct           2002
Niko         1             ng             ct           2000
.
.
Name         ID2           code2          move2        year
Highland     gt1           nc             st           2002
Highland     gt3           nc             st           
Highland     2             nc             st           2003
Highland     gt4           nc             st           2001
Mark         t1            ns             st           2000
Mark         s1            nsi            st           
Mark         ost6          nci            ct           2002
Niko         1             ngi            ct           2000
.
.
Set 2
看起来像:

Name         ID1           code1          move1        year
Highland     1             nc             st           2002
Highland     4             nc             st           2001
Highland     gt3           nc             st           2002
Highland     gt2           nc             st           2003
Mark         wt1           ns             st           2000
Mark         ws1           ns             st           1945
Mark         ost6          nc             ct           2002
Niko         1             ng             ct           2000
.
.
Name         ID2           code2          move2        year
Highland     gt1           nc             st           2002
Highland     gt3           nc             st           
Highland     2             nc             st           2003
Highland     gt4           nc             st           2001
Mark         t1            ns             st           2000
Mark         s1            nsi            st           
Mark         ost6          nci            ct           2002
Niko         1             ngi            ct           2000
.
.
正如您所看到的,这两个集合之间存在一些差异,但是
Name
始终是相同的-ID有时几乎匹配,有时完美匹配。其他时候,
代码
移动
匹配或接近,有时一组的年份通常缺失

我已经为这些ID计算了使用
Levenshtein距离的
fuzzy比率
,但它们不足以让我真正匹配


有没有一种方法可以使用类似SVM的东西更好地识别这些ID?

尝试
fuzz.token\u set\u ratio()
而不是
fuzzy.ratio()
。 使用fuzz.token\u set\u ratio()可以获得良好的匹配


有关更多信息,请访问。

是否尝试将set1的整行与set2匹配?我正在尝试使用ID名称中的相似性和功能的相似性将
ID1
ID2
匹配。所以我认为匹配这两个ID可以间接地将它们的行匹配在一起。我想可能有一种方法可以将每一行转换为一个元组,并以某种方式将元组转换为支持向量机可以运行的分组。我过去所做的是为不同的匹配类型分配权重。所以,这个名字会有很重的分量。然后是id1的尾随数字、年份等。最高分数“获胜”。操纵系数和权重,直到拟合pop1==pop2。演示起来并不容易,但当你开始使用它时,想法就变得足够清晰了。Levenstein距离,IMHO,有点像一条昂贵的红鲱鱼——你需要成为mire指令。有没有一个我能看到的工作示例来更好地理解你的意思,@JLPeyret?