skLearn的MinMaxScaler()函数

2021年5月23日17:19:50 发表评论

官方文档见:https://sklearn.apachecn.org/docs/master/40.html

处理:一种标准化是将特征缩放到给定的最小值和最大值之间,通常在零和一之间,或者也可以将每个特征的最大绝对值转换至单位大小。可以分别使用 MinMaxScaler 和 MaxAbsScaler 实现。

目的:使用这种缩放的目的包括实现特征极小方差的鲁棒性以及在稀疏矩阵中保留零元素。

以下是一个将简单的数据矩阵缩放到[0, 1]的示例

>>> X_train = np.array([[ 1., -1.,  2.],
...                     [ 2.,  0.,  0.],
...                     [ 0.,  1., -1.]])
...
>>> min_max_scaler = preprocessing.MinMaxScaler()
>>> X_train_minmax = min_max_scaler.fit_transform(X_train)
>>> X_train_minmax
array([[ 0.5       ,  0.        ,  1.        ],
 [ 1.        ,  0.5       ,  0.33333333],
 [ 0.        ,  1.        ,  0.        ]])

博主注其实这里是对每列应用这个归一化,fit_transform计算方式为

x = (x-x.min)/(x.max-x.min)*(max-min)+min
# 注意:这里max和x.max不是一样的,上面代码没有传入max和min,默认为1,0

同样的转换实例可以被用与在训练过程中不可见的测试数据:实现和训练数据一致的缩放和移位操作:

>>> X_test = np.array([[ -3., -1.,  4.]])
>>> X_test_minmax = min_max_scaler.transform(X_test)
>>> X_test_minmax
array([[-1.5       ,  0.        ,  1.66666667]])

博主注:这里transform和fit_transform不一样,transform表示的意思是和fit_transform处理的数据做相同的处理,所以你可以看到第一列是直接除2,第二列是加1除2,第三列是加1除3

有帮助的话点个赞如何?让博主只看有人在看。

flyingsheep

发表评论