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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

エラー文の処理ができないです

tubusio
tubusio

総合スコア11

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

144閲覧

投稿2019/06/20 04:48

編集2019/06/24 05:54

https://github.com/tizuo/keras/blob/master/LSTM%20with%20multi%20variables.ipynb

このサイトにあるプログラムを使って機械学習をしようと思っているのですが、
CSVファイルを作るまではできたんですがプログラムが動かない状態です。
前にも質問させていただいて、回答者の協力もありエラー文の半分くらいは処理できたんですが、
残りのエラー文が検索等おこなっても解決できず、わかる方がいれば教えてほしいです。

import numpy import pandas from keras.models import Sequential from keras.layers import Dense from keras import optimizers from keras.wrappers.scikit_learn import KerasRegressor from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold from sklearn.model_selection import GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline from keras.models import load_model import os import argparse #---------------------------- # get command line variables #---------------------------- parser = argparse.ArgumentParser(description='Make models by keras. Place Y on the head column in the cleaned dataset with header names on the top row. Rows containing null values will be deleated.') parser.add_argument('--mode', choices=['create', 'predict'], dest='mode', metavar='create/predict', type=str, nargs='+', required=True, help='an integer for the accumulator') parser.add_argument('--input_file', dest='input_file', type=str, nargs='+', required=True, help='path to dataset or model') parser.add_argument('--method', choices=['binary', 'multiple', 'regression'], metavar='binary/multiple/regression', dest='method', type=str, nargs='+', required=True, help='Model type you solve') parser.add_argument('--output_file', dest='output_file', default=False, required=False, help='If you input output_file it will save result as directed path.') parser.add_argument('--model_file', dest='model_file', default=False, nargs='*', help='If you input model_file it will save or load a model.') parser.add_argument('--definition', metavar='array of data type such as str, int and float with delimiter [,]', dest='definition', default=False, nargs='*', help='If you define data type of columns, send array of full column definitions.') args = parser.parse_args() #---------------------------- # functions #---------------------------- class MakeModel: #init def __init__(self, args): self.X = self.Y = [] self.row_length = self.column_length = 0 self.method = args.method[0] self.ifp = args.input_file[0] if args.model_file != False: self.mfp = args.model_file[0] else: self.mfp = False if args.output_file != False: self.ofp = args.output_file[0] else: self.ofp = False if args.definition != False: self.dfin = args.definition.split(",") else: self.dfin = False #create layers def create_model(self, evMethod, neurons, layers, act, learn_rate, cls, mtr): # Criate model model = Sequential() model.add(Dense(neurons, input_dim=self.column_length, kernel_initializer='normal', activation='relu')) for i in range(1, layers): model.add(Dense(int(numpy.ceil(numpy.power(neurons,1/i)*2)), kernel_initializer='normal', activation='relu')) model.add(Dense(cls, kernel_initializer='normal', activation=act)) # Compile model adam = optimizers.Adam(lr=learn_rate) model.compile(loss=evMethod, optimizer=adam, metrics=mtr) return model #load dataset def load_dataset(self): dataframe = pandas.read_csv(self.ifp, header=0, encoding="sjis").dropna() if self.dfin != False: dataframe[dataframe.columns].apply(lambda x: x.astype(self.dfin[dataframe.columns.get_loc(x.name)])) dataframe_X = pandas.get_dummies(dataframe[dataframe.columns[1:]]) #create dummy variables if self.method == 'multiple': dataframe_Y = pandas.get_dummies(dataframe[dataframe.columns[0]]) #create dummy variables else: dataframe_Y = dataframe[dataframe.columns[0]] #print(dataframe_Y.head()) #print(dataframe_X.head()) self.row_length, self.column_length = dataframe_X.shape self.X = dataframe_X.values self.Y = dataframe_Y.values #train def train_model(self): #pipe to Grid Search estimators = [] estimators.append(('standardize', StandardScaler())) #rely on chosen method parameters if self.method == 'binary': evMethod = ['binary_crossentropy'] activation = ['sigmoid'] metr = [['accuracy']] estimators.append(('mlp', KerasClassifier(build_fn=self.create_model, epochs=10, batch_size=200, verbose=1))) cls = [1] elif self.method == 'multiple': evMethod = [['categorical_crossentropy']] activation = ['softmax'] metr = [['accuracy']] estimators.append(('mlp', KerasClassifier(build_fn=self.create_model, epochs=10, batch_size=200, verbose=1))) cls = [self.Y.shape[1]] else: evMethod = ['mean_squared_error'] activation = [None] metr = [None] estimators.append(('mlp', KerasRegressor(build_fn=self.create_model, epochs=10, batch_size=200, verbose=1))) cls = [1] pipeline = Pipeline(estimators) #test parameters batch_size = list(set([int(numpy.ceil(self.row_length/i)) for i in [1000,300,100]])) epochs = [10, 50, 100] neurons = list(set([int(numpy.ceil(self.column_length/i)*2) for i in numpy.arange(1,3,0.4)])) learn_rate = [0.001, 0.005, 0.01, 0.07] layers = [1,2,3,4,5] #test parameter """batch_size = [31] epochs = [100] neurons = [32] learn_rate = [0.01] layers = [5]""" #execution param_grid = dict(mlp__neurons = neurons, mlp__batch_size = batch_size, mlp__epochs=epochs, mlp__learn_rate=learn_rate, mlp__layers=layers, mlp__act=activation, mlp__evMethod=evMethod, mlp__cls=cls, mlp__mtr=metr) grid = GridSearchCV(estimator=pipeline, param_grid=param_grid) grid_result = grid.fit(self.X, self.Y) #output best parameter condition clf = [] clf = grid_result.best_estimator_ print(clf.get_params()) accuracy = clf.score(self.X, self.Y) if self.method in ['binary', 'multiple']: print("\nAccuracy: %.2f" % (accuracy)) else: print("Results: %.2f (%.2f) MSE" % (accuracy.mean(), accuracy.std())) #save model if self.mfp != False: clf.steps[1][1].model.save(self.mfp) #predict dataset def predict_ds(self): model = load_model(self.mfp) model.summary() sc = StandardScaler() self.X = sc.fit_transform(self.X) pr_Y = model.predict(self.X) if len([self.Y != '__null__']) > 0: if self.method == 'binary': predictions = [float(numpy.round(x)) for x in pr_Y] accuracy = numpy.mean(predictions == self.Y) print("Prediction Accuracy: %.2f%%" % (accuracy*100)) elif self.method == 'multiple': predictions = [] for i in range(0, len(pr_Y)-1): for j in range(0, len(pr_Y[i])-1): predictions.append(int(round(pr_Y[i][j]) - self.Y[i][j])) accuracy_total = len([x for x in predictions if x == 0])/len(predictions) accuracy_tooneg = len([x for x in predictions if x == -1])/len(predictions) accuracy_toopos = len([x for x in predictions if x == 1])/len(predictions) print("Prediction Accuracy: %.2f%% (positive-error:%.2f%%/negative-error:%.2f%%)" % (accuracy_total*100, accuracy_tooneg*100, accuracy_toopos*100)) else: accuracy = numpy.mean((self.Y - pr_Y)**2) print("MSE: %.2f" % (numpy.sqrt(accuracy))) #save predicted result if self.ofp != False: numpy.savetxt(self.ofp, pr_Y, fmt='%5s') #---------------------------- # select mode #---------------------------- m = MakeModel(args) if args.mode == ['create']: #make model m.load_dataset() m.train_model() else: #predict dataset m.predict_ds() m.load_dataset() m.predict_ds()

