Skip to content

Commit 54c4e2b

Browse files
10.5.0
1 parent 3ff8cc5 commit 54c4e2b

File tree

10 files changed

+19
-13
lines changed

10 files changed

+19
-13
lines changed

API_REFERENCE_FOR_CLASSIFICATION.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# APLRClassifier
22

3-
## class aplr.APLRClassifier(m:int = 3000, v:float = 0.1, random_state:int = 0, n_jobs:int = 0, cv_folds:int = 5, bins:int = 300, verbosity:int = 0, max_interaction_level:int = 1, max_interactions:int = 100000, min_observations_in_split:int = 20, ineligible_boosting_steps_added:int = 10, max_eligible_terms:int = 5, boosting_steps_before_interactions_are_allowed: int = 0, monotonic_constraints_ignore_interactions: bool = False, early_stopping_rounds: int = 500, num_first_steps_with_linear_effects_only: int = 0, penalty_for_non_linearity: float = 0.0, penalty_for_interactions: float = 0.0, max_terms: int = 0)
3+
## class aplr.APLRClassifier(m:int = 20000, v:float = 0.1, random_state:int = 0, n_jobs:int = 0, cv_folds:int = 5, bins:int = 300, verbosity:int = 0, max_interaction_level:int = 1, max_interactions:int = 100000, min_observations_in_split:int = 20, ineligible_boosting_steps_added:int = 10, max_eligible_terms:int = 5, boosting_steps_before_interactions_are_allowed: int = 0, monotonic_constraints_ignore_interactions: bool = False, early_stopping_rounds: int = 500, num_first_steps_with_linear_effects_only: int = 0, penalty_for_non_linearity: float = 0.0, penalty_for_interactions: float = 0.0, max_terms: int = 0)
44

55
### Constructor parameters
66

7-
#### m (default = 3000)
7+
#### m (default = 20000)
88
The maximum number of boosting steps. If validation error does not flatten out at the end of the ***m***th boosting step, then try increasing it (or alternatively increase the learning rate).
99

1010
#### v (default = 0.1)

API_REFERENCE_FOR_REGRESSION.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# APLRRegressor
22

3-
## class aplr.APLRRegressor(m:int = 3000, v:float = 0.1, random_state:int = 0, loss_function:str = "mse", link_function:str = "identity", n_jobs:int = 0, cv_folds:int = 5, bins:int = 300, max_interaction_level:int = 1, max_interactions:int = 100000, min_observations_in_split:int = 20, ineligible_boosting_steps_added:int = 10, max_eligible_terms:int = 5, verbosity:int = 0, dispersion_parameter:float = 1.5, validation_tuning_metric:str = "default", quantile:float = 0.5, calculate_custom_validation_error_function:Optional[Callable[[FloatVector, FloatVector, FloatVector, FloatVector, FloatMatrix], float]] = None, calculate_custom_loss_function:Optional[Callable[[FloatVector, FloatVector, FloatVector, FloatVector, FloatMatrix], float]] = None, calculate_custom_negative_gradient_function:Optional[Callable[[FloatVector, FloatVector, FloatVector, FloatMatrix],FloatVector]] = None, calculate_custom_transform_linear_predictor_to_predictions_function:Optional[Callable[[FloatVector], FloatVector]] = None, calculate_custom_differentiate_predictions_wrt_linear_predictor_function:Optional[Callable[[FloatVector], FloatVector]] = None, boosting_steps_before_interactions_are_allowed:int = 0, monotonic_constraints_ignore_interactions:bool = False, group_mse_by_prediction_bins:int = 10, group_mse_cycle_min_obs_in_bin:int = 30, early_stopping_rounds:int = 500, num_first_steps_with_linear_effects_only:int = 0, penalty_for_non_linearity:float = 0.0, penalty_for_interactions:float = 0.0, max_terms:int = 0)
3+
## class aplr.APLRRegressor(m:int = 20000, v:float = 0.1, random_state:int = 0, loss_function:str = "mse", link_function:str = "identity", n_jobs:int = 0, cv_folds:int = 5, bins:int = 300, max_interaction_level:int = 1, max_interactions:int = 100000, min_observations_in_split:int = 20, ineligible_boosting_steps_added:int = 10, max_eligible_terms:int = 5, verbosity:int = 0, dispersion_parameter:float = 1.5, validation_tuning_metric:str = "default", quantile:float = 0.5, calculate_custom_validation_error_function:Optional[Callable[[FloatVector, FloatVector, FloatVector, FloatVector, FloatMatrix], float]] = None, calculate_custom_loss_function:Optional[Callable[[FloatVector, FloatVector, FloatVector, FloatVector, FloatMatrix], float]] = None, calculate_custom_negative_gradient_function:Optional[Callable[[FloatVector, FloatVector, FloatVector, FloatMatrix],FloatVector]] = None, calculate_custom_transform_linear_predictor_to_predictions_function:Optional[Callable[[FloatVector], FloatVector]] = None, calculate_custom_differentiate_predictions_wrt_linear_predictor_function:Optional[Callable[[FloatVector], FloatVector]] = None, boosting_steps_before_interactions_are_allowed:int = 0, monotonic_constraints_ignore_interactions:bool = False, group_mse_by_prediction_bins:int = 10, group_mse_cycle_min_obs_in_bin:int = 30, early_stopping_rounds:int = 500, num_first_steps_with_linear_effects_only:int = 0, penalty_for_non_linearity:float = 0.0, penalty_for_interactions:float = 0.0, max_terms:int = 0)
44

