CNNでデータ解析しようと思い、エクセルファイルのデータを変換しようとすると、エラーが発生します。
(AttributeError: 'DataFrame' object has no attribute 'reshape')
いろいろ触ってみたのですが、原因がわかりません。
どなたか、ご指導よろしくお願いします。
mport keras from keras.models import Sequential from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D #from keras.optimizers import RMSprop #from keras.utils import np_utils #from sklearn.datasets import fetch_mldata import pandas as pd import numpy as np import matplotlib import matplotlib.pyplot as plt # 評価用に元の配列形式をコピーしておく x_train_befor=x_train x_test_befor=x_test y_train_befor = y_train y_test_befor = y_test # データを加工する # 1次元に加工する場合(畳み込みは2次元)(デフォルトは2次元) #x_train = x_train.reshape(60000, 784) #x_test = x_test.reshape(10000, 784) # データを float 型に変換 x_train = x_train.astype('float32') x_test = x_test.astype('float32') # 0〜255 までの範囲のデータを 0〜1 までの範囲に変更(正規化) x_train /= 255 x_test /= 255 # 分類するクラス数 y_train = keras.utils.to_categorical(y_train, 10) y_test = keras.utils.to_categorical(y_test, 10) # 後の評価で使用? y_test_backup = y_test
# 両方のサイズを確認 print("x_train.shape(学習用の画像データ) : ", x_train.shape) print("y_train_shape(学習用の正解データ) : ", y_train.shape) print("x_test.shape(テスト用の画像データ) : ", x_test.shape) print("y_test.shape(テスト用の正解データ) : ", y_test.shape)
x_train.shape(学習用の画像データ) : (800, 784) y_train_shape(学習用の正解データ) : (800, 10) x_test.shape(テスト用の画像データ) : (200, 784) y_test.shape(テスト用の正解データ) : (200, 10)
print(x_train)
NO1 NO2 NO3 NO4 NO5 NO6 NO7 NO8 NO9 NO10 ... NO775 NO776 \
462 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
985 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
540 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
397 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
921 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
886 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
915 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
544 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
.. ... ... ... ... ... ... ... ... ... ... ... ... ...
591 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
496 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
896 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
476 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
884 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0
NO777 NO778 NO779 NO780 NO781 NO782 NO783 NO784
462 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
985 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
540 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
397 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
93 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
962 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
400 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
749 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
530 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
544 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
.. ... ... ... ... ... ... ... ...
916 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
207 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
588 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
591 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
496 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
896 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
476 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
884 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
144 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
[800 rows x 784 columns]
import numpy as np y_test_befor = np.array(y_test_befor).ravel()
# 配列を確認 print(y_test_befor) print(y_test)
[1 3 6 6 3 3 9 2 8 1 1 6 3 4 9 8 5 1 0 7 0 5 4 1 2 6 1 0 2 3 2 1 1 4 8 6 5 9 5 4 2 6 8 8 7 5 7 2 5 9 4 7 6 0 7 3 4 7 4 0 5 3 6 0 0 1 1 4 1 6 2 9 3 0 3 2 6 1 4 7 1 6 9 7 8 3 3 0 6 9 0 3 2 4 3 5 1 4 1 2 9 9 2 7 1 1 7 3 2 7 3 8 9 9 0 7 8 8 9 4 9 9 8 1 0 1 8 2 0 9 3 7 3 4 3 8 1 9 5 0 4 5 1 0 1 6 7 8 2 1 2 0 4 0 3 5 2 7 1 7 9 6 2 1 6 0 5 3 7 4 8 2 7 4 3 2 8 2 3 5 5 6 7 7 9 1 6 4 5 6 1 9 5 5 9 4 3 7 9 1] [[0. 1. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 1. 0. 0.] [0. 0. 0. ... 0. 0. 1.] [0. 1. 0. ... 0. 0. 0.]]
import pandas as pd import numpy as np import matplotlib import matplotlib.pyplot as plt # 28x28x1のサイズへ変換 x_train = x_train.reshape(x_train.shape[0], 28, 28,1) x_test = x_test.reshape(x_test.shape[0], 28, 28,1) # モデルの宣言 model = Sequential() # 先に作成したmodelへレイヤーを追加 model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28,28,1))) #input_shape=(28,28,1))) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(32, activation='relu')) model.add(Dense(10, activation='softmax')) # Learnig Processの設定 model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
import numpy as np y_test_befor = np.array(y_test_befor).ravel()
# 配列を確認 print(y_test_befor) print(y_test)
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-25-26e1de0a6750> in <module> 10 11 # 28x28x1のサイズへ変換 ---> 12 x_train = x_train.reshape(x_train.shape[0], 28, 28,1) 13 x_test = x_test.reshape(x_test.shape[0], 28, 28,1) 14 C:\python\anaconda\pgm\lib\site-packages\pandas\core\generic.py in __getattr__(self, name) 5065 if self._info_axis._can_hold_identifiers_and_holds_name(name): 5066 return self[name] -> 5067 return object.__getattribute__(self, name) 5068 5069 def __setattr__(self, name, value): AttributeError: 'DataFrame' object has no attribute 'reshape'