22import scipy .sparse as sp
33
44import Orange .data
5+ from Orange .data .table import DomainTransformationError
56from Orange .statistics import distribution , basic_stats
67from Orange .util import Reprable
78from .transformation import Transformation , Lookup
@@ -172,7 +173,7 @@ def copy(self):
172173 return FixedValueByType (* self .defaults .values ())
173174
174175
175- class ReplaceUnknownsModel (Reprable ):
176+ class ReplaceUnknownsModel (Transformation ):
176177 """
177178 Replace unknown values with predicted values using a `Orange.base.Model`
178179
@@ -185,15 +186,14 @@ class ReplaceUnknownsModel(Reprable):
185186 """
186187 def __init__ (self , variable , model ):
187188 assert model .domain .class_var == variable
188- self . variable = variable
189+ super (). __init__ ( variable )
189190 self .model = model
190191
191192 def __call__ (self , data ):
192193 if isinstance (data , Orange .data .Instance ):
193194 data = Orange .data .Table .from_list (data .domain , [data ])
194195 domain = data .domain
195- column = data .get_column (self .variable , copy = True )
196-
196+ column = data .transform (self ._target_domain ).get_column (self .variable , copy = True )
197197 mask = np .isnan (column )
198198 if not np .any (mask ):
199199 return column
@@ -203,10 +203,17 @@ def __call__(self, data):
203203 data = data .transform (
204204 Orange .data .Domain (domain .attributes , None , domain .metas )
205205 )
206- predicted = self .model (data [mask ])
207- column [mask ] = predicted
206+ try :
207+ column [mask ] = self .model (data [mask ])
208+ except DomainTransformationError :
209+ # owpredictions showed error when imputing target using a Model
210+ # based imputer (owpredictions removes the target before predicing)
211+ pass
208212 return column
209213
214+ def transform (self , c ):
215+ assert False , "abstract in Transformation, never used here"
216+
210217 def __eq__ (self , other ):
211218 return type (self ) is type (other ) \
212219 and self .variable == other .variable \
0 commit comments