机器学习预测模型数据特征(机器学习中数据特征的处理)(1)

众所周知,特征工程是将原始数据转换为数据集的过程。 有各种可用的功能工程技术。 两种最广泛使用且最容易混淆的特征工程技术是:

· 标准化

· 归一化

今天我们将探讨这两种技术,并了解数据分析师在解决数据科学问题时所做出的一些常见假设。 另外,本教程的全部代码都可以在下面的GitHub存储库中找到:

https://github.com/Tanu-N-Prabhu/Python/blob/master/NormalizationvsStandardization.ipynb

归一化理论

归一化是将数字特征转换为标准值范围的过程。 值的范围可以是[-1,1]或[0,1]。 例如,假设我们有一个数据集,其中包含两个名为"年龄"和"体重"的特征,如下所示:

机器学习预测模型数据特征(机器学习中数据特征的处理)(2)

假设一个名为"年龄"的要素的实际范围是5到100。我们可以通过从"年龄"列的每个值中减去5,然后将结果除以95( 100-5)。 为了使您清晰可见,我们可以将以上内容写为公式。

机器学习预测模型数据特征(机器学习中数据特征的处理)(3)

其中min ^(j)max ^(j)是数据集中特征j的最小值和最大值。图像来源于Andriy Burkov的《百页机器学习书》

实例

现在您已经了解了背后的理论,现在让我们看看如何将其投入实际。 通常,有两种方法可以实现此目的:传统的Old school手动方法,另一种使用sklearn预处理库。 今天,让我们借助sklearn库进行归一化。

使用sklearn预处理-Normalizer

在将" Age"和" Weight"值直接输入该方法之前,我们需要将这些数据帧转换为numpy数组。 为此,我们可以使用to_numpy()方法,如下所示:

# Storing the columns Age values into X and Weight as YX = df['Age'] y = df['Weight'] X = X.to_numpy() y = y.to_numpy()

上面的步骤非常重要,因为fit()和transform()方法仅适用于数组。

from sklearn.preprocessing import Normalizernormalizer = Normalizer().fit([X]) normalizer.transform([X])

机器学习预测模型数据特征(机器学习中数据特征的处理)(4)

normalizer = Normalizer().fit([y]) normalizer.transform([y])

机器学习预测模型数据特征(机器学习中数据特征的处理)(5)

如上所示,两个数组的值都在[0,1]范围内。

我们何时应实际对数据进行归一化?

尽管归一化不是强制性的(必须做的事)。 它可以通过两种方式为您提供帮助

· 归一化数据将提高学习速度。 它将在构建(训练)和测试数据期间提高速度。 试试看!!

· 它将避免数值溢出。 意思是归一化将确保我们的输入大致在相对较小的范围内。 这样可以避免问题,因为计算机通常在处理非常小或非常大的数字时会遇到问题。

标准化理论

标准化和z分数标准化和最小-最大缩放是一种重新缩放数据集值的技术,以使其具有标准正态分布的属性,其中μ= 0(均值-特征的平均值)且σ= 1( 均值的标准偏差)。 可以这样写:

机器学习预测模型数据特征(机器学习中数据特征的处理)(6)

实例

现在有很多方法可以实现标准化,就像标准化一样,我们可以使用sklearn库并使用StandardScalar方法,如下所示:

from sklearn.preprocessing import StandardScalersc = StandardScaler() sc.fit_transform([X]) sc.transform([X])sc.fit_transform([y]) sc.transform([y])

Z分数标准化

同样,我们可以使用pandas的mean和std来实现。

# Calculating the mean and standard deviation df = (df - df.mean())/df.std() print(df)

机器学习预测模型数据特征(机器学习中数据特征的处理)(7)

最小-最大缩放

在这里我们可以使用pandas的max和min来做有需要的

# Calculating the minimum and the maximum df = (df-df.min())/(df.max()-df.min()) print(df)

机器学习预测模型数据特征(机器学习中数据特征的处理)(8)

通常,最好使用Z分数标准化,因为最小-最大缩放容易过度拟合。

什么时候使用标准化?

上述问题没有答案。 如果您的数据集较小且有足够的时间,则可以尝试上述两种技术并选择最佳的一种。 以下是您可以遵循的经验:

· 您可以对无监督学习算法使用标准化。 在这种情况下,标准化归一化更有利。

· 如果您在数据中看到一个曲线,那么标准化是更可取的。 为此,您将必须绘制数据。

· 如果您的数据集具有极高或极低的值(离群值),则标准化是更可取的,因为通常,归一化会将这些值压缩到较小的范围内。

除上述情况外,在任何其他情况下,归一化都适用。 同样,如果您有足够的时间可以尝试两种特征工程技术。

作者:Tanu N Prabhu

翻译:孟翔杰

,