質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

1回答

2849閲覧

Python 自己組織化マップのプログラム TypeErrorを解消したい

nh_ago

総合スコア6

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

1クリップ

投稿2018/01/15 02:28

編集2018/01/15 06:50

###前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nh_ago

2018/01/15 06:51 編集

@quiqui ご指摘ありがとうございます。編集致しました。
guest

回答1

0

サンプルなどの動作を見たところ、このライブラリの入力は複数の3次元のデータのようなので、データを下記のようにしたらエラーなく動作することは確認しました。

csv

1(some.csv) 20,1,2 30.048521,0.066387,0.10432 40.048521,0.036387,0.10432 50.48521,0.066387,0.50432 6...

正規化がうまく動かなかったので、外して動作させました。

投稿2018/06/18 12:59

K_S_

総合スコア419

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問