python - 在 pandas dataframe 上应用 ML 库是个好主意吗?

标签 python pandas numpy artificial-intelligence

我正在构建一个认知矿 worker 工智能机器人。我的机器人有两个任务,一个是训练,另一个是预测。我正在使用一些/很少的 ML 功能。所以这里我有很多正在训练的文档(~200,000 个文档)。然后在预测查询时,我按照一些步骤从训练中找到最准确的匹配文档(通过查看每个文档的分数、置信度)。我正在使用一些已知的函数来查找所询问的查询中可用的每个标记的 TF-IDF、n-gram、余弦相似度。为此,我使用核心 python 、python 第三方库、NoSQL 数据库来保存训练数据。

注意:所有性能改进都尽可能使用核心 python 来实现。 (请不要建议使用 Elastic Search 或 python whoosh,因为我只想再用我的愚蠢代码十年。:) )

我面临性能问题。像做得分一样需要2-3秒的时间。这不好。我希望结果应该在几毫秒内出现。

我的问题是,如果我使用 pandas 并尝试将上述所有功能应用于它,它会提供更好的性能吗?或者 numpy 矩阵计算会提供更好的性能?

所以这里我认为不需要粘贴代码。我只需要有经验的人对我的问题的看法。当然,请记住解决方案应该是可扩展的。

最佳答案

就性能而言,这两种方式可能不会产生太大差异。

Pandas 在加载数据和修改数据方面非常高效(以不同方式对数据进行分组、旋转、从现有列创建新列等等)。

一旦您的数据准备好传递给机器学习算法(例如,在 sklearn 中),那么,基本上,pd.DataFrame.as_matrix()可以将其转换为 numpy 数组,而不会从根本上影响整体性能。很难想象任何 sklearn 预测/分类阶段的成本不占主导地位。

sklearn-pandas package进一步促进了这一点。

如果此时您的表现不令人满意,解决方案就在别处。

关于python - 在 pandas dataframe 上应用 ML 库是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39722279/

相关文章:

python - Pandas 根据天数创建时间序列

python - Pandas - 将字符串转换为没有日期的时间

numpy - 将 Spark 数据帧收集到 Numpy 矩阵中

java - Python 框架作为 "Java + OSGi"组合的替代品

python - 未找到配置了日志记录的库的处理程序

python - 将字节读入十六进制摘要字符串的方法

numpy - 如何在 Python/numpy 中将 3D 数组结果保存到 4D 数组?

python - Twisted python Factory 和 Protocol 接口(interface)如何工作?

python - 通过在文本 block 中查找关键字来过滤数据框

python - 减少python中数据框的维度