matlab 归一化(mapminmax)与python归一化(sklearn.preprocessing.MinMaxScaler)比较

1. matlab mapminmax归一化函数:

函数用法: [Xn,Xps]=mapminmax(X,min,max)

说明:(1)该函数将X按行归一化,即计算某元素的归一化值时,最大最小值时该元素所处行的最大最小值;因此若只有一组观测时,X需是1*N的行向量。

   (2)min,max规定X的归一化范围,根据需要自行设置

   (3)ps是结构变量记录了归一化时的最大值最小值等参数,后续可重复调用

      调用方法:X1=mapminmax('apply', X_new,Xps);%利用先前的结构Xps进行相同的归一化

           X2=mapminmax('reverse',Xn, Xps);%反归一化

例:

x=[1,-1,2;

   2,0,0;

   0,1,-1]

[x1,Xps]=mapminmax(x,0,1)
>>x1=0.6667 0 1

     1 0 0

   0.5 1 0



2.python sklearn.preprocessing.MinMaxScaler

函数用法:

min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0,1))#这里feature_range根据需要自行设置,默认(0,1)

X_train_minmax = min_max_scaler.fit_transform(X)
X=min_max_scaler.inverse_transform(X_train_minmax)#利用上面的归一化结构反归一化

说明:(1)这里是先定义一个结构min_max_scaler, 并规定这个结构的映射最大最小值

            (2)sklearn中的这个归一化是对列进行归一化,公式:

        X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))

        X_scaled = X_std * (max - min) + min

                 因此要得到matlab中的结果需要转至

            (3)对于python中的axis=0 和axis=1的问题:

 如df.mean其实是在每一行上取所有列的均值,而不是保留每一列的均值。也许简单的来记就是axis=0代表往跨行(down),而axis=1代表跨列(across),作为方法动作的副词(译者注)

换句话说:

  • 使用0值表示沿着每一列或行标签\索引值向下执行方法
  • 使用1值表示沿着每一行或者列标签模向执行对应的方法
     matlab 归一化(mapminmax)与python归一化(sklearn.preprocessing.MinMaxScaler)比较_第1张图片

python归一化例子:

#归一化处理

from sklearn import preprocessing
import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                    [ 2.,  0.,  0.],
                    [ 0.,  1., -1.]])

X_test = np.array([[ -3., -1.,  4.]])
#标准化均值方差
X_scaled = preprocessing.scale(X_train)
#利用transform多次使用归一化结构scaler = preprocessing.StandardScaler().fit(X_train)scaler.transform(X_train)#最大值最小值归一化到指定范围min_max_scaler = preprocessing.MinMaxScaler()min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0,1))X_train_minmax = min_max_scaler.fit_transform(X_train)X=min_max_scaler.inverse_transform(X_train_minmax)
结果:
In[22]:
min_max_scaler = preprocessing.MinMaxScaler(feature_range=(0,1))
X_train_minmax = min_max_scaler.fit_transform(X_train.T)
X_train_minmax
Out[23]: 
array([[ 0.66666667,  1.        ,  0.5       ],
       [ 0.        ,  0.        ,  1.        ],
       [ 1.        ,  0.        ,  0.        ]])






           

你可能感兴趣的:(归一化,axis=0;axis=1,归一化,matlab,python)