EnsekiTT Blog

EnsekiTTが書くブログです。

scikit-learnのdatasetsにはどんなのが入っているのか調べてみた話【Olivetti Faces編】

つまりなにしたの?

Blogでサンプルを使いつつ、処理方法を紹介する時に便利なscikit-learnのdatasetsにはどんなのが入っているのか
まとめておこうと思ってまとめ始めた。今回はAT&T Laboratories Cambridgeの顔画像データ。

f:id:ensekitt:20181126003625j:plain

やりたいこと

  • datasetsの種類リスト
  • 各説明変数の内容を簡単に示す
  • それぞれ読み出してみる
  • 目的変数の分布などを示す

今回は中でもAT&T Laboratories Cambridgeの顔画像データについて紹介する。

環境

 % python
Python 3.6.4 (default, Mar  2 2018, 00:45:54)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import pandas
>>> import sklearn
>>> numpy.__version__
'1.15.3'
>>> pandas.__version__
'0.23.4'
>>> sklearn.__version__
'0.20.0'

datasetsの種類とリスト

5. Dataset loading utilities — scikit-learn 0.20.1 documentation

  • Toy datasets
  • Real datasets

リアルデータセットと呼ばれる実際に研究のベンチマークに使われてる(てた)データセットを紹介していく。

  • Generated datasets

今回は各種データセットについて、読み込みの上Pandas DataFrameの説明変数と目的変数を作成することを目的とする。
importするもの

import pandas as pd
from sklearn import datasets
顔画像データセット

AT&T Laboratories Cambridgeの1992年4月から1994年4月の間に撮影された一連の顔画像が各ピクセルの明るさで保存されている。
1人の顔を対して色んな方向から10枚撮影した画像が含まれていて、ラベルが一人ずつついている。
次元数としては64x64の画像で、4096次元になる。ラベルは匿名化されていて、40人分の通し番号がついている。


sklearn.datasets.fetch_olivetti_faces(data_home=None, shuffle=False, random_state=0, download_if_missing=True)
5. Dataset loading utilities — scikit-learn 0.20.1 documentation


説明変数
4096次元の画像データ

学習データの読み込み

data = datasets.fetch_olivetti_faces()
df = pd.DataFrame(data.data)
df.head()

f:id:ensekitt:20181125231145p:plain:h200

対象データの読み込み

df_tgt = pd.DataFrame(data.target, columns=['target'])
df_tgt.head()

f:id:ensekitt:20181125231652p:plain:h200

読み取った顔画像はこんな感じ
f:id:ensekitt:20181125231738p:plain:w480
f:id:ensekitt:20181125231819p:plain:w480
2人目はメガネに時代を感じる雰囲気がある。
f:id:ensekitt:20181125231833p:plain:w480

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。