Чтобы соответствовать модели MultinomialNB
, вам понадобятся обучающие образцы и их функции, а также соответствующие метки (целевые значения).
В вашем случае Predicted
- это переменная target
, а Predictor_A and Predictor_B
- это features
(предикторы).
Пример 1:
from sklearn.naive_bayes import MultinomialNB
import pandas as pd
from sklearn.model_selection import train_test_split
df = pd.read_csv("dt.csv", delim_whitespace=True)
# X is the features
X = df[['Predictor_A','Predictor_B']]
#y is the labels or targets or classes
y = df['Predicted']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
clf = MultinomialNB()
clf.fit(X_train, y_train)
clf.predict(X_test)
#array([30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30])
#this result makes sense if you look at X_test. all the samples are similar
print(X_test)
Predictor_A Predictor_B
8286 0 0
12461 0 0
6214 0 0
9190 0 0
373 0 0
3030 0 0
11891 0 0
9056 0 0
8804 0 0
6438 1 0
#get the probabilities
clf.predict_proba(X_test)
Примечание 2: Данные, которые я использовал, можно найти здесь
РЕДАКТИРОВАТЬ
Если вы обучаете модель, используя несколько документов, которые имеют, скажем, 4 тега (предиктора), то новый документ, который вы хотите прогнозировать, также должен иметь такое же количество тегов.
Пример 2:
clf.fit(X, y)
здесь, X
- массив [29, 2]
.Таким образом, у нас есть 29
обучающих образцов (документов), и у него есть 2
теги (предикторы)
clf.predict(X_new)
здесь, X_new
может быть [n, 2]
.Таким образом, мы можем предсказать классы n
новых документов, но эти новые документы также должны иметь ровно 2
тегов (предикторов).