55
### Constructor parameters
66

7-
#### m (default = 3000)
7+
#### m (default = 20000)
88
The maximum number of boosting steps. If validation error does not flatten out at the end of the ***m***th boosting step, then try increasing it (or alternatively increase the learning rate).
99

1010
#### v (default = 0.1)

aplr/aplr.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
class APLRRegressor:
1212
def __init__(
1313
self,
14-
m: int = 3000,
14+
m: int = 20000,
1515
v: float = 0.1,
1616
random_state: int = 0,
1717
loss_function: str = "mse",
@@ -350,7 +350,7 @@ def set_params(self, **parameters):
350350
class APLRClassifier:
351351
def __init__(
352352
self,
353-
m: int = 3000,
353+
m: int = 20000,
354354
v: float = 0.1,
355355
random_state: int = 0,
356356
n_jobs: int = 0,
@@ -458,6 +458,8 @@ def fit(
458458
predictor_penalties_for_non_linearity,
459459
predictor_penalties_for_interactions,
460460
)
461+
# For sklearn
462+
self.classes_ = np.arange(len(self.APLRClassifier.get_categories()))
461463

462464
def predict_class_probabilities(
463465
self, X: FloatMatrix, cap_predictions_to_minmax_in_training: bool = False
@@ -525,3 +527,7 @@ def set_params(self, **parameters):
525527
setattr(self, parameter, value)
526528
self.__set_params_cpp()
527529
return self
530+
531+
# For sklearn
532+
def predict_proba(self, X: FloatMatrix) -> FloatMatrix:
533+
return self.predict_class_probabilities(X)

cpp/APLRClassifier.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class APLRClassifier
5454
std::map<std::string, size_t> unique_term_affiliation_map;
5555
std::vector<std::vector<size_t>> base_predictors_in_each_unique_term_affiliation;
5656

57-
APLRClassifier(size_t m = 3000, double v = 0.1, uint_fast32_t random_state = std::numeric_limits<uint_fast32_t>::lowest(), size_t n_jobs = 0,
57+
APLRClassifier(size_t m = 20000, double v = 0.1, uint_fast32_t random_state = std::numeric_limits<uint_fast32_t>::lowest(), size_t n_jobs = 0,
5858
size_t cv_folds = 5, size_t reserved_terms_times_num_x = 100, size_t bins = 300, size_t verbosity = 0, size_t max_interaction_level = 1,
5959
size_t max_interactions = 100000, size_t min_observations_in_split = 20, size_t ineligible_boosting_steps_added = 10, size_t max_eligible_terms = 5,
6060
size_t boosting_steps_before_interactions_are_allowed = 0, bool monotonic_constraints_ignore_interactions = false,

cpp/APLRRegressor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ class APLRRegressor
248248
VectorXd min_predictor_values_in_training;
249249
VectorXd max_predictor_values_in_training;
250250

251-
APLRRegressor(size_t m = 3000, double v = 0.1, uint_fast32_t random_state = std::numeric_limits<uint_fast32_t>::lowest(), std::string loss_function = "mse",
251+
APLRRegressor(size_t m = 20000, double v = 0.1, uint_fast32_t random_state = std::numeric_limits<uint_fast32_t>::lowest(), std::string loss_function = "mse",
252252
std::string link_function = "identity", size_t n_jobs = 0, size_t cv_folds = 5,
253253
size_t reserved_terms_times_num_x = 100, size_t bins = 300, size_t verbosity = 0, size_t max_interaction_level = 1, size_t max_interactions = 100000,
254254
size_t min_observations_in_split = 20, size_t ineligible_boosting_steps_added = 10, size_t max_eligible_terms = 5, double dispersion_parameter = 1.5,

cpp/pythonbinding.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ PYBIND11_MODULE(aplr_cpp, m)
2626
std::function<VectorXd(const VectorXd &y, const VectorXd &predictions, const VectorXi &group, const MatrixXd &other_data)> &,
2727
std::function<VectorXd(const VectorXd &linear_predictor)> &, std::function<VectorXd(const VectorXd &linear_predictor)> &,
2828
int &, bool &, int &, int &, int &, int &, double &, double &, int &>(),
29-
py::arg("m") = 3000, py::arg("v") = 0.1, py::arg("random_state") = 0, py::arg("loss_function") = "mse", py::arg("link_function") = "identity",
29+
py::arg("m") = 20000, py::arg("v") = 0.1, py::arg("random_state") = 0, py::arg("loss_function") = "mse", py::arg("link_function") = "identity",
3030
py::arg("n_jobs") = 0, py::arg("cv_folds") = 5,
3131
py::arg("reserved_terms_times_num_x") = 100, py::arg("bins") = 300, py::arg("verbosity") = 0,
3232
py::arg("max_interaction_level") = 1, py::arg("max_interactions") = 100000, py::arg("min_observations_in_split") = 20,
@@ -284,7 +284,7 @@ PYBIND11_MODULE(aplr_cpp, m)
284284
py::class_<APLRClassifier>(m, "APLRClassifier", py::module_local())
285285
.def(py::init<int &, double &, int &, int &, int &, int &, int &, int &, int &, int &, int &, int &, int &, int &, bool &, int &, int &,
286286
double &, double &, int &>(),
287-
py::arg("m") = 3000, py::arg("v") = 0.1, py::arg("random_state") = 0, py::arg("n_jobs") = 0, py::arg("cv_folds") = 5,
287+
py::arg("m") = 20000, py::arg("v") = 0.1, py::arg("random_state") = 0, py::arg("n_jobs") = 0, py::arg("cv_folds") = 5,
288288
py::arg("reserved_terms_times_num_x") = 100, py::arg("bins") = 300, py::arg("verbosity") = 0,
289289
py::arg("max_interaction_level") = 1, py::arg("max_interactions") = 100000, py::arg("min_observations_in_split") = 20,
290290
py::arg("ineligible_boosting_steps_added") = 10, py::arg("max_eligible_terms") = 5,
Binary file not shown.

examples/train_aplr_classification.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
model = APLRClassifier(
4848
random_state=random_state,
4949
verbosity=2,
50-
m=3000,
50+
m=20000,
5151
v=0.1,
5252
# max_terms=5, # Optionally tune this to find a trade-off between interpretability and predictiveness. May require a higher learning rate for best results.
5353
**params

examples/train_aplr_regression.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
model = APLRRegressor(
5151
random_state=random_state,
5252
verbosity=2,
53-
m=3000,
53+
m=20000,
5454
v=0.1,
5555
loss_function=loss_function,
5656
link_function=link_function,

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
setuptools.setup(
2929
name="aplr",
30-
version="10.4.6",
30+
version="10.5.0",
3131
description="Automatic Piecewise Linear Regression",
3232
ext_modules=[sfc_module],
3333
author="Mathias von Ottenbreit",

0 commit comments

Comments
 (0)