def test_ale_num_linear_regression(min_bin_points, lr_regressor, dataset): """ The slope of the ALE of linear regression should equal the learnt coefficients """ lr, _ = lr_regressor X = dataset['X_train'] for feature in range(X.shape[1]): q, ale, _ = ale_num(lr.predict, X, feature=feature, min_bin_points=min_bin_points) alediff = ale[-1] - ale[0] xdiff = X[:, feature].max() - X[:, feature].min() assert_allclose(alediff / xdiff, lr.coef_[feature])
def test_ale_num_logistic_regression(min_bin_points, lr_classifier, dataset): """ The slope of the ALE curves performed in the logit space should equal the learnt coefficients. """ lr, _ = lr_classifier X = dataset['X_train'] for feature in range(X.shape[1]): q, ale, _ = ale_num(lr.decision_function, X, feature=feature, min_bin_points=min_bin_points) alediff = ale[-1, :] - ale[0, :] xdiff = X[:, feature].max() - X[:, feature].min() assert_allclose(alediff / xdiff, lr.coef_[:, feature])
def test_constant_feature(extrapolate_constant, extrapolate_constant_perc, extrapolate_constant_min, constant_value, feature): X = np.random.normal(size=(100, 2)) X[:, feature] = constant_value predict = lambda x: x.sum(axis=1) # dummy predictor # noqa q, ale, ale0 = ale_num(predict, X, feature, extrapolate_constant=extrapolate_constant, extrapolate_constant_perc=extrapolate_constant_perc, extrapolate_constant_min=extrapolate_constant_min) if extrapolate_constant: delta = max(constant_value * extrapolate_constant_perc / 100, extrapolate_constant_min) assert_allclose(q, np.array([constant_value - delta, constant_value + delta])) else: assert_allclose(q, np.array([constant_value])) assert_allclose(ale, np.array([[0.]])) assert_allclose(ale0, np.array([0.]))