Hi Matt,

We do have CCA and other PLS-related transformers / regressors in scikit-learn. They are able to do dimensionality reduction on both X and Y (which I believe correspond to spp and env), so you might want to have a look at these. However, they're not fully compatible with the whole ecosystem unfortunately: for example our Pipeline objects assume that only X can be transformed, not Y.

Nicolas

On 7/31/20 12:02 PM, Gregory, Matthew wrote:
Hi all,

I'm fairly new to scikit-learn, but have been using a predictive model for a 
while now that would benefit from scikit-learn's estimator API.  However, I 
could use some advice on how best to implement this.

Briefly, the model is a combination of dimension reduction and nearest neighbors, but the dimension 
reduction step (canonical correspondence analysis - CCA) relies on two matrices to create the 
synthetic feature scores for the candidates in the nearest neighbor step.  The two matrices are a 
"species" matrix (spp) and an "environmental" matrix (env) which are used to 
create orthogonal CCA axes that are linear combinations of the environmental features.

In reading through the documentation on creating new estimators, it seems that 
every estimator should provide a fit(X, y) method.  Somehow I need my X 
parameter to be both the spp and env matrices together.  I got a lot of good 
inspiration from this post on Stack Overflow:

   
https://stackoverflow.com/questions/45966500/use-sklearn-gridsearchcv-on-custom-class-whose-fit-method-takes-3-arguments

and can mostly understand how the OP implemented this, basically by creating a 
DataHandler class that packs together the two matrices, such that the call to 
fit would look like:

   estimator.fit(DataHandler(spp, env), y)

I'm wondering if this is the best way to handle the design or if I'm not fully 
understanding how I could use a Pipeline to accomplish the same goal.  Thanks 
for any guidance - boilerplate sample code would be most appreciated!

matt

_______________________________________________
scikit-learn mailing list
scikit-learn@python.org
https://mail.python.org/mailman/listinfo/scikit-learn
_______________________________________________
scikit-learn mailing list
scikit-learn@python.org
https://mail.python.org/mailman/listinfo/scikit-learn

Reply via email to