您好 StackExchange 社区,
我有一个朴素贝叶斯的独特用例,我正在尝试训练我的模型以根据输入列名称的先前数据识别输出列名称。
基本上,我的数据如下所示:
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")