数据转换

匿名 (未验证) 提交于 2019-12-02 23:03:14

衍生变量

data1 <- read.csv("数据转换数据.csv",na.strings = NA) #日期格式转换 data1$registration <- as.Date(paste(substr(data1$registration,1,4),                                     substr(data1$registration,5,6),                                     substr(data1$registration,7,8),sep = "/"),                               "%Y/%m/%d") data1$firstpaydate <- as.Date(paste(substr(data1$firstpaydate,1,4),                                     substr(data1$firstpaydate,5,6),                                     substr(data1$firstpaydate,7,8),                                     sep="/"),                               "%Y/%m/%d")   #构造新变量 data1$ispay <- ifelse(is.na(data1$firstpaydate),0,1) data1$isnewpay <- ifelse(data1$registration==data1$firstpaydate,1,0) data1[is.na(data1$isnewpay),"isnewpay"] <- 0 head(data1) 


playid :用户编号
registration:注册日期
firstpaydate :第一次付费日期
days:登陆天数
lifetime:生命周期

数据分箱

data1$days_interval <- cut(data1$days,breaks = c(0,30,60,90,Inf),                            labels = c('一个月内','两个月内','三个月内','三个月以上')) data1$lifetime_intervals <- cut(data1$lifetime,breaks = c(0,7,14,21,30,Inf),                                 labels = c("一周","两周","三周","一个月","一个月以上"))  

数据标准化

最大-最小标准化
新变量=(变量-最小值)/最值差
标准正态
scale(data,center=TRUE,scale=TRUE)
预处理转换
预处理转换(定心、缩放等)可以从训练数据中估计出来,并应用于具有相同变量的任何数据集。
preProcess(x, method = c(“center”, “scale”),
thresh = 0.95, pcaComp = NULL, na.remove = TRUE, k = 5,
knnSummary = mean, outcome = NULL, fudge = 0.2, numUnique = 3,
verbose = FALSE, freqCut = 95/5, uniqueCut = 10, cutoff = 0.9,
rangeBounds = c(0, 1), …)
x:矩阵或数据框。非数值将忽略
method:指定处理类型的字符向量。可能的值有“BoxCox”、“YeoJohnson”、“expoTrans”、“center”、“scale”、“range”、“knnImpute”、“bagImpute”、“medianImpute”、“pca”、“ica”、“spatialSign”、“corr”、“zv”、“nzv”和“conditionalX”
在所有情况下,转换和操作都是使用x中的数据进行估计的,这些操作使用这些值应用于新数据;使用预测函数时不会重新计算任何内容。

1.Box-Cox (method = “BoxCox”)、Yeo-Johnson (method = “YeoJohnson”)和指数变换(method = “expoTrans”)在这里被“重新使用”:它们被用于转换预测变量。Box-Cox转换用于转换响应变量,而Box-Tidwell转换用于估计预测器数据的转换。然而,Box-Cox方法更简单,计算效率更高,在估计功率转换方面也同样有效。Yeo-Johnson转换与Box-Cox模型类似,但是可以容纳零和/或负值的预测器(而Box-Cox转换的预测器值必须严格为正值)。Manly(1976)的指数变换也可以用于正数据或负数据。
2. method =“center”从预测值中减去预测值的均值(同样来自x中的数据),method =“scale”除以标准差
3. “范围”转换将数据缩放到范围内。如果新样本的值大于或小于训练集中的值,则值将超出此范围
4. method = "zv"标识单个值(即方差为零)的数值预测列,并将其从进一步的计算中排除。类似地,method = "nzv"通过应用near zerovar排除"near zero-variance"的预测器来做同样的事情。可以使用freqCut和uniqueCut选项修改过滤器
5. method = "corr"试图过滤掉高度相关的预测因子
6. 对于分类,method = "conditionalX"检查每个预测器在结果条件下的分布。如果任何类中只有一个惟一值,则预测器将被排除在进一步的计算之外(参见checkConditionalX作为示例)。如果结果不是一个因素,则不执行此计算。在通过训练集重新采样时,此操作可能会耗费大量时间。
k最近邻的归算是通过在训练集中找到k个最接近的样本(欧式距离)来实现的。通过bagging对每个预测器(作为所有其他预测器的函数)建立一个bagged tree模型。该方法简单、准确、可接受缺失值,但计算成本较高。通过中位数进行归算,取训练集中每个预测器的中值,用它们来填充缺失值。这种方法简单、快速,并且接受缺失的值,但是单独处理每个预测器,而且可能不准确。

thresh:由主成分分析保留的累积方差百分比的截止值

文章来源: 数据转换
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!