我正在构建一个认知矿工AI机器人。我的机器人有两个任务,一个是训练,另一个是预测。我正在使用一些/几个ML功能。所以这里我有很多我正在训练的文档(大约200,000个文档)。然后在预测查询时,我遵循一些步骤从训练中找到最准确的匹配文档(通过查看每个文档的得分和置信度)。还有一些我正在使用的已知函数,比如TF-IDF,n-gram,被请求查询中每个可用标记的余弦相似度。为此,我使用了核心python、python第三方库、用于保存训练数据的NoSQL数据库。
注意:所有性能改进都尽可能多地使用核心python。(请不要建议使用Elastic Search或python呼呼,因为我只想在下一个十年使用我愚蠢的代码。:)
我正面临着性能问题。喜欢做得分,它需要2-3秒的时间。这不是很好,我希望结果应该在几毫秒内出来。
所以我的问题是,如果我使用pandas,并尝试将所有上述功能应用于它,它会提供更好的性能吗?或者numpy矩阵计算会给出更好的性能?
所以在这里我不认为代码需要粘贴。我只需要有经验的人对我的问题的看法。当然,记住解决方案应该是可扩展的。
发布于 2016-09-27 18:43:30
无论哪种方式,在性能方面都不会有太大的不同。
Pandas在加载数据和转换数据方面非常高效(以不同的方式对其进行分组、透视、从现有列创建新列等)。
一旦您的数据准备好传递给机器学习算法(例如,在sklearn中),那么,基本上,pd.DataFrame.as_matrix()可以将其转换为numpy数组,而不会从根本上影响整体性能。很难想象任何sklearn预测/分类阶段的成本不占主导地位。
sklearn-pandas package进一步促进了这一点。
如果您的性能在这一点上不能令人满意,那么解决方案就在别处。
https://stackoverflow.com/questions/39722279
复制相似问题