前提・実現したいこと
300行×500列程度でまとめられているcsvから300行×357列を説明変数として抽出し、1列を目的変数としたニューラルネットワークを構築したいです。(データは入力1列×357行で、データ数300という意味です。)
発生している問題・エラーメッセージ
Traceback (most recent call last): File "/home/deepstation/PycharmProjects/FP-f/FP-f-linear-E1000-191031.py", line 164, in <module> validation_data = (X_validation, Y_validation)) File "/home/deepstation/PycharmProjects/untitled/venv/lib/python3.4/site-packages/keras/engine/training.py", line 1089, in fit batch_size=batch_size) File "/home/deepstation/PycharmProjects/untitled/venv/lib/python3.4/site-packages/keras/engine/training.py", line 676, in _standardize_user_data 'You passed: x=' + str(x)) ValueError: Please provide as model inputs either a single array or a list of arrays. You passed: x= C1_1 C1_2 C1_3 C1_4 C1_5 C1_6 C1_7 \ 148 0.438596 1.331228 2.122105 2.622105 2.685614 2.496491 2.689123 201 0.127273 1.336727 3.918545 5.188727 5.730182 5.492727 5.461091 42 0.000000 0.082857 0.171429 0.641224 1.286531 2.179592 2.991020 .. ... ... ... ... ... ... ... 103 0.424242 0.351818 0.736970 2.262121 3.536364 3.795455 3.435758 266 0.145455 0.676364 1.847273 3.076364 4.167273 4.181818 4.345455 44 0.142857 0.130612 0.122449 0.318367 0.975510 1.775510 2.706122 181 0.000000 0.173333 0.609412 1.122353 1.705882 2.258824 2.283922 C7_45 C7_46 C7_47 C7_48 C7_49 C7_50 C7_51 148 5.844211 5.589474 4.260351 2.949825 1.710877 0.666667 0.000000 201 3.413091 2.803636 2.093091 1.345818 0.674182 0.241091 0.145455 42 0.142857 0.014286 0.122449 0.122449 0.019592 0.122449 0.142857 178 11.686452 11.250000 10.036129 6.688710 3.902581 1.641935 0.290323 165 0.600678 0.284746 0.237288 0.237288 0.251525 0.227458 0.220339 [244 rows x 357 columns]
該当のソースコード
p
1 2#データの生成 3df = pd.read_csv('f-fpressure.csv', sep=",", header=0) 4 5train_size = 0.9 6N_validation = 0.1 7 8X = DataFrame(df.loc[:, 'C1_1':'C7_51']) 9 10Y = DataFrame(df["F_history"]) 11 12 13X_train, X_test, Y_train, Y_test = \ 14 train_test_split(X, Y, train_size=0.9) 15X_train, X_validation, Y_train, Y_validation = \ 16 train_test_split(X_train, Y_train, test_size=0.1) 17 18#モデル設定 19 20n_in = 357 21n_hidden = 200 22n_out = 1 23p_keep = 0.5 24activation = 'linear' 25alpha = 0.01 26lynum = '3' 27outact = 'softmax' 28 29model = Sequential() 30 31model.add(Dense(n_hidden)) 32model.add(Activation(activation)) 33model.add(Dropout(p_keep)) 34 35model.add(Dense(n_out)) 36model.add(Activation('softmax')) 37 38model.compile(loss='categorical_crossentropy', 39 optimizer=SGD(lr=0.01, momentum=0.9), 40 metrics=['accuracy']) 41 42#モデル学習 43batch_size = 200 44hist_acc_t = hist_acc_v = hist_loss_t = hist_loss_v = [] 45max_epochs = 1000 46 47ep_learn_interval = 50 48 49hist = model.fit(X_train, Y_train, batch_size=batch_size, 50 epochs = max_epochs, 51 validation_data = (X_validation, Y_validation)) 52 53hist_acc_t = hist_acc_t + hist.history['acc'] 54hist_acc_v = hist_acc_v + hist.history['val_acc'] 55hist_loss_t = hist_loss_t + hist.history['loss'] 56hist_loss_v = hist_loss_v + hist.history['val_loss'] 57 58#学習の進み具合を可視化 59 60index = ['acc_t', 'acc_v', 'loss_t', 'loss_v'] 61l = np.array([hist_acc_t, hist_acc_v, hist_loss_t, hist_loss_v]) 62csv = os.path.join(modellog, project_name) 63np.savetxt(csv + '.csv', l1, delimiter=",", fmt = '%3f') 64
試したこと
おそらくデータが300*357列の1個の入力として認識されているのかな?と思いました。以前csvのファイルの余分な情報を消去してX = DataFrame(data.drop("F_history", axis=1))
としたときはうまく行きましたが、今回この実験後に新たな因子を含めて再計算する可能性があるため、元のcsvを改変しないようにしたいです。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー