Многопроцессорная обработка на экземплярах SKLEARN - PullRequest
0 голосов
/ 17 февраля 2019

Я привык к map и starmap методам пула для распределения FUNCTION по любому виду повторяемого объекта .Вот как я обычно извлекаю стволовые слова из столбца raw content кадра данных pandas:

pool = mp.Pool(cpu_nb)
totalvocab_stemmed = pool.map(tokenize_and_stem, site_df["raw_content"])
pool.close()

хорошая статья о распараллеливании функций в python

Пока все хорошо.Но есть ли хороший и простой способ распараллелить выполнение sklearn METHODS .Вот пример того, что я хотел бы распределить

tfidf_vectorizer = TfidfVectorizer(max_df=0.6, max_features=200000,
                             min_df=0.2, stop_words=stop_words,
                             use_idf=True, tokenizer=tokenize_and_stem, ngram_range=(1,3))

tfidf_matrix = tfidf_vectorizer.fit_transform(self.site_df["raw_content"])

tfidf_matrix - это не элемент за списком элементов, поэтому разбиение site_df ["raw_content"] намногие элементы, так как у меня есть ядра в моем ЦП для выполнения пула GOF и последующего объединения всего вместе, не возможны.Я видел некоторые интересные опции :

  • IPython.parallel Client source
  • , использующий функцию parallel_backend в sklearn.externals.joblib какконтекст источник

Возможно, я тупой, но в обеих попытках я не очень преуспел.Как бы вы это сделали?

...