[英]SVM classification - normalization in R
我想使用SVM
分类。 在使用SVM
模型之前,如何规范化(或缩放)数据集中每列的特征?
train <- read.csv("train.csv")
test <- read.csv("test.csv")
svm.fit=svm(as.factor(type)~ ., data=train, core="libsvm",kernel="linear",cross=10, probability=TRUE)
您可以在sapply
使用scale
函数:
scaleddf <- as.data.frame(sapply(train, function(i) if(is.numeric(i)) scale(i) else i))
如果您的数据包含NaN
值或方差为0的变量,则可以在使用上述函数之前先处理原始数据集并对其进行子集化。
# get a vector of variables to drop
dropVars <- sapply(train, function(i) {
if((is.numeric(i) & !any(is.nan(i)) & sd(i) > 0) | is.factor(i) | is.character(i)) TRUE
else FALSE
}
# subset test dropping columns that don't fit the criteria
smallerdf <- test[, dropVars]
然后将上面的原始sapply
函数应用到smalldf
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.