我使用SkLearn创建了一个RandomForestClassification模型,使用了10个不同的文本特征和10000个训练样本。然后,我将模型进行了序列化(76mb),希望能用它来进行预测。
然而,为了生成随机森林,我使用了LabelEncoder和OneHotEncoder来处理分类/字符串数据,以获得最佳效果。
现在,我想加载这个序列化模型,并对一个实例进行分类预测。然而,我不确定如何在不重新加载整个训练和测试数据集CSV文件并重新进行整个编码过程的情况下,对单个实例的文本进行编码。
每次都加载CSV文件似乎非常繁琐。我希望每小时能运行1000次,所以这样做似乎不太合理。
有没有一种方法可以快速对给定序列化模型或其他变量/设置的一行数据进行编码?编码是否总是需要所有数据?
如果加载所有训练数据是编码单行数据所必需的,那么将文本数据自己编码到数据库中是否有优势?每个特征分配到一个表中,自动递增一个数字ID,并在文本/分类字段上设置一个UNIQUE键,然后将这个ID传递给RandomForestClassification?显然,我需要重新拟合并序列化这个新模型,但这样我就可以确切知道新行的(编码)数字表示,并简单地请求对这些值的预测。
我很可能遗漏了一些功能或误解了SkLearn或Python,我才刚开始学习三天。请原谅我的无知。
回答:
使用Pickle,你应该保存你的Label和One Hot Encoder。然后你每次都可以读取这些编码并轻松转换新实例。例如,