我理解,人们应该标准化和规范化测试数据(或任何“未标记的”数据)与培训手段和sd。我如何用R语言实现这一点?是否有一种对训练集的“拟合”和一种对测试数据的应用?
发布于 2016-09-13 14:25:52
查看来自preProcess库的caret函数。您可以选择要缩放/集中培训数据的参数,还可以保存它所做的转换,这样您就可以使用与规范化培训集相同的规范规范测试集。可能是这样的:
library(caret)
trainData <- data.frame(v1 = rnorm(15,3,1), v2 = rnorm(15,2,2))
testData <- data.frame(v1 = rnorm(5,3,1), v2 = rnorm(5,2,2))
normParam <- preProcess(trainData)
norm.testData <- predict(normParam, testData)现在,您的norm.testData根据训练数据集参数进行缩放和居中。
另一种无需使用插入符号即可完成此操作的方法:
## set up data
trainData <- data.frame(v1 = rnorm(15,3,1), v2 = rnorm(15,2,2))
testData <- data.frame(v1 = rnorm(5,3,1), v2 = rnorm(5,2,2))
## find mean and sd column-wise of training data
trainMean <- apply(trainData,2,mean)
trainSd <- apply(trainData,2,sd)
## centered
sweep(trainData, 2L, trainMean) # using the default "-" to subtract mean column-wise
## centered AND scaled
norm2.testData <- sweep(sweep(testData, 2L, trainMean), 2, trainSd, "/")https://datascience.stackexchange.com/questions/13971
复制相似问题