采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
StandardScaler/MinMaxScaler 是依照特征矩阵的列处理数据,最终目的是使不同的特征数据在同一量纲下。但是normalizer是依照特征矩阵的行处理数据,经网上搜索,其目的是“样本向量在点乘运算或核函数计算相似性时,拥有统一标准,将其转换为“单位向量”。但感觉对normalizer还是有点疑惑,想听一下老师怎么理解。或者是举一个比较直观一点的例子。谢谢
你查到的:拥有统一标准,将其转换为“单位向量” 和我说的“使不同的特征数据在同一量纲下”是一个意思。
“但感觉对normalizer还是有点疑惑”你的具体疑惑是什么?
从数学的角度来讲,如果你的数据服从正态分布,使用 StandardScaler 的效果更好。但整体因为真实世界大量数据都是服从或者可以认为近似服从正态分布的,所以 StandardScaler 的应用更广一些。(即使不知道数据服从的分布,在大多数情况下,假设正态分布,问题是不大的。另外,还有一些数学方法,可以让数据从其他分部转换成正态分布。)
而 MinMaxScaler 的特点是仅仅对数据进行了缩放(StandardScaler 由于除以的标准差中包含开根号等操作,所以不是线性的。)
值得一提的是,对于这种 scaler 操作,StandardScaler 和 MinMaxScaler 并非全部的 scale 数据的方式。如果数据有 outlier 的话,sklearn 还提供了 RobustScaler:https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.RobustScaler.html#sklearn.preprocessing.RobustScaler
但其实,对于 outlier,如果不是特殊情况,更好的方式是从数据集中剔除 outlier。
继续加油!:)
登录后可查看更多问答,登录/注册
Python3+sklearn,兼顾原理、算法底层实现和框架使用。
2.5k 19
3.5k 17
2.9k 15
1.6k 15
1.4k 14