我正在建立一个认知矿工AI Bot。我的机器人有两个任务,一个是火车,另一个是预测。我使用一些/几个ML功能。所以我在这里有很多文件(~200,000个文档),我都在训练。然后在预测查询时,我按照一些步骤从培训中找到最准确的匹配文档(通过查看得分,对每个文档的置信度)。以及一些已知的函数,我们使用的查找类似于查询中可用的每个令牌的TF-IDF,n-gram,余弦相似性。为此,我使用核心python,python第三方库,NoSQL数据库来保存训练数据。
注意:尽可能使用core python来提高所有性能。 (请不要建议使用弹性搜索或python嗖嗖,因为我只想用我的傻代码再过十年。:))
我面临性能问题。喜欢做得分需要2-3秒的时间。这不好。我希望结果应该在几毫秒内完成。
所以我的问题是,如果我使用熊猫,并尝试将所有上述功能应用于它,它会提供更好的性能吗?或numpy矩阵计算会给出更好的表现?
所以在这里我不认为代码需要粘贴。我只需要有经验的人对我的问题的看法。当然,请记住解决方案应该是可扩展的。
答案 0 :(得分:2)
在性能方面,它可能不会产生太大的影响。
Pandas非常有效地加载数据并对其进行修改(以不同方式对其进行分组,旋转,从现有列创建新列等等)。
一旦您的数据准备好传递给机器学习算法(例如,在sklearn
中),那么,基本上,pd.DataFrame.as_matrix()
可以将其转换为numpy数组,而不会从根本上影响整体性能。很难想象任何sklearn
预测/分类阶段,其成本并不是主导。
sklearn-pandas
package进一步促进了这一点。
如果你的表现在这一点上并不令人满意,那么解决方案就在别处。