我们已经读过一个关于数据预处理的故事。其中, 数据预处理、 数据转换或缩放是最关键的步骤之一。您可能会考虑它的重要性,因为每当您处理数据时,它都包含不同尺度的多个变量和值。
Python 中的数据缩放
对于算法来说,为了发挥最佳性能,数据应该处于相同的规模。当谈到Python中的数据扩展时,我们有两个关键技术—— 标准化和规范化。
在这个故事中,让我们看看如何将标准化和规范化技术应用于我们手中的数据。
导入数据
我们将在整个过程中使用游轮数据集。让我们导入数据并尝试对其应用上述缩放技术。
#Data import pandas as pd data = pd.read_csv( 'cruise_ship_data.csv' ) |
我们已经导入了游轮数据集。让我们更好地看看数据的一些基本统计数据。
#Data shape data.shape |
(158, 9)
- 我们的数据包含 158 行和 9 个变量。
#data columns data.columns |
Index([‘船舶名称’, ‘邮轮航线’, ‘船龄’, ‘吨位’, ‘乘客’, ‘长度’, ‘客舱’, ‘乘客密度’, ‘船员’], dtype=’对象’)
- 这是数据中的变量列表。
#summary statistics data.describe() |
- 游轮数据的汇总统计。
通过使用汇总统计,我们可以看到所有特征值的范围或范围。例如,从上面的数据中,我们可以看到变量 “Age”的值在[4, 48]之间 ,变量 “Crew”的值在[0, 21]之间, 依此类推。您可以观察到所有属性都具有不同范围的值。
因此,我们需要使用数据标准化和规范化等数据转换技术来扩展数据。让我们看看如何做到这一点。
1.Python数据扩展——标准化
数据标准化是我们将所有数据置于同一规模的过程。这将帮助我们分析数据并将其输入模型。
这就是数据标准化过程背后的数学原理。
在计算数据的标准化值之前,我们需要安装 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(核密度估计)图。
- 标记绘图的轴。输出图将如下所示 –
推理
如果我们采用近似值,则数据的范围介于 -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 绘制分布图并显示图。
我们还可以将 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() |
推论——
在这里,您可以观察到这些值的范围为 -1 到 1。
数据扩展——要点
- 数据标准化是最常用的过程,因为它具有多种好处。
- 您也可以使用标准化进行异常值检测。任何超出 -2 到 2 范围的值都可以被视为异常值。
- 最后,数据转换有助于避免偏差并提高模型准确性。
数据缩放——结论
Python 中的数据缩放是建模之前必须遵循的重要过程。类似规模内的数据可以令人惊讶地提高模型的预测能力。这个故事重点关注两种主要的数据扩展技术,即标准化和标准化。我希望这将有助于以一种简单的方式更好地理解缩放。
目前为止就这样了。快乐的Python!!!😛
更多阅读:数据标准化