エラー文

File "auto_analyzer.py", line 190, in <module>
m.predict_ds()
File "auto_analyzer.py", line 152, in predict_ds
model = load_model(self.mfp)
File "C:\Users\shinozaki\Anaconda3\envs\jbmes\lib\site-packages\keras\engine\s
aving.py", line 417, in load_model
f = h5dict(filepath, 'r')
File "C:\Users\shinozaki\Anaconda3\envs\jbmes\lib\site-packages\keras\utils\io
_utils.py", line 197, in init
'Received: {}.'.format(type(path)))
TypeError: Required Group, str or dict. Received: <class 'bool'>.

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

Lhankor_Mhy

2019/06/22 07:10

コードをご提示ください。
tubusio

2019/06/24 05:53

すいません返信遅れました。 了解です。
Lhankor_Mhy

2019/06/24 06:11

パラメータが間違っている、というのが一番ありそうな気がします。
tubusio

2019/06/24 06:21

と、いいますと。。
Lhankor_Mhy

2019/06/24 06:32

エラーを見ると、ファイルパスなどがあるべきところ、ブール値が入っているのが原因だと思います。 で、クラスのコードを見ると、 if args.model_file != False: self.mfp = args.model_file[0] else: self.mfp = False のような処理をしていますから、パラメータの指定が漏れているのではないかと思ったのですが…… 的外れでしたでしょうか?
tubusio

