В этом руководстве мы собираемся обучить модель классификатора текста, которая способна непрерывно учиться без повторного обучения со всеми данными снова и снова. Это называется онлайн / инкрементальным обучением. Этот метод также называется пакетным обучением, поскольку вы можете понять его по названию, когда он полезен для обучения, когда у нас очень большой объем данных. Мы можем просто разделить наши данные на небольшие фрагменты и постепенно обучать нашу модель фрагмент за фрагментом.
При классическом способе обучения модели машинного обучения мы используем все данные, которые у нас есть, а когда мы получаем больше данных, мы объединяем новые данные со старыми данными и полностью переобучаем модель с нуля, в отличие от инкрементального обучения. Таким образом, мы можем использовать это для обучения и постоянного развития нашей модели с текущими данными в реальном времени.
В этом уроке мы собираемся использовать Python для обучения нашей модели. Но вместо использования Scikit-Learn мы собираемся использовать модуль Creme-Ml для дополнительных возможностей обучения. Установим этот модуль:
pip install creme
Мы собираемся использовать этот набор данных в качестве примера. Вы можете проверить раздел api reference в документации Creme-ML, чтобы узнать о других функциях, но в этом примере я расскажу вам, что меня больше всего волнует в Creme-ML и это объект конвейер.
Используя объект Pipeline Creme, мы можем объединить наши шаги предварительной обработки, обучения… и т.д. в один объект Python следующим образом:
import pandas as pd from creme import compose from creme import feature_extraction from creme import naive_bayes # Read dataset df = pd.read_csv("7allV03.csv") # Convert dataframe to list of tuples docs = df.to_records(index=False) # Creating the pipeline # 1st function is creating the bag of words # 2nd function is the naive bayes predictor model = compose.Pipeline( ('tokenize', feature_extraction.BagOfWords(lowercase=False)), ('nb', naive_bayes.MultinomialNB(alpha=1)) ) # Training the model row by row for sentence, label in docs: model = model.fit_one(sentence, label)
Теперь мы успешно обучили нашу модель. Вы можете делать такие прогнозы:
model.predict_one("text to predict category")
Или вы можете увеличить модель следующим образом:
model = model.fit_one("new text to increment model", "label for new text")
Итак, у вас есть модель машинного обучения для классификации новостей. И вы можете увеличивать эту модель, не требуя старых данных.
Я надеюсь, что этот урок вам подойдет. Просто скажите мне, если у вас возникнут проблемы с подпиской.
Спасибо за чтение.