###前提・実現したいこと
Python2.7で、csvファイルを入力として、機械学習の一種である自己組織化マップを用いるシステムを作成しています。
しかし、ターミナル上で実行すると以下のようなエラーが発生します。
###発生している問題・エラーメッセージ
/Library/Python/2.7/site-packages/sompy/sompy.py:63: RuntimeWarning: overflow encountered in divide return np.exp(-d**2/(2*s**2)) /Library/Python/2.7/site-packages/sompy/sompy.py:63: RuntimeWarning: divide by zero encountered in divide return np.exp(-d**2/(2*s**2)) /Library/Python/2.7/site-packages/sompy/sompy.py:63: RuntimeWarning: invalid value encountered in divide return np.exp(-d**2/(2*s**2)) Traceback (most recent call last): File "som.py", line 35, in <module> plt.imshow(output_map, interpolation='none') File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/pyplot.py", line 2892, in imshow imlim=imlim, resample=resample, url=url, **kwargs) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/axes.py", line 7300, in imshow im.set_data(X) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/matplotlib/image.py", line 429, in set_data raise TypeError("Invalid dimensions for image data") TypeError: Invalid dimensions for image data
###該当のソースコード
本プログラム
import numpy as np import matplotlib.pyplot as plt import csv import pandas as pd from sompy import SOM def normalize(v, axis=-1, order=2): l2 = np.linalg.norm(v, ord = order, axis=axis, keepdims=True) l2[l2==0] = 1 return v/l2 pp = pd.read_csv("some.csv", header=0) df = pp.as_matrix().astype('float') df_new = normalize(df) output_shape = (40,40) som = SOM(output_shape, df_new) som.set_parameter(neighbor=0.26, learning_rate=0.22) output_map = som.train(20000) plt.imshow(output_map, interpolation='none') plt.show()
入力に用いたCSVファイルの中身
0 1 2 3 4 0.048521 0.066387 0.10432 0.039724 0.103845
###試したこと
最初は入力ベクトルの正規化が行われていないことが原因だと感じたため、
正規化を行うプログラムを記述しましたが、エラーは解消されませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
from sompy import SOM は、以下のURLからインポートしました。
http://www.iandprogram.net/entry/2016/09/20/175441
言語 : Python2.7.10
エディタ : atom
MacOS High Sierra 10.13.2