当前位置: 首页 > 科技观察

StandardizationforDataPreprocessingwithPython

时间:2023-03-15 15:12:17 科技观察

归一化和归一化是机器学习和深度学习项目中大量使用的数据预处理技术之一。这些技术的主要作用是以相似的格式缩放所有数据,使模型的学习过程变得容易。数据中的奇数值被缩放或归一化,表现得像数据的一部分。我们将通过一个Python示例深入讨论这两个概念。归一化数据的基本缩放是对其进行归一化,使所有值都在一个共同的范围内。在标准化中,数据的均值和方差分别为零和一。它总是试图使数据呈正态分布。归一化公式如下所示:z=(列值-均值)/标准差机器学习中的一些算法试图使数据呈正态分布。但是,如果一个特征的方差较大而其他特征的方差较低或为单位方差,则模型的学习将是不正确的,因为方差因一个特征而异。正如我们上面所讨论的,标准缩放的范围是“0”均值和“1”单位方差。我们如何使用标准缩放?要使用标准缩放,我们需要像这样从预处理类中导入它:fromsklearnimportpreprocessingscaler=preprocessing.StandardScaler()使用标准缩放的正确步骤是什么?我们可以使用aftertrain-testsplitStandardscaling,因为如果我们在数据泄漏问题发生之前这样做,可能会导致模型不太可靠。如果我们在拆分之前进行缩放,那么从训练中学习的过程也可以在测试集上完成,这是我们不希望的。让我们在sklearn库的帮助下查看拆分过程fromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(x,y,train_size=0.20,random_state=42)在此之后我们可以使用标准缩放fromsklearn.preprocessingimportStandardScalersc=StandardScaler()X_train=sc.fit_transform(X_train)X_test=sc.transform(X_test)让我们举一个python例子。fromsklearnimportpreprocessingimportnumpyasnp#creatingatrainingdataX_train=np.array([[4.,-3.,2.],[2.,2.,0.],[0.,-6.,7.]])#fitthetrainingdatascaler=预处理。StandardScaler().fit(X_train)scaler#output:StandardScaler()现在,我们将检查训练数据中每个特征的均值和缩放比例。scaler.mean_#output:array([2.,-2.33333333,3.])scaler.scale_#output:array([1.63299316,3.29983165,2.94392029])scale_attribute找出特征之间的相对比例,得到一个标准比例,即,零均值和单位方差。mean属性用于查找每个特征的平均值。现在,我们将转换缩放数据X_scaled=scaler.transform(X_train)X_scaled#output:array([[1.22474487,-0.20203051,-0.33968311],[0.,1.31319831,-1.01904933],[-1.22474487,-1.8116,1.35873244]])要检查均值和单位方差为零的特征,我们将找到均值和标准差。X_scaled.mean(axis=0)#output:array([0.,0.,0.])X_scaled.std(axis=0)#output:array([1.,1.,1.])我们也范围缩放可以在MinMaxScaler和MaxAbsScaler的帮助下完成。有时我们在数据中有异常值会影响算法建模,标准缩放器会受到异常值的影响,其他方法如min-max和max-abs缩放器将数据保持在一定范围内。MinMaxScalerMinMaxScaler是另一种在[0,1]范围内缩放数据的方法。它使数据保持其原始形状并保留有价值的信息,同时受异常值的影响较小。一个python示例如下所示:fromsklearnimportpreprocessingimportnumpyasnp#creatingatrainingdataX_train=np.array([[4.,-3.,2.],[2.,2.,0.],[0.,-6.,7.]])min_max_scaler=preprocessing.MinMaxScaler()X_train_minmax=min_max_scaler.fit_transform(X_train)X_train_minmax#output:array([[1.,0.375,0.28571429],[0.5,1.,0.],[0.,0.,1.]])使用MinMaxScaler缩放后,我们可以看到“0”到“1”范围内的数据。MaxAbsScaler这是另一种缩放方法,其中数据在[-1,1]范围内。这种缩放的好处是它不会移动或居中数据并保持数据稀疏。一个python示例如下所示:fromsklearnimportpreprocessingimportnumpyasnp#creatingatrainingdataX_train=np.array([[4.,-3.,2.],[2.,2.,0.],[0.,-6.,7.]])max_abs_scaler=preprocessing.MaxAbsScaler()X_train_maxabs=max_abs_scaler.fit_transform(X_train)X_train_maxabs#output:array([[1.,-0.5,0.28571429],[0.5,0.33333333,0.],[0.,-1.,1.]])使用MaxAbsScaler缩放后,我们可以看到“-1”到“1”范围内的数据。总结数据的缩放是机器学习或深度学习的一个非常重要的部分。在这篇文章中,MaxAbsScaler在稀疏数据中很有用,而另一方面,标准缩放也可以用于稀疏数据,但也会由于过多的内存分配而给出值错误。