Классификация SVM с использованием 10 основных функций - PullRequest
0 голосов
/ 06 марта 2020

Я новичок в R. У меня проблема с классификацией с использованием SVM. В моей train_data у меня 82 сэмпла и 25770 функций, в то время как в моей test_data у меня 36 сэмплов и 25770 функций. Последний столбец является меткой класса. Я хотел бы сделать классификацию, используя 10 лучших функций, которые я получил от Feature Selection. Из выбора функций, у меня есть это:

См. Изображение: 10 лучших функций из выбора функций

И это мой код для классификации:

training_dataset<-data.frame(train_data[,top.features$FeatureID],y=train_data[,ncol(train_data)])
training_dataset$y<-factor(training_dataset$y)
test_data$y<-factor(test_data$y)

svm_RBF<-function(class.dataset,c,gamma,test.data){
class.dataset$y=factor(class.dataset$y)
svm.RBF=svm(y~., data=class.dataset,cost=c,gamma=gamma,kernel='radial',types='C-classification')
predict.svm.RBF=predict(svm.RBF,test.data)
confusionMatrix.RBF=confusionMatrix(predict.svm.RBF,test.data$y)
print(confusionMatrix.RBF)
plot.confusionMatrix.RBF<-function(confusionMatrix.RBF){
mytitle<-paste("Accuracy", percent_format()(confusionMatrix.RBF$overall[1]), "dan Balanced Accuracy",
               percent_format()(confusionMatrix.RBF$byClass[8]))
p<-ggplot(data = as.data.frame(confusionMatrix.RBF$table),
          aes(x=Reference,y=Prediction))+
  geom_tile(aes(fill=log(Freq)),colour = "white")+
  scale_fill_gradient(low="white", high = "steelblue")+
  geom_text(aes(x=Reference, y=Prediction, label=Freq))+
  theme(legend.position = "none")+
  ggtitle(mytitle)
return(p)
}
print(plot.confusionMatrix.RBF(confusionMatrix.RBF))
print(roc.curve(test.data$y, predict.svm.RBF))
}

training_dataset10<-data.frame(training_dataset[,1:10],y=training_dataset[,ncol(training_dataset)])
svm_RBF_10<-svm_RBF(train_dataset10,32,0.001953125,test_data)

Теперь проблема в том, что модель, которую я только что сделал, имеет высокую точность, но низкую AU C. Мой вопрос: это правильный способ сделать классификацию, используя 10 лучших функций? Это правильный способ построить классификатор? Я уже сделал ошибку обобщения и настройки параметров, так что это лучший параметр, который я получаю.

...