Skip to content

Conversation

@arnavk23
Copy link

@arnavk23 arnavk23 commented Nov 20, 2025

Reference Issues/PRs

Fixes #470

What does this implement/fix? Explain your changes.

Adds support for ondil online probabilistic regressors, enabling skpro users to use OnlineGamlss with the standard skpro API and tooling.
Keeps ondil optional and minimizes maintenance surface by lazy imports and best-effort API adaptation.

Does your contribution introduce a new dependency? If yes, which one?

What should a reviewer concentrate their feedback on?

Did you add any tests for the change?

Any other comments?

PR checklist

For all contributions
  • I've added myself to the list of contributors with any new badges I've earned :-)
    How to: add yourself to the all-contributors file in the skpro root directory (not the CONTRIBUTORS.md). Common badges: code - fixing a bug, or adding code logic. doc - writing or improving documentation or docstrings. bug - reporting or diagnosing a bug (get this plus code if you also fixed the bug in the PR).maintenance - CI, test framework, release.
    See here for full badge reference
  • The PR title starts with either [ENH], [MNT], [DOC], or [BUG]. [BUG] - bugfix, [MNT] - CI, test framework, [ENH] - adding or improving code, [DOC] - writing or improving documentation or docstrings.
For new estimators
  • I've added the estimator to the API reference - in docs/source/api_reference/taskname.rst, follow the pattern.
  • I've added one or more illustrative usage examples to the docstring, in a pydocstyle compliant Examples section.
  • If the estimator relies on a soft dependency, I've set the python_dependencies tag and ensured
    dependency isolation, see the estimator dependencies guide.

Copy link
Collaborator

@fkiraly fkiraly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I think the package is no longer called rolch but ondil

@fkiraly
Copy link
Collaborator

fkiraly commented Nov 20, 2025

code quality checks are failing, see https://www.sktime.net/en/stable/developer_guide/coding_standards.html

@arnavk23 arnavk23 changed the title [ENH] interface rolch OnlineGamlss wrapper [ENH] interface ondil OnlineGamlss wrapper Nov 21, 2025
@arnavk23 arnavk23 requested a review from fkiraly November 21, 2025 17:33
@arnavk23
Copy link
Author

@fkiraly made changes according to your review comments.

@arnavk23
Copy link
Author

@fkiraly Fixed the failing lint checks(isort). Please run the workflows again.

Copy link
Collaborator

@fkiraly fkiraly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

  • why are you doing so many try / except in the _fit? These seem unnecessary. You probably generated this via AI, and the AI has no idea about the ondil package. Please debug the code yourself instead, do not just apply AI mindlessly.
  • in the API docs this should not go into the reduction docs section, but "online learning".

@arnavk23 arnavk23 requested a review from fkiraly November 25, 2025 09:22
Removed unused autosummary for MapieRegressor.
@arnavk23
Copy link
Author

arnavk23 commented Nov 25, 2025

Nice!

Thank you for your review comments! Worked on both, please see.


super().__init__()

def _fit(self, X, y):
Copy link
Contributor

@joshdunnlime joshdunnlime Nov 27, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add (..., C=None): to override the baseclass method correctly.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

actually, C is not necessary if the regressor does not support censoring. The base class is smart enough :-)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to know. If including C=None isn't too confusing, it might be worth adding as it raises a lot of false-positives in my local type-checker and may do so for other users.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah, I see.

FYI, unfortunately this is not possible since originally censoring was not supported (only ordinary probabilistic supervised regression), so a lot of third party code would use _fit(X, y) as signature. Requiring C suddenly would break all this code, including all estimators then present in skpro itself.

Hence the more lenient extension contract - which also means, the same problem would be caused when starting to require C at any point in time, breaking custom extender code.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a power user perspective I think this is also a good compromise solution for the long term - since users not interested in censoring do not need to worry about what that C is.

Distr = getattr(distr_mod, dist)
# construct args dict using column names
vals = {c: df.loc[:, [c]].values for c in df.columns}
return Distr(**vals, index=X.index, columns=self._y_cols)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like there is an issue here is the column names are not strings. In my case, I am transforming X and integer column values are used. Therefore some of the keys in vals are ints.

TypeError: keywords must be strings

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement module:regression probabilistic regression module

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ENH] interface rolch online proba regressors

3 participants