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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

890閲覧

Tensorflowでのfit_transformでのエラー

popopo123456

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2018/01/15 06:45

編集2018/01/15 06:46

###前提・実現したいこと
csvファイルを読み込んで、プログラムを実行したいのですが
エラーの原因が分かりません。
python3.5です

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

エラーメッセージ
File "/home///***/py35/lib/python3.5/site-packages/sklearn/utils/validation.py", line 433, in check_array
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: could not convert string to float:

###該当のソースコード
train_x_tmp, test_x_tmp, train_y, test_y = cross_validation.train_test_split(
data, labels, test_size=0.2, random_state=6)
stdsc = StandardScaler()
print(type(train_x_tmp))
print(type(test_x_tmp))
train_x = stdsc.fit_transform(train_x_tmp) ← ここでエラー
test_x = stdsc.fit_transform(test_x_tmp)

###補足情報(言語/FW/ツール等のバージョンなど)
print で型を見たところList型と分かりました。
参考にしたプログラムではList型でもうまく行っていたので
なぜうまく行かないのか、どなたかお力添えをお願いします。。。

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

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

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

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

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

wakame

2018/01/15 08:56

入力に使ったcsvファイルがどのような中身か追記してもらえますか。
popopo123456

2018/01/15 09:03

1列目にラベル 以降32x32画素の数値データを横に並べた 1行1025要素のデータです。
popopo123456

2018/01/15 09:04

それが複数行あるものとなってます
wakame

2018/01/15 09:15 編集

csvの読み込み部分のコードがどうなってるか見たいので該当のソースコードだけでなく、全てのせてもらえますか。また、コードをのせる際は以下を参照してmarkdownで記述して下さい。https://teratail.com/help (コードを入力の部分です)
popopo123456

2018/01/15 09:16

data, labels = load_csv('***.csv', target_column=0, categorical_labels=True, n_classes=3) 読み込みの部分はこれだけです.
guest

回答1

0

ベストアンサー

ValueError: could not convert string to float:

このfit_transformに渡すリストは、[[0, 0], [0, 0], [1, 1], [1, 1]]とか[['0', '0'], ['0', '0'], ['1', '1'], ['1', '1']]のようなデータなのですね。それを踏まえて調べてみました。

このエラーは文字列をfloatに変換できないということですから、train_x_tmpに数字ではないデータが含まれているということだろうと思います。しかし、このエラーは通常: の後にエラーになった文字列を表示しますから、おそらく空文字列''になっている要素があると思います。実際に、以下のように試してみました。

>>> data = [['0', '0'], ['0', '0'], ['', '1'], ['1', '1']] >>> print(scaler2.transform(data)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3/dist-packages/sklearn/preprocessing/data.py", line 643, in transform estimator=self, dtype=FLOAT_DTYPES) File "/usr/lib/python3/dist-packages/sklearn/utils/validation.py", line 373, in check_array array = np.array(array, dtype=dtype, order=order, copy=copy) ValueError: could not convert string to float: >>>

もととなる学習データの中身や、Listの中身を確認するのが良いと思います。

投稿2018/01/18 05:13

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問