One place metrics for various ML regression and classification algorithms
Project description
Pretty Metrics
One place metrics for various ML regression and classification algorithms
Free software: MIT license
Documentation: TBD
Installation
To install Pretty Metrics:
pip install prettymetrics or pip install git+https://github.com/tactlabs/prettymetrics.git
Pip installing the library from local repository:
conda activate <env_name> python setup.py install develop
Usage
To use Pretty Metrics in a project:
import prettymetrics
Classification
Example
from prettymetrics.clf import Classifier from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split data = load_breast_cancer() X = data.data y= data.target X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=.5,random_state =123) clf = Classifier(verbose=0,ignore_warnings=True, custom_metric=None) models,predictions = clf.fit(X_train, X_test, y_train, y_test) print(models) | Model | Accuracy | Balanced Accuracy | ROC AUC | F1 Score | Time Taken | |:-------------------------------|-----------:|--------------------:|----------:|-----------:|-------------:| | LinearSVC | 0.989474 | 0.987544 | 0.987544 | 0.989462 | 0.0150008 | | SGDClassifier | 0.989474 | 0.987544 | 0.987544 | 0.989462 | 0.0109992 | | MLPClassifier | 0.985965 | 0.986904 | 0.986904 | 0.985994 | 0.426 | | Perceptron | 0.985965 | 0.984797 | 0.984797 | 0.985965 | 0.0120046 | | LogisticRegression | 0.985965 | 0.98269 | 0.98269 | 0.985934 | 0.0200036 | | LogisticRegressionCV | 0.985965 | 0.98269 | 0.98269 | 0.985934 | 0.262997 | | SVC | 0.982456 | 0.979942 | 0.979942 | 0.982437 | 0.0140011 | | CalibratedClassifierCV | 0.982456 | 0.975728 | 0.975728 | 0.982357 | 0.0350015 | | PassiveAggressiveClassifier | 0.975439 | 0.974448 | 0.974448 | 0.975464 | 0.0130005 | | LabelPropagation | 0.975439 | 0.974448 | 0.974448 | 0.975464 | 0.0429988 | | LabelSpreading | 0.975439 | 0.974448 | 0.974448 | 0.975464 | 0.0310006 | | RandomForestClassifier | 0.97193 | 0.969594 | 0.969594 | 0.97193 | 0.033 | | GradientBoostingClassifier | 0.97193 | 0.967486 | 0.967486 | 0.971869 | 0.166998 | | QuadraticDiscriminantAnalysis | 0.964912 | 0.966206 | 0.966206 | 0.965052 | 0.0119994 | | HistGradientBoostingClassifier | 0.968421 | 0.964739 | 0.964739 | 0.968387 | 0.682003 | | RidgeClassifierCV | 0.97193 | 0.963272 | 0.963272 | 0.971736 | 0.0130029 | | RidgeClassifier | 0.968421 | 0.960525 | 0.960525 | 0.968242 | 0.0119977 | | AdaBoostClassifier | 0.961404 | 0.959245 | 0.959245 | 0.961444 | 0.204998 | | ExtraTreesClassifier | 0.961404 | 0.957138 | 0.957138 | 0.961362 | 0.0270066 | | KNeighborsClassifier | 0.961404 | 0.95503 | 0.95503 | 0.961276 | 0.0560005 | | BaggingClassifier | 0.947368 | 0.954577 | 0.954577 | 0.947882 | 0.0559971 | | BernoulliNB | 0.950877 | 0.951003 | 0.951003 | 0.951072 | 0.0169988 | | LinearDiscriminantAnalysis | 0.961404 | 0.950816 | 0.950816 | 0.961089 | 0.0199995 | | GaussianNB | 0.954386 | 0.949536 | 0.949536 | 0.954337 | 0.0139935 | | NuSVC | 0.954386 | 0.943215 | 0.943215 | 0.954014 | 0.019989 | | DecisionTreeClassifier | 0.936842 | 0.933693 | 0.933693 | 0.936971 | 0.0170023 | | NearestCentroid | 0.947368 | 0.933506 | 0.933506 | 0.946801 | 0.0160074 | | ExtraTreeClassifier | 0.922807 | 0.912168 | 0.912168 | 0.922462 | 0.0109999 | | CheckingClassifier | 0.361404 | 0.5 | 0.5 | 0.191879 | 0.0170043 | | DummyClassifier | 0.512281 | 0.489598 | 0.489598 | 0.518924 | 0.0119965 |
Regression
Example
from prettymetrics.reg import Regressor from sklearn import datasets from sklearn.utils import shuffle import numpy as np boston = datasets.load_boston() X, y = shuffle(boston.data, boston.target, random_state=13) X = X.astype(np.float32) offset = int(X.shape[0] * 0.9) X_train, y_train = X[:offset], y[:offset] X_test, y_test = X[offset:], y[offset:] reg = Regressor(verbose=0, ignore_warnings=False, custom_metric=None) models, predictions = reg.fit(X_train, X_test, y_train, y_test) print(models) | Model | Adjusted R-Squared | R-Squared | RMSE | Time Taken | |:------------------------------|-------------------:|----------:|------:|-----------:| | SVR | 0.83 | 0.88 | 2.62 | 0.01 | | BaggingRegressor | 0.83 | 0.88 | 2.63 | 0.03 | | NuSVR | 0.82 | 0.86 | 2.76 | 0.03 | | RandomForestRegressor | 0.81 | 0.86 | 2.78 | 0.21 | | XGBRegressor | 0.81 | 0.86 | 2.79 | 0.06 | | GradientBoostingRegressor | 0.81 | 0.86 | 2.84 | 0.11 | | ExtraTreesRegressor | 0.79 | 0.84 | 2.98 | 0.12 | | AdaBoostRegressor | 0.78 | 0.83 | 3.04 | 0.07 | | HistGradientBoostingRegressor | 0.77 | 0.83 | 3.06 | 0.17 | | PoissonRegressor | 0.77 | 0.83 | 3.11 | 0.01 | | LGBMRegressor | 0.77 | 0.83 | 3.11 | 0.07 | | KNeighborsRegressor | 0.77 | 0.83 | 3.12 | 0.01 | | DecisionTreeRegressor | 0.65 | 0.74 | 3.79 | 0.01 | | MLPRegressor | 0.65 | 0.74 | 3.80 | 1.63 | | HuberRegressor | 0.64 | 0.74 | 3.84 | 0.01 | | GammaRegressor | 0.64 | 0.73 | 3.88 | 0.01 | | LinearSVR | 0.62 | 0.72 | 3.96 | 0.01 | | RidgeCV | 0.62 | 0.72 | 3.97 | 0.01 | | BayesianRidge | 0.62 | 0.72 | 3.97 | 0.01 | | Ridge | 0.62 | 0.72 | 3.97 | 0.01 | | TransformedTargetRegressor | 0.62 | 0.72 | 3.97 | 0.01 | | LinearRegression | 0.62 | 0.72 | 3.97 | 0.01 | | ElasticNetCV | 0.62 | 0.72 | 3.98 | 0.04 | | LassoCV | 0.62 | 0.72 | 3.98 | 0.06 | | LassoLarsIC | 0.62 | 0.72 | 3.98 | 0.01 | | LassoLarsCV | 0.62 | 0.72 | 3.98 | 0.02 | | Lars | 0.61 | 0.72 | 3.99 | 0.01 | | LarsCV | 0.61 | 0.71 | 4.02 | 0.04 | | SGDRegressor | 0.60 | 0.70 | 4.07 | 0.01 | | TweedieRegressor | 0.59 | 0.70 | 4.12 | 0.01 | | GeneralizedLinearRegressor | 0.59 | 0.70 | 4.12 | 0.01 | | ElasticNet | 0.58 | 0.69 | 4.16 | 0.01 | | Lasso | 0.54 | 0.66 | 4.35 | 0.02 | | RANSACRegressor | 0.53 | 0.65 | 4.41 | 0.04 | | OrthogonalMatchingPursuitCV | 0.45 | 0.59 | 4.78 | 0.02 | | PassiveAggressiveRegressor | 0.37 | 0.54 | 5.09 | 0.01 | | GaussianProcessRegressor | 0.23 | 0.43 | 5.65 | 0.03 | | OrthogonalMatchingPursuit | 0.16 | 0.38 | 5.89 | 0.01 | | ExtraTreeRegressor | 0.08 | 0.32 | 6.17 | 0.01 | | DummyRegressor | -0.38 | -0.02 | 7.56 | 0.01 | | LassoLars | -0.38 | -0.02 | 7.56 | 0.01 | | KernelRidge | -11.50 | -8.25 | 22.74 | 0.01 |
How to run all examples
git clone git@github.com:tactlabs/prettymetrics.git cd prettymetrics py examples/example_runner.py
Credits
The base code is derived from LazyPredict (https://github.com/shankarpandala/lazypredict). As we see a lot of improvement in LazyPredict and the existing library is a bit outdated, we came up with this library. It can be LazyPredict++ as you will see this lib is updated and having more metrics.
History
0.0.3 (2021-10-12) ------------------ * Examples runner added * All examples enclosed with methods * One place examples runner initiated * General code cleanup 0.0.2 (2021-10-11) ------------------ * Various samples were added for testing * Various datasets added * LazyRegressor to Regressor naming convention * LazyClassifier to Classifier naming convention * Classifier and Regressor moved to separate files * General code cleanup * General coding standards improved 0.0.1 (2021-09-08) ------------------ * Base version from Lazypredict.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
prettymetrics-0.0.3.tar.gz
(22.3 kB
view hashes)
Built Distribution
Close
Hashes for prettymetrics-0.0.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 467b2d52e61201155a0ea093f41ba1d1e34b0003ab842346fdab6735df7d9a1c |
|
MD5 | 289f6ae9e9c70d1bc4fc92ed81653a10 |
|
BLAKE2b-256 | 1f0a9d1a193a763be29a5b8bfa535e9e117675266c7f31ba3c780291e98846f1 |