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

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

新規登録して質問してみよう
ただいま回答率
85.48%
深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

2回答

309閲覧

pythonのcsv読み込みでconvertエラーが起きてしまう

hair

総合スコア10

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2018/12/27 08:04

編集2019/01/03 10:04

イメージ説明pythonを使いcsvに入ってる数値データをdeeplearningで学習させたい。

発生している問題・エラーメッセージ

実行すると
Traceback (most recent call last):
File "C:/Users/tennis/PycharmProjects/sisaku/gsush.py", line 58, in <module>
history = model.fit(x_train, y_train, batch_size=200, epochs=1000, verbose=1, validation_data=(x_test, y_test))
File "C:\Users\tennis\Anaconda3\envs\tensor\lib\site-packages\keras\engine\training.py", line 1037, in fit
validation_steps=validation_steps)
File "C:\Users\tennis\Anaconda3\envs\tensor\lib\site-packages\keras\engine\training_arrays.py", line 199, in fit_loop
outs = f(ins_batch)
File "C:\Users\tennis\Anaconda3\envs\tensor\lib\site-packages\keras\backend\tensorflow_backend.py", line 2666, in call
return self._call(inputs)
File "C:\Users\tennis\Anaconda3\envs\tensor\lib\site-packages\keras\backend\tensorflow_backend.py", line 2619, in _call
dtype=tf.as_dtype(tensor.dtype).as_numpy_dtype))
File "C:\Users\tennis\Anaconda3\envs\tensor\lib\site-packages\numpy\core\numeric.py", line 501, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: 'v -0.670323 0.017320 2.448769¥nv -0.248426 0.066855 2.655411¥nv -0.634120 0.159561 2.476978'

と出てしまい実行できません
csvには最初にあるdonを除く800セルがあり、各セルには改行されている数値データが入っていて800セル全てを800個分のデータとして読み込ませたいのです。
解決方法を教えてください。

該当のソースコード

import pandas as pd import os from skimage import data from sklearn.model_selection import train_test_split import numpy as np from keras.models import Sequential from keras.layers import Dense, Dropout from keras.optimizers import RMSprop d_data_set = pd.read_csv("tes.csv", encoding="SHIFT-JIS") d_data_set = d_data_set.replace('v', '') d_data_set = d_data_set.replace('.', '') d_data_set = d_data_set.replace('-', '') search_dir = './image' f = np.array([ data.imread('{}/{}'.format(search_dir, path)) for path in os.listdir(search_dir) ]) f = f.reshape(len(f), -1).astype(np.float64) x = f y = d_data_set.loc[:,"don"] x_train, x_test, y_train, y_test = train_test_split(x, y,test_size=0.05) model = Sequential() model.add(Dense(50, activation="relu", input_shape=(817452,))) model.add(Dropout(0.2)) model.add(Dense(50, activation="relu", input_shape=(817452,))) model.add(Dropout(0.2)) model.add(Dense(50, activation="relu", input_shape=(817452,))) model.add(Dropout(0.2)) model.add(Dense(1, activation='softmax')) model.summary() print("/n") model.compile(loss='mean_squared_error', optimizer=RMSprop(), metrics=['accuracy']) history = model.fit(x_train, y_train, batch_size=200, epochs=1000, verbose=1, validation_data=(x_test, y_test)) score = model.evaluate(x_test, y_test, verbose=0) print("/n") print("Test loss", score[0]) print("test accuracy", score[1]) search_dir = './sample' kore = np.array([ data.imread('{}/{}'.format(search_dir, path)) for path in os.listdir(search_dir) ]) kore = f.reshape(len(f), -1).astype(np.float64) sample = kore predict = model.predict_classes(kore.reshape(1, -1), batch_size=1, verbose=1) print("/n") print("サンプル出た") print(predict) print("/n")

試したこと

googleでエラー文で調べているのですがreplaceでやろうとしたのですが結果は変わりませんでした。
後から気付いたのですが実行するたびにエラー文の数値も変わります。

補足情報(FW/ツールのバージョンなど)

以下はcsvファイルをテキストエディタで開いた時のdonを除くセル5個分のデータです。
don
"v 0.310527 0.015296 0.505581
v 0.683512 -0.001598 0.216188
v 0.370806 0.149291 0.478181"
"v 0.313408 0.008205 0.505414
v 0.685073 -0.006196 0.214194
v 0.373934 0.142358 0.479367"
"v 0.304531 0.004002 0.505210
v 0.680174 -0.008961 0.219070
v 0.365913 0.138171 0.481338"
"v 0.297987 -0.006071 0.504920
v 0.676619 -0.010223 0.222481
v 0.357903 0.129184 0.483590"
"v 0.305034 -0.011075 0.504809
v 0.680596 -0.010772 0.218271
v 0.468077 0.124864 0.479119"

1セル3行で最初のdonを除くと800セルありますので2400行あります。
windows 10
python 3.5
pycharm
pycharmのsettingのline separatorではUnix and OS X(¥n)に設定しています。

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

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

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

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

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

can110

2018/12/27 08:08

