EnsekiTT Blog

EnsekiTTが書くブログです。

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

つまりなにしたの?

Blogでサンプルを使いつつ、処理方法を紹介する時に便利なscikit-learnのdatasetsにはどんなのが入っているのか
まとめておこうと思ってまとめ始めた。今回は糖尿病データと手書き文字データ。

f:id:ensekitt:20181101004554j:plain
*1

やりたいこと

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

今回は中でもDiabetesとDigitsについて紹介する。

環境

 % 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.0 documentation

  • Toy datasets

よく使われるirisやdigitsが含まれるデータセットはToyDatasetとしてあった。
今回はここから2つについて紹介する。

  • Real datasets
  • Generated datasets

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

import pandas as pd
from sklearn import datasets
糖尿病データセット

糖尿病のデータセット
442データ含まれていて、住宅価格を回帰で予測したりする。
load_diabetes([return_X_y])
Load and return the diabetes dataset (regression).
sklearn.datasets.load_diabetes — scikit-learn 0.20.0 documentation

説明変数
1. age 年齢
2. sex 性別
3. bmi BMI(体重kg ÷ (身長m)^2
4. bp 平均血圧
5. s1 血清測定値1
6. s2 血清測定値2
7. s3 血清測定値3
8. s4 血清測定値4
9. s5 血清測定値5
10. s6 血清測定値6
目的変数
11. target 1年後の疾患進行状況指標

学習データの読み込み

diabetes_data = datasets.load_diabetes()
diabetes_df = pd.DataFrame(diabetes_data.data, columns=diabetes_data.feature_names)
diabetes_df.head()

f:id:ensekitt:20181101002356p:plain:h200

対象データの読み込み

diabetes_df_tgt = pd.DataFrame(diabetes_data.target, columns=['target'])
diabetes_df_tgt.head()

f:id:ensekitt:20181101002427p:plain:h200
f:id:ensekitt:20181101004721p:plain:w480

手書き文字のデータセット

おなじみMNISTよりも少し小さな手書き文字認識のためのデータセット
1797データ含まれている。各数字(0-9)のクラス分類で予測したりする
load_digits([n_class, return_X_y])
Load and return the digits dataset (classification).
sklearn.datasets.load_digits — scikit-learn 0.20.0 documentation

説明変数
1-64次元: 各ピクセルの明るさ(横8x縦8でできている)
目的変数
65. 数字: 0-9の数字が書いてある

学習データの読み込み

digits_data = datasets.load_digits()
digits_df = pd.DataFrame(digits_data.data)
digits_df.head()

f:id:ensekitt:20181101003808p:plain:h200
個別のデータを確認してみた
f:id:ensekitt:20181101004043p:plain:h300

対象データの読み込み

digits_df_tgt = pd.DataFrame(digits_data.target, columns=['target'])
digits_df_tgt.head()

f:id:ensekitt:20181101004051p:plain:h200
f:id:ensekitt:20181101004137p:plain:w480


MNISTについてはこっちも見てね
qiita.com

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