Hello StackExchange社区,
我有一个Naive Bayes的独特用例,我正在尝试训练我的模型,以根据输入列名的先前数据识别输出列名。
基本上,我的数据如下所示:
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” 等等...
我重新安排了以下数据,并使用Naive Bayes的文本分类(类似于垃圾邮件分类器)训练我的模型。
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")