Выбор функции хи-квадрат с помощью Fselector в R

Я новичок в R, и у меня есть data frame это имеет двоичные значения в нем. В моем фрейме данных первые 6000 столбцов - это атрибуты, из которых я собираюсь выбирать объекты, а последние 10 столбцов (опять-таки двоичные) - это классы, с которыми мне нужно тренировать свои данные. Я узнал, что я могу использовать Fselector пакет для расчета значения хи-квадрат для каждого атрибута, затем упорядочить их по рангу и выбрать мои функции. Я нашел этот пример из Fselector пакет:

# Use HouseVotes84 data from  mlbench package
library(mlbench)# For data
library(FSelector)#For method
data(HouseVotes84)


#Calculate the chi square statistics 
weights<- chi.squared(Class~., HouseVotes84)


# Print the results 
print(weights)


# Select top five variables
subset<- cutoff.k(weights, 5)


# Print the final formula that can be used in classification
f<- as.simple.formula(subset, "Class")
print(f)

Но когда я пишу тот же код для моих данных, R не находит объект Class после команды weights<- chi.squared(Class~., HouseVotes84), Пакет Fselector отмечает, что формула должна быть там, но я не знаю, что это за формула. Должен ли я написать математическую формулу теста на квадрат? Тогда в чем смысл пакета по сравнению с использованием цикла For для вычисления статистики X^2?

Я не собираюсь использовать другие пакеты, такие как quanteda потому что я на самом деле хочу избежать ввода всей формулы хи-квадрат для выбора объектов. Есть ли у вас какие-либо предложения о том, как исправить эту строку кода на основе структуры моих данных?

ОБНОВЛЕНИЕ: это первые три строки моих данных с 10 из 6000 столбцов терминов. Последние 10 столбцов - мои занятия.

   structure(list(rigid = c(0, 0, 0), sobaaox = c(0, 0, 0), intermittententsharpleft = c(0, 
0, 0), pnuemondayia = c(0, 0, 0), medport = c(0, 0, 0), assharp = c(0, 
0, 0), ambult = c(0, 0, 0), cmpliant = c(0, 0, 0), anlk = c(0, 
0, 0), scoliosi = c(0, 0, 0), espec = c(0, 0, 0), `290` = c(0L, 
0L, 0L), `320` = c(0L, 0L, 0L), `390` = c(1L, 0L, 0L), `460` = c(0L, 
0L, 0L), `520` = c(0L, 1L, 0L), `580` = c(0L, 0L, 0L), `710` = c(0L, 
0L, 0L), `780` = c(0L, 0L, 1L), `800` = c(0L, 0L, 0L), `100001` = c(0L, 
0L, 0L)), .Names = c("rigid", "sobaaox", "intermittententsharpleft", 
"pnuemondayia", "medport", "assharp", "ambult", "cmpliant", "anlk", 
"scoliosi", "espec", "290", "320", "390", "460", "520", "580", 
"710", "780", "800", "100001"), row.names = c(NA, 3L), class = "data.frame")

0 ответов

Другие вопросы по тегам