sklearn预测新数据_sklearn linear regression

(88) 2024-07-20 12:01:03

本文主要介绍sklearn preprocessing四个数据预处理的函数,大概分两类,一是标准化,二是将将数据特征缩放至某一范围。
这四个函数都在sklearn preprocessing模块中,无论哪个方法,都是对列进行的操作

一、标准化

标准化适用的情况:如果有些特征的方差过大,则会主导目标函数从而使参数估计器无法正确地去学习其他特征,这个时候需要数据标准化,分两步,一是去均值的中心化(均值变为0),二是方差的规模化(方差变为1)。通过这一步,可将特征值等级化,进而实现数据中心化。

原理

z-score标准化(zero-mean normalization)

原理:均值为0,标准差为1(符合标准正态分布) –> mean=0, std=1

转换函数: 
sklearn预测新数据_sklearn linear regression (https://mushiming.com/)  第1张

示例数据如下

sklearn预测新数据_sklearn linear regression (https://mushiming.com/)  第2张

  • scale()方法,适用不区分训练集与测试集前一次性变换
#scale方法的使用 #方法一 from sklearn import preprocessing scale_data = preprocessing.scale(X) #方法二 from sklearn.preprocessing import scale scale_data = scale(X) scale_data

sklearn预测新数据_sklearn linear regression (https://mushiming.com/)  第3张

#显示每列的均值和方差 scale_data.mean(axis=0) scale_data.std(axis=0)

sklearn预测新数据_sklearn linear regression (https://mushiming.com/)  第4张

  • StandardScaler()方法,计算训练集的平均值和标准差,以便测试数据集使用相同的变换
#StandardScaler()方法 from sklearn import preprocessing stand_means = preprocessing.StandardScaler() X_trans = stand_means.fit_transform(X) Y_trans = stand_means.transform(Y) print("X_trans如下:") X_trans print('-'*60) print("Y_trans如下:") Y_trans

sklearn预测新数据_sklearn linear regression (https://mushiming.com/)  第5张

二、将数据特征缩放至某一范围

缩放适用的情况:数据集的标准差非常非常小,有时数据中有很多很多零(稀疏数据)需要保存住0元素,这样处理可对方差非常小的属性增强其稳定性,也可维持稀疏矩阵中为0的条目,一般情况下是缩放到在[0,1]之间,或者是特征中绝对值最大的那个数为1,其他数以此维标准分布在[[-1,1]之间。

以上两者分别可以通过MinMaxScaler 或者 MaxAbsScaler方法来实现,实现方法同StandardScaler()方法一样

MinMaxScaler()原理

转换函数:

sklearn预测新数据_sklearn linear regression (https://mushiming.com/)  第6张

MaxAbsScaler()

原理与上面的很像,只是数据会被规模化到[-1,1]之间。也就是特征中,所有数据都会除以最大值。这个方法对那些已经中心化均值维0或者稀疏的数据有意义。

THE END

发表回复