scitime
Training time estimation for scikit-learn algorithms. Method explained in this article
Currently supporting:
- RandomForestRegressor
- SVC
- KMeans
- RandomForestClassifier
Environment setup
Python version: 3.7
Package dependencies:
- scikit-learn (~=0.24.1)
- pandas (~=1.1.5)
- joblib (~=1.0.1)
- psutil (~=5.8.0)
- scipy (~=1.5.4)
Install scitime
❱ pip install scitime
or
❱ conda install -c conda-forge scitime
Usage
How to compute a runtime estimation
- Example for RandomForestRegressor
from sklearn.ensemble import RandomForestRegressor
import numpy as np
import time
from scitime import RuntimeEstimator
# example for rf regressor
estimator = RuntimeEstimator(meta_algo='RF', verbose=3)
rf = RandomForestRegressor()
X,y = np.random.rand(100000,10),np.random.rand(100000,1)
# run the estimation
estimation, lower_bound, upper_bound = estimator.time(rf, X, y)
# compare to the actual training time
start_time = time.time()
rf.fit(X,y)
elapsed_time = time.time() - start_time
print("elapsed time: {:.2}".format(elapsed_time))
- Example for KMeans
from sklearn.cluster import KMeans
import numpy as np
import time
from scitime import RuntimeEstimator
# example for kmeans clustering
estimator = RuntimeEstimator(meta_algo='RF', verbose=3)
km = KMeans()
X = np.random.rand(100000,10)
# run the estimation
estimation, lower_bound, upper_bound = estimator.time(km, X)
# compare to the actual training time
start_time = time.time()
km.fit(X)
elapsed_time = time.time() - start_time
print("elapsed time: {:.2}".format(elapsed_time))
The Estimator class arguments:
- meta_algo: The estimator used to predict the time, either RF or NN
- verbose: Controls the amount of log output (either 0, 1, 2 or 3)
- confidence: Confidence for intervals (defaults to 95%)
Parameters of the estimator.time function:
- X: np.array of inputs to be trained
- y: np.array of outputs to be trained (set to None for unsupervised algo)
- algo: algo whose runtime the user wants to predict
--- FOR TESTERS / CONTRIBUTORS ---
Local Testing
Inside virtualenv (with pytest>=3.2.1):
(env)$ python -m pytest
How to use _data.py to generate data / fit models?
$ python _data.py --help
usage: _data.py [-h] [--drop_rate DROP_RATE] [--meta_algo {RF,NN}]
[--verbose VERBOSE]
[--algo {RandomForestRegressor,RandomForestClassifier,SVC,KMeans}]
[--generate_data] [--fit FIT] [--save]
Gather & Persist Data of model training runtimes
optional arguments:
-h, --help show this help message and exit
--drop_rate DROP_RATE
drop rate of number of data generated (from all param
combinations taken from _config.json). Default is
0.999
--meta_algo {RF,NN} meta algo used to fit the meta model (NN or RF) -
default is RF
--verbose VERBOSE verbose mode (0, 1, 2 or 3)
--algo {RandomForestRegressor,RandomForestClassifier,SVC,KMeans}
algo to train data on
--generate_data do you want to generate & write data in a dedicated
csv?
--fit FIT do you want to fit the model? If so indicate the csv
name
--save (only used for model fit) do you want to save /
overwrite the meta model from this fit?
(_data.py uses _model.py behind the scenes)
How to run _model.py?
After pulling the master branch (git pull origin master) and setting the environment (described above),
run ipython and:
from scitime._model import RuntimeModelBuilder
# example of data generation for rf regressor
trainer = RuntimeModelBuilder(drop_rate=0.99999, verbose=3, algo='RandomForestRegressor')
inputs, outputs, _ = trainer._generate_data()
# then fitting the meta model
meta_algo = trainer.model_fit(generate_data=False, inputs=inputs, outputs=outputs)
# this should not locally overwrite the pickle file located at scitime/models/{your_model}
# if you want to save the model, set the argument save_model to True
Metadata
Release files for scitime 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| scitime-0.1.1.tar.gz | 15.4 kB | Without provenance | Details for scitime-0.1.1.tar.gz |
Release files / scitime-0.1.1.tar.gz
| Download URL | scitime-0.1.1.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6981eff3f8eac835762c6b64d5a123bb8f785229d85eb47855e4b721737aaf3f
|
|
BLAKE2b-256 checksum How to use checksums |
0356172df6aa430f53352c6d50f1d00493ebceef83d8d2b86bbfe2d44b602669
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.19.1 CPython/3.7.3
|
Security for scitime 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.