0

FSelector パッケージを使用して、R でデータセットの重みを計算しようとしています。データはこの場所から取得されます。

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代わりに関数を使用すると、Ageとの両方A/G Ratioがゼロになります。から最初の 200 要素を取得しdataて重みを計算すると、そのうちの 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
4

1 に答える 1

2

ゼロは機能の重要度の有効な値です。これは、機能が分類ターゲットに関する情報をまったく持っていないことを意味します。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
于 2016-06-01T17:34:01.540 に答える