我知道应该使用训练均值和标准差对测试数据(或任何“未标记”数据)进行标准化和规范化。如何用 R 语言实现它?是否有一种对训练集的“拟合”和一种对测试数据的应用?
R中的标准化/标准化测试数据
数据挖掘
r
正常化
2022-02-21 18:15:05
1个回答
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, "/")
其它你可能感兴趣的问题