python - recordlinkage BaseCompareFeature 重复数据
问题描述
我正在尝试使用 BaseCompareFeature 为记录链接构建用户定义的比较功能。
我有一个dupe_data.csv
包含 3 列(索引、代码、值)的数据集。查看哪些记录是欺骗性的非常简单。
由于我只有一个数据集,所以这不是链接问题,而是欺骗问题。我只传递了一个数据集,但是,当我检查BaseCompareFeature.compute的代码时,我看到该函数正在返回重复的数据集(例如 dfA 与 dfA,而不是 dfA 与 dfB)。
if x_link is None:
df_a = frame_indexing(x[labels_left + labels_right], pairs, 0)
data1 = tuple([df_a[lbl] for lbl in listify(self.labels_left)])
data2 = tuple([df_a[lbl] for lbl in listify(self.labels_right)])
data1
该代码生成两个相同的数据帧data2
。
...: print(s1)
values values
index_1 index_2
a2 a1 1 1
a3 a1 9 9
a2 9 9
c2 c1 2 2
c3 c1 4 4
c2 4 4
x2 x1 9 9
y2 y1 10 10
所以我不清楚比较功能应该如何工作。使用两个数据集,比较非常清晰(例如 compare dfA[column] == dfB[column]
)。但是,这里的比较方法我不清楚。可以使用一些帮助来了解 recordlinkage 如何期望比较仅适用于一个数据集。
例如,请参见下面的代码:
import pandas as pd
import recordlinkage
data = pd.read_csv("dupe_data.csv", index_col='index')
# Indexation step
indexer = recordlinkage.Index()
indexer.block('code')
pairs = indexer.index(data)
# Comparison step
from recordlinkage.base import BaseCompareFeature
class CompareDescription(BaseCompareFeature):
def _compute_vectorized(self, s1, s2):
# don't do anything here,
# just return data data
# How should comparisons work here when s1 == s2??
return s1, s2
feat = CompareDescription('values', 'values', label='output_values')
s1, s2 = feat.compute(pairs, data)
print(s1)
有数据,dupe_data.csv
index,code,values
a1,a,1
a2,a,1
a3,a,9
b1,b,1
c1,c,3
c2,c,2
c3,c,4
x1,x,4
x2,x,9
y1,y,9
y2,y,10
解决方案
推荐阅读
- php - php 和 nginx 上的虚拟专用服务器配置问题 - ip 有效但域无效
- spring-boot - springboot spring数据源tomcat属性不起作用
- r - 无法在 Kaggle 中加载 Tidyverse 库
- python - 在单元测试中测试 postgresql - 模拟和单元测试库
- c++ - CommonAPI C++ 服务构建抽象类错误
- c++ - N-body OpenCL 代码:错误 CL_OUT_OF_HOST_MEMORY 与 GPU 卡 NVIDIA A6000
- snowflake-cloud-data-platform - liquibase diffChangeLog 不生成雪花视图
- python - 将列表的元素转换为字符串,然后迭代地列出文本文件中的每个元素
- c# - C#.NET:具有最大且已定义的一组字段的类或集合,但具有动态的字段返回
- java - IntelliJ IDEA 崩溃并出现 FATAL:gpu_data_manager_impl_private.cc(415)] GPU 进程不可用。再见