)
数据预处理之数据标准化归一化文章目录数据预处理之数据标准化归一化前言机器学习ML数据预处理数据标准化1Min-Max标准化2Z-Score标准化3小数定标标准化4均值归一化法5向量归一化6指数转换总结参考前言这是一个新的专题欢迎来到全新的篇章这里我们将会学到机器学习的一些小知识。在这里我们可以学到1、Python第三方库numpy、pandas以及sklearn库的使用2、机器学习的基本概念和流程3、机器学习的一些基本算法机器学习ML机器学习Machine Learning是从数据中自动分析获得模型并利用模型对未知数据进行预测。机器学习工作流程可总结如下1.获取数据2.数据基本处理3.特征工程4.机器学习(模型训练)5.模型评估6.结果达到要求形成知识没有达到要求重新上面步骤数据预处理数据预处理Data Preprocessing是指在使用数据进行建模或分析前对其进行的处理。真实环境中产生的数据往往都不是完整、不一致的“脏数据”无法直接用来建模或进行数据分析。为了提高数据挖掘质量需要对数据进行一定的处理。常见的数据预处理包括标准化、归一化、离散化、抽样、降维、去噪等。今天我们主要介绍数据的标准化与归一化。数据标准化数据标准化Normalization是指将原始数据按一定规则进行缩放使其落在特定的数值范围内通常为 [0, 1] 或 [-1, 1]以便于不同量纲或分布差异较大的特征在后续分析中具有可比性。该过程常用于机器学习、数据分析和统计建模中以消除量纲影响提升算法收敛速度与模型性能。数据归一化Scaling是指是将不同量纲或取值范围的数据转换到统一的尺度上通常映射到 [0, 1] 或 [-1, 1] 区间。其主要目的是消除特征之间的量纲差异提升模型训练效率与收敛速度尤其在基于距离的算法如KNN、SVM和神经网络中尤为重要。为什么要进行数据标准化与归一化呢去除数据的单位限制将其转化为无量纲的纯数值便于不同量级、不同单位或不同范围的数据转化为统一的标准数值以便进行比较分析和加权。我们以著名的海伦约会对象数据为例说明一下如下为部分数据数据集中共有三个特征分别是每年飞行公里数、玩videoGame的时间占比、每周消耗雪糕公升数第四列表示的是海伦对该样本的喜爱程度。公里数的数值远远大于后两者特征的值如果直接计算的话模型的准确程度肯定大打折扣。此外数据标准化的好处有加速模型的收敛速度提高模型的精度。常见的数据标准化方法有以下6种。1Min-Max标准化Min-Max标准化是指对原始数据进行线性变换将值映射到[0,1]之间数据分布不变。Min-Max标准化的计算公式为x ′ x − m i n ( x ) m a x ( x ) − m i n ( x ) x ′ \frac{x−min(x)}{max(x)−min(x)}x′max(x)−min(x)x−min(x)公式中x为原始数据中的一个数据max(x)表示原始数据中的最大值min(x)表示原始数据中的最大值。数据读入代码如下示例# 借助Python的三方库pandas实现对数据集的读取与处理numpy实现科学计算# 代码主要通过jupyter notebook编写完成复制时注意输出格式importnumpyasnpimportpandasaspd# 读取数据dfpd.read_csv(datingTestSet.csv,headerNone,names[里程数,时间百分比,公升数,标签])labelsnp.array(df[标签])df.drop(标签,axis1,inplaceTrue)# 删除标签值df.head(10)# 展示数据前十行示例输出Min-Max标准化代码如下示例defMin_Max(data): Min_Max归一化 min_valnp.min(data)max_valnp.max(data)# 极差rangesmax_val-min_val norm_data(data-min_val)/rangesreturnnorm_data norm_dataMin_Max(df)norm_data.head(10)示例输出2Z-Score标准化Z-Score标准化是指基于原始数据的均值和标准差来进行数据的标准化公式如下x ′ x − μ σ x ′ \frac{x−μ}{σ}x′σx−μ公式中x为原始数据中的一个数据μ表示原始数据的均值σ表示原始数据的标准差。代码如下示例defZ_Score(data):meannp.mean(data)# 均值std_devnp.std(data)# 标准差norm_data(data-mean)/std_devreturnnorm_data norm_dataZ_Score(df)norm_data.head(10)示例输出3小数定标标准化小数定标标准化是通过移动数据的小数位数将数据映射到[-1,1]区间上移动的小数位数取决于数据绝对值的最大值。例如一组数据为[-10,12,-234,78,-987,789],其中绝对值最大为-987即改组数据所有数值小数点移动三位即可得到标准化后的数据。小数定标标准化公式如下x ′ x 10 j x ′ \frac{x}{10^j}x′10jx式中j表示小数点移动位数。代码如下示例defDecimalScaler(data):exponentnp.ceil(np.log10(data.abs().max()))norm_datadata/10**exponentreturnnorm_data norm_dataDecimalScaler(df)norm_data.head(10)示例输出4均值归一化法均值归一化是指通过原始数据中的均值、最大值和最小值来进行数据的标准化。其计算公式如下x ′ x − μ m a x ( x ) − m i n ( x ) x ′ \frac{x-μ}{max(x)−min(x)}x′max(x)−min(x)x−μ公式中x为原始数据中的一个数据μ表示原始数据的均值。代码如下示例defMeanScaler(data): 均值归一化 min_valnp.min(data)max_valnp.max(data)meannp.mean(data)norm_data(data-mean)/(max_val-min_val)returnnorm_data norm_dataMeanScaler(df)norm_data.head(10)示例输出5向量归一化向量归一化是指通过原始数据中的每个值除以该特征所有数据之和来进行数据的标准化。其计算公式如下x ′ x ∑ i 1 n x i x ′ \frac{x}{\sum_{i1}^n x_i}x′∑i1nxix公式中分母表示的是原始数据的该特征所有数据之和。代码如下示例defVectorScaler(data): 向量归一化 norm_datadata/np.sum(data)returnnorm_data norm_dataVectorScaler(df)norm_data.head(10)示例输出6指数转换指数转换是指通过对原始数据的值进行相应的指数函数进行数据的标准化。指数转换常见的函数方法有lg函数、Softmax函数和Sigmoid函数。此处我们只介绍lg函数的标准化处理因为当数据的值过大时Softmax函数和Sigmoid函数标准化并不完全适用(虽然不详细介绍但依旧提供手写代码实现点击此处即可前往全部代码链接)熟悉神经网络或深度学习的朋友知道上述两种函数常用作激活函数。lg函数对应的标准化计算公式如下x ′ l g ( x ) l g ( m a x ( x ) ) x ′ \frac{lg(x)}{lg(max(x))}x′lg(max(x))lg(x)代码如下示例deflg_scaler(data): lg函数标准化 max_valnp.max(data)norm_datanp.log10(data)/np.log10(max_val)returnnorm_data norm_datalg_scaler(df)norm_data.head(10)示例输出总结本篇博客我们简单介绍了机器学习及其基本流程以及数据预处理的基本概念主要讲解了数据标准化的目的与意义详细讲述了常用的6种数据标准化的方法并通过手写Python代码对海伦约会对象数据集进行了展示。当然在Python的机器学习三方库sklearn库中对数据标准化归一化做了完美的封装感兴趣的小伙伴可以在评论区里积极交流或是私信与我交流。参考完整代码连接