繁体   English   中英

SVM分类-R中的归一化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM