Skip to content

Commit 20df6f6

Browse files
define RMSE
1 parent d8e0565 commit 20df6f6

File tree

12 files changed

+244
-111
lines changed

12 files changed

+244
-111
lines changed

mlsauce-docs/search.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mlsauce/booster/_booster_classifier.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -511,9 +511,9 @@ def update(self, X, y, eta=0.9):
511511
512512
y: float = [n_samples=1]
513513
Target value.
514-
514+
515515
eta: float
516-
Inverse power applied to number of observations
516+
Inverse power applied to number of observations
517517
(defines a learning rate).
518518
519519
Returns:
@@ -540,10 +540,10 @@ def update(self, X, y, eta=0.9):
540540
seed=self.seed,
541541
),
542542
)
543-
)
544-
543+
)
544+
545545
self.obj = boosterc.update_booster(
546-
self.obj, np.asarray(X, order="C"), np.asarray(y, order="C"), eta
546+
self.obj, np.asarray(X, order="C"), np.asarray(y, order="C"), eta
547547
)
548548

549549
return self

mlsauce/booster/_booster_regressor.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -373,13 +373,13 @@ def predict(self, X, level=95, method=None, **kwargs):
373373
self.y_ = None
374374
preds = self.pi.predict(X, return_pi=True)
375375
return preds
376-
#print(f"\n in predict self: {self} \n")
377-
#print(f"\n in predict self.obj: {self.obj} \n")
378-
#try:
376+
# print(f"\n in predict self: {self} \n")
377+
# print(f"\n in predict self.obj: {self.obj} \n")
378+
# try:
379379
return boosterc.predict_booster_regressor(
380380
self.obj, np.asarray(X, order="C")
381381
)
382-
#except ValueError:
382+
# except ValueError:
383383
# pass
384384

385385
def update(self, X, y, eta=0.9):
@@ -393,9 +393,9 @@ def update(self, X, y, eta=0.9):
393393
394394
y: float = [n_samples=1]
395395
Target value.
396-
396+
397397
eta: float
398-
Inverse power applied to number of observations
398+
Inverse power applied to number of observations
399399
(defines a learning rate).
400400
401401
Returns:
@@ -422,9 +422,8 @@ def update(self, X, y, eta=0.9):
422422
seed=self.seed,
423423
),
424424
)
425-
)
425+
)
426426

427-
428427
self.obj = boosterc.update_booster(
429428
self.obj, np.asarray(X, order="C"), np.asarray(y, order="C"), eta
430429
)

mlsauce/lazybooster/config.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@
1818
"IsotonicRegression",
1919
"MLPRegressor",
2020
"KernelRidge",
21-
#"MultiOutputRegressor",
22-
#"MultiTaskElasticNet",
21+
# "MultiOutputRegressor",
22+
# "MultiTaskElasticNet",
2323
"MultiTaskElasticNetCV",
24-
#"MultiTaskLasso",
24+
# "MultiTaskLasso",
2525
"MultiTaskLassoCV",
26-
"NuSVR",
26+
"NuSVR",
2727
"OrthogonalMatchingPursuit",
2828
"OrthogonalMatchingPursuitCV",
2929
"PLSCanonical",
@@ -49,7 +49,7 @@
4949