2019/06/24 06:37

うーん、、どうなんでしょう。。 もしそうだとしたらfileの0の部分を違う数字にかえるということですか? 学校の研究でやっているのでぜんぜん知識がなくて、、すいません
Lhankor_Mhy

2019/06/24 06:41

「fileの0の部分」というのが何のことなのかわからないですが、それで動きそうなら試してみてはいかがですか?
tubusio

2019/06/24 06:52

あ、すいません file[0]の0の部分のことです
Lhankor_Mhy

2019/06/24 07:17

たぶん、それは違うんじゃないですかね…… 呼び出し時の --model_file パラメータを指定していないのではないか、という話です。 すみませんが、python のことはともかく、keras モジュールについて私は全然わからないので、ご理解のほどよろしくお願いします。
tubusio

2019/06/24 09:17

なるほど 指定というと具体的にはどのようにプログラムをかればいいんでしょうか?
Lhankor_Mhy

2019/06/24 10:12

逆に今まではどのように呼び出していたのでしょうか?
Lhankor_Mhy

2019/06/24 10:14

あ、別にはぐらかしているわけではないですよ。 なにかのバッチ処理で呼んでいるのであれば、そのコードを変える必要があると思いますので、念のために聞いています。コマンドラインで呼んでいるのであれば、その呼び方をご提示ください。
tubusio

2019/06/24 16:30

python auto_analyzer.py --mode predict --input_file 100.150.csv --method binary です。
Lhankor_Mhy

2019/06/26 00:50

そうすると、そのコマンドに --model_file でファイルパスを指定すればいいのではないでしょうか。
tubusio

2019/06/26 01:24

なるほど、、、、 試してみます!
tubusio

2019/06/26 01:30

今やってみたら今度は別のエラーが、、、w File "auto_analyzer.py", line 182, in <module> m = MakeModel(args) File "auto_analyzer.py", line 48, in __init__ self.mfp = args.model_file[0] IndexError: list index out of range
Lhankor_Mhy

2019/06/26 01:34

--model_file の後に何も書かなかった、とかではないですか?
tubusio

2019/06/26 23:11

あ、なにも書いてないですね。 それって読み込むcsvのファイル名入れればいいんですかね。。。? ちょっと試してみます
tubusio

2019/06/26 23:12

だめでした 何のファイルを指定すればいいんですかね、、、
Lhankor_Mhy

2019/06/27 00:30

うーん、ニューラルネットワークのことはよくわからないので、どちらかというとご研究をされているtubusioさんの方がご専門では……?
tubusio

2019/06/27 03:55

なるほど、、ちょっといろいろ探ってみますw 長くつきあっていただいてありがとうございました!
tubusio

2019/06/27 06:03

プログラムうごきました! ありがとうございました!!!!

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。