Python 中的数据缩放 | 标准化和规范化

我们已经读过一个关于数据预处理的故事。其中, 数据预处理、 数据转换或缩放是最关键的步骤之一。您可能会考虑它的重要性,因为每当您处理数据时,它都包含不同尺度的多个变量和值。

Python 中的数据缩放

对于算法来说,为了发挥最佳性能,数据应该处于相同的规模。当谈到Python中的数据扩展时,我们有两个关键技术—— 标准化和规范化。 

在这个故事中,让我们看看如何将标准化和规范化技术应用于我们手中的数据。


导入数据

我们将在整个过程中使用游轮数据集。让我们导入数据并尝试对其应用上述缩放技术。

#Data
 
import pandas as pd
 
data = pd.read_csv('cruise_ship_data.csv')
图6

我们已经导入了游轮数据集。让我们更好地看看数据的一些基本统计数据。

#Data shape
 
data.shape

(158, 9)

  • 我们的数据包含 158 行和 9 个变量。
#data columns
 
data.columns

Index([‘船舶名称’, ‘邮轮航线’, ‘船龄’, ‘吨位’, ‘乘客’, ‘长度’, ‘客舱’, ‘乘客密度’, ‘船员’], dtype=’对象’)

  • 这是数据中的变量列表。
#summary statistics
 
data.describe()
图7
  • 游轮数据的汇总统计。

通过使用汇总统计,我们可以看到所有特征值的范围或范围。例如,从上面的数据中,我们可以看到变量 “Age”的值在[4, 48]之间 ,变量 “Crew”的值在[0, 21]之间, 依此类推。您可以观察到所有属性都具有不同范围的值。

因此,我们需要使用数据标准化和规范化等数据转换技术来扩展数据。让我们看看如何做到这一点。


1.Python数据扩展——标准化

数据标准化是我们将所有数据置于同一规模的过程。这将帮助我们分析数据并将其输入模型。

图9

这就是数据标准化过程背后的数学原理。

在计算数据的标准化值之前,我们需要安装 sklearn 库。您可以运行以下代码来 pip 安装scikit-learn库。

#install scikit learn
 
pip install scikit-learn
#import pandas
import pandas as pd
 
#import numpy
import numpy as np
 
#import seaborn
import seaborn as sns
 
#import matplotplib
import matplotlib.pyplot as plt

嗯,我们的图书馆都很好。现在,让我们标准化数据中的值。为此,我们将遵循一个过程或一些步骤。

#define the columns
 
cols = ['Age', 'Tonnage', 'passengers', 'length',
        'cabins','passenger_density','crew']
 
#Call the sklearn librart and import scaler values
from sklearn.preprocessing import StandardScaler
 
#call the standard scaler
std_scaler = StandardScaler()
 
#fit the values to the function
Stand_Sc = std_scaler.fit_transform(data[cols].iloc[:,range(0,7)].values)
 
#use seaborn for KDE plot
sns.kdeplot(Stand_Sc[:,5],fill=True, color = 'Green')
 
#Label the plot
plt.xlabel('standardized values - Passenger density')
 
#Print the plot
plt.show()

这里 –

  • 我们已经定义了列并从 sklearn 库导入了标准缩放器。
  • 我们将数据(定义的列)安装到缩放器中。
  • 创建了KDE(核密度估计)图。
  • 标记绘图的轴。输出图将如下所示 –
图10

推理

如果我们采用近似值,则数据的范围介于 -3 到 3 之间。您也可以说这些值与平均值 ( 0 ) 相差 3 个标准差。


2.Python数据缩放——标准化

数据标准化是标准化数据的过程,即避免数据的偏斜。一般来说,标准化后的数据将呈钟形曲线。

这也是维护数据质量和可维护性的标准流程。数据标准化有助于分割过程。

以下是归一化公式供您参考。

在上一节中,我们对数据进行了标准化。同样,使用 sklearn Normalizer,我们可以对数据中的值进行标准化。

确保保持列与之前的列相同。

#Import Normalizer from sklearn
from sklearn.preprocessing import Normalizer
 
#initialize normalizer
data_norm = Normalizer()
 
#Fit the data
Normalize = data_norm.fit_transform(data[cols].iloc[:,range(0,7)].values)
 
#Distribution plot
sns.displot(Normalize[:,5],fill=True, color = 'orange')
 
#Add the axis labels
plt.xlabel('normalized values - passenger density')
 
#Display the plot
plt.show()

这里 –

  • 我们使用相同的数据(即变量)进行标准化过程。
  • 从 sklearn 库导入 Normalizer。
  • 使用seaborn 绘制分布图并显示图。
图11

我们还可以将 KDE 元素添加到该图中。它将增加更多的可读性,并且更容易消化信息。

这可以通过添加参数来完成 –kde = True

#Import Normalizer from sklearn
from sklearn.preprocessing import Normalizer
 
#initialize normalizer
data_norm = Normalizer()
 
#Fit the data
Normalize = data_norm.fit_transform(data[cols].iloc[:,range(0,7)].values)
 
#Distribution plot
#sns.displot(Normalize[:,5],fill=True, color = 'orange')
sns.displot(Normalize[:,5],fill=True, color = 'orange', kde=True)
 
#Add the axis labels
plt.xlabel('normalized values - passenger density')
 
#Display the plot
plt.show()
图12

推论——

在这里,您可以观察到这些值的范围为 -1 到 1。


数据扩展——要点

  1. 数据标准化是最常用的过程,因为它具有多种好处。
  2. 您也可以使用标准化进行异常值检测。任何超出 -2 到 2 范围的值都可以被视为异常值。
  3. 最后,数据转换有助于避免偏差并提高模型准确性。

数据缩放——结论

Python 中的数据缩放是建模之前必须遵循的重要过程。类似规模内的数据可以令人惊讶地提高模型的预测能力。这个故事重点关注两种主要的数据扩展技术,即标准化和标准化。我希望这将有助于以一种简单的方式更好地理解缩放。

目前为止就这样了。快乐的Python!!!😛

更多阅读:数据标准化