Ошибка классификации Уровни в факторах новых данных не соответствуют исходным данным - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть этот набор данных:

"chr","start","stop","strand","num_probes","segment_mean","is_nocnv"
chr18,52502759,52502887,*,2,-2.387,YES
chr18,52508963,68598272,*,9546,-0.3843,YES
chrX,17018571,63154896,*,18479,-0.0448,YES
chrX,63161754,63812965,*,265,-0.5375,YES
chrX,63816350,66632343,*,1071,0.1047,YES
chrX,66632547,67941468,*,558,-0.5452,YES
chrX,67947143,94288567,*,10251,-0.0625,YES
chr1,5902314,10246654,*,2415,-0.1312,NO
chr1,10249962,10255256,*,4,-1.4639,NO
chrX,66632547,67941468,*,605,-0.5472,NO
chrX,67947143,90967744,*,11378,-0.0608,NO
chrX,90968512,90971771,*,9,-0.9191,NO
chrX,90971889,92325108,*,520,-0.088,NO
etc...

И я пишу этот код:

mydata= read.csv("prova.csv")
str(mydata)
set.seed(1234)
ind <- sample(2,nrow(mydata),replace=TRUE, prob= c(0.7,0.3))
trainData <- mydata[ind==1,]
testData <- mydata[ind==2,]

myFormula <- is_nocnv ~ chr + start + stop + strand + num_probes +     segment_mean
albero <- ctree(myFormula, data=trainData)
#check the prediction
table(predict(albero),trainData$is_nocnv)

Затем у меня есть новый набор тестовых данных с одной строкой:

"chr","start","stop","strand","num_probes","segment_mean","is_nocnv"
chr18,52502759,52502887,*,2,-2.387,a

этого тестового набора данных я хочу предсказать значение "is_nocnv" ("a" не является действительно значением)

Для моей цели я вставляю этот код:

testData= read.csv("TEST_DATA.csv")
testPred <- predict(albero,newdata= testData)
table(testPred,testData$is_nocnv)

ЗДЕСЬ:У меня ошибка:

> testPred <- predict(albero,newdata= testData)
 Error in checkData(oldData, RET) : 
  Levels in factors of new data do not match original data

Не знаю почему?

1 Ответ

0 голосов
/ 25 сентября 2018

Ваш новый testData не имеет те же уровни, что и ваши trainData в переменных factor (в вашем примере chr и is_nocnv).

Проверьте с levels(testData$is_nocnv) и levels(trainData$is_nocnv).(то же самое для $chr).

levels должны быть равны.

Из этой строки:

chr18,52502759,52502887,*,2,-2.387,a

кажется, что is_nocnv = a, но в вашем поезде у вас есть только YES/NO меток.

Убедитесь, что у вас есть одинаковые метки и одинаковые levels.

testData$is_nocnv <- factor("YES", levels = c("NO","YES")) # or "NO"

или лучше:

testData$is_nocnv <- factor("YES", levels = levels(trainData$is_nocnv))

То же самое для другой переменной chr:

testData$chr <- factor("chr18", levels = levels(trainData$chr))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...