支持向量机SVM,训练数据采用0或1数字标签,与A-B字符标签,训练结果不同是什么原因呢?
library(e1071)
library(pROC)
set.seed(80)
features = cbind(matrix(rnorm(200),ncol=4))
rownames(features)=paste('A_',c(1:50),sep='')
label_num = matrix(c(rep(1,25),rep(0,25)),ncol=1)
data = cbind(features, label_num)
colnames(data)=c('feature1','feature2','feature3','feature4','label')
index <- which( (1:nrow(data))%%3 == 0 )
trainset <- data[-index,]
testset <- data[index,]
train_model <- svm(label ~ .,data = trainset,kernel="radial",cost=1,gamma=1/ncol(trainset))
pre_svm <- predict(train_model,newdata = testset[,-dim(testset)[2]])
obs_p_svm_01 = data.frame(prob=pre_svm,obs=testset[,'label'])
svm_roc <- roc(testset[,'label'],as.numeric(pre_svm))
print(svm_roc)
# 得到结果 Area under the curve: 0.6094
label_str = data.frame(label = factor(rep(c("A", "B"), c(25, 25))))
data = cbind(features, label_str)
colnames(data)=c('feature1','feature2','feature3','feature4','label')
index <- which( (1:nrow(data))%%3 == 0 )
trainset <- data[-index,]
testset <- data[index,]
train_model <- svm(label ~ .,data = trainset,kernel="radial",cost=1,gamma=1/ncol(trainset))
pre_svm <- predict(train_model,newdata = testset[,-dim(testset)[2]])
obs_p_svm_str = data.frame(prob=pre_svm,obs=testset[,'label'])
svm_roc <- roc(testset[,'label'],as.numeric(pre_svm))
print(svm_roc)
# 得到结果 Area under the curve: 0.4375


雷达卡





京公网安备 11010802022788号







