scikit-learn に付属しているデータセット

scikit-learn には、機械学習やデータマイニングをすぐに試すことができるよう、実験用データが同梱されています。このページでは、いくつかのデータセットについて紹介します。

Iris (アヤメの計測データ、通称:アイリス)

“setosa”, “versicolor”, “virginica” という 3 種類の品種のアヤメのがく片 (Sepal)、花弁 (Petal) の幅および長さを計測したデータです。

データセットの詳細

レコード数 150
カラム数 4
主な用途 分類 (Classification)
データセットの詳細 UCI Machine Learning Repository: Iris Data Set

各カラムの構成

sepal length (cm) がく片の長さ
sepal width (cm) がく片の幅
petal length (cm) 花弁の長さ
petal width (cm) 花弁の幅
>>> # データセットを読み込み
>>> from sklearn.datasets import load_iris
>>> iris = load_iris()

>>> # Pandas のデータフレームとして表示
>>> import pandas as pd
>>> pd.DataFrame(iris.data, columns=iris.feature_names)
     sepal length (cm)  sepal width (cm)  petal length (cm)  petal width (cm)
0                  5.1               3.5                1.4               0.2
1                  4.9               3.0                1.4               0.2
2                  4.7               3.2                1.3               0.2
3                  4.6               3.1                1.5               0.2
4                  5.0               3.6                1.4               0.2
5                  5.4               3.9                1.7               0.4
6                  4.6               3.4                1.4               0.3
7                  5.0               3.4                1.5               0.2
8                  4.4               2.9                1.4               0.2
9                  4.9               3.1                1.5               0.1
10                 5.4               3.7                1.5               0.2
 ... (中略)
149                5.9               3.0                5.1               1.8

[150 rows x 4 columns]

>>> # 各データの分類 (0: 'setosa', 1: 'versicolor', 2: 'virginica')
>>> iris.target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
       0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
       1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
       2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
>>> iris.target_names
array(['setosa', 'versicolor', 'virginica'], 
      dtype='

Boston house-prices (ボストン市の住宅価格)

米国ボストン市郊外における地域別の住宅価格のデータセット。

データセットの詳細

レコード数 506
カラム数 14
主な用途 回帰 (Regression)
データセットの詳細 UCI Machine Learning Repository: Housing Data Set

各カラムの構成

CRIM 人口 1 人当たりの犯罪発生数
ZN 25,000 平方フィート以上の住居区画の占める割合
INDUS 小売業以外の商業が占める面積の割合
CHAS チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外)
NOX NOx の濃度
RM 住居の平均部屋数
AGE 1940 年より前に建てられた物件の割合
DIS 5 つのボストン市の雇用施設からの距離 (重み付け済)
RAD 環状高速道路へのアクセスしやすさ
TAX $10,000 ドルあたりの不動産税率の総計
PTRATIO 町毎の児童と教師の比率
B 町毎の黒人 (Bk) の比率を次の式で表したもの。 1000(Bk - 0.63)^2
LSTAT 給与の低い職業に従事する人口の割合 (%)
>>> # データセットを読み込み
>>> from sklearn.datasets import load_boston
>>> boston = load_boston()

>>> # 説明変数を Pandas のデータフレームとして表示
>>> import pandas as pd
>>> pd.DataFrame(boston.data, columns=boston.feature_names)

         CRIM    ZN  INDUS  CHAS    NOX     RM    AGE     DIS  RAD  TAX  \
0     0.00632  18.0   2.31     0  0.538  6.575   65.2  4.0900    1  296   
1     0.02731   0.0   7.07     0  0.469  6.421   78.9  4.9671    2  242   
2     0.02729   0.0   7.07     0  0.469  7.185   61.1  4.9671    2  242   
3     0.03237   0.0   2.18     0  0.458  6.998   45.8  6.0622    3  222   
4     0.06905   0.0   2.18     0  0.458  7.147   54.2  6.0622    3  222   
5     0.02985   0.0   2.18     0  0.458  6.430   58.7  6.0622    3  222   
6     0.08829  12.5   7.87     0  0.524  6.012   66.6  5.5605    5  311   
7     0.14455  12.5   7.87     0  0.524  6.172   96.1  5.9505    5  311   
8     0.21124  12.5   7.87     0  0.524  5.631  100.0  6.0821    5  311   
9     0.17004  12.5   7.87     0  0.524  6.004   85.9  6.5921    5  311   
10    0.22489  12.5   7.87     0  0.524  6.377   94.3  6.3467    5  311   
 ... (中略)
