КНН для классификации текста, но поезд и класс имеют разную длину в R - PullRequest
0 голосов
/ 12 января 2020

Здравствуйте, я пытаюсь классифицировать текст, вот код

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' имеют разную длину

Что мне делать? Спасибо

1 Ответ

0 голосов
/ 12 января 2020

Ваш train.class равен train.class <- df$data.class, но ваш dtm.train.knn основан на dfCorpus[1:20]. Вам нужно изменить длину вашего train.class, вероятно, как train.class <- df$data.class[1:20].

...