kerasで利用できるデフォルトデータセット

# kerasでデフォルトで利用できるデータセット

## keras とは
kerasそのものについては[過去記事](http://qiita.com/halspring/items/362d050b85f39e0e2658)参照

## 本記事について
本記事は[keras公式ドキュメント](https://keras.io)の情報をほぼほぼ引用し、自分用にまとめたものなので、
正確な情報の方が好ましい方はそちらを利用した方が良いかもしれません。

## デフォルトで使えるデータセット
### CIFA10 画像分類

 ```
 from keras.datasets import cifar10
 (X_train, y_train), (X_test, y_test) = cifar10.load_data()
 ```
  - 10のクラスにラベル付けされた32x32カラー画像
  - 50,000枚の訓練用画像データ
  - 10,000枚のテスト用画像データ
  - 返り値
    - 2つのタプル
      - `X_train, X_test`: shape (nb_samples, 3, 32, 32)のRGB画像データのunit8配列
      - `y_train, y_test`: shape (nb_samples,)の0~9の範囲のカテゴリラベルのunit8配列

### CIFAR100 画像分類
 ```
 from keras.datasets import cifar100
 (X_train, y_train), (X_test, y_test) = cifar10.load_data(label_mode='fine')
```

  - 100のクラスにラベル付けされた32x32カラー画像
  - 50,000枚の訓練用画像データ
  - 10,000枚のテスト用画像データ
  - 返り値
    - 2つのタプル
      - `X_train, X_test`: shape (nb_samples, 3, 32, 32)のRGB画像データのunit8配列
      - `y_train, y_test`: shape (nb_samples,)の0~9の範囲のカテゴリラベルのunit8配列
  - 引数
    - `label_mode`: `"fine"`または`"coarse"`
 
### MNIST(手書き数字データベース)
 ```
 from keras.datasets import mnist
 (X_train, y_train), (X_test, y_test) = mnist.load_data()
 ```

  - 10個(0~9)の数字の28x28白黒画像
  - 60,000枚の訓練画像データ
  - 10,000枚のテスト用画像データ
  - 返り値
    - 2つのタプル
      - `X_train, X_test`: shape (nb_samples, 28, 28)の白黒画像データのunit8配列
      - `y_train, y_test`: shape (nb_samples,)のカテゴリラベル(0~9の範囲のinteger)のunit8配列
  - 引数
    - `path`: データをローカルに持っている場合、(`'~/.keras/datasets/' + path`)。cPickleフォーマットではこの位置にダウンロードされる

### IMDB映画レビュー感情分類
 ```
 from keras.datasets import imdb
 (X_train, y_train), (X_test, y_test) = reuters.load_data(path = "imdb_full.pkl",
                                                          num_words = None,
                                                          skip_top = 0,
                                                          maxlen = None,
                                                          seed = 113,
                                                          start_char = 1,
                                                          oov_char = 2
                                                          index_from = 3)
 ```

  - 肯定/否定の感情でラベル付けされたレビューデータ
  - 25,000個
  - レビューは前処理済みで各レビューは単語のインデックスのシーケンスとしてエンコードされている
  - 単語はデータセットにおいての出現頻度によってインデックスされている
  - 返り値
   - 2つのタプル
    - `X_train, X_test`: シーケンスのリスト、リストはインデックス
     - 引数`num_words`に具体的な整数値を与えた場合、取り得るインデックスの最大値は`num_words - 1`となる
     - 引数`maxlen`に具体的な整数値を与えた場合、シーケンスの最大長は`maxlen`となる
    - `y_train, y_test`: integer型ラベル(1 or 0)のリスト
  - 引数
    - `path`: データをローカルに持っている場合、(`'~/.keras/datasets/' + path`)。cPikleフォーマットではこの位置にダウンロードされる
    - `num_words`: integer型または`None`、指定された数値だけ上位の頻出語が対象になる。指定された数値より下位の頻出語はシーケンスデータにおいて0と表される
    - `skip_top`: integer型、指定された数値だけ上位の頻出語が無視される(シーケンスデータにおいて0と表される)
    - `maxlen`: integer型、シーケンスの最大長。最大長より長いシーケンスは切り捨て
    - `seed`: integer型、再読可能なデータシャッフルのためのシード
    - `start_char`: この文字が系列の開始記号として扱われる。`0`は通常パディング用の文字なので、`1`以上からセットする
    - `oov_char`: `num_words`か`skip_top`によって削除された単語を置換する
    - `index_from`: 単語のインデックスはこのインデックス以上の数値が与えられる

### ニューストピック
 ```
 from keras.datasets import reuters
 (X_train, y_train), (X_test, y_test) = reuters.load_data(path = "reuters.pkls",
                                                          num_words = None,
                                                          skip_top = 0,
                                                          maxlen = None,
                                                          test_split = 0.2,
                                                          seed = 113,
                                                          start_char = 1,
                                                          oov_char = 2
                                                          index_from = 3)
 ```
  - 46トピックに分類
  - 11,228個のロイターニュースワイヤーデータ
  - IMDBデータセット同様に各ワイヤーが一連の単語インデックスとしてエンコードされる
  - IMDBデータセット同様の仕様に次のパラメータが追加されている
    - `test_split`: float テストデータとして使用するデータセットの割合
  - シーケンスをエンコードするのに使われる単語インデックスとしても利用できる
```word_index = reuters.get_word_index(path="reuters_word_index.pkl")```

  - 引数
      - `path`: データをローカルに持っている場合、(`'~/.keras/datasets/' + path`)。cPikleフォーマットではこの位置にダウンロードされる
      - `num_words`: integer型または`None`、指定された数値だけ上位の頻出語が対象になる。指定された数値より下位の頻出語はシーケンスデータにおいて0と表される
      - `skip_top`: integer型、指定された数値だけ上位の頻出語が無視される(シーケンスデータにおいて0と表される)
      - `maxlen`: integer型、シーケンスの最大長。最大長より長いシーケンスは切り捨て
      - `test_split`: float型 テストデータとして使用するデータセットの割合
      - `seed`: integer型、再読可能なデータシャッフルのためのシード
      - `start_char`: この文字が系列の開始記号として扱われる。`0`は通常パディング用の文字なので、`1`以上からセットする
      - `oov_char`: `num_words`か`skip_top`によって削除された単語を置換する
      - `index_from`: 単語のインデックスはこのインデックス以上の数値が与えられる