2016-05-31 3 views
0

FSelectorパッケージを使用して、Rのデータセットの重みを計算しようとしています。データはfrom this locationとなります。FSelectorパッケージですべての重量を正しく計算する方法は?

data = read.csv("filepath/Indian Liver Patient Dataset (ILPD).csv") 
names(data)<-c("Age","Gender", "TB", "DB", "Alkphos", "Sgpt", "Sgot", "TP", "ALB", "A/G Ratio", "Selector") 
library(FSelector) 
weights <- gain.ratio(Selector ~., data) 
print(weights) 

すべての重みを計算することはできません。 gain.ratio関数を使用すると、Ageの重みはNaNになります。代わりにchi.squared関数を使用すると、AgeA/G Ratioの両方がゼロになります。 dataから最初の200個の要素を取り出して重みを計算すると、そのうちの5つだけがコアに計算され、その他はゼロまたはNaNです。

私はdata <- na.omit(data)によってデータから間違った要素を削除しようとしましたが、結果は変更されませんでした。

重量を正しく計算するにはどうすればよいですか?

以下は、体重印刷の例です。

Age    0.0000000 
Gender   0.1304229 
TB    0.3281865 
DB    0.3238010 
Alkphos   0.2965842 
Sgpt   0.2734633 
Sgot   0.3120432 
TP    0.2504747 
ALB    0.3051724 
A/G Ratio  0.0000000 

答えて

1

ゼロは、機能の重要度に対して有効な値です。つまり、機能には分類対象に関する情報がありません。 NaNは、フィーチャが情報を持たない場合に0で割るFSelectorのバグによって引き起こされます。私は開発版でこれを修正しました。

「A/G Ratio」という名前は有効なR識別子ではないため、一部の方法で問題が発生します。これを修正するコードの下に、FSelectorの開発版がインストールされます。

data = read.csv("Indian\ Liver\ Patient\ Dataset\ (ILPD).csv") 
names(data)<-c("Age","Gender", "TB", "DB", "Alkphos", "Sgpt", "Sgot", "TP", "ALB", "AGRatio", "Selector") 

library(devtools) 
install_github("larskotthoff/fselector") 

library(FSelector) 
weights = gain.ratio(Selector~., data) 
print(weights) 

weights = chi.squared(Selector~., data) 
print(weights) 

出力:

 attr_importance 
Age   0.00000000 
Gender  0.01539699 
TB   0.09711392 
DB   0.11547683 
Alkphos  0.06593879 
Sgpt   0.06566624 
Sgot   0.07667241 
TP   0.08836895 
ALB   0.07766682 
AGRatio  0.15403574 

     attr_importance 
Age   0.0000000 
Gender  0.1304229 
TB   0.3281865 
DB   0.3238010 
Alkphos  0.2965842 
Sgpt   0.2734633 
Sgot   0.3120432 
TP   0.2504747 
ALB   0.3051724 
AGRatio  0.0000000 
関連する問題