dynamicslab / pysindy

A package for the sparse identification of nonlinear dynamical systems from data
https://pysindy.readthedocs.io/en/latest/
Other
1.42k stars 310 forks source link

CLN: Remove fit_intercept in optimizers #388

Closed Jacob-Stevens-Haas closed 1 year ago

Jacob-Stevens-Haas commented 1 year ago

Fixes #338

Initialize fit_intercept in super() as False

Prevent the tragic :sob: case of fitting both an intercept and a constant term, which could only otherwise be achieved with higher coupling and more tests.

Users can specify a constant term in the feature libraries using include_bias, where it exists, or by adding a constant term to a custom library and concatenating.

This change incurs a minor performance hit that disappears with scale, based upon how sklearn.LinearRegression fit the coefficient separately from the regression matrices.

codecov[bot] commented 1 year ago

Codecov Report

Patch coverage: 100.00% and project coverage change: +0.04% :tada:

Comparison is base (d86e375) 93.82% compared to head (b0a4693) 93.87%.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## master #388 +/- ## ========================================== + Coverage 93.82% 93.87% +0.04% ========================================== Files 37 37 Lines 3595 3590 -5 ========================================== - Hits 3373 3370 -3 + Misses 222 220 -2 ``` | [Files Changed](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab) | Coverage Δ | | |---|---|---| | [pysindy/optimizers/constrained\_sr3.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL2NvbnN0cmFpbmVkX3NyMy5weQ==) | `91.35% <ø> (ø)` | | | [pysindy/optimizers/frols.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL2Zyb2xzLnB5) | `97.77% <ø> (ø)` | | | [pysindy/optimizers/miosr.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL21pb3NyLnB5) | `85.71% <ø> (ø)` | | | [pysindy/optimizers/sindy\_pi.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL3NpbmR5X3BpLnB5) | `96.42% <ø> (ø)` | | | [pysindy/optimizers/sr3.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL3NyMy5weQ==) | `95.03% <ø> (ø)` | | | [pysindy/optimizers/ssr.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL3Nzci5weQ==) | `98.83% <ø> (ø)` | | | [pysindy/optimizers/stable\_linear\_sr3.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL3N0YWJsZV9saW5lYXJfc3IzLnB5) | `86.33% <ø> (ø)` | | | [pysindy/optimizers/stlsq.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL3N0bHNxLnB5) | `91.86% <ø> (ø)` | | | [pysindy/optimizers/trapping\_sr3.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL3RyYXBwaW5nX3NyMy5weQ==) | `89.96% <ø> (ø)` | | | [pysindy/optimizers/base.py](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab#diff-cHlzaW5keS9vcHRpbWl6ZXJzL2Jhc2UucHk=) | `93.05% <100.00%> (+0.53%)` | :arrow_up: | | ... and [1 more](https://app.codecov.io/gh/dynamicslab/pysindy/pull/388?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=dynamicslab) | |

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.