Skip to content

Commit cbad09a

Browse files
committed
add option for ensemble, use predict_proba if predictiveness measure for binary outcomes
1 parent a06d379 commit cbad09a

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

vimpy/predictiveness_measures.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
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

Comments
 (0)