Корректировка большинства / сопоставление с основополагающей истиной - PullRequest
0 голосов
/ 30 апреля 2020

Итак, я работаю над основополагающей истиной для моего алгоритма машинного обучения с R. 5 человек классифицировали фотографии для меня. См. Df на рисунке ниже.

Text](https://stackover[![Datafram] 1 flow.com / Dataframe.PNG)

Результаты, по-видимому, в значительной степени зависят от классификатора. Что я хочу сделать сейчас, так это найти общую правду. Поэтому я хочу сделать корректировку большинством для большинства случаев. Если по крайней мере 3 классификатора классифицируют изображение с одинаковым условием, я хочу, чтобы два других, которые отличаются, переключились на это условие большинства. В том редком случае, когда нет условия большинства, я хочу перепроверить картину и принять решение самостоятельно.

Ниже приведен воспроизводимый пример

data <- data.frame(Pic = character(10), class1 = numeric(10), class2 = numeric(10), class3 = numeric(10), class4 = numeric(10), 
                   class5 = numeric(10), check = numeric(10))

data$Pic <- 1:10
set.seed(1234)
data$class1 <- sample(1:5,5)
data$class2 <- sample(1:5,5)
data$class3 <- sample(1:5,5)
data$class4 <- sample(1:5,5)
data$class5 <- sample(1:5,5)

data[5,2:6] <- 5
data[1,5] <-4
data[9,5] <- 2

data$check <- ifelse(data$class1 == data$class2 &  data$class1 == data$class3 &
                     data$class1 == data$class4& data$class1 == data$class5, "Good", "delta")

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

1 Ответ

0 голосов
/ 30 апреля 2020

нашел ответ сам, это делает трюк:

library(data.table)
setDT(df)[, c("Most_Frequent", "Count") := {tbl <- table(unlist(.SD))
.(names(tbl)[which.max(tbl)], max(tbl))}, by = Variable]

...