【问题标题】:KNN for text classification, but train and class have different lengths in R用于文本分类的 KNN,但 R 中 train 和 class 的长度不同
【发布时间】:2020-04-29 07:38:33
【问题描述】:

您好,我正在尝试对文本进行分类,这是代码

df <- read.csv("D:/AS/tokpedprepro.csv")

#sampling
set.seed(123)
df <- df[sample(nrow(df)),]
df <- df[sample(nrow(df)),]

#Convert to corpus
dfCorpus <- Corpus(VectorSource(df$text))
inspect(dfCorpus[1:20])

#convert DTM
dtm <- DocumentTermMatrix(dfCorpus)
inspect(dtm[1:4, 3:7])

#Data Partition
df.train <- df[1:20,]
df.test <- df[21:37,]

dtm.train <- dtm[1:20,]
dtm.test <- dtm[21:37,]

df.Corpus.train <- dfCorpus[1:20]
df.corpus.test <- dfCorpus[21:37]

train.class <- df$data.class

#TFIDF
dtm.train.knn <- DocumentTermMatrix(df.Corpus.train, control = list(weighting = 
function(x) weightTfIdf(x, normalize = FALSE)))
dim(dtm.train.knn)

维度是

[1]  20 194

dtm.test.knn <- DocumentTermMatrix(df.corpus.test, control = list(weighting = 
function(x) weightTfIdf(x, normalize = FALSE)))
dim(dtm.test.knn)

维度是

[1]  17 211

然后

knn.pred <- knn(dtm.train.knn, dtm.test.knn, train.class, k=1 )

但是错误 'train' 和 'class' 有不同的长度

我该怎么办? 谢谢

【问题讨论】:

标签: r text-mining knn tf-idf


【解决方案1】:

您的train.classtrain.class &lt;- df$data.class,但您的dtm.train.knn 是基于dfCorpus[1:20]。您需要更改train.class 的长度,可能为train.class &lt;- df$data.class[1:20]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2022-12-17
    • 2018-06-16
    • 2015-07-13
    • 1970-01-01
    相关资源
    最近更新 更多