How to rescale predicted standard deviation values of scikit-learn's GP module to get the actual std values? I am using scikit-learn's Gaussian Process Regression module to model some data. The issue with my data is that I cannot Normalize my data since I don't know the exact bounds of my data: the minimum value could be anything from -10000 or less and the maximum value is 0 and I don't know what the minimum value is as it depends on some other stuff.
While trying to model my data using scikit-learn's GP module I learned that the predicted standard deviation values are always within the range [0-1] which is obviously wrong since I cannot use these values to plot confidence interval. I posted an issue on scikit-learn's regarding this and the scikit-learn developers confirmed that this is a bug in their GP module and they'll fix it.
In the meanwhile, I was thinking of there could be an easy way for me to get the actual standard deviation values from the predicted standard deviation values. I wonder if anyone has an idea on how I can do this?
 A: For the variance for Gaussian process regression the posterior variance has the form:
$$
\sigma(x) = k(x, x) - \mathbf{k}^T K^{-1} \mathbf{k},
$$
where $k(x, x')$ is a covariance function, $\mathbf{k}$ is the vector of covariances between new $x$ and points from training sample, and $K$ is covariance matrix for the training sample. 
The second summand is always non-negative, as $K$ is a non-negative definite matrix.
In sklearn, the default covariance function is $k(x, x') = \exp(-\|x - x'\|^2 / \theta)$, so $k(x, x) = \exp(0) = 1$. From this two statements we get that $\sigma(x) \leq 1$, so from this point of view it is not a bug, it is a proprety of the approach.
The only way to deal with this issue is to use a different kernel. As there are not that many kernels in sklearn, I recommend using a more mature package for Gaussian process regression GPy. 
From notebook https://github.com/SheffieldML/notebook/blob/ddb2a70491221ceb92d34cc3b7dc8b94f382192c/GPy/basic_kernels.ipynb you can see that we have an additional parameter for the kernel, so now 
$$
k_{RBF}(x, x') = \theta_0 \exp(-\|x - x'\|^2 / \theta).
$$
Estimation of $\theta_0$ will give you better scaling properties, as now the upper bound for the posterior variance is not $1$, but $\theta_0^2$.
