@@ -206,18 +206,21 @@ def score(self, cate_model):
206
206
score : double
207
207
An analogue of the DR-square loss for the causal setting.
208
208
"""
209
- Ydr = self .drlearner_ .model_final
209
+ g , p = self .drlearner_ ._cached_values .nuisances
210
+ Y = self .drlearner_ ._cached_values .Y
211
+ T = self .drlearner_ ._cached_values .T
212
+ Ydr = g + (Y - g ) / p * T
210
213
X = self .drlearner_ ._cached_values .W [:, :self .dx_ ]
211
214
sample_weight = self .drlearner_ ._cached_values .sample_weight
212
215
if Ydr .ndim == 1 :
213
216
Ydr = Ydr .reshape ((- 1 , 1 ))
214
-
215
- cate = cate_model .const_marginal_effect (X ).reshape ((- 1 , Ydr .shape [1 ]))
216
217
218
+ effects = cate_model .const_marginal_effect (X ).reshape ((- 1 , Ydr .shape [1 ]))
219
+
217
220
if sample_weight is not None :
218
- return 1 - np .mean (np .average ((Ydr - cate )** 2 , weights = sample_weight , axis = 0 )) / self .base_score_
221
+ return 1 - np .mean (np .average ((Ydr - effects )** 2 , weights = sample_weight , axis = 0 )) / self .base_score_
219
222
else :
220
- return 1 - np .mean ((Ydr - cate ) ** 2 ) / self .base_score_
223
+ return 1 - np .mean ((Ydr - effects ) ** 2 ) / self .base_score_
221
224
222
225
def best_model (self , cate_models , return_scores = False ):
223
226
""" Chooses the best among a list of models
0 commit comments