RTextTools为什么create_analytics会抛出“按顺序错误(TOPIC_CODE)create_analytics”

时间:2015-04-30 15:11:40

标签: r text-classification

我在使用RTextTools对原始数据集进行分类时遇到了另一个问题,希望有人可以解决这个问题。

我预先训练了一个模型(SVM,MAXENT,RF& BAGGING)和术语矩阵,为分类器“C11”保存了相当不错的91%+ ACC& AUC,看起来很好。

模型的源数据看起来有点像......

df.SourceData ( label=numeric(0), body=character(0) )

其中label是“1”或“2”(表示真/假),而body是一个字符串。

处女数据集看起来像......

df.SourceData (code=0, body=character(0) )

即。这个集合中的每个实例都有一个代码(与标签同义)设置为0,因为它们是处女的 - 我们不知道标签。身体又是一个文本字符串。

所以用...运行分类器

## Load pre-built matrix & model
load("original_matrix.RData")     # called doc_matrix
load("original_model.RData")

## Load unknown data set for classifying
df.VirginData <- read.csv(file="VirginData.csv")

## Create NEW document matrix
new_doc_matrix  <- create_matrix(df.VirginData$body,
                                 language="english", 
                                 removeNumbers=v.matrixRemoveNumbers, 
                                 stemWords=v.matrixStemWords, 
                                 toLower=v.matrixToLower, 
                                 removeSparseTerms=v.matrixRemoveSparseTerms,
                                 , originalMatrix=doc_matrix
)

## Add a column to df.VirginData as labels placeholder
df.VirginData$code <- 0 

## Create Container
container <- create_container(new_doc_matrix, df.VirginData$code, testSize=1:3270, virgin=TRUE) # as we have no labels virgin=TRUE 

## Classify Model
results <- classify_models(container,models)

## Create analytics from classified models
analytics <- create_analytics(container, results)

这似乎一直有效,直到调用create_analytics。这会因标题中的错误而失败(上图)。如果我通过该功能进行调试,我会直接进入问题所在的第47行。

score_summary <- create_scoreSummary(container, classification_results)

        document_summary <- create_documentSummary(container, score_summary)
        document_summary <- document_summary[,c(2,3,5)]

        raw_summary <- cbind(classification_results, document_summary)

        topic_summary <- create_topicSummary(container, score_summary)
        topic_summary <- as.data.frame(topic_summary[,c(1,3,4)])
        topic_summary <- topic_summary[with(topic_summary, order(TOPIC_CODE)),]

任何人都可以阐明为什么会发生这种情况吗? - 也许这与我如何构建新容器,特别是标签位(df.VirginData $ code)有关。我甚至为未标记的文档做了这个吗?

帮助欣赏爱情。

2 个答案:

答案 0 :(得分:0)

要使create_analytics有效,您需要拥有create_container的labels参数中指定的所有预测级别,在您的情况下:

df.VirginData$code <- c(0,rep(1,c(nrow(df.VirginData)-1)))

只要你在容器参数中有virgin = TRUE,这些手动代码就不会有用。

答案 1 :(得分:0)

问题是无法正确计算标签摘要。由于它是原始数据,因此新数据只有一个标签。我想,你想要的是document_summary中的类赋值。为了解决这个问题,我采用了应用于处女数据的create_analytics函数的部分,删除了几行有关topic_summary的内容,以强制正确生成label_summary。最终得到所有类别的频率表。跟随create_analytics中的else(virgin = TRUE):

score_summary <- create_scoreSummary(container, classification_results)
document_summary <- create_documentSummary(container,score_summary)
document_summary <- document_summary[, c(2, 3, 5)]
raw_summary <- cbind(classification_results, document_summary)
container <- new("analytics_virgin", 
label_summary = data.frame(table(document_summary[,3])), 
document_summary = as.data.frame(raw_summary))