この本(http://glasses-se-note.com/bookrecommend5/)でscikit learnによる機械学習のチャプターで画像を8 x 8ピクセルに変換して、matplotlibで表示するサンプルプログラムがあるが、そのまま自分のPCで実行しても、変換後、ウィンドウが全然表示されない。。。
作成したPythonプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Scikit learnのサンプル学習データを取り込む from sklearn import datasets # 描画のためにmatplotlibモジュールを取り込む from matplotlib import pyplot as plt, cm # 手書き数字データを読み込む digits = datasets.load_digits() data = digits.images[0] # 描画 plt.imshow(data.reshape(8, 8), cmap=cm.gray_r, interpolation='nearest') plt.show() |
参考書といくら見比べても、プログラムは間違っていないので、Python側の設定を疑った。案の定以下の手順で解消した。
1.matplotlibの設定ファイルの場所を確認する
1 2 3 4 5 6 |
PS C:\> python Python 3.6.5 |Anaconda, Inc.| (default, Mar 29 2018, 13:32:41) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import matplotlib >>> matplotlib.matplotlib_fname() 'C:\\Users\\Anaconda3\\lib\\site-packages\\matplotlib\\mpl-data\\matplotlibrc' |
このmatplotlibrcというファイルを開く。
2.backendの設定を変更する
1 2 3 4 5 6 7 8 9 10 11 |
## The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo ## MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG ## Template. ## You can also deploy your own backend outside of matplotlib by ## referring to the module name (which must be in the PYTHONPATH) as ## 'module://my_backend'. ## ## If you omit this parameter, it will always default to "Agg", which is a ## non-interactive backend. ## backend : qt5agg backend : tkagg |
backendの設定が「qt5aqq」になっているが、これは画面表示ができないもののよう。(私の環境は、Windows10)
なので、「#」で設定をコメントアウトして、「tkagg」に変更する。
これで、ウィンドウが表示された!
ちなみにこれは、scikit learnふ含まれる手書き数字のサンプルデータ。