Package: divina
divina: scalable and automatable multi-horizon forecasting toolkitWhat is it?divinaconfronts four main problems for professional forecasters:Multiple-horizon forecasting often involves repeated programming of the same, complex code across train, predict, validation and visualizationMany forecasting model implementations do not follow the standard scikit-interface or scale well to large datasetsDifferent forecasting models often benefit from the complex engineering of the same time-sensitive featuresBecause of the above three, deployment and scaling of multi-horizon forecasting ensembles is considerably more complex than a typical machine learning pipelineMain Featuresdivinaaddresses the aforementioned problems by:Providing a single Python object with a simple interface that abstracts away the complexities of multi-horizon train, predict, valiation and visualizationProviding a library of interface-standardized model ensemble candidates that can be mixed and matched depending on the forecasting problemProviding consistent, efficient implementations of popular time-series engineered featuresBuilt-in integration with Dask for efficient, cloud-based scaling and Prefect for automation, fault-tolerance, queue management and artifact persistenceRoadmapCurrent development priorities and improvements slated for next and beta release are:Addition of visualization methods that produce commonly-required charts via HighchartsAdditional machine learning model options, such as XGBoost and CNNsAdditional boosting model options, such as RNNs, LSTMs, ARIMA, SARIMA, etc.Addition of more realistic test cases, useful error messages and robust documentationAddition of GPU support via CUDA, CUDF and CUMLWhere to get itThe source code is currently hosted on GitHub at:https://github.com/secrettoad/divinaDocumentationdivina's documentation is availablehere.Binary installers for the latest released version are available at thePython
Package Index (PyPI)pipinstalldivinaDependenciesdask - Adds support for arbitrarily large datasets via remote, parallelized computedask-ml - Provides distributed-optimized implementations of many popular modelss3fs - Allows for easy and efficient access to S3pyarrow - Enables persistence of datasets as storage and compute efficent parquet filesprefect - Enables task orchestration, tracking and persistenceTestingFor local integration testing, run the following commands in order to create the necessary Prefect and Min.io containers.dockerpulljhurdle/divina-storage
dockerpulljhurdle/divina-prefect
dockerrun-p9000:9000jhurdle/divina-storagedockerrun-p4200:4200jhurdle/divina-prefectpytestdivina/divina/testsLicenseAGPLBackgroundWork ondivinastarted atCoysu Consulting(a technology consulting firm) in 2020 and
has been under active development since then.Getting HelpFor usage questions, the best place to go to isStackOverflow.Discussion and DevelopmentMost development discussions take place on GitHub in this repo.Contributing to divinaAll contributions, bug reports, bug fixes, documentation improvements, enhancements, and ideas are welcome.If you are simply looking to start working with the divina codebase, navigate to theGitHub "issues" taband start looking through interesting issues.