505   0.04741   0.0  11.93     0  0.573  6.030   80.8  2.5050    1  273   

     PTRATIO       B  LSTAT  
0       15.3  396.90   4.98  
1       17.8  396.90   9.14  
2       17.8  392.83   4.03  
3       18.7  394.63   2.94  
4       18.7  396.90   5.33  
5       18.7  394.12   5.21  
6       15.2  395.60  12.43  
7       15.2  396.90  19.15  
8       15.2  386.63  29.93  
9       15.2  386.71  17.10  
10      15.2  392.52  20.45  
 ... (中略)
505     21.0  396.90   7.88  

[506 rows x 13 columns]

>>> # 目的変数 (1,000 ドル台でオーナーが所有する住宅の価格の中央値)
>>> boston.target

array([ 24. ,  21.6,  34.7,  33.4,  36.2,  28.7,  22.9,  27.1,  16.5,
        18.9,  15. ,  18.9,  21.7,  20.4,  18.2,  19.9,  23.1,  17.5,
         ... (中略)
        22. ,  11.9])

Diabetes (糖尿病患者の診断データ)

糖尿病患者 442 人の検査数値と 1 年後の疾患進行状況(正規化済み)。

データセットの詳細

レコード数 442
カラム数 10
主な用途 回帰 (Regression)
データセットの詳細 Least Angle Regression diabetes.sdata.txt
>>> from sklearn.datasets import load_diabetes
>>> diabetes = load_diabetes()

>>> # Pandas のデータフレームとして表示
>>> import pandas as pd
>>> pd.DataFrame(diabetes.data, columns=("age", "sex", "bmi", "map", "tc", "ldl", "hdl", "tch", "ltg", "glu"))
          age       sex       bmi       map        tc       ldl       hdl  \
0    0.038076  0.050680  0.061696  0.021872 -0.044223 -0.034821 -0.043401   
1   -0.001882 -0.044642 -0.051474 -0.026328 -0.008449 -0.019163  0.074412   
2    0.085299  0.050680  0.044451 -0.005671 -0.045599 -0.034194 -0.032356   
3   -0.089063 -0.044642 -0.011595 -0.036656  0.012191  0.024991 -0.036038   
4    0.005383 -0.044642 -0.036385  0.021872  0.003935  0.015596  0.008142   
5   -0.092695 -0.044642 -0.040696 -0.019442 -0.068991 -0.079288  0.041277   
6   -0.045472  0.050680 -0.047163 -0.015999 -0.040096 -0.024800  0.000779   
7    0.063504  0.050680 -0.001895  0.066630  0.090620  0.108914  0.022869   
8    0.041708  0.050680  0.061696 -0.040099 -0.013953  0.006202 -0.028674   
9   -0.070900 -0.044642  0.039062 -0.033214 -0.012577 -0.034508 -0.024993   
10  -0.096328 -0.044642 -0.083808  0.008101 -0.103389 -0.090561 -0.013948   
 ... (中略)
41 -0.045472 -0.044642 -0.073030 -0.081414  0.083740  0.027809  0.173816   

          tch       ltg       glu  
0   -0.002592  0.019908 -0.017646  
1   -0.039493 -0.068330 -0.092204  
2   -0.002592  0.002864 -0.025930  
3    0.034309  0.022692 -0.009362  
4   -0.002592 -0.031991 -0.046641  
5   -0.076395 -0.041180 -0.096346  
6   -0.039493 -0.062913 -0.038357  
7    0.017703 -0.035817  0.003064  
8   -0.002592 -0.014956  0.011349  
9   -0.002592  0.067736 -0.013504  
10  -0.076395 -0.062913 -0.034215  
 ... (中略)
441 -0.039493 -0.004220  0.003064  

[442 rows x 10 columns]
>>> 

>>> # 目的変数 (1 年後の疾患進行状況)
>>> diabetes.target

array([ 151.,   75.,  141.,  206.,  135.,   97.,  138.,   63.,  110.,
        310.,  101.,   69.,  179.,  185.,  118.,  171.,  166.,  144.,
         97.,  168.,   68.,   49.,   68.,  245.,  184.,  202.,  137.,
         85.,  131.,  283.,  129.,   59.,  341.,   87.,   65.,  102.,
         ... (中略)
        173.,   72.,   49.,   64.,   48.,  178.,  104.,  132.,  220.,   57.])


Digits (数字の手書き文字)

0 ~ 9 の 10 文字の手書きの数字を 64 (8x8) 個の画素に分解したものです。

