matplotlibの日本語対応
plotに日本語を含めていると化けるので、日本語フォントを使えるようにする。
matplotlibのフォントディレクトリに対応フォントを入れて、fontlistを更新する。
事前準備
- https://ipafont.ipa.go.jp/ から、フォントファイルをダウンロードする。
- C:\ProgramData\Anaconda3\Lib\site-packages\matplotlib\mpl-data\fonts\ttf に、フォントファイル(ipaexg.ttf)を保存する。
- 次のコードを実行する。フォントのリビルド(※)
import matplotlib.font_manager as fm fm._rebuild()
実際に日本語をプロットするとき
- 日本語をプロットしたい.pyファイルの中で、以下の1文をれておく
import matplotlib.pyplot as plt plt.rcParams["font.family"] = "IPAexGothic"
sklearnでクラスタリング(その2)
プロットするプログラムhello_scatterもつけてみた。
import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans def hello_kmeans_demo(): X = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]]) """ array([[ 1, 2], [ 1, 4], [ 1, 0], [10, 2], [10, 4], [10, 0]]) X.shapeは、(6,2) """ kmeans = KMeans(n_clusters=2, random_state=0).fit(X) #クラスタリングの結果のラベルが手に入る Y=np.array(kmeans.labels_) #print("cluster_centers_",kmeans.cluster_centers_) #print("inertia_",kmeans.inertia_) #print("kmeans.n_iter_",kmeans.n_iter_) #プロット関数呼び出し hello_scatter(X,Y) def hello_scatter(np_data,np_target=None,dim_x=0,dim_y=1): """ 指定された次元で、scatterプロットする。 targetのラベルが0ならば赤、1ならば緑、2ならば青、それ以外は黒でプロット。 """ color_list=["black"]*np_data.shape[0]#shapeで(行,列)が返ってくるので行数分のリストを作成。 for i in np.where(np_target==0)[0]: color_list[i]="red" for i in np.where(np_target==1)[0]: color_list[i]="green" for i in np.where(np_target==2)[0]: color_list[i]="blue" #arrayは、[行,列]で指定 plt.scatter(x=np_data[:,dim_x], y=np_data[:,dim_y], c=color_list, marker=".") plt.grid(True) plt.show() if __name__ == "__main__": hello_kmeans_demo()
sklearnでクラスタリング(その1)
データ形式がこうなっていれば、直接KMeansに渡せる。2次元データ6件分。
array([[ 1, 2], [ 1, 4], [ 1, 0], [10, 2], [10, 4], [10, 0]])
以降、確認に使ったコード
>>> import numpy as np >>> from sklearn.cluster import KMeans >>> X = np.array([[1, 2], [1, 4], [1, 0],[10, 2], [10, 4], [10, 0]]) >>> >>> X array([[ 1, 2], [ 1, 4], [ 1, 0], [10, 2], [10, 4], [10, 0]]) >>> kmeans = KMeans(n_clusters=2, random_state=0).fit(X) >>> kmeans.labels_ array([1, 1, 1, 0, 0, 0]) >>> kmeans.predict([[0, 0], [12, 3]]) array([1, 0])
anacondaでTensorFlow環境の準備 その2
VS Codeを使っているので、デバッグとかのための手続き。
Pythonのパスを書き換えればよいらしい。フォルダごととか、ワークスペースごととか設定がありそう。
"python.pythonPath": "C:\\Users\\Cucco\\AppData\\Local\\Continuum\\anaconda3\\envs\\tensorflow_gpuenv\\pythonw.exe"
VS Codeの左下の実行環境が選べるようになっているので、勝手に環境見つけている??
設定書き換えたから?
参考
VS Code で Anaconda の Python デバッグ 環境構築(Visual Studio Code) - BEACHSIDE BLOG
Windows10環境にAnaconda+Visual Studio CodeでPython環境を構築【2017年9月】
anacondaでTensorFlow環境の準備
何が起きているかわからないが以下で成功した。
(base) C:\>conda create -n tensorflow_gpuenv tensorflow-gpu
いろいろインストールしていい?と質問があるのでyを回答。
以上で使えました。
環境を使うときのおまじないは以下。
# To activate this environment, use # # $ conda activate tensorflow_gpuenv # # To deactivate an active environment, use # # $ conda deactivate
Install TensorFlow with pip | TensorFlow にあった動作確認プログラムを動かしてみる。
(tensorflow_gpuenv) C:\>python -c "import tensorflow as tf; print(tf.__version__)" 1.11.0
TensorFlow にあったサンプルのプログラムをC:\tensor\hello_tensor.pyに保存して実行するとこんな感じ。
(tensorflow_gpuenv) C:\>python C:\tensor\hello_tensor.py Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz 11493376/11490434 [==============================] - 1s 0us/step Epoch 1/5 2018-10-27 12:06:34.981339: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2 2018-10-27 12:06:36.063940: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1411] Found device 0 with properties: name: GeForce GTX 1050 Ti major: 6 minor: 1 memoryClockRate(GHz): 1.62 pciBusID: 0000:01:00.0 totalMemory: 4.00GiB freeMemory: 3.30GiB 2018-10-27 12:06:36.070639: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1490] Adding visible gpu devices: 0 2018-10-27 12:06:36.586738: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] Device interconnect StreamExecutor with strength 1 edge matrix: 2018-10-27 12:06:36.591156: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] 0 2018-10-27 12:06:36.593388: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990] 0: N 2018-10-27 12:06:36.595640: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1103] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 3011 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1050 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1) 60000/60000 [==============================] - 9s 143us/step - loss: 0.2009 - acc: 0.9416 Epoch 2/5 60000/60000 [==============================] - 6s 93us/step - loss: 0.0803 - acc: 0.9755 Epoch 3/5 60000/60000 [==============================] - 6s 93us/step - loss: 0.0518 - acc: 0.9836 Epoch 4/5 60000/60000 [==============================] - 6s 94us/step - loss: 0.0365 - acc: 0.9888 Epoch 5/5 60000/60000 [==============================] - 6s 94us/step - loss: 0.0268 - acc: 0.9910 10000/10000 [==============================] - 0s 45us/step
一方で、失敗例。tensorFlowのPipインストール手順で環境構築したら、動作確認プログラムがモジュールが足りない、となった。
何が悪いんだろう?
(venv) (base) C:\>python -c "import tensorflow as tf; print(tf.__version__)" Traceback (most recent call last): File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module> from tensorflow.python.pywrap_tensorflow_internal import * File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module> _pywrap_tensorflow_internal = swig_import_helper() File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "C:\venv\lib\imp.py", line 243, in load_module return load_dynamic(name, filename, file) File "C:\venv\lib\imp.py", line 343, in load_dynamic return _load(spec) ImportError: DLL load failed: 指定されたモジュールが見つかりません。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\venv\lib\site-packages\tensorflow\__init__.py", line 22, in <module> from tensorflow.python import pywrap_tensorflow # pylint: disable=unused-import File "C:\venv\lib\site-packages\tensorflow\python\__init__.py", line 49, in <module> from tensorflow.python import pywrap_tensorflow File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 74, in <module> raise ImportError(msg) ImportError: Traceback (most recent call last): File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in <module> from tensorflow.python.pywrap_tensorflow_internal import * File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in <module> _pywrap_tensorflow_internal = swig_import_helper() File "C:\venv\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description) File "C:\venv\lib\imp.py", line 243, in load_module return load_dynamic(name, filename, file) File "C:\venv\lib\imp.py", line 343, in load_dynamic return _load(spec) ImportError: DLL load failed: 指定されたモジュールが見つかりません。 Failed to load the native TensorFlow runtime. See https://www.tensorflow.org/install/install_sources#common_installation_problems for some common reasons and solutions. Include the entire stack trace above this error message when asking for help.