I keep getting the error

ModuleNotFoundError: No module named 'sklearn.externals.six'

when running the code below:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import mglearn
import numpy as np
from IPython.display import display
import matplotlib as pl
import sklearn

iris_dataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris_dataset['data'], iris_dataset['target'], random_state=0)
iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
pd.plotting.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker="o", hist_kwds={'bins':20}, s=60, alpha=.8, cmap=mglearn.cm3)

Is there a module I haven’t imported or installed?

You can use something like below..

from six import StringIO

You can use the official six package.
First Install six using: pip install six
and then you import the module. No need to downgrade scikit-learn.

module sklearn.externals.six was removed in version 0.23.
if you want to use this module, you have to downgrade to version 0.22 or lower.

Downgrade your scikit-learn version:

In jupyter notebook:

!pip install --upgrade scikit-learn==0.20.3

In terminal:

pip install --upgrade scikit-learn==0.20.3

After that, the code will recognize the sklearn.external.six module.

You may try this:-

import six
import sys
sys.modules['sklearn.externals.six'] = six

It worked for me.

Courtesy – https://github.com/alkaline-ml/pmdarima/issues/355

I was able to run your code by simply performing these commands:

C:\Windows\system32>pip install sklearn
Collecting sklearn
  Downloading https://files.pythonhosted.org/packages/1e/7a/dbb3be0ce9bd5c8b7e3d87328e79063f8b263b2b1bfa4774cb1147bfcd3f/sklearn-0.0.tar.gz
Collecting scikit-learn (from sklearn)
  Downloading https://files.pythonhosted.org/packages/7e/e5/888491b7e2c16718a68dfd8498325e8927003410b2d19ba255d8751338a5/scikit_learn-0.23.1-cp38-cp38-win_amd64.whl (6.8MB)
     |????????????????????????????????| 6.8MB 2.2MB/s
Collecting joblib>=0.11 (from scikit-learn->sklearn)
  Downloading https://files.pythonhosted.org/packages/b8/a6/d1a816b89aa1e9e96bcb298eb1ee1854f21662ebc6d55ffa3d7b3b50122b/joblib-0.15.1-py3-none-any.whl (298kB)
     |????????????????????????????????| 307kB 3.2MB/s
Collecting threadpoolctl>=2.0.0 (from scikit-learn->sklearn)
  Downloading https://files.pythonhosted.org/packages/db/09/cab2f398e28e9f183714afde872b2ce23629f5833e467b151f18e1e08908/threadpoolctl-2.0.0-py3-none-any.whl
Requirement already satisfied: numpy>=1.13.3 in c:\python38\lib\site-packages (from scikit-learn->sklearn) (1.18.4)
Collecting scipy>=0.19.1 (from scikit-learn->sklearn)
  Downloading https://files.pythonhosted.org/packages/f8/b9/98a75846fdda3756ce75705b518dde4c599ba419d11415ce3fe1ebc4a885/scipy-1.4.1-cp38-cp38-win_amd64.whl (31.0MB)
     |????????????????????????????????| 31.0MB 1.1MB/s
Installing collected packages: joblib, threadpoolctl, scipy, scikit-learn, sklearn
  Running setup.py install for sklearn ... done
Successfully installed joblib-0.15.1 scikit-learn-0.23.1 scipy-1.4.1 sklearn-0.0 threadpoolctl-2.0.0
WARNING: You are using pip version 19.2.3, however version 20.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

C:Windows\system32>pip install mglearn
Collecting mglearn
  Downloading https://files.pythonhosted.org/packages/65/38/8aced26fce0b2ae82c3c87cd3b6105f38ca6d9d51704ecc44aa54473e6b9/mglearn-0.1.9.tar.gz (540kB)
     |????????????????????????????????| 542kB 1.3MB/s
Requirement already satisfied: numpy in c:\python38\lib\site-packages (from mglearn) (1.18.4)
Requirement already satisfied: matplotlib in c:\python38\lib\site-packages (from mglearn) (3.2.1)
Requirement already satisfied: scikit-learn in c:\python38\lib\site-packages (from mglearn) (0.23.1)
Requirement already satisfied: pandas in c:\python38\lib\site-packages (from mglearn) (1.0.3)
Collecting pillow (from mglearn)
  Downloading https://files.pythonhosted.org/packages/91/9e/1b45eed618c35010d8cc3ba57f12baf09af37054665b7cdf79aafa93ed75/Pillow-7.1.2-cp38-cp38-win_amd64.whl (2.0MB)
     |????????????????????????????????| 2.0MB 2.2MB/s
Requirement already satisfied: cycler in c:\python38\lib\site-packages (from mglearn) (0.10.0)
Collecting imageio (from mglearn)
  Downloading https://files.pythonhosted.org/packages/4c/2b/9dd19644f871b10f7e32eb2dbd6b45149c350b4d5f2893e091b882e03ab7/imageio-2.8.0-py3-none-any.whl (3.3MB)
     |????????????????????????????????| 3.3MB 126kB/s
Requirement already satisfied: joblib in c:\python38\lib\site-packages (from mglearn) (0.15.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in c:\python38\lib\site-packages (from matplotlib->mglearn) (2.4.7)
Requirement already satisfied: kiwisolver>=1.0.1 in c:\python38\lib\site-packages (from matplotlib->mglearn) (1.2.0)
Requirement already satisfied: python-dateutil>=2.1 in c:\python38\lib\site-packages (from matplotlib->mglearn) (2.8.1)
Requirement already satisfied: scipy>=0.19.1 in c:\python38\lib\site-packages (from scikit-learn->mglearn) (1.4.1)
Requirement already satisfied: threadpoolctl>=2.0.0 in c:\python38\lib\site-packages (from scikit-learn->mglearn) (2.0.0)
Requirement already satisfied: pytz>=2017.2 in c:\python38\lib\site-packages (from pandas->mglearn) (2020.1)
Requirement already satisfied: six in c:\python38\lib\site-packages (from cycler->mglearn) (1.14.0)
Installing collected packages: pillow, imageio, mglearn
  Running setup.py install for mglearn ... done
Successfully installed imageio-2.8.0 mglearn-0.1.9 pillow-7.1.2
WARNING: You are using pip version 19.2.3, however version 20.1.1 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

Please note that I have this version of Python on my system:

C:\Windows\system32>python --version
Python 3.8.3

Here are the versions of sklearn and mglearn on my system:

C:\Windows\system32>pip list
...
mglearn           0.1.9
...
scikit-learn      0.23.1
...

It will be in pandas 0.22 module as after upgradation of version , it was removed i.e. sklearn.external.six .
you can check documentation if still confused.

Depending on which IDE you’re using but if it is spyder then you have to add a spyder kernel as must to your python installation using the following code:
pip install spyder-kernels

I’m coming late, but this is due to the mglearn package (which internally tries to import six).

You must have an old version, because their versions posted on github don’t have this issue. Perhaps from a CD coming with the book…

To fix the issue do something along the lines of:
pip install --upgrade mglearn

ModuleNotFoundError: No module named ‘sklearn.externals’; ‘sklearn’ is not a package

I had this error show up and tried everything here. Eventually realized that I had named a file “sklearn.py” in the directory…

Replace the header fixed for me
import six

pip install --upgrade scikit-learn==0.20.3