使用新数据测试文本分类 ML 模型失败
Posted
技术标签:
【中文标题】使用新数据测试文本分类 ML 模型失败【英文标题】:Testing text classification ML model with new data fails 【发布时间】:2020-10-12 17:36:05 【问题描述】:我已经建立了一个机器学习模型来将电子邮件分类为垃圾邮件。现在我想测试我自己的电子邮件并查看结果。所以我写了以下代码来对新邮件进行分类:
message = """Subject: Hello this is from google security team we want to recover your password. Please contact us
as soon as possible"""
message = pd.Series([message,])
transformed_message = CountVectorizer(analyzer=process_text).fit_transform(message)
proba = model.predict_proba(transformed_message)[0]
知道process_text
是处理电子邮件的函数,当我运行代码时出现以下错误:
Number of features of the model must match the input. Model n_features is 37229 and input n_features is 13
请问这是什么问题,我该如何解决?
【问题讨论】:
如果答案解决了您的问题,请接受 - 请参阅What should I do when someone answers my question? 【参考方案1】:对于此类管道中的所有数据预处理步骤,我们不再拟合,就像您在此处使用(新定义的)计数矢量化器所做的那样。
因此,您不应将fit_transform
与新的计数矢量化器一起使用,而应通过应用其transform
方法来重用现有的计数矢量化器(即与您的训练数据一起使用的计数矢量化器)。这将允许您将新数据映射到与训练数据的 37229 个特征(用于训练模型)相关的映射,而不是当您再次将计数矢量化器拟合到如此短的文本时仅产生 13 个特征。
【讨论】:
以上是关于使用新数据测试文本分类 ML 模型失败的主要内容,如果未能解决你的问题,请参考以下文章
R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释一个测试语料的预测结果并可视化
R语言构建文本分类模型并使用LIME进行模型解释实战:文本数据预处理构建词袋模型构建xgboost文本分类模型基于文本训练数据以及模型构建LIME解释器解释多个测试语料的预测结果并可视化