【发布时间】:2018-02-14 10:55:36
【问题描述】:
我有以下名为 diamonds 的数据框。
X carat cut color clarity depth table price x y z
26450 1.53 Ideal G VVS1 61.8 55.0 15992 7.43 7.45 4.59
27696 0.40 Ideal G SI2 62.1 57.0 648 4.72 4.75 2.94
3596 0.90 Good J VS2 62.3 64.0 3423 6.09 6.17 3.82
45732 0.70 Good I SI2 63.4 59.0 1699 5.66 5.57 3.56
25894 1.50 Very Good F VS1 61.6 58.0 15022 7.35 7.43 4.55
4169 1.04 Ideal I SI2 61.9 56.0 3553 6.51 6.45 4.02
7721 0.26 Ideal F VS1 60.9 57.0 580 4.13 4.11 2.51
202 0.70 Premium E SI1 61.3 58.0 2777 5.71 5.68 3.49
8730 0.27 Good E VVS1 63.9 57.0 586 4.07 4.10 2.61
20109 1.50 Ideal G SI2 61.4 56.0 8580 7.34 7.38 4.52
我根据我的 diamonds 数据框创建了 2 个新数据框,一个将包含 70% 的数据,称为 train,另一个将包含另外 30% 的数据,test 数据框。
通过以下两个函数,我从“train”数据框中获得了列均值和方差的列表。
meanTrain <- lapply(train[,nums],mean)
varianceTrain<- lapply(train[,nums],sd)
现在我要做的是规范化我的test 数据框。
为此,我必须从 test 数据框中减去所有数字列(以选择数字列 --> test[,nums])
我的train 数据帧的平均值,然后除以train 数据帧方差。
我一直在想,这是我的代码。
escaladeTest <- apply(test[, nums], 2, function (col) (col - meanTrain[col])/varianceTrain[col])
它不能正常工作,但它是一个关于如何将每个test 数据框列的想法,它必须被减去并除以均值和方差“训练”数据框。
【问题讨论】: