我最近使用Bag-of-Words分類器以96%的條件製作文檔矩陣。然後,我用一個決策樹按模型訓練輸入的單詞,以預測句子是否重要。該模型在測試數據集上的表現非常好,但是當我使用了一個超出樣本的數據集時,它無法預測。相反,它會給出錯誤。在樣本外數據集中使用詞袋分類器
下面是我中的R
library('caTools')
library('tm')
library('rpart')
library(rpart.plot)
library(ROCR)
data= read.csv('comments.csv', stringsAsFactors = FALSE)
corpus = Corpus(VectorSource(data$Word))
# Pre-process data
corpus <- tm_map(corpus, tolower)
corpus <- tm_map(corpus, stemDocument)
# Create matrix
dtm = DocumentTermMatrix(corpus)
# Remove sparse terms
#dtm = removeSparseTerms(dtm, 0.96)
# Create data frame
labeledTerms = as.data.frame(as.matrix(dtm))
# Add in the outcome variable
labeledTerms$IsImp = data$IsImp
#Splitting into train and test data using caTools
set.seed(144)
spl = sample.split(labeledTerms$IsImp , 0.60)
train = subset(labeledTerms, spl == TRUE)
test = subset(labeledTerms, spl == FALSE)
#Build CART Model
CART = rpart(IsImp ~., data=train, method="class")
這工作對測試數據集,其83%左右的精度完全好做模型。但是,當我使用此購物車模型預測出樣本數據集外,這會給我帶來錯誤。
head(train)
terms A B C D E F..............(n terms)
Freqs 0 1 2 1 3 0..............(n terms)
head(test)
terms A B C D E F..............(n terms)
Freqs 0 0 1 1 1 0..............(n terms)
data_random = read.csv('comments_random.csv', stringsAsFactors = FALSE)
head(data_random)
terms A B D E F H..............(n terms)
Freqs 0 0 1 1 1 0..............(n terms)
我得到的錯誤是在data_random 「無法找到C」。我不知道該怎麼做才能做到這一點。拉帕斯在這裏平滑的方式?
因爲我們沒有「comments.csv」,所以這個錯誤不是[可重現](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。查看內聯鏈接,獲取有關創建完整,最少重複性示例的提示,這樣可以更輕鬆地爲您提供幫助。 – MrFlick 2014-10-08 19:49:37