-
Notifications
You must be signed in to change notification settings - Fork 220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New spends forward pass #456
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #456 +/- ##
==========================================
- Coverage 91.24% 91.09% -0.15%
==========================================
Files 21 21
Lines 2044 2056 +12
==========================================
+ Hits 1865 1873 +8
- Misses 179 183 +4 ☔ View full report in Codecov by Sentry. |
Will add the transformation back to original space and continue with this PR after #482 |
* Optimisation in customer_lifetime_value when discount_rate == 0 cf #467 * Update utils.py
* clv_summary adapted into rfm_summary * added clv_summary with warning * moved dataset from testing folder
updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.11 → v0.1.14](astral-sh/ruff-pre-commit@v0.1.11...v0.1.14) - [github.com/pre-commit/pre-commit-hooks: v3.2.0 → v4.5.0](pre-commit/pre-commit-hooks@v3.2.0...v4.5.0)
* add baselined saturation with test and plots * refactor docs * add the reparam * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * verify parametrization is equivalent under change of baseline * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add a note for setting x0 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * make it clear how r_ref is calculated * fix typo * fix docstrings * improve test by making sure transform is gives identical saturation and cac0 * add comment in the docstring * add blank line in the code-block --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Check out this pull request on See visual diffs & provide feedback on Jupyter Notebooks. Powered by ReviewNB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks very nice! I added some minor suggestions on the docstrings to clarify this better for the end-user. WDYT?
I've addressed all the feedback, @juanitorduz I've separated out the "new_spend" creation into a function and added some more to the docstrings so hopefully that brings in some clarity. Let me know what you think! |
@wd60622 looks great! There is one test failing, though. If you fix it, we can merge this one :) |
Have the test passing locally but not in the action 😢 Running the action with 3.11 with the latest pymc to see if the pymc version has an impact. The test depends on the sample_prior_predictive method. Not sure if that has change Might just mock the idata for all of these tests with the plots and hope giving a seed will keep the results the same |
Trying to mock the prior in the If all else fails, these are tests against the plotting images and can maybe be omitted. Thoughts? @juanitorduz @ricardoV94 EDIT: They seem to be failing again... This tests are working locally for me. Honestly super hard to check what's going on on the test comparison. Any idea if tests files are stored off? i.e. log here |
@wd60622 I am getting the same error as in matplotlib/pytest-mpl#69 . Can you please add
|
Failed again even after using fresh environment 😢 |
I suggest we make sure the plot runs (as other plots tests) and create an issue to add this matplotlib testing framework. I would not delay this feature because of this :) |
Sounds great! |
Thanks @wd60622 ! |
Thank you for the review! |
* current status as method * format * Update version.txt * Implement different convolution modes (#454) * Add PR template * Update pull_request_template.md * Fix issues in index example * Update .pre-commit-config.yaml * Update .pre-commit-config.yaml * move from other PR * put legend on side * Optimisation in customer_lifetime_value when discount_rate == 0 (#468) * Optimisation in customer_lifetime_value when discount_rate == 0 cf #467 * Update utils.py * Update README.md * add support for pre-commit-ci * add isort * modify autosummary templates * Rename `clv_summary` to `rfm_summary` and extend functionality (#479) * clv_summary adapted into rfm_summary * added clv_summary with warning * moved dataset from testing folder * Update version.txt * improve ruff * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.1.11 → v0.1.14](astral-sh/ruff-pre-commit@v0.1.11...v0.1.14) - [github.com/pre-commit/pre-commit-hooks: v3.2.0 → v4.5.0](pre-commit/pre-commit-hooks@v3.2.0...v4.5.0) * resolve conflict * Add baselined saturation (#498) * add baselined saturation with test and plots * refactor docs * add the reparam * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * verify parametrization is equivalent under change of baseline * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add a note for setting x0 * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * make it clear how r_ref is calculated * fix typo * fix docstrings * improve test by making sure transform is gives identical saturation and cac0 * add comment in the docstring * add blank line in the code-block --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> * Swap Before and After convolution modes as per #489 (#501) * Add support for string mode args * Swap before and after and make mode explicit * Use Union due Python 3.9 * Style * resolve conflict * add dim_name arg * add seed to tests and test methods * add slice as type hint * use slice in docstring * defaults to mean for each channel * add non-negative check * ax as last arg * change weeks -> time * parameterize quantiles * separate out and add to docs * rerun the baseline images * mock the prior * add new images from latest env * migrate to toml instead of ci/cd * test only is axes * remove the images --------- Co-authored-by: Juan Orduz <[email protected]> Co-authored-by: Abdalaziz Rashid <[email protected]> Co-authored-by: Ricardo Vieira <[email protected]> Co-authored-by: Ricardo Vieira <[email protected]> Co-authored-by: vincent-grosbois <[email protected]> Co-authored-by: juanitorduz <[email protected]> Co-authored-by: Oriol (ProDesk) <[email protected]> Co-authored-by: Colt Allen <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Maxim Kochurov <[email protected]>
Current code addressing #451. Have a look @carlosagostini
I've split it into two methods:
I'd like to hear feedback on the arguments for the generation. Specifically, the
spends
and theone_time
Currently, it takes a np.ndarray that would be a raw spend for each channel (error if it doesn't match) and will ultimately transform it to a (max_lag, n_channels) ndarray with values depending on the
one_time
argument.One time:
This locks into a bit of assumption of how this would be used. Maybe, the spends could be (n_channels, ) or (max_lags, n_channels) to reduce the need of
one_time
and simplify the method.Would like to hear how you might use it.
The method returns the untransformed spends although named
_contributions
. The inverse transformation only happen in the plotting method, but it maybe good to have the inverse transformations happening that first method.I think this is a good case to remove the target transformation from the sklearn pipeline so it can be part of the forward pass of contributions @ricardoV94
EDIT: The inverse transformation is done in the new_spend_contributions method as well
📚 Documentation preview 📚: https://pymc-marketing--456.org.readthedocs.build/en/456/