r2_sum = 0
naY = np.array(Y_train)
for i in range(0,2):
Y_pred=np.dot(pls.x_scores_[:,i].reshape(-1,1),
pls.y_loadings_[:,i].reshape(-1,1).T)*naY.std(axis=0, ddof=1)+naY.mean(axis=0)
r2_sum += round(r2_score(Y_train,Y_pred),4)
print('R2 for %d component : %g' %(i+1,round(r2_score(Y_train,Y_pred),4)))
#Sum of above
print('R2 for all components (sum above) : %g' %r2_sum)
#Calcuted from PLSRegression's 'predict' function.
print('R2 for all components (r2_score fct.): %g' %round(r2_score(Y_train,pls.predict(X_train)),4))