вычислить точность, вызвать, значения F1 для результата пакета rpart - PullRequest
0 голосов
/ 05 июля 2019

Приведенный ниже фрейм данных является примером моего общего набора данных:

A    B   C    D    E    target
0.2 0.5 0.6 -0.5   -0.7   1
0.9 0.7 0.4 -0.3   -0.8   0  
0.1 0.3 0.5 -0.9   -0.2   0
0.2 0.5 0.6 -0.5   -0.6   1

Я хочу применить к нему дерево классификации, поэтому я использовал следующий код:

data$target<-factor(data$target)

# Create Training Data
train.ind <- sample(nrow(data), 0.7*nrow(data))
trainData<-data[train.ind,]
testData<-data[-train.ind,]    

library("rpart")
tree <- rpart(target ~.,data=trainData)

ypred=predict(tree,testData)

    library(caret)
    #Print a confusion matrix
    result <- confusionMatrix(ypred,testData$target)

Ошибка: data и reference должны быть коэффициентами с одинаковыми уровнями.

   precision <- result$byClass['Pos Pred Value']    
    recall <- result$byClass['Sensitivity']
    f_measure <- 2 * ((precision * recall) / (precision + recall))
    #OR
    f_measure <-result$byClass['F1']

Но это не сработало.Мне нужны значения точности, отзыва и F1, но я не знаю, как вычислить, используя результат пакета "rpart".

1 Ответ

1 голос
/ 05 июля 2019

Функция confusionMatrix принимает два аргумента (data и reference), которые должны быть факторами с одинаковыми уровнями.Это не относится к вашему коду, потому что функция predict, если ей дан объект rpart, по умолчанию возвращает матрицу с вероятностями членства в классах для каждого образца.Вам необходимо указать для этой функции, что вы хотите вектор предсказанных классов, и преобразовать этот вектор в фактор с теми же уровнями, что и target (0 и 1).

Это должно сделатьуловка:

ypred <- factor(predict(tree, testData[, -6], type="vector"),
                levels = levels(testData$target))
library(caret)
confusionMatrix(ypred, testData$target)

Использование factor(..., levels = levels(testData$target)) гарантирует, что уровни находятся в одинаковом порядке в обоих факторах, чтобы избежать появления следующего предупреждения:

Предупреждение: В confusionMatrix.default (ypred, testData $ target): уровни не совпадают для ссылок и данных.Рефакторинг данных для соответствия.

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