我在使用逻辑回归进行新闻类型的文本分类,如体育、政治、商业、娱乐,但不属于上述类别的文本也被预测为某个类别。如何在机器学习中防止这种情况?另外,如何将不属于任何类别的文本标记为其他类别标签?
回答:
predict
方法会返回概率最高的预测结果。你可以使用predict_proba
方法,它会为每个类别提供概率分数。因此,你可以使用max()
函数获取最高的概率,然后简单地使用if
语句检查概率是否大于所需值,如果是则打印预测结果,否则使用else
打印其他。如果你不明白,可以看看下面的示例代码。
model.fit(text, tags)textToBeClassified = ["Google's shares are going down"] # 它需要放在一个列表中,这是predict方法的输入要求,你可以通过添加逗号分隔的文本来分类更多的文本。prediction = model.predict(textToBeClassified) # 它会返回标签,如政治、体育、商业等。predictionConfidence = model.predict_proba(textToBeClassified) # 它会返回每个输入的置信度分数(概率)元组。maxConfidence = max(predictionConfidence[0]) # 我只有一个要分类的文本,即第一个文本,所以我找到第一个文本的最大值。如果 maxConfidence > 0.8: # 我希望只有在分类置信度达到80%时才输出结果,你可以将0.8改为0.9以获得90%的准确率。 print(prediction)else: print("对不起,该文本不属于任何类别")
试着在这里那里添加一些打印语句,这样你就知道发生了什么
model.fit(text, tags)textToBeClassified = ["Google's shares are going down"]prediction = model.predict(textToBeClassified)print("预测为:", prediction)predictionConfidence = model.predict_proba(textToBeClassified)print("置信度分数:", predictionConfidence)maxConfidence = max(predictionConfidence[0])print("最大置信度分数为:", maxConfidence)if maxConfidence > 0.8: print(prediction)else: print("对不起,该文本不属于任何类别")
就像这样 🙂