alteryx/compose

A machine learning tool for automated prediction engineering. It allows you to easily structure prediction problems and generate labels for supervised learning.

514

stars

237

commits

Python

primary language

Mar 31, 2025

updated

compose.alteryx.com
ai
automl
data-labeling
data-science
labeling
labeling-tool
machine-learning
prediction-engineering
prediction-problem
training-data

README

Compose

"Build better training examples in a fraction of the time."

Tests ReadTheDocs PyPI Version StackOverflow PyPI Downloads


Compose is a machine learning tool for automated prediction engineering. It allows you to structure prediction problems and generate labels for supervised learning. An end user defines an outcome of interest by writing a labeling function, then runs a search to automatically extract training examples from historical data. Its result is then provided to Featuretools for automated feature engineering and subsequently to EvalML for automated machine learning. The workflow of an applied machine learning engineer then becomes:


Compose


By automating the early stage of the machine learning pipeline, our end user can easily define a task and solve it. See the documentation for more information.

Installation

Install with pip

python -m pip install composeml

or from the Conda-forge channel on conda:

conda install -c conda-forge composeml

Add-ons

Update checker - Receive automatic notifications of new Compose releases

python -m pip install "composeml[update_checker]"

Example

Will a customer spend more than 300 in the next hour of transactions?

In this example, we automatically generate new training examples from a historical dataset of transactions.

import composeml as cp
df = cp.demos.load_transactions()
df = df[df.columns[:7]]
df.head()
transaction_idsession_idtransaction_timeproduct_idamountcustomer_iddevice
29812014-01-01 00:00:005127.642desktop
1012014-01-01 00:09:45557.392desktop
49512014-01-01 00:14:05569.452desktop
460102014-01-01 02:33:505123.192tablet
302102014-01-01 02:37:05564.472tablet

First, we represent the prediction problem with a labeling function and a label maker.

def total_spent(ds):
    return ds['amount'].sum()

label_maker = cp.LabelMaker(
    target_dataframe_index="customer_id",
    time_index="transaction_time",
    labeling_function=total_spent,
    window_size="1h",
)

Then, we run a search to automatically generate the training examples.

label_times = label_maker.search(
    df.sort_values('transaction_time'),
    num_examples_per_instance=2,
    minimum_data='2014-01-01',
    drop_empty=False,
    verbose=False,
)

label_times = label_times.threshold(300)
label_times.head()
customer_idtimetotal_spent
12014-01-01 00:00:00True
12014-01-01 01:00:00True
22014-01-01 00:00:00False
22014-01-01 01:00:00False
32014-01-01 00:00:00False

We now have labels that are ready to use in Featuretools to generate features.

Support

The Innovation Labs open source community is happy to provide support to users of Compose. Project support can be found in three places depending on the type of question:

  1. For usage questions, use Stack Overflow with the composeml tag.
  2. For bugs, issues, or feature requests start a Github issue.
  3. For discussion regarding development on the core library, use Slack.
  4. For everything else, the core developers can be reached by email at open_source_support@alteryx.com

Citing Compose

Compose is built upon a newly defined part of the machine learning process — prediction engineering. If you use Compose, please consider citing this paper: James Max Kanter, Gillespie, Owen, Kalyan Veeramachaneni. Label, Segment,Featurize: a cross domain framework for prediction engineering. IEEE DSAA 2016.

BibTeX entry:

@inproceedings{kanter2016label,
  title={Label, segment, featurize: a cross domain framework for prediction engineering},
  author={Kanter, James Max and Gillespie, Owen and Veeramachaneni, Kalyan},
  booktitle={2016 IEEE International Conference on Data Science and Advanced Analytics (DSAA)},
  pages={430--439},
  year={2016},
  organization={IEEE}
}

Acknowledgements

The open source development has been supported in part by DARPA's Data driven discovery of models program (D3M).

Alteryx

Compose is an open source project maintained by Alteryx. We developed Compose to enable flexible definition of the machine learning task. To see the other open source projects we’re working on visit Alteryx Open Source. If building impactful data science pipelines is important to you or your business, please get in touch.

Alteryx Open Source

Contributors

jeff-hernandez

78 commits

machineFL

71 commits

gsheni

54 commits

thehomebrewnerd

13 commits

alteryx/compose

