Почему результат алгоритмов каждой модели (максимальная энтропия, лес, svm и т. Д. c) дает одинаковый результат в таблицах? - PullRequest
0 голосов
/ 08 апреля 2020

В приведенном ниже коде R я представляю данные о поездах для создания моделей на основе ряда алгоритмов (например, Max Entropy, SVM и др. c).

У меня проблема с таблицей результатов алгоритма, поскольку каждый из них показывает одинаковый результат.

Не могли бы вы помочь мне конкретно понять причины, по которым таблица результатов каждого алгоритма выдает точно такой же результат?

Набор данных, примененный в коде R

#Load Libraries
library(RTextTools) #RTextTools available for 3.4.1
library(e1071)
library(gmodels)

setwd(directory/path)
text= read.csv("matrixdata.csv", header = FALSE)

# build dtm
matrix= create_matrix(text[,1])
mat = as.matrix(matrix)

# build the data to specify response variable, training set, testing set.
container = create_container(mat, as.numeric(as.factor(text[,2])),
                             trainSize=1:1200, testSize=1201:1500,virgin=FALSE)

models = train_models(container, algorithms=c("MAXENT" , "SVM", "RF", "BAGGING", "TREE"), set_heldout = 300) 

results = classify_models(container, models)

#Why is the below producing the same output for each algorithm?
table(as.numeric(as.factor(text[1201:1500, 2])), results[,"FORESTS_LABEL"])
table(as.numeric(as.factor(text[1201:1500, 2])), results[,"MAXENTROPY_LABEL"])
table(as.numeric(as.factor(text[1201:1500, 2])), results[,"SVM_LABEL"])
table(as.numeric(as.factor(text[1201:1500, 2])), results[,"BAGGING_LABEL"]) 
table(as.numeric(as.factor(text[1201:1500, 2])), results[,"TREE_LABEL"])

Это один и тот же результат, полученный для каждой таблицы:

     1   2   3
 1 125  18   0
 2  31  70   2
 3  25  17  12

1 = Negative,
2 = Neutral,
3 = Positive,

Почему таблицы выше для каждого алгоритма дают одинаковый результат?

1 Ответ

1 голос
/ 17 апреля 2020

В приведенном выше коде я определяю, насколько хорошо работает лексикон по сравнению с моей ручной классификацией.

Вы можете сделать это, просто сравнив два столбца вашего "набора данных" (ML делает не кажется актуальным). Используя путаницу, например:

library(caret)
text= read.csv("matrixdata.csv", header = FALSE)    
confusionMatrix(text$V1, text$V2)

Вы можете использовать ML для автоматизации вашей ручной классификации. В этом смысле ваш набор данных должен иметь дополнительный столбец (назовем его «предложение»), содержащий тексты (предложения), которые должны быть классифицированы.

mat= create_matrix(text$sentence)
container = create_container(mat, as.numeric(as.factor(text[,1])),
                             trainSize=1:1200, testSize=1201:1500,virgin=FALSE)

Вы можете альтернативно передать словарную классификацию словаря в контейнер в качестве метки, если вы хотите, чтобы модели ML извлекли уроки из этого.

Здесь является примером, который вы можете проверить для классификации законопроектов конгресса .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...