インデントがなくなってしまっているのでソースコードはコードブロック```で囲んでください。 また、どの行でどんなエラーが起きたか分かるようにエラーのTraceback全文を記載ください。
y_waiwai

2018/12/27 08:12

コードが読めないので、質問を編集し、<code>ボタンででてくる’’’の枠の中にコードを貼り付けてください
tiitoi

2018/12/27 09:52

tes.csv の中身を質問欄に追記されるとよいと思います。 長い場合は最初の10行ぐらい抜粋
can110

2018/12/27 10:30

A1セルの値は「don」でしょうか?
tiitoi

2018/12/27 10:44 編集

ファイル名が CSV となってますけど、スペース区切りですよね? とりあえず読み込むときは、delim_whitespace でスペース区切りであることを教えてあげないといけないのでは df = pd.read_csv('test.csv', delim_whitespace=True)
hair

2018/12/27 11:00

df= pd.read_csv('test.csv', delim_whitespace=True) に変えてみましたがエラー文は変わらないです。
can110

2018/12/28 20:13 編集

「y = d_data_set.loc[:,"don"]」によって、yの型は何で、提示CSVの場合、具体的にどんな値が入ると期待(意図)していますか?
hair

2018/12/28 22:00

yにはcsvのdon列のセル800個のデータに入っている'v -0.670323 0.017320 2.448769¥nv -0.248426 0.066855 2.655411¥nv -0.634120 0.159561 2.476978' と同じ様なデータを800個入れたいと思います。
can110

2018/12/28 22:06

つまり例えばセルに3個入っていた場合「'v -0.670323 0.017320 2.448769¥nv -0.248426 0.066855 2.655411¥nv -0.634120 0.159561 2.476978'」という同じデータが3個入ったものを意図しているということでしょうか?なにかおかしいような気もしますが。 また「v」などを除去しようとしている処理と矛盾していないでしょうか?
hair

2018/12/29 08:10

同じではなく同じような数値が入っているデータです。 vに関してはエラー文で調べていた時に以下のサイトを見つけ参考にしました https://teratail.com/questions/117085
can110

2018/12/29 08:15

同じようなでは第三者には分かりません。「具体的」なデータ値を示してください。 また、参考にした結果、どうした(い?)のでしょうか?
hair

2018/12/29 08:33

v 0.112046 -0.010519 0.756742\nv 0.461096 -0.009061 0.438443\nv 0.168477 0.125430 0.73081 や v -0.036764 -0.010899 2.231005\nv 0.427776 -0.010899 2.145250\nv 0.025124 0.124968 2.238007 等の数値が異なるデータです。 最初はreplaceは無くエラー文で調べreplaceを使う事で読み込めると思い追加しました。
can110

2018/12/29 08:36

提示CSVの場合、セルに3個だけ入っていた場合「y = d_data_set.loc[:,"don"]」によって、yの型は何で、yには「具体的」にどんな値が入ると期待(意図)していますか?
hair

2018/12/29 08:48

セル3個の場合 v -0.036764 -0.010899 2.231005\nv 0.427776 -0.010899 2.145250\nv 0.025124 0.124968 2.238007 v 0.112046 -0.010519 0.756742\nv 0.461096 -0.009061 0.438443\nv 0.168477 0.125430 0.73081 v -1.431956 0.015954 0.719805\nv -1.124715 -0.011258 1.077595\nv -1.402004 0.148135 0.782811 のデータが入るのを期待しています
can110

2018/12/29 08:51

画像だとデータの一部しか見えず分かりません。 CSVファイル内容をメモ帳なりで開きテキストとして提示すると回答得られるかもしれません。
can110

2018/12/29 10:19

提示データ先頭3個と欲しい結果3個に相違があるようですが?
hair

2018/12/29 10:29

申し訳ございません 訓練データを後から修正しました。
can110

2019/01/01 08:45

欲しいyの先頭の要素値が「v -0.036764 -0.010899 2.231005\nv 0.427776 -0.010899 2.145250\nv 0.025124 0.124968 2.238007」 などのようであれば、replaceは不要なのでは? 欲しい値と処理内容(上記の疑問に対する説明)を記載しないと適切な回答を得るのは難しいと思います。
guest

回答2

0

まず、以下のreplaceではデータフレームのセルの置き換えなので、今回のデータでは何もしません。

d_data_set = pd.read_csv("tes.csv", encoding="SHIFT-JIS")
d_data_set = d_data_set.replace('v', '')
d_data_set = d_data_set.replace('.', '')
d_data_set = d_data_set.replace('-', '')

取り敢えずやりたいことは、文字列での置き換えと思うので、strアクセサを使って以下のように修正します。

d_data_set = pd.read_csv("tes.csv", encoding="SHIFT-JIS")
d_data_set['don'] = d_data_set['don'].str.replace('v', '')
d_data_set['don'] = d_data_set['don'].str.replace('.', '')
d_data_set['don'] = d_data_set['don'].str.replace('-', '')

まだエラーが出ると思うので、データをどのようにしたいかを明確にしましょう。

投稿2018/12/31 05:48

編集2019/01/01 03:24
YasuhiroNiji

総合スコア584

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

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

hair

2018/12/31 12:06

set.replaceをset.str.replaceに変更すると AttributeError: 'DataFrame' object has no attribute 'str' この様なエラーが出ます。
YasuhiroNiji

2019/01/01 03:25

Seriesにしないといけなかったので、回答を修正しました。
hair

2019/01/01 06:26

['don'].str.replaceに変えてもエラーは変わらず出ます。
guest

0

'v' を削除するのは良いとして、
'.' や '-' を削除するとデータの意味がなくなると思うのですが大丈夫でしょうか。

例えば tes.csv を先頭部分の数行にして、セル内の改行を無くして試してみるのはいかがでしょう。

csv

1don 2'v -0.670323 0.017320 2.448769v -0.248426 0.066855 2.655411v -0.634120 0.159561 2.476978'

この状態で 'v' を削除すればスペース区切りの小数値にはできるかと。

投稿2019/01/09 04:37

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問