No project description provided
Project description
FeatureExpress: Time-aware Feature Engineering Library
Overview
FeatureExpress is a groundbreaking in-memory feature engineering library designed for processing time-based event data. It is a hybrid between a feature engineering library and a feature store, aiming to address the complex challenges of dealing with temporal data in machine learning applications.
- Website: https://feature.express
- Discord:
Prerelease
:warning: Alpha Release Warning: This library is currently in an alpha stage. As such, it is subject to:
- Changes: The API is still evolving, so you can expect many breaking changes. If you depend on this library in your project, be prepared to update your code as new versions are released.
- Performance Issues: There may be inefficiencies or other performance issues that have not yet been resolved.
- Unstable API: Functionality might be added, changed, or removed without notice. Documentation may be incomplete or out of date.
This version is more like a pre-release, and it's primarily intended for developers who are interested in experimenting with the latest features or contributing to the project.
Why FeatureExpress?
Why Another Feature Engineering Library / Feature Store?
The necessity of this unique library grew from years of struggling with event-driven data, especially in customer interactions and recommendations. Time adds complexity, subtlety, and depth to data analysis and modeling. The challenges include:
- Time makes everything complex.
- Model validation becomes harder.
- Data leaks are subtle and hard to trace.
- SQL-like operations are prone to errors and hard to write.
- Existing feature stores move the burden of materialization to data scientists.
Event Data for Superior Features
Event data encapsulates reality with timestamped information, and it's pivotal in creating meaningful features. Unlike other methods that often obscure temporal aspects, FeatureExpress utilizes a dedicated data structure to make the connection between events and features clearer and more explicit.
Overcoming Problems with Current Feature Stores
Current feature stores often rely on explicit materialization and caching, leading to increased complexity for data scientists. FeatureExpress adopts a declarative approach (similar to SQL) with a DSL (Domain Specific Language) to define features, allowing for a more intuitive and error-free process.
In-Memory Processing
Built in Rust and interfaced in Python, FeatureExpress leverages in-memory processing to enable:
- Fast materialization of features.
- Parallel computations for efficiency.
- Flexibility to expand to more permanent storage solutions in the future.
Though the current version is limited to datasets that fit in memory, FeatureExpress's performance and robustness make it a valuable tool for data scientists and engineers working with time-series data.
Installation
You can install FeatureExpress via pip:
pip install fexpress
Features
- Event-Driven Design: Utilizes events as core data structures for accurate modeling.
- Time-Aware DSL: Introduces a SQL-like DSL for expressive and complex feature declarations.
- No Data Leaks: The clear separation between past and future guarantees against inadvertent data leaks.
- Flexible Observation Dates: Allows custom definitions of observation dates including intervals, fixed, conditional, and more.
- Time-based Joins: Enables complicated joins in time, like aggregations over specific periods.
- Optimized Performance: Implements performance tricks like partial aggregates for efficient calculations.
- Rich Value Representation: Accommodates various data types for broad applications.
- Indices and In-memory Store: Ensures optimized querying and manipulation of time-based data.
Documentation
Full documentation, including tutorials and examples, can be found at https://feature.express.
Contributing
Interested in contributing to FeatureExpress? See our CONTRIBUTING.md for guidelines on how to help!
License
FeatureExpress is under MIT. See LICENSE for more details.
Development
env VIRTUAL_ENV=$(python3 -c 'import sys; print(sys.base_prefix)') maturin develop
or
maturin develop
development (optimized code)
maturin develop --release
building Python wheel
maturin build --release -i python
This should create a wheel in target/wheels
installing Python wheel
pip install target/wheels/fexpress_rs-0.1.0-cp38-cp38-linux_x86_64.whl -U
Note that the file name can be different depending on your system.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for fexpress-0.0.2-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c6117102b1d329338df71b943beed53d91bfbc0c533a0fc8255b19a6e9bfb0b |
|
MD5 | e3f29b5b798eb5ecc0471ab6042dd02c |
|
BLAKE2b-256 | 52502ed706f50585589d9baefb549d9f0933c00f74f26a02923ead08a6d45e55 |
Hashes for fexpress-0.0.2-cp311-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 740bb70ed538d70f6e8e6c671d64a5321b7d7e999ec7fd4833a871127c13be50 |
|
MD5 | 733bbc94547d7156ed72d1291c7420c9 |
|
BLAKE2b-256 | e528a6fbe64a6aed9f08888f896469a5ace97d668c477a8297ef1553c24dbe08 |
Hashes for fexpress-0.0.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57a68560b4bf9e5fe49abf21af0e80230102123df7f1e0bb3699f07ba00617e2 |
|
MD5 | 3ead0dd934f06ef28d70deae631e9e97 |
|
BLAKE2b-256 | fd9a2960839808d10ed72cdc006a2dda1e2c35b9cb28ccc2fa0d4dc3fcac8800 |
Hashes for fexpress-0.0.2-cp311-cp311-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd6c07a0e370f6e524aa0a737342a3bca89f1897b6048d2145177b4c1fc9bb03 |
|
MD5 | 9c369e178d52223a3fe2e5fdc6635b80 |
|
BLAKE2b-256 | 6addfaf82b5a1b3b4b6ace5d99041ca558e9f770f6a12e39770145e2560846d7 |
Hashes for fexpress-0.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7666c050416712b85ef928fd39779f6e751a6c522ca68db35ea0247e0a0d3502 |
|
MD5 | ddeb11404f9c6515cc23031031566659 |
|
BLAKE2b-256 | 2427ed4c0fd624ebd0f63b062a78735e30f72baac8c8bea0cec1641f3477ac3e |
Hashes for fexpress-0.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6732bd329013609b49a9f09073c35a4820fdd133c6a2dca6d4a0969c8ea1db86 |
|
MD5 | c56b799a99be40557c3043855e344ef6 |
|
BLAKE2b-256 | aff28d8477a333d2d6d220cc5534dbbc7f515e94aa9b29d112e3612a4af17ed7 |
Hashes for fexpress-0.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1d42745014d929e54f6b36533842457fcf73b1ff81a59b7d06b3c541f67ad32 |
|
MD5 | 461cd4a50c7a812cdecbf805479cacd3 |
|
BLAKE2b-256 | c18fe69176aef9b37f1fd74eae686db381daf03f855bbf426683ff1819e204d2 |
Hashes for fexpress-0.0.2-cp311-cp311-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ed2a188fc1e33215c7bca4402396452d77096ee42835f20626a1a13a401fdd4 |
|
MD5 | 3b144346432087bf810965dcc16b0ab6 |
|
BLAKE2b-256 | 57bdea2854baa8bc559976879e86a380d5ac57181c3bf7ffc82996ce24f8665b |
Hashes for fexpress-0.0.2-cp310-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ed7b75b436fa37c9450e98f9ee7fc46f96d586f3e80f2f14dda2deb92649b3f |
|
MD5 | d3cda3290ccff88d0c108e685431d94e |
|
BLAKE2b-256 | 0942d75eeae1ab9f794190e312ccd2930042d81341ee74ea1ea9f9f215bb6e9b |
Hashes for fexpress-0.0.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c3a2d122c02502b6bd824dd7b59d34befd823328b8ea5759332ec2695cad74b |
|
MD5 | 5f71064a7c624d7e795c488e3952ed82 |
|
BLAKE2b-256 | a22e7c40db9b256cf22767ed1748491c5f3e0fa61f6d308c4b18bf81f8e5cd7b |
Hashes for fexpress-0.0.2-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a6ee15339b98f6746cb859a65a74f0e0f214b386c80a01765736835587dd3d4 |
|
MD5 | a35b49acb69f966e28af216fad6abf5f |
|
BLAKE2b-256 | 08f5daa99a87ebcad27212693243b508049bc7acf28ae9c5651be6a299d37114 |
Hashes for fexpress-0.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | daa6e56a8561dc67c639c692802bb350373d3abcfdc340a04df2968d91ba6337 |
|
MD5 | 897d52f9688916ca5116a6b85357e47b |
|
BLAKE2b-256 | 8fabe758aff086881987e84032da4cf1ccd2c7db611589be465134dfbf9387e8 |
Hashes for fexpress-0.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c71f14b651489abbdf6d7d86d32239ee1991002d735b7f7edfef08da52c9f0b2 |
|
MD5 | 678964d971bb544b8901a7969d274f03 |
|
BLAKE2b-256 | ec627a15c0866777c4b5df7373a2d8e04ce58872193c6b9ccfddf653d61924af |
Hashes for fexpress-0.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f5cf3bdcdc4a730cebffad8acaed355ad396496b38bea4892f4af55129baaae8 |
|
MD5 | fd1b1a1edffdfb056812a315341fd5ed |
|
BLAKE2b-256 | e54bbdb7813c95562fbe6696cd287b48d8dc83c8563ddea16007d4fa5394aa70 |
Hashes for fexpress-0.0.2-cp310-cp310-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae017d8c16c61bc32c06472262f8a8fa9c9ce4149e8604a1618fd209c419e3e0 |
|
MD5 | 5aede008af1083088e875e2739efaea2 |
|
BLAKE2b-256 | a10ca62d0715004a57845eca64a6a3585118eebea121cc4f836662ccbe99c89d |
Hashes for fexpress-0.0.2-cp39-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 462d8956e548d90a3a39132db0aa04a7b178a5d1ac3757a4ff6c48d85be97c39 |
|
MD5 | 61ffa82c9a113e572787b76063e1e8c5 |
|
BLAKE2b-256 | cc1c7a7b0e1652fc687b0666c9a5ca24c12e7725d8e2e38b50e55f2bfd652ea8 |
Hashes for fexpress-0.0.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a66d3de8e3e327b8104f84edfdd08f7b1493de172e156c5114d85d5beb9808b |
|
MD5 | 02b013cba518cc9e987ac1a2988b247e |
|
BLAKE2b-256 | 7ce6d5b0999cbc157636c46c840152caa6cdf6332d8c5b9ee48d0a387c49764f |
Hashes for fexpress-0.0.2-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a01c8bc14a85e80cf3bf8d81c517541158ed6be5a6bb9d87258458d6695c79a7 |
|
MD5 | 3f56ac05fa22a7ffef7c2af62d894a05 |
|
BLAKE2b-256 | 0533cc87f23ca9229e48926c26cf26d02853dfab70fb98a166fb1afe46fb896e |
Hashes for fexpress-0.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a31e9b5b0b35399257dab17f3bc6c695d85d08ac41b116335b4a8d8b9e6ec61a |
|
MD5 | efac500190ff3d8ac1c505436ad5efa0 |
|
BLAKE2b-256 | 3497c11996033b0c15f0da99b000974a9bc0b11dc32185c182279eceab2c2252 |
Hashes for fexpress-0.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ec88afd41899ea0caa54ea64a1b6e2912489d55f967302be2ad4f58e483ca072 |
|
MD5 | 2bbfc9f2af8aa762b68f40d9a40cb3ad |
|
BLAKE2b-256 | c1599ebc3421eb10b4228e80a603c5fd3adf91ff0e01b033f179709793cd91d8 |
Hashes for fexpress-0.0.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 60619543f29d6ba9fc98b11254d0487cfb002ceadf68c9d21dceceb939be35cd |
|
MD5 | fb5bd51e29ca9dc7e321392ab54e141d |
|
BLAKE2b-256 | 59989ef0b83a00b5423698dd2772f1c3e59db4d379924d568bc95c9ef592ecbd |
Hashes for fexpress-0.0.2-cp39-cp39-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bdba70e1ae734ccccf9d59164fa3345d1671b095a2e5ef24b79e1432161f847 |
|
MD5 | 47b5447ddc2c7f56fb5d808b5ee0382e |
|
BLAKE2b-256 | 371dea62f82c2aa75d1c394aa6e28fbd95f5c5d95c3871a577ee06ee8cc05446 |
Hashes for fexpress-0.0.2-cp38-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a17123bbb82352ef876fd8e9aeb248af8eff1623e94fbaf0f957b3e511726b7 |
|
MD5 | ec1770ca539939384c8f109c584ff11d |
|
BLAKE2b-256 | 9b04c25e2ef6fa3720a4ab1455bd3000c32c63c9b7531025caddb91eab4b0c58 |
Hashes for fexpress-0.0.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ccc0d2c4e611d267688f57f251b645553efddc90e18abc519e36875112be47c0 |
|
MD5 | 754da4d6fcfe18422cadeefd3dff6035 |
|
BLAKE2b-256 | ef3a9c23b793c55392596f4d9f5472acb980830cdc2ee7762d4e0a9cda715389 |
Hashes for fexpress-0.0.2-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bdc855e4475ef1ed340a1d34e4afbea45033f98c31f76175cc11cbc12ff89b6 |
|
MD5 | 2940dd0b03be744c1b4c9f1b552ed77c |
|
BLAKE2b-256 | ea0963ceb8e2e682766d1e5572dff415646b5cc1ce053af5d6aaff2ebe786eb2 |
Hashes for fexpress-0.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7ceabba5dd000b4cb7a4c00e03064e5f12f7fbbd5db1b3c669d5d3d69b47cd2 |
|
MD5 | 2a00a041c0c8152e4fd75abd9ddbe7ca |
|
BLAKE2b-256 | e2dd73c88b1059a8feed18b6af59f440ea91526c6f9dbdd8da08b70a1b7d0a51 |
Hashes for fexpress-0.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ab4ce1ea3272fecf896e9a7b33e43d6584cacc4d2befa9003c92a6ba9ba89ab |
|
MD5 | bc3d268d0f23e9aa55e91ce9a9b89ca1 |
|
BLAKE2b-256 | 60248754672bd50e059490aa2372b46d3e4a748af05e2617490cde8f048a3c81 |
Hashes for fexpress-0.0.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c6507215e8b8ede628525a301221da0008d1804a542a8339b8b38e6e42782af |
|
MD5 | f1c03441b1f8a7d6a873de195e92e224 |
|
BLAKE2b-256 | a67086fb1d8a32f73eff8e6e37c06817727cd9e9580b2cf1008603e69078f4e1 |
Hashes for fexpress-0.0.2-cp38-cp38-macosx_10_7_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dff4ac620d430b9c487a3749a3d631b39986670501a9cf1034d540fbe071dce |
|
MD5 | 091eb4ae3bbef139a9666c77821b0ce3 |
|
BLAKE2b-256 | 4d5a05b53e89dc2376855ddf90002be545a153d787ee7e088e5a876d915955f3 |