本笔记来源于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(特征缩放)方法:

 

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

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

 
 

作者:北欧森林
链接:https://www.jianshu.com/p/afd1a89148fc
来源:简书,已获授权转载

    1 年 后

    能出一个图像归一化的教程吗?十分感谢

      16 天 后

      李任远 请教李老师,在3d slicer中可以修改pyradiomics参数实现图像归一化吗?

        yangjie 已找到解决方法,在3D slicer radiomicsCLI模块中插入yaml文件即可

        • 111 回复了此帖
          3 个月 后
          说点什么吧...