A machine learning tool for automated prediction engineering. It allows you to easily structure prediction problems and generate labels for supervised learning.

514

stars

237

commits

Python

primary language

Mar 31, 2025

updated

compose.alteryx.com
ai
automl
data-labeling
data-science
labeling
labeling-tool
machine-learning
prediction-engineering
prediction-problem
training-data

README

Compose

"Build better training examples in a fraction of the time."

Tests ReadTheDocs PyPI Version StackOverflow PyPI Downloads


Compose is a machine learning tool for automated prediction engineering. It allows you to structure prediction problems and generate labels for supervised learning. An end user defines an outcome of interest by writing a labeling function, then runs a search to automatically extract training examples from historical data. Its result is then provided to Featuretools for automated feature engineering and subsequently to EvalML for automated machine learning. The workflow of an applied machine learning engineer then becomes:


Compose


By automating the early stage of the machine learning pipeline, our end user can easily define a task and solve it. See the documentation for more information.

Installation

Install with pip

python -m pip install composeml

or from the Conda-forge channel on conda:

conda install -c conda-forge composeml

Add-ons

Update checker - Receive automatic notifications of new Compose releases

python -m pip install "composeml[update_checker]"

Example

Will a customer spend more than 300 in the next hour of transactions?

In this example, we automatically generate new training examples from a historical dataset of transactions.

import composeml as cp
df = cp.demos.load_transactions()
df = df[df.columns[:7]]
df.head()
transaction_idsession_idtransaction_timeproduct_idamountcustomer_iddevice
29812014-01-01 00:00:005127.642desktop
1012014-01-01 00:09:45557.392desktop
49512014-01-01 00:14:05569.452desktop
460102014-01-01 02:33:505123.192tablet
302102014-01-01 02:37:05564.472tablet

First, we represent the prediction problem with a labeling function and a label maker.

def total_spent(ds):
    return ds['amount'].sum()

label_maker = cp.LabelMaker(
    target_dataframe_index="customer_id",
    time_index="transaction_time",
    labeling_function=total_spent,
    window_size="1h",
)

Then, we run a search to automatically generate the training examples.

label_times = label_maker.search(
    df.sort_values('transaction_time'),
    num_examples_per_instance=2,
    minimum_data='2014-01-01',
    drop_empty=False,
    verbose=False,
)

label_times = label_times.threshold(300)
label_times.head()
customer_idtimetotal_spent
12014-01-01 00:00:00True
12014-01-01 01:00:00True
22014-01-01 00:00:00False
22014-01-01 01:00:00False
32014-01-01 00:00:00False

We now have labels that are ready to use in Featuretools to generate features.

Support

The Innovation Labs open source community is happy to provide support to users of Compose. Project support can be found in three places depending on the type of question:

  1. For usage questions, use Stack Overflow with the composeml tag.
  2. For bugs, issues, or feature requests start a Github issue.
  3. For discussion regarding development on the core library, use Slack.
  4. For everything else, the core developers can be reached by email at open_source_support@alteryx.com

Citing Compose

Compose is built upon a newly defined part of the machine learning process — prediction engineering. If you use Compose, please consider citing this paper: James Max Kanter, Gillespie, Owen, Kalyan Veeramachaneni. Label, Segment,Featurize: a cross domain framework for prediction engineering. IEEE DSAA 2016.

BibTeX entry:

@inproceedings{kanter2016label,
  title={Label, segment, featurize: a cross domain framework for prediction engineering},
  author={Kanter, James Max and Gillespie, Owen and Veeramachaneni, Kalyan},
  booktitle={2016 IEEE International Conference on Data Science and Advanced Analytics (DSAA)},
  pages={430--439},
  year={2016},
  organization={IEEE}
}

Acknowledgements

The open source development has been supported in part by DARPA's Data driven discovery of models program (D3M).

Alteryx

Compose is an open source project maintained by Alteryx. We developed Compose to enable flexible definition of the machine learning task. To see the other open source projects we’re working on visit Alteryx Open Source. If building impactful data science pipelines is important to you or your business, please get in touch.

Alteryx Open Source

Contributors

jeff-hernandez

78 commits

machineFL

71 commits

gsheni

54 commits

thehomebrewnerd

13 commits

Languages

Python

98.7%

Makefile

1.3%