An Open Source Project from the Data to AI Lab, at MIT
Primitives for machine learning and time series.
- Github: https://github.com/sintel-dev/ml-stars
- License: MIT
- Development Status: Pre-Alpha
This repository contains primitive annotations to be used by the MLBlocks library, as well as the necessary Python code to make some of them fully compatible with the MLBlocks API requirements.
There is also a collection of custom primitives contributed directly to this library, which either combine third party tools or implement new functionalities from scratch.
ml-stars has been developed and tested on Python 3.8, 3.9, 3.10, and 3.11
Also, although it is not strictly required, the usage of a virtualenv is highly recommended in order to avoid interfering with other software installed in the system where ml-stars is run.
The easiest and recommended way to install ml-stars is using pip:
pip install ml-stars
This will pull and install the latest stable release from PyPi.
If you want to install from source or contribute to the project please read the Contributing Guide.
This section is a short series of tutorials to help you getting started with ml-stars.
We will be executing a single primitive for data transformation.
The first step in order to run a primitive is to load it.
This will be done using the mlstars.load_primitive
function, which will
load the indicated primitive as an MLBlock Object from MLBlocks
In this case, we will load the sklearn.preprocessing.MinMaxScaler
primitive.
from mlstars import load_primitive
primitive = load_primitive('sklearn.preprocessing.MinMaxScaler')
The StandardScaler is a transformation primitive which scales your data into a given range.
To use this primtives, we generate a synthetic data with some numeric values.
import numpy as np
data = np.array([10, 1, 3, -1, 5, 6, 0, 4, 13, 4]).reshape(-1, 1)
The data
is a list of integers where their original range is between [-1, 13].
In order to run our primitive, we first need to fit it.
This is the process where it analyzes the data to detect what is the original range of the data.
This is done by calling its fit
method and passing the data
as X
.
primitive.fit(X=data)
Once the pipeline is fit, we can process the data by calling the produce
method of the
primitive instance and passing agin the data
as X
.
transformed = primitive.produce(X=data)
transformed
After this is done, we can see how the transformed data contains the transformed values:
array([[0.78571429],
[0.14285714],
[0.28571429],
[0. ],
[0.42857143],
[0.5 ],
[0.07142857],
[0.35714286],
[1. ],
[0.35714286]])
The data is now in [0, 1] range.
Documentation