Partial Least Squares (PLS) algoritmo è implementato nella libreria scikit-learn, come documentato qui: http://scikit-learn.org/0.12/auto_examples/plot_pls.html Nel caso in cui y è un vettore binario, una variante di questo algoritmo viene utilizzato , l'algoritmo Partial least squares Discriminant Analysis (PLS-DA). Il modulo PLSRegression in sklearn.pls implementa anche questo caso binario? In caso contrario, dove posso trovare un'implementazione Python per questo? Nel mio caso binario, io sto cercando di utilizzare il PLSRegression:PLS-DA algoritmo in pitone
pls = PLSRegression(n_components=10)
pls.fit(x, y)
x_r, y_r = pls.transform(x, y, copy=True)
Nella funzione di trasformazione, il codice ottiene un'eccezione in questa linea:
y_scores = np.dot(Yc, self.y_rotations_)
Il messaggio di errore è "ValueError: matrici non sono allineati ". Yc è il vettore y normalizzato e self.y_rotations_ = [1.]. Nella funzione di adattamento, self.y_rotations_ = np.ones (1) se l'originale y è un vettore univariato (y.shape 1 = 1).
Hai mai risolto questo? Ho provato lo stesso metodo (usando l'ultima versione di scikit-learn) e sembra fare perfettamente PLS-DA. La chiave è di etichettare le classi con 1 e 0 (per la stessa/altra classe). Se ancora non riesci a farlo funzionare, puoi pubblicare i tuoi dati? – mfitzp
Non ho ancora risolto, ma proverò la soluzione user3178149. Grazie per aver offerto il tuo aiuto! –
@mfitzp La regressione dei minimi quadrati è uguale all'analisi discriminante parziale dei minimi quadrati? Sto cercando di capire come ottenere trame dai primi due componenti. –