我的团队一直坚持在两个大型数据集上运行模糊逻辑算法。第一个(子集)大约有 180K 行,包含我们需要在第二个(超集)中匹配的人员的姓名、地址和电子邮件。超集包含 250 万条记录。两者具有相同的结构,并且数据已经被清理,即解析地址、标准化名称等。
- 联系人ID int,
- 全名 varchar(150),
- 地址 varchar(100),
- 电子邮件 varchar(100)
目标是将子集中的行中的值与超集中的相应值进行匹配,因此输出将组合子集和超集以及每个字段(标记)的相应相似性百分比。
- 联系方式,
- 查找联系人ID,
- 全名,
- 查找全名,
- 全名_相似度,
- 地址,
- 查找地址,
- 地址_相似度,
- 电子邮件,
- 查找电子邮件,
- 电子邮件_相似度
为了首先简化和测试代码,我们连接了字符串,并且我们知道代码可以在非常小的超集上运行;然而,一旦我们增加记录数量,它就会陷入困境。我们尝试了不同的算法,Levenshtein、FuzzyWuzzy 等,但均无济于事。在我看来,问题在于 Python 是逐行执行的;不过,我不确定。我们甚至尝试使用流式传输在 Hadoop 集群上运行它;然而,它尚未取得任何积极成果。
#!/usr/bin/env python
import sys
from fuzzywuzzy import fuzz
import datetime
import time
import Levenshtein
#init for comparison
with open('normalized_set_record_set.csv') as normalized_records_ALL_file:
# with open('delete_this/xab') as normalized_records_ALL_file:
normalized_records_ALL_dict = {}
for line in normalized_records_ALL_file:
key, value = line.strip('\n').split(':', 1)
normalized_records_ALL_dict[key] = value
# normalized_records_ALL_dict[contact_id] = concat_record
def score_it_bag(target_contact_id, target_str, ALL_records_dict): …Run Code Online (Sandbox Code Playgroud) python fuzzy-logic fuzzy-comparison fuzzywuzzy record-linkage
我需要比较两个非结构化地址,并能够确定它们是否相同(或足够相似)。
我知道我们可以使用一些模糊逻辑进行这种比较,对拼写错误有一定的容忍度,但是......
我不想重新发明轮子。在不同的上下文中,这个问题似乎是一个普遍关注的问题,我认为有一种算法(可能稍作修改)可能适合这种情况。
提前致谢
我得到了一个涉及模糊逻辑的新项目模块.它是使用模糊逻辑方法确定不同的Hydrometeors.我对模糊逻辑是什么一无所知.所以我想从已经使用Java中的模糊逻辑完成项目的人那里得到一些建议(比如我可以采用的基本编程策略).
我遇到过模糊的logc API.使用它的人请评论它的用途.
我正在阅读模糊逻辑,我只是看不出它在大多数情况下如何改进机器学习算法(它似乎相对经常应用).
例如,k个最近的邻居.如果你有很多属性color: [red,blue,green,orange], temperature: [real number], shape: [round, square, triangle],你可能不会真正模糊这些属性除了真正的编号属性(请纠正我,如果我错了),我不知道这怎么可以改善任何东西比把东西拼凑在一起.
机器模糊逻辑如何用于改善机器学习?大多数时候,您在大多数网站上找到的玩具示例似乎都不适用.
computer-science machine-learning fuzzy-logic data-structures
我从raspi制作了一个交通信号灯原型。我的源代码给出了一个错误。埃罗说
Traceback (most recent call last):
File "/home/pi/testing.py", line 2, in <module>
import skfuzzy as fuzz
ImportError: No module named 'skfuzzy'
Run Code Online (Sandbox Code Playgroud)
我已经检查过我的raspi上已经安装了scikit-fuzzy,但是无论何时运行,源都无法识别出scikit-fuzzy工具。
这是我的一些源代码:
import numpy as np
import skfuzzy as fuzz
import RPi.GPIO as GPIO
import time
Curr_GtGB=40
Curr_GtSU=46
Curr_GtSS=26
Curr_GtK=12
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
redGB=16
yelGB=18
grenGB=22
redSU=40
yelSU=38
grenSU=36
redSS=33
yelSS=35
grenSS=37
redK=11
yelK=13
grenK=15
GPIO.setup(redGB, GPIO.OUT)
GPIO.setup(yelGB, GPIO.OUT)
GPIO.setup(grenGB, GPIO.OUT)
GPIO.setup(redSU, GPIO.OUT)
GPIO.setup(yelSU, GPIO.OUT)
GPIO.setup(grenSU, GPIO.OUT)
GPIO.setup(redSS, GPIO.OUT)
GPIO.setup(yelSS, GPIO.OUT)
GPIO.setup(grenSS, GPIO.OUT)
GPIO.setup(redK, GPIO.OUT)
GPIO.setup(yelK, GPIO.OUT)
GPIO.setup(grenK, GPIO.OUT)
Run Code Online (Sandbox Code Playgroud) 我有一个在 R 中看起来像这样的数据集:
address = c("882 4N Road River NY, NY 12345", "882 - River Road NY, ZIP 12345", "123 Fake Road Boston Drive Boston", "123 Fake - Rd Boston 56789")
name = c("ABC Center Building", "Cent. Bldg ABC", "BD Home 25 New", "Boarding Direct 25")
my_data = data.frame(address, name)
address name
1 882 4N Road River NY, NY 12345 ABC Center Building
2 882 - River Road NY, ZIP 12345 Cent. Bldg ABC
3 123 Fake Road Boston Drive …Run Code Online (Sandbox Code Playgroud) 任何人都可以建议我一个更好的方法(或最喜欢的方法)来找到两个字符串之间的匹配百分比(即这两个字符串(例如名称)在百分比方面有多接近)使用模糊逻辑.任何人都可以帮我写代码吗?我真的想知道从哪里开始..
这四个科目如何相互不同?据我所知,他们从众多输入数据中学习并输出估计的输出.我的理解非常缺乏,因此我质疑这些.关于人们给出的例子,例如垃圾邮件,苹果橙猫识别,神经网络例子,我没有任何意义.
在一个更简单的例子中是否有更好的代表这四个主题的编码来展示这个概念?我真的很感激.
链接到您认为代码非常简单的示例非常受欢迎.我需要能够更好地获得代码编写概念的东西.
非常感谢!
artificial-intelligence machine-learning fuzzy-logic deep-learning
极限是如何与 python 的fuzzywuzzy 模块一起工作的,它是什么意思?
matches = process.extract(query, choices, limit=2, scorer=fuzz.partial_ratio)
Run Code Online (Sandbox Code Playgroud) 我正在使用模糊艺术算法来应用我的数据,并且在结果的情况下一切正常,但是当绘制结果时,解释器说:RuntimeError:matplotlib 不支持生成器作为输入。
顺便说一下,我使用 python 作为编程语言和 matplotlib 来绘制结果。
import numpy as np
from sys import argv
import matplotlib.pyplot as plt
from random import shuffle
def scaledList(list):
min = None
max = None
for i in range(len(list)):
if min is None or min > list[i]:
min = list[i]
if max is None or max < list[i]:
max = list[i]
for i in range(len(list)):
list[i] = (float)(list[i] - min)/(max - min)
#print "min = " + str(min) + ", max = " + …Run Code Online (Sandbox Code Playgroud) fuzzy-logic ×10
fuzzy ×3
fuzzywuzzy ×2
python ×2
python-3.x ×2
duplicates ×1
java ×1
php ×1
r ×1
raspberry-pi ×1
sql ×1
string ×1