Skip to content

Commit d8e0565

Browse files
add default base learner to GeneriBooster
1 parent 45e2363 commit d8e0565

File tree

7 files changed

+92
-6
lines changed

7 files changed

+92
-6
lines changed

CHANGES.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# version 0.22.3
2+
3+
- Add `GenericGradientBooster` for regression and classification. See: https://thierrymoudiki.github.io/blog/2024/10/06/python/r/genericboosting
4+
and `examples/genboost*`
5+
16
# version 0.18.2
27

38
- Gaussian weights in `LSBoostRegressor` and `LSBoostClassifier` randomized hidden layer

examples/genboost_regressor2.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import subprocess
2+
import sys
3+
import os
4+
5+
print(f"\n ----- Running: {os.path.basename(__file__)}... ----- \n")
6+
7+
8+
subprocess.check_call([sys.executable, "-m", "pip", "install", "matplotlib"])
9+
10+
import mlsauce as ms
11+
import numpy as np
12+
import matplotlib.pyplot as plt
13+
from sklearn.linear_model import Ridge, LinearRegression
14+
from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score
15+
from sklearn.tree import DecisionTreeRegressor
16+
from time import time
17+
from os import chdir
18+
from sklearn import metrics
19+
from sklearn.datasets import fetch_openml
20+
21+
# Load the dataset from OpenML
22+
boston = fetch_openml(name='boston', version=1, as_frame=True)
23+
24+
# Get the features and target
25+
X = boston.data
26+
y = boston.target
27+
28+
# Display the first few rows
29+
print(X.head())
30+
print(y.head())
31+
32+
np.random.seed(15029)
33+
X_train, X_test, y_train, y_test = train_test_split(X, y,
34+
test_size=0.2)
35+
36+
X_train = X_train.astype(np.float64)
37+
X_test = X_test.astype(np.float64)
38+
y_train = y_train.astype(np.float64)
39+
y_test = y_test.astype(np.float64)
40+
41+
obj = ms.GenericBoostingRegressor(col_sample=0.9, row_sample=0.9)
42+
print(obj.get_params())
43+
start = time()
44+
obj.fit(X_train, y_train)
45+
print(time()-start)
46+
start = time()
47+
print(np.sqrt(np.mean(np.square(obj.predict(X_test) - y_test))))
48+
print(time()-start)
49+
print(obj.obj['loss'])

examples/lazy_booster_regression.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import os
22
import mlsauce as ms
3+
import numpy as np
34
from sklearn.datasets import load_diabetes
45
from sklearn.datasets import fetch_california_housing
56
from sklearn.model_selection import train_test_split
@@ -27,3 +28,32 @@
2728
models, predictioms = regr.fit(X_train, X_test, y_train, y_test)
2829
model_dictionary = regr.provide_models(X_train, X_test, y_train, y_test)
2930
print(models)
31+
32+
33+
from sklearn.datasets import fetch_openml
34+
35+
# Load the dataset from OpenML
36+
boston = fetch_openml(name='boston', version=1, as_frame=True)
37+
38+
# Get the features and target
39+
X = boston.data
40+
y = boston.target
41+
42+
# Display the first few rows
43+
print(X.head())
44+
print(y.head())
45+
46+
np.random.seed(1509)
47+
X_train, X_test, y_train, y_test = train_test_split(X, y,
48+
test_size=0.2)
49+
50+
X_train = X_train.astype(np.float64)
51+
X_test = X_test.astype(np.float64)
52+
y_train = y_train.astype(np.float64)
53+
y_test = y_test.astype(np.float64)
54+
55+
regr = ms.LazyBoostingRegressor(verbose=0, ignore_warnings=True, #n_jobs=2,
56+
custom_metric=None, preprocess=True)
57+
models, predictioms = regr.fit(X_train, X_test, y_train, y_test)
58+
model_dictionary = regr.provide_models(X_train, X_test, y_train, y_test)
59+
print(models)

mlsauce/booster/_booster_classifier.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pandas as pd
55
from sklearn.base import BaseEstimator
66
from sklearn.base import ClassifierMixin
7+
from sklearn.tree import ExtraTreeRegressor
78
from sklearn.preprocessing import PolynomialFeatures
89

910
try:
@@ -554,7 +555,7 @@ class GenericBoostingClassifier(LSBoostClassifier):
554555
Attributes:
555556
556557
base_model: object
557-
base learner.
558+
base learner (default is ExtraTreeRegressor) to be boosted.
558559
559560
n_estimators: int
560561
number of boosting iterations.
@@ -625,7 +626,7 @@ class GenericBoostingClassifier(LSBoostClassifier):
625626

626627
def __init__(
627628
self,
628-
base_model,
629+
base_model=ExtraTreeRegressor(),
629630
n_estimators=100,
630631
learning_rate=0.1,
631632
n_hidden_features=5,

mlsauce/booster/_booster_regressor.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import pandas as pd
55
from sklearn.base import BaseEstimator
66
from sklearn.base import RegressorMixin
7+
from sklearn.tree import ExtraTreeRegressor
78
from sklearn.preprocessing import PolynomialFeatures
89

910
try:
@@ -437,7 +438,7 @@ class GenericBoostingRegressor(LSBoostRegressor):
437438
Attributes:
438439
439440
base_model: object
440-
base learner.
441+
base learner (default is ExtraTreeRegressor) to be boosted.
441442
442443
n_estimators: int
443444
number of boosting iterations.
@@ -517,7 +518,7 @@ class GenericBoostingRegressor(LSBoostRegressor):
517518

518519
def __init__(
519520
self,
520-
base_model,
521+
base_model=ExtraTreeRegressor(),
521522
n_estimators=100,
522523
learning_rate=0.1,
523524
n_hidden_features=5,

mlsauce/lazybooster/lazyboosterregression.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
289289
adj_rsquared = adjusted_rsquared(
290290
r_squared, X_test.shape[0], X_test.shape[1]
291291
)
292-
rmse = mean_squared_error(y_test, y_pred, squared=False)
292+
rmse = root_mean_squared_error(y_test, y_pred)
293293

294294
names.append(name)
295295
R2.append(r_squared)

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
MAINTAINER_EMAIL = 'thierry.moudiki@gmail.com'
3838
LICENSE = 'BSD3 Clause Clear'
3939

40-
__version__ = '0.22.2'
40+
__version__ = '0.22.3'
4141

4242
VERSION = __version__
4343

0 commit comments

Comments
 (0)