私はRの初心者で、data frame
バイナリ値を持つ を持っています。私のデータ フレームでは、最初の 6000 列は特徴を選択する属性であり、最後の 10 列 (これもバイナリ) はデータをトレーニングするために必要なクラスです。Fselector
パッケージを使用して各属性のカイ 2 乗値を計算し、それらをランク付けして特徴を選択できることを学びました。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
command の後にオブジェクトを見つけられませんweights<- chi.squared(Class~., HouseVotes84)
。Fselector パッケージには、数式が必要であると記載されていますが、数式の種類がわかりません。そこにカイ二乗検定の数式を書くべきでしょうか?それでは、X^2 統計を計算するために For ループを使用するのと比較して、パッケージのポイントは何ですか?
quanteda
機能選択のためにカイ二乗の式全体を実際に入力することを避けたいので、他のパッケージを使用するつもりはありません。私のデータの構造に基づいてそのコード行を修正する方法について何か提案はありますか?
UPDATE : これは、用語の 6000 列のうち 10 列を含む、データの最初の 3 行です。最後の 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")