Как исправить эту ошибку: «Ошибка в auc3_ (фактическая, прогнозируемая, ранговая): несовместима с запрошенным типом: [type = символ; target = double].» - PullRequest
0 голосов
/ 07 февраля 2019

В настоящее время я использую набор данных смешанного типа.Я использую пакет caret из программного обеспечения R для обучения с SVM, LogitBoost, RF .....

Размер моего набора данных - 124x28, где предикторами являются, как я указываю, числовые переменные илифакторы (в некоторых случаях упорядоченные факторы).

Я пытаюсь сделать обратный выбор предикторов на основе исключения из набора данных переменной с наименьшей важностью: на каждой итерации число предикторов уменьшается наодин.Я использую функцию varImp из пакета caret для оценки важности переменной.Переменная, подлежащая классификации, - это первая переменная с именем State, которая имеет коэффициент с двумя уровнями.

Проблема, с которой я сталкиваюсь, заключается в том, что varImp не работает для определенного набора предикторов, но работаетдля подмножества / избыточного набора предикторов этого конкретного набора.В частности, в случае этого определенного набора предикторов после выполнения varImp консоль печатает эту ошибку:

Ошибка в auc3_ (фактическая, прогнозируемая, ранги): несовместима с запрошеннойтип: [тип = символ;target = double].

Код следующий:

превышен набор

rm(list = ls())
library(readxl)
library(caret)
library(ROCR)
library(kernlab)
library(e1071)
library(openxlsx)

tutti <- read_excel("C:/Users/Matteo/Tesi/data set.xlsx")
tutti<-data.frame(tutti)
tutti$State = as.character(tutti$State)
tutti$State = factor(tutti$State)
tutti$T_Anxiety_40fl2 = factor(tutti$T_Anxiety_40fl2)
tutti$SmkAroundLMP2 = factor(tutti$SmkAroundLMP2)
tutti$SmkTrimester1_overall = factor(tutti$SmkTrimester1_overall)
tutti$SmkTrimester2_overall = factor(tutti$SmkTrimester2_overall)
tutti$AnyDrugs2 = factor(tutti$AnyDrugs2)
tutti$ACC_G = factor(tutti$ACC_G,ordered=TRUE)
tutti$ACC_P = factor(tutti$ACC_P,ordered=TRUE)
tutti$DEC = factor(tutti$DEC,ordered=TRUE)

tutti<-tutti[-c(2,11,4,16,8,19,6,5,20,26,23,7,10,18,27,9)]


train.index <- sample.int(nrow(tutti),ceiling(nrow(tutti)*0.7));
trainset <- tutti[train.index,] 
testset <- tutti[-train.index,]
testX<-testset[-1]

ctrl<-trainControl(method="cv",number=10,     summaryFunction=twoClassSummary,classProbs=TRUE)
grid <- expand.grid(C=(2))
svm.tune <- train(State ~ .,data=trainset,method = "svmLinear",tuneGrid =  grid,trControl=ctrl)
all <- varImp(svm.tune)

######################

определенный набор

rm(list = ls())
library(readxl)
library(caret)
library(ROCR)
library(kernlab)
library(e1071)
library(openxlsx)

tutti <- read_excel("C:/Users/Matteo/Tesi/data set.xlsx")
tutti<-data.frame(tutti)
tutti$State = as.character(tutti$State)
tutti$State = factor(tutti$State)
tutti$T_Anxiety_40fl2 = factor(tutti$T_Anxiety_40fl2)
tutti$SmkAroundLMP2 = factor(tutti$SmkAroundLMP2)
tutti$SmkTrimester1_overall = factor(tutti$SmkTrimester1_overall)
tutti$SmkTrimester2_overall = factor(tutti$SmkTrimester2_overall)
tutti$AnyDrugs2 = factor(tutti$AnyDrugs2)
tutti$ACC_G = factor(tutti$ACC_G,ordered=TRUE)
tutti$ACC_P = factor(tutti$ACC_P,ordered=TRUE)
tutti$DEC = factor(tutti$DEC,ordered=TRUE)

tutti<-tutti[-c(2,11,4,16,8,19,6,5,20,26,23,7,10,18,27,9,25)]

train.index <- sample.int(nrow(tutti),ceiling(nrow(tutti)*0.7));
trainset <- tutti[train.index,] 
testset <- tutti[-train.index,]
testX<-testset[-1]

ctrl<-trainControl(method="cv",number=10,     summaryFunction=twoClassSummary,classProbs=TRUE)
grid <- expand.grid(C=(2))
svm.tune <- train(State ~ .,data=trainset,method = "svmLinear",tuneGrid =  grid,trControl=ctrl)
all <- varImp(svm.tune)

#############################

подмножество

rm(list = ls())
library(readxl)
library(caret)
library(ROCR)
library(kernlab)
library(e1071)
library(openxlsx)

tutti <- read_excel("C:/Users/Matteo/Tesi/data set.xlsx")
tutti<-data.frame(tutti)
tutti$State = as.character(tutti$State)
tutti$State = factor(tutti$State)
tutti$T_Anxiety_40fl2 = factor(tutti$T_Anxiety_40fl2)
tutti$SmkAroundLMP2 = factor(tutti$SmkAroundLMP2)
tutti$SmkTrimester1_overall = factor(tutti$SmkTrimester1_overall)
tutti$SmkTrimester2_overall = factor(tutti$SmkTrimester2_overall)
tutti$AnyDrugs2 = factor(tutti$AnyDrugs2)
tutti$ACC_G = factor(tutti$ACC_G,ordered=TRUE)
tutti$ACC_P = factor(tutti$ACC_P,ordered=TRUE)
tutti$DEC = factor(tutti$DEC,ordered=TRUE)

tutti<-tutti[-c(2,11,4,16,8,19,6,5,20,26,23,7,10,18,27,9,25,24)]

train.index <- sample.int(nrow(tutti),ceiling(nrow(tutti)*0.7));
trainset <- tutti[train.index,] 
testset <- tutti[-train.index,]
testX<-testset[-1]

ctrl<-trainControl(method="cv",number=10,     summaryFunction=twoClassSummary,classProbs=TRUE)
grid <- expand.grid(C=(2))
svm.tune <- train(State ~ .,data=trainset,method = "svmLinear",tuneGrid =  grid,trControl=ctrl)
all <- varImp(svm.tune)

На самом деле, varImp возвращает эту ошибку, если набор предикторов содержит только одну факторную переменную.(кроме прогнозируемой переменной)

Не могли бы вы помочь мне решить эту проблему?

Я уже обновил каждый пакет R.

Посмотрев быстров исходном коде, я думаю, что это проблема исходного кода (C ++).Я прав?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...