如何导出 rStudio 分析详细信息
Posted
技术标签:
【中文标题】如何导出 rStudio 分析详细信息【英文标题】:How to export rStudio analysis detail 【发布时间】:2018-09-06 03:37:15 【问题描述】:使用 Tim DAuria (https://www.youtube.com/watch?v=j1V2McKbkLo) 提供的代码处理文档分类模型,但无法弄清楚如何在“测试”数据上实际查看分类的详细分析。
我正在使用该模型帮助按类型对合同进行分类,并希望查看分配给不同合同的具体分类。例如,该模型将 15 个合同分配为“x”类型的合同。如何查看这 15 个文件名?下面的代码非常适合分类。仅供参考。
请帮忙!在这方面真的很新,我敢肯定我错过了一些明显的东西,但在网上找不到任何东西。
分类代码如下:
#int
libs <- c("tm", "plyr","class")
lapply(libs, require, character.only = TRUE)
#set options
options(stringsAsFactors = FALSE)
#set parameters
contract <- c("build construction", "other")
pathname <- ..Desktop/ML/ContractReview"
#clean text
cleanCorpus <- function(corpus)
corpus.tmp <- tm_map(corpus, removePunctuation)
corpus.tmp <- tm_map(corpus.tmp, stripWhitespace)
corpus.tmp <- tm_map(corpus.tmp, content_transformer(tolower))
corpus.tmp <- tm_map(corpus.tmp, removeWords, stopwords("english"))
corpus.tmp <- tm_map(corpus.tmp, stemDocument)
return(corpus.tmp)
#build TDM
generateTDM <- function(contract, path)
c.dir <- sprintf ("%s/%s", path, contract)
c.cor <- VCorpus(DirSource(directory = c.dir), readerControl = list(reader=readPlain))
c.cor.cl <- cleanCorpus(c.cor)
c.tdm <- TermDocumentMatrix(c.cor.cl)
c.tdm <- removeSparseTerms(c.tdm, .07)
result <- list(name = contract, tdm = c.tdm)
tdm <- lapply(contract, generateTDM, path = pathname)
# attach name
bindcontractToTDM <- function(tdm)
c.mat <-t(data.matrix(tdm[["tdm"]]))
c.df <- as.data.frame(c.mat, stringsAsFactors = FALSE)
c.df <- cbind(c.df, rep(tdm[["name"]], nrow(c.df)))
colnames(c.df) [ncol(c.df)] <- "targetcontract"
return(c.df)
contractTDM <- lapply(tdm, bindcontractToTDM)
#stack if you have more than one dataframe
tdm.stack <- do.call(rbind.fill, contractTDM)
tdm.stack[is.na(tdm.stack)] <-0
#hold-out
train.idx <- sample(nrow(tdm.stack), ceiling(nrow(tdm.stack)* 0.7))
test.idx <- (1:nrow(tdm.stack))[- train.idx]
#model - knn
tdm.contract <-tdm.stack[, "targetcontract"]
tdm.stack.nl <- tdm.stack[, !colnames(tdm.stack) %in% "targetcontract"]
knn.pred <- knn(tdm.stack.nl[train.idx, ], tdm.stack.nl[test.idx, ], tdm.contract[train.idx])
#accuracy
conf.mat <- table("predictions"= knn.pred, Actual = tdm.contract[test.idx])
(accuracy <- sum(diag(conf.mat)) / length(test.idx)*100)
【问题讨论】:
【参考方案1】:您的问题的答案隐藏在 knn.pred 对象中,该对象存储测试用例的预测标签。
由于没有提供输入数据(我不认为它是由视频作者提供的?),我不确定您示例中合同类的详细信息。但是,您正在使用的 class 包中的 knn 函数的输出是算法为测试文档预测的带有标签的因子
(你会注意到
length(knn.pred)
等于 0.3 * nrow(tdm.stack) )。
如果您想查看/存储每个条目的预测标签和实际标签,那么您可以创建一个合适的数据框:
label_df <- cbind(label_pred = knn.pred, label_actual = tdm.contract[test.idx])
或者,您也可以选择包含 tdm.contract 的其余列(如果您想在该上下文中重新检查 tdm.stack 信息)
label_df <- cbind(label_pred = knn.pred, label_actual = tdm.contract[test.idx], tdm.stack.nl[test.idx,])
然后您可以过滤这些数据框中的任何一个,以查看您感兴趣的条目是如何被标记的。
或者,您可以选择使用不同包中的函数运行 k 最近邻算法,在这种情况下,输出可能会有所不同。
【讨论】:
非常感谢您提供此回复。真的很感激。以上是关于如何导出 rStudio 分析详细信息的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 分析 - 如何在事件详细信息视图中查看所有用户属性