Невозможно получить доступ к данным из объекта tbl df, которые будут использоваться на ggplot2
Я работаю над набором моделей LDA, чтобы сравнить их прогнозирующую точность в тематических заданиях. Некоторое краткое описание ниже.
Я применил задание по каждому документу для каждой темы, выделив тему с самой высокой "гаммой" (всего 15) для каждого документа, затем я использовал Чанга и Блея (2009). rtm
метод, позволяющий получить прогнозирование темы для каждого документа по слову / токену и выбрать наиболее часто встречающуюся тему в данном документе в качестве прогнозируемой темы для этого документа. Наконец, я объединил оба предсказания с topic
в качестве заголовка для первого метода consensus
как второй метод, соответствующий документу ID
и сохраняя оригинальный текст документа. Данные (названные assignments
) здесь можно оценить (330 х 6, не очень большой).
Я попытался визуализировать прогнозирующую точность методов сggplot2
с использованием метода "по документу / по теме" в качестве базовой линии, нанесенной вдоль оси y, иrtm
метод оценивается по оси X с помощью следующего кода
library(foreign)
library(topicmodels)
library(tm)
library(tidyr)
library(plyr)
library(ggplot2)
library(lda)
library(igraph)
library(scales)
load("~/assignments.Rdata")
assignments %>%
count(topic, consensus, wt_var = freq) %>%
group_by(topic) %>%
mutate(percent = n / sum(n)) %>%
ggplot(aes(consensus, topic, fill = percent)) +
geom_tile() +
scale_fill_gradient2(high = "red", label = percent_format()) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1),
panel.grid = element_blank()) +
labs(x = "RTM assignments",
y = "Documents came from",
fill = "% of assignments")
Тем не менее, я получил сообщение об ошибке на count(topic, consensus,...)
линия, показывающая Error in count(., topic, consensus, wt_var = freq) : unused argument (consensus)
пока, если я уберу consensus
из строки кода, я получил Error in count(., topic, wt_var = freq) : object 'topic' not found
, Я подозреваю, что это может быть проблема класса S4 (или, возможно, нет), поэтому я попробовал следующие методы. С помощью ""
на group_by()
переменная, но это не сработало. Вместо этого я получил это сообщение об ошибке Error in sum(n) : invalid 'type' (closure) of argument
,
Тогда я использовал tbl_df(assignments)
преобразовать assignments
совместимый объект. Опять же, это не сработало, R до сих пор не смог найти consensus
а также topic
данные из объекта Tibble.
Я очень запутался и хотел бы, чтобы кто-то взглянул на мой код и просветил меня в этом.
Благодарю.
1 ответ
Я думаю, что у вас есть проблемы с вашими данными в первой половине функции. Сначала я сгруппировал назначения по темам и консенсусу, чтобы счетчик различался между ними (а не просто возвращал сумму частот), затем применил счет (с переменными в кавычках) и, наконец, изменил:
library(dplyr)
assignments_2 <- assignments %>% group_by(topic, consensus) %>%
count(vars = "topic", wt_var = "freq") %>%
mutate(percent = n / sum(n))
Если это переводит данные в формат, который, я думаю, вам нужен, тогда вы сможете построить график!