"No module named 'sklearn.preprocessing.data'"

### Describe the bug

**Note:** Fairly new to Anaconda, Scikit-learn etc. 

When I try to load a h5 file from [this zip](https://dax-cdn.cdn.appdomain.cloud/dax-oil-reservoir-simulations/1.0.0/oil-reservoir-simulations.tar.gz), with the following code:

(Importing the data set)

```
print('Downloading dataset archive {} ...'.format(dataset_download_url))

data_file_name = Path((urlparse(dataset_download_url).path)).name

r = requests.get(dataset_download_url)

if r.status_code != 200:
    print('Error. Dataset archive download failed.')
else:
    # save the downloaded archive
    print('Saving downloaded archive as {} ...'.format(data_file_name))
    with open(data_file_name, 'wb') as downloaded_file:
        downloaded_file.write(r.content)
    
    if tarfile.is_tarfile(data_file_name):
        # extract the downloaded archive
            print('Extracting downloaded archive ...')
            with tarfile.open(data_file_name, 'r') as tar:
                tar.extractall()
            print('Removing downloaded archive ...')
            Path(data_file_name).unlink()
            print('Done.')
    else:
        print('Error. The downloaded file is not a valid TAR archive.')
```

(Loading the h5 file)

```
from sklearn.preprocessing import StandardScaler
import pickle

trianglefn = "SPE9-TRIANGLE.Aspect3.compressed.h5"
with h5.File(trianglefn, 'r') as f:
    Y = f['outp_stdscalerobj'][()]
    print(Y)
    pickle.loads(Y)
```

It prints Y successfully. By itself it is an array format. 


```
[128.   3.  99. 115. 107. 108. 101.  97. 114. 110.  46. 112. 114. 101.
 112. 114. 111.  99. 101. 115. 115. 105. 110. 103.  46. 100.  97. 116.
  97.  10.  83. 116.  97. 110. 100.  97. 114. 100.  83.  99.  97. 108.
 101. 114.  10. 113.   0.  41. 129. 113.   1. 125. 113.   2.  40.  88.
...
```

But loading it with pickle gives me an error `No module named sklearn.preprocessing.data`.

After some research it seems like from Scikit-learn version 0.22 and on uses `sklearn.preprocessing._data`. Although I'm not 100% sure if the underscore is the issue (that might mean the pickle module is outdated), could also be the file is pickled in an earlier scikit-learn version and I'm unpickling it in a later version, nevertheless it seems weird that the `pickle.loads` function is not already picking that up.

Tried downgrading/upgrading Scikit-learn, but unable to install it beneath v0.22.

Using Python 3.9, Conda version 4.11. The full code is [here](https://dataplatform.cloud.ibm.com/exchange/public/entry/view/dcf7b09bd340e6ff9a2d1869632d0a63?context=cpdaas), quite hefty. I just want to be able to load the file successfully, however, hence much of it might be irrelevant.

Any hints on at least getting around this formatting issue will be appreciated, thank you.

Another note, I was able to run this code successfully in the past year, but I don't remember which version of scikit-learn it was on. But just want to confirm that it's worked in the past.

### Steps/Code to Reproduce

(After you download the data set)
```
from sklearn.preprocessing import StandardScaler
import pickle

trianglefn = "SPE9-TRIANGLE.Aspect3.compressed.h5"
with h5.File(trianglefn, 'r') as f:
    Y = f['outp_stdscalerobj'][()]
    print(Y)
    pickle.loads(Y)
```

### Expected Results

No error is thrown. 

### Actual Results

```
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
/tmp/wsuser/ipykernel_998/578847027.py in <module>
      1 with h5.File(trianglefn, 'r') as f:
----> 2     Y = pickle.loads(f['outp_stdscalerobj'][()])

ModuleNotFoundError: No module named 'sklearn.preprocessing.data'
```


### Versions

```shell
System:
    python: 3.9.7 (default, Sep 16 2021, 13:09:58)  [GCC 7.5.0]
executable: /opt/conda/envs/Python-3.9/bin/python
   machine: Linux-4.15.0-176-generic-x86_64-with-glibc2.28

Python dependencies:
          pip: 21.2.4
   setuptools: 58.0.4
      sklearn: 1.0.2
        numpy: 1.20.3
        scipy: 1.7.3
       Cython: None
       pandas: 1.3.4
   matplotlib: 3.5.0
       joblib: 0.17.0
threadpoolctl: 2.2.0

Built with OpenMP: True
```
```

COMMENT:
As stated in our [Model Persistence](https://scikit-learn.org/stable/model_persistence.html#security-maintainability-limitations), pickling and unpickling on different version of scikit-learn is not supported. To successfully unpickle, the scikit-learn version must match the version used during pickling. As you noted, you need a version of scikit-learn with `sklearn.preprocessing.data` which could be 0.21.3. According to [pypi](https://pypi.org/project/scikit-learn/0.21.3/#files), scikit-learn 0.21.3 requires Python 3.5 - 3.7. (Also according to [anaconda's scikit-learn page](https://anaconda.org/anaconda/scikit-learn/files?page=9) Python 3.7 is required for scikit-learn 0.21.3)

I suggest install Python 3.7 and then installing scikit-learn 0.21.3 and see if you can unpickle. If 0.21.3 does not work, you would need to continue downgrading until you find the version that does not error.

Labels: Bug, Question