22
33
44# general cv predictiveness
5- def cv_predictiveness (x , y , S , measure , pred_func , V = 5 , stratified = True , na_rm = False , folds = None ):
5+ def cv_predictiveness (x , y , S , measure , pred_func , V = 5 , stratified = True , na_rm = False , folds = None , ensemble = False ):
66 """
77 Compute a cross-validated measure of predictiveness based on the data and the chosen measure
88
@@ -15,6 +15,7 @@ def cv_predictiveness(x, y, S, measure, pred_func, V = 5, stratified = True, na_
1515 @param stratified: should the folds be stratified?
1616 @param na_rm: should we do a complete-case analysis (True) or not (False)
1717 @param folds (dummy)
18+ @param ensemble is this an ensemble (True) or not (False)
1819
1920 @return cross-validated measure of predictiveness, along with preds and ics
2021 """
@@ -42,7 +43,13 @@ def cv_predictiveness(x, y, S, measure, pred_func, V = 5, stratified = True, na_
4243 if V == 1 :
4344 x_train , y_train = newx , newy
4445 pred_func .fit (x_train [:, S ], np .ravel (y_train ))
45- preds_v = pred_func .predict (x_train [:, S ])
46+ if ensemble :
47+ preds_v = np .mean (pred_func .transform (x_train [:, S ]))
48+ else :
49+ if measure .__name__ in ["r_squared" ]:
50+ preds_v = pred_func .predict (x_train [:, S ])
51+ else :
52+ preds_v = pred_func .predict_proba (x_train [:, S ])
4653 preds [cc_cond ] = preds_v
4754 vs [0 ] = measure (y_train , preds_v )
4855 ics [cc_cond ] = compute_ic (y_train , preds_v , measure .__name__ )
@@ -52,7 +59,13 @@ def cv_predictiveness(x, y, S, measure, pred_func, V = 5, stratified = True, na_
5259 x_train , y_train = newx [folds != v , :], newy [folds != v ]
5360 x_test , y_test = newx [folds == v , :], newy [folds == v ]
5461 pred_func .fit (x_train [:, S ], np .ravel (y_train ))
55- preds_v = pred_func .predict (x_test [:, S ])
62+ if ensemble :
63+ preds_v = np .mean (pred_func .transform (x_test [:, S ]))
64+ else :
65+ if measure .__name__ in ["r_squared" ]:
66+ preds_v = pred_func .predict (x_test [:, S ])
67+ else :
68+ preds_v = pred_func .predict_proba (x_test [:, S ])
5669 preds [cc_cond [fold_cond ]] = preds_v
5770 vs [v ] = measure (y_test , preds_v )
5871 ics [cc_cond [fold_cond ]] = compute_ic (y_test , preds_v , measure .__name__ )
0 commit comments