Skip to content
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

[WIP] Domain-invariant partial least squares regression #286

Open
wants to merge 11 commits into
base: main
Choose a base branch
from

Conversation

B-Analytics
Copy link

Summary

I added the DIPLS class along with the dipals function to skada/_dipls.py and created an example in examples/methods/plot_dipls.py to showcase its usage. In the example, I apply di-PLS to a typical regression task in my domain (analytical chemistry) and tried to highlight the features that make it particularly useful for us (interpretability, flexibility). I also included a comparison with JDOT on the same task. The branch passed all tests (related to the new class and functions) and I updated the documentation accordingly.

@antoinecollas
Copy link
Collaborator

Thanks for the PR! It seems your linter changed .circleci/config.yml and .pre-commit-config.yaml which shouldn't be modified. Can you revert these changes?

@antoinecollas antoinecollas changed the title [MRG] Domain-invariant partial least squares regression [WIP] Domain-invariant partial least squares regression Dec 5, 2024
@B-Analytics
Copy link
Author

Hi Antoine

I have reverted the changes as you suggested but it seems that the tests are still not successful...

@rflamary
Copy link
Collaborator

Hello @B-Analytics ,

You need to merge the README.md file because the current merge conflit prevent te doc and the test from running.

@B-Analytics
Copy link
Author

Got it!

@B-Analytics
Copy link
Author

B-Analytics commented Dec 11, 2024

Hey guys

I still face problems with the tests. However, this time the problem is associated with the docs. Following files seem to cause the problem:

../../examples/deep/plot_adversarial.py
../../examples/deep/plot_divergence.py
../../examples/deep/plot_optimal_transport.py

Can you please give me a hand?

@antoinecollas
Copy link
Collaborator

You can generate and open the doc locally with
make clean && make html && open build/html/index.html
in the docs folder. Tell me if it helps you or not.

@B-Analytics
Copy link
Author

I can build the documentation locally
image
but it fails on circleci for some reason:
image

@antoinecollas
Copy link
Collaborator

antoinecollas commented Dec 14, 2024

Which version of scikit-learn are you using?
I think I found the problem:
skorch is not compatible with version 1.6.0 of scikit-learn yet (skorch-dev/skorch#1076). circle-ci pulls 1.6.0, and thus, the documentation cannot be built... So, I think your problem is independent of your PR. It also explains why "Test-minimal" pass but not "Test," which relies on skorch.

@B-Analytics
Copy link
Author

Yes, I am using scikit-learn v1.5.2 on my local machine. Let me know if I can do something to move this forward.

@antoinecollas
Copy link
Collaborator

Skorch’s new version is coming soon: skorch-dev/skorch#1085. It should fix the CI!

@tgnassou
Copy link
Collaborator

The scikit-learn team fixed the problem; let's check if the tests pass now!

@tgnassou
Copy link
Collaborator

Hello @B-Analytics! Now that the tests are passing, can we review or do you still need some time to finish them?

@B-Analytics
Copy link
Author

@tgnassou, yes please go ahead with the review. Thx!

on the source and target domain, the DIPLS and JDOT Regressor on the same task and
illustrate the learned (domain-invariant) features.

.. [36] Nikzad-Langerodi, R., Zellinger, W., Saminger-Platz, S., & Moser, B. A. (2020).
Copy link
Collaborator

Choose a reason for hiding this comment

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

It's 37 now

@@ -61,6 +61,11 @@
OTLabelProp,
JCPOTLabelPropAdapter,
JCPOTLabelProp)

from ._dipls import (
Copy link
Collaborator

Choose a reason for hiding this comment

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

no need to put it in two lines

----------
xs : ndarray of shape (n_source_samples, n_features)
Feature data from the source domain.

Copy link
Collaborator

Choose a reason for hiding this comment

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

don't put space between lines of params


References
----------
Ramin Nikzad-Langerodi et al., "Domain-Invariant Regression
Copy link
Collaborator

Choose a reason for hiding this comment

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

missing ref number


Parameters
----------
xs : ndarray of shape (n_source_samples, n_features)
Copy link
Collaborator

Choose a reason for hiding this comment

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

try to keep the convention of skada using Xs instead of xs

# Preliminaries
self.n_, self.n_features_in_ = Xs.shape
self.ns_, _ = Xs.shape
self.x_ = Xs
Copy link
Collaborator

Choose a reason for hiding this comment

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

I don't get why you use x and xs while there are the same data?

@tgnassou
Copy link
Collaborator

I made a little review but more to format the code writing. I'll read more in-depth soon. However, your PR lacks tests for your method to check if everything's working fine. Just get inspired by the already existing tests for shallow methods.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants