расчет матрицы расстояний при более быстром подходе - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть фрейм данных

import numpy as np
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import pandas as pd
a = {'b':['cat','bat','cat','cat','bat','No Data','bat','No Data']}
df11 = pd.DataFrame(a,index=['x1','x2','x3','x4','x5','x6','x7','x8'])

, и у меня есть функция расстояния

def distancemetric(x):
    list1 = x['b'].tolist()
    result11 =[]
    sortlist11 = [process.extract(ele, list1, limit=11000000, scorer=fuzz.token_set_ratio) for ele in list1]
    d11 = [dict(element) for element in sortlist11]
    finale11 = [(k, element123[k]) for k in list1 for element123 in d11]
    result11.extend([x[1] for x in finale11])
    final_result11=np.reshape(result11, (len(x.index),len(x.index)))
    return final_result11

Я называю функцию

values1 = distancemetric(df11)

Здесь token_set_ratioметоды сравнивает только две строки.Когда я передаю массив строк, это дает мне среднее значение, которое мне не нужно.

Этот код работает, но он медленнее.Есть ли способ, который мог бы заставить его работать быстрее

...