Составление таблицы неправильной классификации в R - PullRequest
0 голосов
/ 15 февраля 2019

Было несколько вопросов по этой проблеме, но я не смог найти ответ на свою проблему.После запуска алгоритма KNN я создал файл "observed" / "predicted"."observed" - реальные события, тогда как "predicted" - события, классифицированные алгоритмом.У меня есть несколько файлов, все с именем, следующим по шаблону: "accuracycollar4136*_4136*.0.*.csv".Вот небольшой пример:

> sample<-fread("accuracycollar41361_41366.0.8.csv")
> print(sample)
      V1  observed predicted   
  1:   1   Head-up   Grazing       
  2:   2   Head-up   Head-up      
  3:   3   Head-up   Head-up       
  4:   4   Head-up   Head-up       
  5:   5   Head-up   Head-up       
 ---                                                                                                
236: 236   Unknown   Head-up       
237: 237   Unknown   Grazing      
238: 238 Vigilance   Grazing      
239: 239   Unknown   Grazing       
240: 240   Unknown   Head-up       

Я уже рассчитал различные критерии точности классификации.Однако вот что я хотел бы сделать дальше:

1) Создание for -циклового чтения для каждого файла "accuracycollar4136*_4136*.0.*.csv".

2) Для каждого файла я бы хотелсоздать таблицу, в которой обобщены неправильные классификации.

3) В идеале я хотел бы получить таблицу с процентами / вероятностями, учитывающую долю случаев, когда событие было классифицировано как другое.В качестве примера, скажем, "Head-up" классифицировали 80% раз как "Head-up", 15% раз как "Grazing" и 5% раз как "Unknown".Вот что я имел в виду:

    class Head-up Vigilance Grazing Unknown etc.. 
  Head-up       %         %       %       %
Vigilance       %         %       %       %
  Grazing       %         %       %       %
  Unknown       %         %       %       %
    etc..       %         %       %       %

Всего у меня 9 классов: "Head-up", "Grazing", "Browsing", "Vigilance", "Unknown", "Moving", "Grooming", "Fleeing", "Resting".

Теперь, это можно сделать с помощью caret или любого другого пакета?Если нет, то есть ли относительно простой способ кодирования такого процесса?Может ли кто-нибудь хотя бы поставить меня на правильный путь?

Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Учитывая, что все ваши файлы находятся в "your folder" (и больше ничего нет)

files = as.list(list.files(path = "your folder"))

Если это не так, вам просто нужно передать список имен файлов в files для следующего шагаwork

miss_class = lapply(files, function(x){
  data = read.csv(x)
  prop.table(table(data$observed,data$predicted),margin=1)
})

Это создаст список процентных таблиц, по одной для каждого файла в your folder.margin = 1 означает, что процентная таблица будет суммировать 100% для строк.Вы можете изменить его на 2 для столбцов или удалить аргумент для 100% суммы всей таблицы

0 голосов
/ 15 февраля 2019

Функция table() будет работать.Здесь я написал простой пример того, как это работает:

predicted<-c(1,0,0,1)
observed<- c(1,1,0,1)
data<-data.frame(predicted, observed)
table(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...