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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

686閲覧

pythonで手形状分類器を作っています

shinya_next

総合スコア15

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2017/11/01 06:45

編集2017/11/01 06:52

###前提・実現したいこと
python初心者です。手形状分類器を作っています。このようなプログラムを組みましたがエラーが出てしまいます。
解決方法を教えてください。
###発生している問題・エラーメッセージ

エラーメッセージ  File "C:/Users/LSL/Desktop/examples/06/trial_handsign_SVM.py", line 50, in <module> train_path = argvs[1] IndexError: list index out of range

###該当のソースコード

# -*- coding: utf-8 -*- import os import sys import glob import numpy as np from skimage import io from sklearn import datasets IMAGE_SIZE = 40 COLOR_BYTE = 3 CATEGORY_NUM = 6 ## ラベル名(0~)を付けたディレクトリに分類されたイメージファイルを読み込む ## 入力パスはラベル名の上位のディレクトリ def load_handimage(date): # ファイル一覧を取得 files = glob.glob(os.path.join(date, '*/*.png')) # イメージとラベル領域を確保 images = np.ndarray((len(files), IMAGE_SIZE, IMAGE_SIZE, COLOR_BYTE), dtype = np.uint8) labels = np.ndarray(len(files), dtype=np.int) # イメージとラベルを読み込み for idx, file in enumerate(files): # イメージ読み込み image = io.imread(file) images[idx] = image # ディレクトリ名よりラベルを取得 label = os.path.split(os.path.dirname(file))[-1] labels[idx] = int(label) # scikit-learn の他のデータセットの形式に合わせる flat_data = images.reshape((-1, IMAGE_SIZE * IMAGE_SIZE * COLOR_BYTE)) images = flat_data.view() return datasets.base.Bunch(data=flat_data, target=labels.astype(np.int), target_names=np.arange(CATEGORY_NUM), images=images, DESCR=None) ##################################### from sklearn import svm, metrics ## 学習データのディレクトリ、テストデータのディレクトリを指定する if __name__ == '__main__': argvs = sys.argv train_path = argvs[1] test_path = argvs[2] # 学習データの読み込み train = load_handimage(train_path) # 手法:線形SVM classifier = svm.LinearSVC() # 学習 classifier.fit(train.data, train.target) # テストデータの読み込み test = load_handimage(test_path) # テスト predicted = classifier.predict(test.data) # 結果表示 print("Accuracy:\n%s" % metrics.accuracy_score(test.target, predicted))

###補足情報(言語/FW/ツール等のバージョンなど)
python 3.6

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

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

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

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

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

LouiS0616

2017/11/01 06:49

エラーがどこで出ているのか、また実行の手順を追記してください。
can110

2017/11/01 06:49

エラー出力結果(Traceback)は差支えない範囲で全て記載してください。(listってどれ?)
guest

回答2

0

ベストアンサー

コマンドライン引数リストsys.argvの範囲外にアクセスしており、エラーが発生しています。
ソースコメントにもあるとおり、実行時にコマンドライン引数にて学習データのディレクトリ、テストデータのディレクトリを指定する必要があります。

コマンドプロンプト上での実行例

>python trial_handsign_SVM.py c:/dir/train_dir c:/dir/test_dir

投稿2017/11/01 06:58

can110

総合スコア38262

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

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

0

呼び出す際に、コマンドライン引数を指定していないからです。
以下、実験コード。

Python

1# hoge.py 2import sys 3print(sys.argv[1])
C:...>python hoge.py Traceback (most recent call last): File "hoge.py", line 2, in <module> print(sys.argv[1]) IndexError: list index out of range C:...>python hoge.py piyo piyo

投稿2017/11/01 06:55

LouiS0616

総合スコア35660

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問