🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

1回答

3795閲覧

python:データのサイズ変換するとエラーが出てしまいます。

python_2019

総合スコア68

Python

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

0グッド

0クリップ

投稿2019/11/20 06:18

編集2019/11/20 06:36

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'

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

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

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

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

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

tiitoi

2019/11/20 06:29

DataFrame と numpy 配列は全く別物であるという点は認識されていますか?
python_2019

2019/11/20 06:35

申し訳ありません。 あまり理解できておりません。。。
tiitoi

2019/11/20 07:25

DataFrame は pandas という表を扱うライブラリです。 一方、reshape は numpy という数値計算ライブラリの ndarray が持つメソッドです。 なので、DataFrame は reshape というメソッドはないので、エラーとなっています。
python_2019

2019/11/20 07:34

DataFrame ⇒ numpy の変換をして実行したところ、エラーがなくなりました。 どうもありがとうございました。
guest

回答1

0

pandasのデータフレームをreshapeしようとしていますが、pandasのデータフレームにそのような機能はありません。numpy配列に変換してから、reshapeしてください。

投稿2019/11/20 07:00

yamato_user

総合スコア2321

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

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

python_2019

2019/11/20 07:06

numpy配列に変換が必要なのですね。 変換方法を勉強して、やってみます。 ご指導ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問