📢 转载信息
原文链接:https://www.kdnuggets.com/7-under-the-radar-python-libraries-for-scalable-feature-engineering
原文作者:Iván Palomares Carrascosa
Image by Editor
# 引言
特征工程是数据科学和机器学习工作流程,以及整体AI系统中的一个基本流程。它涉及从原始的、通常相当混乱的数据中构建有意义的解释变量。特征工程背后的流程可能非常简单,也可能极其复杂,这取决于数据集的体积、结构和异构性,以及机器学习建模目标。虽然像 Pandas 和 scikit-learn 这样最流行的Python数据操作和建模库在一定程度上支持基础和中等规模的可扩展特征工程,但仍有一些专业库在处理海量数据集和自动化复杂转换方面更进一步,然而它们却鲜为人知。
本文列出了7个推动可扩展特征工程流程的冷门Python库。
# 1. 使用 NVTabular 加速
首先是NVIDIA-Merlin的 NVTabular:一个旨在对(你猜对了!)表格型数据集应用预处理和特征工程的库。其显著特点是采用GPU加速方法,旨在轻松处理训练庞大深度学习模型所需的海量数据集。该库尤其设计用于帮助扩展基于深度神经网络 (DNN) 的现代推荐系统引擎的管道。
# 2. 使用 FeatureTools 自动化
由Alteryx设计的 FeatureTools 专注于特征工程流程的自动化。该库应用深度特征合成 (DFS),这是一种通过数学分析关系来创建新“深度”特征的算法。该库可用于关系型数据和时间序列数据,使得两者都能以最小的编码负担实现复杂特征生成。
此代码片段展示了在使用 featuretools 库对客户数据集应用 DFS 时的示例:
customers_df = pd.DataFrame({'customer_id': [101, 102]}) es = es.add_dataframe( dataframe_name="customers", dataframe=customers_df, index="customer_id" ) es = es.add_relationship( parent_dataframe_name="customers", parent_column_name="customer_id", child_dataframe_name="transactions", child_column_name="customer_id" )
# 3. 使用 Dask 并行化
Dask 作为一个使并行Python计算更快更简单的库,正日益普及。Dask 的核心理念是通过集群计算来扩展传统的 Pandas 和 scikit-learn 特征转换,从而在无法处理大型数据集的内存上实现更快、更经济的特征工程管道。
这篇文章展示了一个使用 Dask 进行数据预处理的实用演练。
# 4. 使用 Polars 优化
在日益增长的普及性上与 Dask 竞争,并渴望在Python数据科学领域占有一席之地的库是 Polars:一个基于 Rust 的数据框库,它使用惰性表达式 API 和惰性计算来驱动对超大型数据集的高效、可扩展的特征工程和转换。Polars 被许多人视为 Pandas 的高性能替代品,如果你对 Pandas 比较熟悉,Polars 很容易学习和掌握。
对 Polars 感兴趣吗?这篇文章展示了几个用于常见数据科学任务(包括特征工程)的实用 Polars 简写语句(one-liners)。
# 5. 使用 Feast 存储
Feast 是一个开源库,被设计为一个特征存储,旨在以规模化的方式向生产级或生产就绪的AI应用程序(特别是那些基于大型语言模型 (LLM) 的应用程序)提供结构化数据源,用于模型训练和推理任务。它一个吸引人的特性是确保训练和生产推理这两个阶段之间的一致性。其作为特征存储的使用也与特征工程过程紧密相连,特别是与其他开源框架(例如 denormalized)结合使用时。
# 6. 使用 tsfresh 提取
将焦点转向大型时间序列数据集,我们有了 tsfresh 库,它有一个专门用于可扩展特征提取的包。该库能够从统计特性到频谱特性计算多达数百个有意义的特征,并能应用相关性过滤,顾名思义,就是根据特征在机器学习建模过程中的相关性进行过滤。
这个示例代码片段获取了一个已预先滚动成窗口的时间序列 DataFrame,并在其上应用 tsfresh 特征提取:
features_rolled = extract_features( rolled_df, column_id='id', column_sort='time', default_fc_parameters=settings, n_jobs=0 )
# 7. 使用 River 简化
让我们以 River 库结束对河流(双关语)的涉猎,该库旨在简化在线机器学习工作流程。在其功能套件中,它具备启用在线或流式特征转换和特征学习技术的能力。这有助于有效地处理生产环境中像无界数据和概念漂移等问题。River 构建的目的是稳健地处理在批量机器学习系统中很少出现的问题,例如数据特征的随时间出现和消失。
# 总结
本文列出了7个可以帮助使特征工程流程更具可扩展性的重要Python库。其中一些直接专注于提供独特的特征工程方法,而另一些则可以在特定场景下与其他框架结合使用,以进一步支持特征工程任务。
Iván Palomares Carrascosa 是AI、机器学习、深度学习和LLM领域的领导者、作家、演讲者和顾问。他培训和指导他人如何在现实世界中利用AI。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区