88from Orange .data import Domain , Variable , DiscreteVariable , ContinuousVariable
99from Orange .data .filter import HasClass
1010from Orange .misc .wrapper_meta import WrapperMeta
11+ from Orange .preprocess .fss import RemoveNaNColumns
1112from Orange .preprocess .preprocess import Discretize , SklImpute
1213from Orange .preprocess .util import _RefuseDataInConstructor
1314from Orange .statistics import contingency , distribution
@@ -66,6 +67,7 @@ def __call__(self, data, feature=None):
6667 f = data .domain [feature ]
6768 data = data .transform (Domain ([f ], data .domain .class_vars ))
6869
70+ orig_domain = data .domain
6971 for pp in self .preprocessors :
7072 data = pp (data )
7173
@@ -76,7 +78,14 @@ def __call__(self, data, feature=None):
7678 .format (self .friendly_name ,
7779 self ._friendly_vartype_name (type (var ))))
7880
79- return self .score_data (data , feature )
81+ if feature is not None :
82+ return self .score_data (data , feature )
83+
84+ scores = np .full (len (orig_domain .attributes ), np .nan )
85+ names = [a .name for a in data .domain .attributes ]
86+ mask = np .array ([a .name in names for a in orig_domain .attributes ])
87+ scores [mask ] = self .score_data (data , feature )
88+ return scores
8089
8190 def score_data (self , data , feature ):
8291 raise NotImplementedError
@@ -340,6 +349,7 @@ class ReliefF(Scorer):
340349 class_type = DiscreteVariable
341350 supports_sparse_data = False
342351 friendly_name = "ReliefF"
352+ preprocessors = Scorer .preprocessors + [RemoveNaNColumns ()]
343353
344354 def __init__ (self , n_iterations = 50 , k_nearest = 10 , random_state = None ):
345355 self .n_iterations = n_iterations
@@ -374,6 +384,7 @@ class RReliefF(Scorer):
374384 class_type = ContinuousVariable
375385 supports_sparse_data = False
376386 friendly_name = "RReliefF"
387+ preprocessors = Scorer .preprocessors + [RemoveNaNColumns ()]
377388
378389 def __init__ (self , n_iterations = 50 , k_nearest = 50 , random_state = None ):
379390 self .n_iterations = n_iterations
0 commit comments