データセットの詳細

レコード数 1,797 (10 クラスの場合)
カラム数 64
主な用途 分類 (classification)
データセットの詳細 UCI Machine Learning Repository: Optical Recognition of Handwritten Digits Data Set
>>> from sklearn.datasets import load_digits
>>> digits = load_digits(n_class=10)

>>> # データセットの概要
>>> print(digits.DESCR)

Optical Recognition of Handwritten Digits Data Set
===================================================

Notes
-----
Data Set Characteristics:
    :Number of Instances: 5620
    ... (以下略)

>>> # Pandas のデータフレームとして表示
>>> import pandas as pd
>>> pd.DataFrame(digits.data)
      0   1   2   3   4   5   6   7   8   9  ...  54  55  56  57  58  59  60  \
0      0   0   5  13   9   1   0   0   0   0 ...   0   0   0   0   6  13  10   
1      0   0   0  12  13   5   0   0   0   0 ...   0   0   0   0   0  11  16   
2      0   0   0   4  15  12   0   0   0   0 ...   5   0   0   0   0   3  11   
3      0   0   7  15  13   1   0   0   0   8 ...   9   0   0   0   7  13  13   
4      0   0   0   1  11   0   0   0   0   0 ...   0   0   0   0   0   2  16   
5      0   0  12  10   0   0   0   0   0   0 ...   4   0   0   0   9  16  16   
6      0   0   0  12  13   0   0   0   0   0 ...   8   0   0   0   1   9  15   
7      0   0   7   8  13  16  15   1   0   0 ...   0   0   0   0  13   5   0   
8      0   0   9  14   8   1   0   0   0   0 ...   8   0   0   0  11  16  15   
9      0   0  11  12   0   0   0   0   0   2 ...   4   0   0   0   9  12  13   
10     0   0   1   9  15  11   0   0   0   0 ...   0   0   0   0   1  10  13   
 ... (中略)
1796   0   0  10  14   8   1   0   0   0   2 ...   8   0   0   1   8  12  14   

      61  62  63  
0      0   0   0  
1     10   0   0  
2     16   9   0  
3      9   0   0  
4      4   0   0  
5     10   0   0  
6     11   3   0  
7      0   0   0  
8     11   1   0  
9      3   0   0  
10     3   0   0  
 ... (中略)
1796  12   1   0  

[1797 rows x 64 columns]

>>> # 目的変数 (手書きの内容)
>>> digits.target_names
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> digits.target
array([0, 1, 2, ..., 8, 9, 8])

Linnerud (生理学的特徴と運動能力の関係)

ノースカロライナ州立大学の A. C. linnerud 博士が作成した、20 人の成人男性に対してフィットネスクラブで測定した 3 つの生理学的特徴と 3 つの運動能力の関係。

データセットの詳細

レコード数 20
カラム数 説明変数:3, 目的変数: 3
主な用途 多変数回帰 (multivariate regression)
データセットの詳細 R: Linnerud Dataset

説明変数の構成

Weight 体重
Waist ウエスト (胴囲)
Pulse 脈拍

目的変数の構成

Chins 懸垂の回数
Situps 腹筋の回数
Jumps 跳躍
>>> from sklearn.datasets import load_linnerud
>>> linnerud = load_linnerud()

>>> # データセットの概要
>>> print(linnerud.DESCR)
Linnerrud dataset

Notes
-----
Data Set Characteristics:
    :Number of Instances: 20
 ... (以下略)

>>> # Pandas のデータフレームとして表示
>>> import pandas as pd
>>> pd.DataFrame(linnerud.data, columns=linnerud.feature_names)
    Chins  Situps  Jumps
0       5     162     60
1       2     110     60
2      12     101    101
3      12     105     37
4      13     155     58
5       4     101     42
6       8     101     38
7       6     125     40
8      15     200     40
9      17     251    250
10     17     120     38
 ... (中略)
19      2     110     43

>>> # 目的変数 (3 種類) を Pandas のデータフレームとして表示
>>> import pandas as pd
>>> pd.DataFrame(linnerud.target, columns=linnerud.target_names)
    Weight  Waist  Pulse
0      191     36     50
1      189     37     52
2      193     38     58
3      162     35     62
4      189     35     46
5      182     36     56
6      211     38     56
7      167     34     60
8      176     31     74
9      154     33     56
10     169     34     50
 ... (中略)
19     138     33     68

参考: 5. Dataset loading utilities — scikit-learn 0.17.1 documentation