Как мне применить модель ML после ее обучения?

#python #machine-learning #naivebayes #model-fitting

#python #машинное обучение #наивный ответ #подгонка модели

Вопрос:

Прошу прощения за наивный вопрос, я обучил модель (наивный Байес) на python, она работает хорошо (точность 95%). Он принимает входную строку (например, «Apple Inc.» или «John Doe») и определяет, является ли это названием компании или именем клиента.

Как мне на самом деле реализовать это в другом наборе данных? Если я введу другой фрейм данных pandas, как мне применить то, что модель узнала из обучающих данных, к новому фрейму данных?

Новый фрейм данных имеет совершенно новую совокупность и набор строк, которые необходимы для прогнозирования того, является ли это именем компании или клиента.

В идеале я хотел бы вставить в новый фрейм данных столбец, содержащий прогноз модели.

Приветствуются любые фрагменты кода.

Пример кода текущей модели:

 from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(df["CUST_NM_CLEAN"], 
                                                    df["LABEL"],test_size=0.20, 
                                                    random_state=1)

# Instantiate the CountVectorizer method
count_vector = CountVectorizer()

# Fit the training data and then return the matrix
training_data = count_vector.fit_transform(X_train)

# Transform testing data and return the matrix. 
testing_data = count_vector.transform(X_test)

#in this case we try multinomial, there are two other methods
from sklearn.naive_bayes import cNB
naive_bayes = MultinomialNB()
naive_bayes.fit(training_data,y_train)
#MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)

predictions = naive_bayes.predict(testing_data)


from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
print('Accuracy score: {}'.format(accuracy_score(y_test, predictions)))
print('Precision score: {}'.format(precision_score(y_test, predictions, pos_label='Org')))
print('Recall score: {}'.format(recall_score(y_test, predictions, pos_label='Org')))
print('F1 score: {}'.format(f1_score(y_test, predictions, pos_label='Org')))

  

Комментарии:

1. Не уверен, почему это было отклонено, на мой взгляд, это правильный вопрос.

Ответ №1:

Понял это.

 # Convert a collection of text documents to a vector of term/token counts. 
cnt_vect_for_new_data = count_vector.transform(df['new_data'])

#RUN Prediction
df['NEW_DATA_PREDICTION'] = naive_bayes.predict(cnt_vect_for_new_data)