Hello StackExchange Community,
У меня есть уникальный случай использования для наивного Байеса, где я пытаюсь обучить свою модель идентифицировать имена выходных столбцов на основе предыдущих данных имен входных столбцов.
По сути, мои данные выглядят так:
1. Output Column | Input Columns
2. Col1 | ABC DEF GHI
3. Col2 | JKL MNO QPR
4. Col3 | STU VWX
Это исторические данные, которые указывают, что
мы получили данные в столбце с именем «ABC», и мы отобразили данные в «Col1«мы получили данные в столбце с именем« DEF », и мы отобразили данные в« Col1 », мы получили данные в столбце с именем« JKL », и мы отобразили данные в« Col2 »и т. д. ...
Я перестроил свои данные, как показано ниже, и обучил свою модель, используя текстовую классификацию Наивного Байеса (аналогично классификатору спама в электронной почте).
1. Output Column | Input Columns
2. Col1 | ABC
3. Col2 | JKL
4. Col3 | STU
5. Col1 | DEF
6. Col2 | MNO
7. Col3 | STU
и т. Д. *
Дляпредсказания, я буду предоставлять входные столбцы для обученной модели и спрашивать, к какому классу выходных столбцов должен входить вход, наряду с оценкой вероятности.
Как вы думаете, мой подход к решению этой проблемы правильный?Имея около 100 строк данных, я получаю точные прогнозы, но с низкой вероятностью (~ 40%).
Любая обратная связь будет оценена здесь, так как эта модель ML может помочь нам в автоматизации задач.
Код:
vectorizer = CountVectorizer()
counts = vectorizer.fit_transform(training_data['Input Column'].values)
classifier = MultinomialNB()
targets = training_data['Output Column'].values
classifier.fit(counts, targets)
for index, row in test_data.iterrows():
panel=row['SourcePanel']
panel=[panel]
example_counts = vectorizer.transform(panel)
predictions = classifier.predict(example_counts)
probability = classifier.predict_proba(example_counts)
df=pd.DataFrame(classifier.predict_proba(example_counts), columns=classifier.classes_)
print("The source panel attribute ", panel, " maps to Target entity Attribute", df[predictions], "probability")