R语言学习(七)——数据规范化

xiaoxiao2025-11-08  6

由于取值范围大的变量会在测算距离时被赋予较大的权重,降低取值范围小的数据对结果的影响,所以要对原始变量进行规范化处理。

读取数据: 或者将Excel文件保存为csv(逗号分隔)型文件,然后用read函数读取: 但这种方法可能造成数据缺失或错误

标准化

统一期望和方差 (1)caret包中:preProcess(x, …) (2)R内置scale()函数 例:

最大、最小值规范化

x = ( x − min ⁡ x ) ( max ⁡ x − min ⁡ x ) {\rm{x}} = \frac{{(x - {{\min }_x})}}{{({{\max }_x} - {{\min }_x})}} x=(maxxminx)(xminx) (1) (2)

x i j = 2 x i j − min ⁡ ( x k j ) max ⁡ ( x i j ) − min ⁡ ( x i j ) − 1 {{\rm{x}}_{ij}} = 2\frac{{{x_{ij}} - \min ({x_{kj}})}}{{\max ({x_{ij}}) - \min ({x_{ij}})}} - 1 xij=2max(xij)min(xij)xijmin(xkj)1

Box-cox变换

判断样本是否有偏

样本如果是近似对称,偏度大致为0,右偏数据偏度为正,左偏的偏度为负。

样本偏度: s k e w n e s s = E [ x − μ δ ] 3 skewness = E{[\frac{{x - \mu }}{\delta }]^3} skewness=E[δxμ]3 或者利用e1071包中skewness函数: library(e1071) apply(Loan,2,skewness,na,rm=T)

存在明显的右偏分布特征,使用box-cox变换: x ~ = log ⁡ x , λ = 0 \tilde x = \log x,\lambda = 0 x~=logx,λ=0 x ~ = x λ − 1 λ , λ ≠ 0 \tilde x = \frac{{{x^\lambda } - 1}}{\lambda },\lambda \ne 0 x~=λxλ1,λ̸=0

对annual这一列数据规范化,观察直方图,变换后的更对称:

或者用e1071包中的BoxCoxTrans()函数估计λ: (有缺失值的话加上na.rm=T)

对Loan中每一列数据做box-cox变换: 或者

转载请注明原文地址: https://www.6miu.com/read-5039283.html

最新回复(0)