2016-05-31 13 views
0

Ich versuche Gewichte eines Datasets in R zu berechnen, indem Sie das FSelector-Paket verwenden. Die Daten sind from this location.Wie berechnet man alle Gewichte mit FSelector-Paket richtig?

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) 

Ich kann nicht alle Gewichte berechnen. Wenn ich die gain.ratio Funktion verwende, ist das Age Gewicht NaN. Wenn ich stattdessen die Funktion chi.squared verwende, sind sowohl Age als auch A/G Ratio Nullen. Wenn ich die ersten 200 Elemente aus data nehme und Gewichte berechne, werden nur fünf von ihnen korrekt berechnet, und andere sind Nullen oder NaN.

Ich versuchte, falsche Elemente von Daten durch data <- na.omit(data) zu löschen, aber es änderte das Ergebnis nicht.

Wie kann ich Gewichte richtig berechnen?

Unten ist ein Beispiel für einen Gewichtsdruck.

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 

Antwort

1

Zero ist ein gültiger Wert für Merkmal Bedeutung - es bedeutet, dass die Funktion hat keine Informationen in Bezug auf die Klassifizierung Ziel. Die NaNs werden durch einen Fehler in FSelector verursacht, der durch 0 geteilt wird, wenn ein Feature keine Informationen enthält. Ich habe das in der Entwicklungsversion behoben.

Der Name "A/G Ratio" ist kein gültiger R-Bezeichner und verursacht daher Probleme mit einigen der Methoden. Unter dem Code, der das behebt und die Entwicklungsversion von FSelector installiert.

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) 

Ausgang:

 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