2016-05-31 8 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이 모두 0입니다. data에서 처음 200 개 요소를 가져와 가중치를 계산할 때 그 중 5 개만이 핵심 계산되며 다른 하나는 0 또는 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

0은 기능 중요성에 대한 유효한 값입니다. 즉, 기능에 분류 대상과 관련된 정보가 없음을 의미합니다. 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 
관련 문제