我在解决现实世界问题时,在概念层面上遇到了关于数据拟合的问题。
问题陈述:文本内容分类
数据集有两列:文本内容和内容类别(如运动、新闻等)
已完成:使用随机森林分类器构建了一个模型 – 遵循了一些预处理技术 – 使用TfidfVectorizer转换。结果,在训练和测试数据方面,一切都运作良好。
挑战:当现实世界的文本内容到来时,我需要再次使用TfidfVectorizer转换数据 — 这将与我们之前使用的数据集有完全不同的转换。这导致了与预期完全不同的结果。
问题:有没有办法保存训练时实现的这种拟合逻辑,以便我可以使用这些信息仅对实时数据进行转换?
回答:
让我们以您在评论中提到的薪资列上的MinMaxScaler
为例:
scaler = MinMaxScaler()
然后我们可以拟合并转换我们的训练集:
scaler.fit(train)train = scaler.transform(train)
我们也可以以相同的方式转换test
集,如下所示:
test = scaler.transform(test)
我如何将相同的缩放拟合数据应用于新数据?
我们可以将MinMaxScaler
存储在pickle文件中以供将来使用:
import picklepickle.dump(scaler, open('file/path/scaler.pkl','wb'))
每当有新数据到来时,我们可以加载pickle文件并使用它来转换新数据:
scaler = pickle.load(open('file/path/scaler.pkl','rb'))new_data = scaler.transform(new_data)