Кеш на csr_matrices - PullRequest
       40

Кеш на csr_matrices

0 голосов
/ 24 октября 2018

Я хочу сделать функцию кэшируемой, но в аргументы функции мне нужно включить csr_matrix (датафрейм, векторизованный через модель CountVectorizer), но я знаю, что csr_matrix - это тип, который не подлежит хэш-обработке, и я не знаю, как создать хеш-ключж / чср матрица.Кто-нибудь может мне помочь?

Представьте себе функцию (исходная функция слишком велика для контекста: P):

@cached(cache)    
def similarities_betw_text(id,vectorized_data):
    similarities=[]
    selected_id = vectorized_data[id]
    for row in vectorized_data:
          similarities.append(cosine_similarity(id,vectorized_data))
    return similarities

Она дает:

TypeError: unhashable тип: 'csr_matrix'

PD: Я знаю, что в документации к cachetools появляется необязательный тип dict и создается ключ, повторяющийся над элементами с кортежем:

@cached(LRUCache(maxsize=128))
def foo(x, y, z, env={}):
    pass

def envkey(*args, env={}, **kwargs):
    key = hashkey(*args, **kwargs)
    key += tuple(sorted(env.items()))
    return key
...