在之前的几篇文章中,我们特别关注机器学习模型的性能。首先,我们讨论了如何量化机器学习模型的性能,以及如何通过正则化来改进它。然后我们介绍了其他优化技术,包括基本的优化技术,如梯度下降和高级技术,如Adam。最后,我们能够了解如何执行超参数优化并为您的模型获得最佳"配置"。
但是,到目前为止,我们尚未考虑的是如何通过修改数据本身来提高性能。我们专注于模型。到目前为止,在我们关于 SVM 和聚类的文章中,我们将一些技术(如缩放)应用于数据,但我们还没有对此过程进行更深入的分析,以及数据集的操作如何帮助我们提高性能。在本文中,我们正是这样做的,探索最有效的特征工程技术,这些技术通常是获得良好结果所必需的。
不要误会我的意思,特征工程不仅仅是为了优化模型。有时我们需要应用这些技术,以便我们的数据与机器学习算法兼容。机器学习算法有时期望数据以某种方式格式化,这就是特征工程可以帮助我们的地方。除此之外,重要的是要注意,数据科学家和工程师将大部分时间花在数据预处理上。这就是为什么掌握这些技术很重要的原因。在本文中,我们将探讨:
- 归 责
- 分类编码
- 处理异常值
- 分档
- 缩放
- 日志转换
- 功能选择
- 功能分组
- 功能拆分
出于本教程的目的,请确保您已安装以下 Python 库:
- NumPy – 如果您需要安装帮助,请遵循本指南。
- SciKit Learn – 如果您需要安装方面的帮助,请遵循本指南。
- 熊猫 - 如果您需要安装帮助,请遵循本指南。
- Matplotlib – 如果您需要安装帮助,请遵循本指南。
- SeaBorn - 如果您需要安装帮助,请遵循本指南。
安装后,请确保已导入本教程中使用的所有必要模块。
import Pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
from sklearn.preprocessing import StandardScaler, MinMaxScaler, MaxAbsScaler, QuantileTransformer
from sklearn.feature_selection import SelectKBest, f_classif
我们在本文中使用的数据来自PalmerPenguins Dataset。该数据集最近被引入,作为著名的Iris数据集的替代方案。它由Kristen Gorman博士和南极洲LTER的Palmer站创建。您可以在此处或通过Kaggle获取此数据集。该数据集主要由两个数据集组成,每个数据集包含344只企鹅的数据。就像在鸢尾花数据集中一样,有3种不同种类的企鹅来自帕尔默群岛的3个岛屿。
此外,这些数据集还包含每个物种的 culmen 维度。Culmen是鸟喙的上脊。在简化的企鹅数据中,culmen的长度和深度被重命名为变量culmen_length_mm和culmen_depth_mm。加载此数据集是使用 Pandas 完成的:
data = pd.read_csv('./data/penguins_size.csv')
data.head()
我们从客户那里获得的数据可以有各种形式。通常它是稀疏的,这意味着某些样本可能会丢失某些要素的数据。我们需要检测这些实例并删除这些样本或用某些内容替换空值。根据数据集的其余部分,我们可能会应用不同的策略来替换这些缺失值。例如,我们可以用平均特征值或最大特征值填充这些空槽。但是,让我们首先检测丢失的数据。为此,我们可以使用熊猫:
print(data.isnull().sum())
species 0
island 0
culmen_length_mm 2
culmen_depth_mm 2
flipper_length_mm 2
body_mass_g 2
sex 10
这意味着我们的数据集中存在某些要素中缺少值的实例。有两个实例缺少culmen_length_mm特征值,10 个实例缺少性别特征。即使在前几个样本中,我们也能够看到这一点(NaN表示不是数字,意味着缺失值):