Попытка запустить несколько экземпляров sklearn KMeans параллельно - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь запустить несколько экземпляров Kmeans ( из sklearn ) параллельно. У меня есть следующий код:

with concurrent.futures.ProcessPoolExecutor() as executor:
    kmeans_per_k = [executor.submit(KMeans(n_clusters=k, random_state=42).fit(features)) for k in range(1,16)]
    for f in concurrent.futures.as_completed(kmeans_per_k):
        f = f.result()

Это дает мне следующую ошибку:

TypeError: 'KMeans' object is not callable

1 Ответ

0 голосов
/ 05 августа 2020

Это потому, что функция подгонки возвращает объект KMeans. ProcessPoolExecutor ожидает функцию в методе отправки. То, что вы делаете, - это, по сути, подгонка при подготовке параметра для отправки. Вероятно, вам нужно что-то вроде:

with concurrent.futures.ProcessPoolExecutor() as executor:
    kmeans_per_k = [executor.submit(KMeans(n_clusters=k, random_state=42).fit, features) for k in range(1,16)]
    for f in concurrent.futures.as_completed(kmeans_per_k):
        f = f.result()
...