pandas подать заявку на исполнение - PullRequest
0 голосов
/ 26 марта 2020

У меня есть pandas функция применения, которая запускает логический вывод по 10k csv строк

account messages
0   th_account  Forgot to tell you Evan went to sleep a little...
1   th_account  Hey I heard your buying a house I m getting ri...
2   th_account  They re releasing a 16 MacBook
3   th_account  5 cups of coffee today I may break the record
4   th_account  Apple Store Items in order W544414717 were del...

Для запуска функции требуется около 17 секунд. Я работаю над классификатором текста, и мне было интересно, есть ли более быстрый способ его записи

def _predict(messages):
    results = []
    for message in messages:
        message = vectorizer.transform([message])
        message = message.toarray()
        results.append(model.predict(message))
    return results

df["pred"] = _predict(df.messages.values)

* vectorizer - это TfidfVectorizer, а model - это модель GaussianNB от sklearn. Мне нужно l oop пройти через все сообщения в csv и выполнить прогноз, который будет показан в новом столбце

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете попробовать встроенную функцию apply в pandas. В его основе используется C языковой пароль GIL. Но все еще медленно.

def _predict(message):
    """message is each row in dataframe

    Each row of dataframe return a result
    """
    message = vectorizer.transform([message])
    message = message.toarray()
    return model.predict(message)

df["pred"] = df.apply(_predict, axis=1)

Вы можете запустить следующий код для оценки времени.

df.head().apply(_predict, axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...