机器学习-------数据标准化

什么是归一化,它与标准化的区别是什么?

一 作用

复制代码
在做训练时,需要先将特征值与标签标准化,可以防止梯度防炸和过拟合;
将标签标准化后,网络预测出的数据是符合标准正态分布的—StandarScaler(),与真实值有很大差别。因为StandarScaler()对数据的处理是(真实值-平均值)/标准差。
同时在做预测时需要将输出数据逆标准化
提升模型精度:标准化 / 归一化使不同维度的特征在数值上更具比较性,提高分类器的准确性。
提升收敛速度:对于线性模型,数据归一化使梯度下降过程更加平缓,更易正确的收敛到最优解。

二 fit+transform与fit_transform

复制代码
fit+transform
fit():简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。
transform:在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。可以进行逆标准化处理
fit_transform
若只用一批数据相当与fit+transform;
对于多批数据,若分别使用fit_transform,这几批数据对应的平均值、标准差、最大值、最小值不相同;对于多批数据,若先使用fit再分别使用transform,这几批数据对应的平均值、标准差、最大值、最小值都与fit(X)中的处理方式相同;
不可以进行逆标准化处理

三.

1标准差标准化 StandardScaler

复制代码
from sklearn.preprocessing import StandardScaler
使用均值与方差,对服从正态分布的数据处理,得到符合标准正态分布的数据
处理方法:标准化数据减去均值,然后除以标准差,经过处理后数据符合标准正态分布,即均值为0,标准差为1;
转化函数:x = (x-mean) / std;
适用性:适用于本身服从正态分布的数据;
Outlier(异常值)的影响:基本可用于有outlier的情况,但在计算方差和均值时outliers仍然会影响计算。
复制代码
from sklearn.preprocessing import StandardScaler
data['normAmount'] = StandardScaler().fit_transform(data['Amount'].values.reshape(-1, 1))
data = data.drop(['Time','Amount'],axis=1)
data.head()

2.极差标准化 / 归一化 MinMaxScaler

复制代码
from sklearn.preprocessing import MinMaxScaler
区间缩放,基于最大最小值,将数据转换到0,1区间上的
处理方法:将特征缩放到给定的最小值和最大值之间,也可以将每个特征的最大绝对值转换至单位大小。这种方法是对原始数据的线性变换,将数据归一到[0,1]中间;
转换函数:x = (x-min) / (max-min);
适用性:适用于分布范围较稳定的数据,当新数据的加入导致max/min变化,则需重新定义;
Outlier(异常值) 的影响:因为outlier会影响最大值或最小值,因此对outlier非常敏感。
复制代码
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
# 加载数据
iris_data = pd.read_csv('./dataset/iris.csv')
# 获取特征
X = iris_data[['sepal_length', 'sepal_width', 'petal_length', 'petal_width']].values
# 获取标签
y = iris_data['label'].values
# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/3, random_state=10)
# 在训练集上进行归一化
X_train_scaled = scaler.fit_transform(X_train)
# 在测试集上使用相同的scaler进行归一化
X_test_scaled = scaler.transform(X_test)

3. 稳健标准化 RobustScaler

复制代码
from sklearn.preprocessing import RobustScaler
使用具有鲁棒性的统计量缩放带有异常值(离群值)的数据
处理方法:该缩放器删除中位数,并根据百分位数范围(默认值为IQR:四分位间距)缩放数据;
IQR:是第1个四分位数(25%)和第3个四分位数(75%)之间的范围;
适用性:适用于包含许多异常值的数据;
Outlier 的影响:RobustScaler 利用IQR进行缩放来弱化 outlier 的影响。
相关推荐
一枕眠秋雨>o<5 分钟前
从抽象到具象:TBE如何重构AI算子的编译哲学
人工智能
xiaobaibai1536 分钟前
决策引擎深度拆解:AdAgent 用 CoT+RL 实现营销自主化决策
大数据·人工智能
island13148 分钟前
CANN ops-nn 算子库深度解析:神经网络核心计算的硬件映射、Tiling 策略与算子融合机制
人工智能·深度学习·神经网络
冬奇Lab8 分钟前
一天一个开源项目(第14篇):CC Workflow Studio - 可视化AI工作流编辑器,让AI自动化更简单
人工智能·开源·编辑器
是小蟹呀^10 分钟前
从稀疏到自适应:人脸识别中稀疏表示的核心演进
人工智能·分类
张张努力变强10 分钟前
C++ STL string 类:常用接口 + auto + 范围 for全攻略,字符串操作效率拉满
开发语言·数据结构·c++·算法·stl
云边有个稻草人11 分钟前
CANN ops-nn:筑牢AIGC的神经网络算子算力底座
人工智能·神经网络·aigc·cann
island131411 分钟前
CANN Catlass 算子模板库深度解析:高性能 GEMM 架构、模板元编程与融合算子的显存管理策略
人工智能·神经网络·架构·智能路由器
万岳科技系统开发11 分钟前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
结局无敌12 分钟前
从算子到生态:cann/ops-nn 如何编织一张高性能AI的协作之网
人工智能