到目前为止,我们观察到的数据集在所谓的"整洁"方面几乎是一个完美的情况。这意味着每个要素都有自己的列,每个观测值都是一行,每种类型的观测单位都是一个表。
但是,有时我们的观测值分布在几行中。功能分组的目标是将这些行连接成一个行,然后使用这些聚合行。这样做的主要问题是哪种类型的聚合函数将应用于特征。这对于分类特征尤其复杂。
正如我们所提到的,PalmerPenguins数据集非常典型,因此以下示例只是为了展示可用于此操作的代码而具有教育意义:
grouped_data = data.groupby('species')
sums_data = grouped_data['culmen_length_mm', 'culmen_depth_mm'].sum().add_suffix('_sum')
avgs_data = grouped_data['culmen_length_mm', 'culmen_depth_mm'].mean().add_suffix('_mean')
sumed_averaged = pd.concat([sums_data, avgs_data], axis=1)
sumed_averaged
在这里,我们按 spicies 值对数据进行分组,并为每个数值创建了两个具有 sum 和平均值的新特征。
9. 功能拆分有时,数据不是通过行连接,而是通过 colum 连接。例如,假设您在其中一个功能中具有名称列表:
data.names
0 Andjela Zivkovic
1 Vanja Zivkovic
2 Petar Zivkovic
3 Veljko Zivkovic
4 Nikola Zivkovic
因此,如果我们只想从此功能中提取名字,我们可以执行以下操作:
data.names
0 Andjela
1 Vanja
2 Petar
3 Veljko
4 Nikola
此技术称为特征拆分,通常与字符串数据一起使用。
从这里到哪里去?通常,机器学习算法是一些更大应用程序的一部分。通常,我们需要为应用程序的其他部分使用功能。这只是将机器学习应用程序投入生产特别具有挑战性的众多原因之一。缓解此问题的一种方法是使用所谓的功能商店。这是数据架构中一个相对较新的概念,但它已经被Uber和Gojek等公司应用。
要素存储既是计算服务又是存储服务。从本质上讲,它们公开了功能,因此可以发现它们并将其用作机器学习管道和联机应用程序的一部分。由于它们需要同时提供存储大量数据和提供低计算延迟这两者,因此功能存储作为双数据库系统实现。一端是低延迟键值存储或实时数据库,另一端是可以存储大量数据的SQL数据库。这是一个有趣的概念,可以进一步探讨。
结论在本文中,我们有机会探讨了特征工程最常用的9种技术。
原文标题:Top 9 Feature Engineering Techniques with Python
原文链接:https://rubikscode.net/2021/06/29/top-9-feature-engineering-techniques/
作者:Machine Learning
编译:LCR