影像组学学习笔记(19)-数据标准化、归一化极简概述

本笔记来源于B站Up主: 有Li 的影像组学系列教学视频
本节(19)主要介绍: 数据的标准化、归一化

为什么要进行标准化、归一化?
1.机器学习算法的要求
2.便于横向比较

# 标准化 (影像组学中最常用)
# z = (x - u)/s
# 异常值一般对结果影响不大
from sklearn.preprocessing import StandardScaler
data = [[10,-20],[0.3,999],[-1,12],[0.1,21]]
res = StandardScaler().fit_transform(data)
print(res)

Output:

# [[ 1.72127555 -0.63345074]
#  [-0.46125685  1.73096796]
#  [-0.75376119 -0.55920011]
#  [-0.50625751 -0.53831711]]
# 归一化
# X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
# 异常值有可能对结果有重要影响
from sklearn.preprocessing import MinMaxScaler
data = [[10,-20],[0.3,999],[-1,12],[0.1,21]]
res = MinMaxScaler().fit_transform(data)
print(res)

Output:

# [[1.         0.        ]
#  [0.11818182 1.        ]
#  [0.         0.03140334]
#  [0.1        0.04023553]]
# 与IQR第1四分位数(第25个分位数)和第3个四分位数(第75个分位数)之间的范围相关。
# 不常用
from sklearn.preprocessing import RobustScaler
data = [[10,-20],[0.3,999],[-1,12],[0.1,21]]
res = RobustScaler().fit_transform(data)
print(res)

Output:

[[ 3.37931034 -0.13957935]
 [ 0.03448276  3.75717017]
 [-0.4137931  -0.01720841]
 [-0.03448276  0.01720841]]
Notes: 
 # 影像组学研究中有两处涉及标准化或归一化,一是在图像预处理时,二是特征提取后
 # Image normalization 图像归一化
 # normalize 当设置为True时, 对图像进行归一化处理,默认为False
 # normalizeScale: 对图像进行归一化处理的比例,默认为1
 # RemoveOutliers: 从图像中剔除的离群值

继续深化学习这两个概念时,发现网上对这个的讨论很热闹,原因是由于翻译的不一致,导致概念的混乱,所以最好的办法就是回归英文中的本来定义。
"标准化"和"归一化"这两个中文词要指代四种Feature scaling(特征缩放)方法:


FeatureScaling.JPG

Rescaling (min-max normalization) ,有时简称normalization(有点坑)。
一般把第一种叫做归一化,第三种叫做标准化。

具体可参考知乎上的讨论帖:标准化和归一化什么区别? 答主@龚焱
及@gokenu回答的比较详细了。

推荐阅读更多精彩内容