5050
MTASKREGRESSORS = [
5151
(
52-
"GenericBooster(MultiTask(" + est[0] + "))",
52+
"GenericBooster(MultiTask(" + est[0] + "))",
5353
partial(MultiTaskRegressor, regr=est[1]()),
5454
)
5555
for est in all_estimators()

mlsauce/lazybooster/lazyboosterclassif.py

Lines changed: 91 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,10 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
343343
and (est[0] in self.estimators)
344344
)
345345
] + [
346-
("GBoostClassifier(MultiTask(" + est[0] + "))", partial(MultiTaskRegressor, regr=est[1]()))
346+
(
347+
"GBoostClassifier(MultiTask(" + est[0] + "))",
348+
partial(MultiTaskRegressor, regr=est[1]()),
349+
)
347350
for est in all_estimators()
348351
if (
349352
issubclass(est[1], RegressorMixin)
@@ -352,7 +355,7 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
352355
]
353356

354357
if self.preprocess is True:
355-
358+
356359
if self.n_jobs is None:
357360

358361
for name, model in tqdm(self.classifiers): # do parallel exec
@@ -376,7 +379,9 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
376379
fitted_clf = GenericBoostingClassifier(
377380
{**other_args, **kwargs},
378381
verbose=self.verbose,
379-
base_model=model(random_state=self.random_state),
382+
base_model=model(
383+
random_state=self.random_state
384+
),
380385
)
381386

382387
else:
@@ -401,15 +406,19 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
401406
pipe.fit(X_train, y_train)
402407
self.models_[name] = pipe
403408
y_pred = pipe.predict(X_test)
404-
accuracy = accuracy_score(y_test, y_pred, normalize=True)
409+
accuracy = accuracy_score(
410+
y_test, y_pred, normalize=True
411+
)
405412
b_accuracy = balanced_accuracy_score(y_test, y_pred)
406413
f1 = f1_score(y_test, y_pred, average="weighted")
407414
try:
408415
roc_auc = roc_auc_score(y_test, y_pred)
409416
except Exception as exception:
410417
roc_auc = None
411418
if self.ignore_warnings is False:
412-
print("ROC AUC couldn't be calculated for " + name)
419+
print(
420+
"ROC AUC couldn't be calculated for " + name
421+
)
413422
print(exception)
414423
names.append(name)
415424
Accuracy.append(accuracy)
@@ -452,15 +461,24 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
452461
print(exception)
453462

454463
else:
455-
456-
# train_model(self, name, model, X_train, y_train, X_test, y_test,
457-
#use_preprocessing=False, preprocessor=None,
464+
465+
# train_model(self, name, model, X_train, y_train, X_test, y_test,
466+
# use_preprocessing=False, preprocessor=None,
458467
# **kwargs):
459-
results = Parallel(n_jobs=self.n_jobs)(delayed(self.train_model)(
460-
name, model, X_train, y_train, X_test, y_test,
461-
use_preprocessing=True, preprocessor=preprocessor, **kwargs
462-
) for name, model in tqdm(self.classifiers)
463-
)
468+
results = Parallel(n_jobs=self.n_jobs)(
469+
delayed(self.train_model)(
470+
name,
471+
model,
472+
X_train,
473+
y_train,
474+
X_test,
475+
y_test,
476+
use_preprocessing=True,
477+
preprocessor=preprocessor,
478+
**kwargs
479+
)
480+
for name, model in tqdm(self.classifiers)
481+
)
464482
Accuracy = [res["accuracy"] for res in results]
465483
B_Accuracy = [res["balanced_accuracy"] for res in results]
466484
ROC_AUC = [res["roc_auc"] for res in results]
@@ -470,41 +488,50 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
470488
if self.custom_metric is not None:
471489
CUSTOM_METRIC = [res["custom_metric"] for res in results]
472490
if self.predictions:
473-
predictions = {res["name"]: res["predictions"] for res in results}
474-
491+
predictions = {
492+
res["name"]: res["predictions"] for res in results
493+
}
475494

476495
else: # no preprocessing
477-
496+
478497
if self.n_jobs is None:
479498

480499
for name, model in tqdm(self.classifiers): # do parallel exec
481500
start = time.time()
482501
try:
483502
if "random_state" in model().get_params().keys():
484503
fitted_clf = GenericBoostingClassifier(
485-
base_model=model(random_state=self.random_state),
504+
base_model=model(
505+
random_state=self.random_state
506+
),
486507
verbose=self.verbose,
487508
**kwargs
488509
)
489510

490511
else:
491512
fitted_clf = GenericBoostingClassifier(
492-
base_model=model(), verbose=self.verbose, **kwargs
513+
base_model=model(),
514+
verbose=self.verbose,
515+
**kwargs
493516
)
494517

495518
fitted_clf.fit(X_train, y_train)
496519

497520
self.models_[name] = fitted_clf
498521
y_pred = fitted_clf.predict(X_test)
499-
accuracy = accuracy_score(y_test, y_pred, normalize=True)
522+
accuracy = accuracy_score(
523+
y_test, y_pred, normalize=True
524+
)
500525
b_accuracy = balanced_accuracy_score(y_test, y_pred)
501526
f1 = f1_score(y_test, y_pred, average="weighted")
502527
try:
503528
roc_auc = roc_auc_score(y_test, y_pred)
504529
except Exception as exception:
505530
roc_auc = None
506531
if self.ignore_warnings is False:
507-
print("ROC AUC couldn't be calculated for " + name)
532+
print(
533+
"ROC AUC couldn't be calculated for " + name
534+
)
508535
print(exception)
509536
names.append(name)
510537
Accuracy.append(accuracy)
@@ -546,13 +573,21 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
546573
print(name + " model failed to execute")
547574
print(exception)
548575

549-
else:
576+
else:
550577

551-
results = Parallel(n_jobs=self.n_jobs)(delayed(self.train_model)(
552-
name, model, X_train, y_train, X_test, y_test,
553-
use_preprocessing=False, **kwargs
554-
) for name, model in tqdm(self.classifiers)
555-
)
578+
results = Parallel(n_jobs=self.n_jobs)(
579+
delayed(self.train_model)(
580+
name,
581+
model,
582+
X_train,
583+
y_train,
584+
X_test,
585+
y_test,
586+
use_preprocessing=False,
587+
**kwargs
588+
)
589+
for name, model in tqdm(self.classifiers)
590+
)
556591
Accuracy = [res["accuracy"] for res in results]
557592
B_Accuracy = [res["balanced_accuracy"] for res in results]
558593
ROC_AUC = [res["roc_auc"] for res in results]
@@ -562,8 +597,9 @@ def fit(self, X_train, X_test, y_train, y_test, **kwargs):
562597
if self.custom_metric is not None:
563598
CUSTOM_METRIC = [res["custom_metric"] for res in results]
564599
if self.predictions:
565-
predictions = {res["name"]: res["predictions"] for res in results}
566-
600+
predictions = {
601+
res["name"]: res["predictions"] for res in results
602+
}
567603

568604
if self.custom_metric is None:
569605
scores = pd.DataFrame(
@@ -643,18 +679,29 @@ def provide_models(self, X_train, X_test, y_train, y_test):
643679

644680
return self.models_
645681

646-
647-
def train_model(self, name, model, X_train, y_train, X_test, y_test,
648-
use_preprocessing=False, preprocessor=None,
649-
**kwargs):
682+
def train_model(
683+
self,
684+
name,
685+
model,
686+
X_train,
687+
y_train,
688+
X_test,
689+
y_test,
690+
use_preprocessing=False,
691+
preprocessor=None,
692+
**kwargs
693+
):
650694
"""
651695
Function to train a single model and return its results.
652696
"""
653697
other_args = {}
654698

655699
# Handle n_jobs parameter
656700
try:
657-
if "n_jobs" in model().get_params().keys() and "LogisticRegression" not in name:
701+
if (
702+
"n_jobs" in model().get_params().keys()
703+
and "LogisticRegression" not in name
704+
):
658705
other_args["n_jobs"] = self.n_jobs
659706
except Exception:
660707
pass
@@ -688,13 +735,21 @@ def train_model(self, name, model, X_train, y_train, X_test, y_test,
688735
]
689736
)
690737
if self.verbose > 0:
691-
print("\n Fitting pipeline with preprocessing for " + name + " model...")
738+
print(
739+
"\n Fitting pipeline with preprocessing for "
740+
+ name
741+
+ " model..."
742+
)
692743
pipe.fit(X_train, y_train)
693744
y_pred = pipe.predict(X_test)
694745
else:
695746
# Case with no preprocessing
696747
if self.verbose > 0:
697-
print("\n Fitting model without preprocessing for " + name + " model...")
748+
print(
749+
"\n Fitting model without preprocessing for "
750+
+ name
751+
+ " model..."
752+
)
698753
y_pred = fitted_clf.predict(X_test)
699754

700755
accuracy = accuracy_score(y_test, y_pred, normalize=True)
@@ -728,4 +783,4 @@ def train_model(self, name, model, X_train, y_train, X_test, y_test,
728783
if self.ignore_warnings is False:
729784
print(name + " model failed to execute")
730785
print(exception)
731-
return None
786+
return None

0 commit comments

Comments
 (0)