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

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

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

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

Q&A

解決済

3回答

1768閲覧

機械学習、データが大きすぎる?

nouken

総合スコア369

Python

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

0グッド

0クリップ

投稿2018/06/14 06:10

編集2018/06/14 06:11

機械学習で6577 rows × 3572 columnsのデータフレームを扱っているのですが、以下のコードでトレーニングデータとテストデータに分けようとした際に以下のエラーを得ました。

python

1 2 3features=data.iloc[:, 1:].values, labels=data.iloc[:, 0].values 4 5 6 7--------------------------------------------------------------------------- 8ValueError Traceback (most recent call last) 9<ipython-input-225-ab05d083b806> in <module>() 10----> 1 features=data.iloc[:, 1:].values, labels=data.iloc[:, 0].values 11 12ValueError: too many values to unpack (expected 2) 13

これはデータが大きすぎるということでしょうか?
また、どのように解消できるでしょうか?
よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

Python

1a = b = 2

は有効です。名前aにもbにも値2が束縛されます。


Python

1a, b = 2, 3

は有効です。名前aに値2が、名前bに値3が束縛されます。


Python

1a = b, c = 2, 3

は有効です。名前bに値2が、名前cに値3が、名前aに値(2, 3)(2値タプル)が束縛されます。


Python

1class Foo(): pass 2a = Foo() 3a.hoge = 2

とするとa.hogeに値2が束縛されます。
したがって、

Python

1a.hoge, b = 2, 3

は有効です。a.hogeに値2が、名前bに値3が束縛されます。


質問の

Python

1features=data.iloc[:, 1:].values, labels=data.iloc[:, 0].values

有効な代入文です。
data.iloc[:, 1:].valuesが代入可能な属性であって、最右辺data.iloc[:, 0].valuesが2つの値が取り出せるIterableの場合のみ実際に動きます。
仮に2つの値がX,Yだったとすると、

Python

1data.iloc[:, 1:].values = X 2labels = Y 3features = X, Y #2値タプル

という3つの代入文の複合になっている文です。

ですが、実際は最右辺が2つよりもっと多くの値が取り出せるIterableなのでtoo many values to unpackと言われたわけです。
たまたま2つの値が取り出せるIterableだったなら、valuesが代入可能でないというエラーになっていたでしょう。

投稿2018/06/15 02:05

quickquip

総合スコア11038

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

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

hayataka2049

2018/06/15 03:36

そういえばありましたね、そういう代入文・・・失念していました。私の回答も書き換えておきます
guest

0

ベストアンサー

~~エラーメッセージから察するにデータが大きすぎる訳ではないんですが、うーんそもそも構文がおかしい。こういうのにはsyntax error吐いて欲しいところなんですが(;使ってる訳でもないのに一行で複数の代入文は書けないです、普通)。構文解析の優先順位がいたずらして、unpacking扱いにされたんでしょうか。
~~
これは代入文として有効なものでした。お詫びとともに訂正いたします。quiquiさんが回答してくださったので、そちらを御覧ください。

とりあえず、こう書けば良いんじゃないでしょうか。

python

1features=data.iloc[:, 1:].values 2labels=data.iloc[:, 0].values

投稿2018/06/14 07:15

編集2018/06/15 03:37
hayataka2049

総合スコア30933

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

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

nouken

2018/06/14 07:48

なるほど、ありがとうございました!
guest

0

[Python] iterableな要素をunpackするときに可変長引数が使える

unpackされた複数の値を単純に1つの変数dataに代入しようとすると、変数が足りないと怒られる。そこで可変長引数を使う。

が使えるでしょうか?

投稿2018/06/14 06:17

Orlofsky

総合スコア16415

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

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

nouken

2018/06/14 07:47

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問