The results of CV on Ridge are different than the results of RidgeCV I am using cross_val_predict to generate cross-validated estimates using Ridge Regression:
reg = linear_model.Ridge(alpha = .5)
pred_r = cross_val_predict(reg, X, y, cv=None)  

Based on this, the correlation between the predicted y and the real y is (0.114601783602, 0.00312638915351).
However, when I use RidgeCV instead:
reg = linear_model.RidgeCV(alphas=[0.1, 1.0, 10.0], cv=10, fit_intercept=True, scoring=None, normalize=False)
pred_r = reg.predict(X)

I get a relatively very high correlation: (0.330446577353, 2.3472470222e-18)
Why do I get so different results? I though these two analysis should generate the same output. Any ideas? Is the way I use RidgeCV correct and valid? Also, since I have around 600 sample, I believe it would be reasonable not to divide the data into training and test sets, and just do CV. I am double-checking this since the results might be published in a journal.
 A: Cross validation is a randomized procedure. You randomly assign samples to one of $k$ folds, then estimate your error statistic in the usual $k$-fold cross validation way. Depending on which samples are in which fold, you will get different parameter estimates and hence different predictions. 
There might be differences in the calls to the cross-validation functions as well, though I'm no expert in the implementation of either. In the first case it looks as though you have specified a single penalty parameter, while the second seems to cross-validate over a (small) grid of them. This, too, will affect the results of the cross-validation procedure. The second one has the opportunity to pick the better one out of three possible penalty parameters. You should read the documentation to both functions.
In summary: there is randomness inherent in cross-validation, so you can't expect the exact same results. Also you might be using the two functions differently and that is another opportunity for results to differ.
A: In addition to the correct answer, I want to point out that you are using different $\alpha$ parameters. 
Whereas in


*

*linear_model.Ridge() you are using $0.5$,

*in linear_model.RidgeCV() you allow $\alpha$ such as $[0.1, 1, 10]$


Further, defining cv=None, cross_val_predict() implies 3-fold-crossvalidation as you can read in the documentation.
On the other hand you are using 10-fold crossvalidation in linear_model.RidgeCV() as you define cv=10.
So besides the randomness introduced by crossvalidation as stated in the previous answer, your choice of parameters harms comparability of results. 
