scikit-learnに付いてくるデータセット7種類を全部まとめてみた

機械学習といえばscikit-learn(サイキットラーン)ですが、scikit-learnの中にはすぐに機械学習やデータ分析を試せるように、ロードして使えるデータセットがいくつかあります。今回はそのデータセットの種類とインポートの方法についてまとめたので、紹介していきます。

scikit-learnで使える7つのデータセット

アヤメの品種データ(Iris plants dataset)

アイリスデータとは、機械学習でよく使われるアヤメ(iris)の品種のデータセットです。アヤメの品種のSetosa Versicolor Virginicaの3品種に関する150件のデータが入っています。データセットの中身はSepal Length(がく片の長さ)Sepal Width(がく片の幅)Petal Length(花びらの長さ)Petal Width(花びらの幅)の4つの特徴量を持っています。

レコード数 150
カラム数 4
主な用途 多クラス分類
参考 アヤメデータについてscikit-learn.org

各カラムの構成

sepal length (cm) がく片の長さ
sepal width (cm) がく片の幅
petal length (cm) 花弁の長さ
petal width (cm) 花弁の幅

実際に読み込んでみる

from sklearn.datasets import load_irisでインポートすることができます。一部省略していますが、データの中を見てみると特徴量が色々と入っていることがわかります。

Python
# データセットを読み込み
from sklearn.datasets import load_iris
iris = load_iris()
 
# データフレームとして表示
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
.. (略) ..
146	6.3	2.5	5.0	1.9
147	6.5	3.0	5.2	2.0
148	6.2	3.4	5.4	2.3
149	5.9	3.0	5.1	1.8
150 rows × 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])
アヤメデータを使った機械学習の流れを簡単にまとめてみた

ボストン市の住宅価格データ(Boston house prices dataset)

こちらは米国ボストン市郊外における、地域別の住宅価格のデータセットです。目的変数に対する説明変数の数が多いので、データ分析の学習の際にはよく用いられるサンプルデータセットです。

レコード数 506
カラム数 14
主な用途 回帰
参考 ボストン住宅価格データについてscikit-learn.org

各カラムの構成

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

実際に読み込んでみる

Python
# データセットを読み込み
from sklearn.datasets import load_boston
boston = load_boston()
 
# 説明変数をデータフレームとして表示
import pandas as pd
pd.DataFrame(boston.data, columns=boston.feature_names)

	CRIM	ZN	INDUS	CHAS	NOX	RM	AGE	DIS	RAD	TAX	PTRATIO	B	LSTAT
0	0.00632	18.0	2.31	0.0	0.538	6.575	65.2	4.0900	1.0	296.0	15.3	396.90	4.98
1	0.02731	0.0	7.07	0.0	0.469	6.421	78.9	4.9671	2.0	242.0	17.8	396.90	9.14
2	0.02729	0.0	7.07	0.0	0.469	7.185	61.1	4.9671	2.0	242.0	17.8	392.83	4.03
.. 略 ..
504	0.10959	0.0	11.93	0.0	0.573	6.794	89.3	2.3889	1.0	273.0	21.0	393.45	6.48
505	0.04741	0.0	11.93	0.0	0.573	6.030	80.8	2.5050	1.0	273.0	21.0	396.90	7.88
506 rows × 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. ,
.. 略 ..
  23.1, 19.7, 18.3, 21.2, 17.5, 16.8, 22.4, 20.6, 23.9, 22. , 11.9])

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

糖尿病患者442人の検査数値データと、その1年後の疾患進行状況についてまとまったデータセットです。こちらも先ほどのボストン住宅価格のデータと同様に回帰で用いられることが多いです。

レコード数 442
カラム数 10
主な用途 回帰
参考 糖尿病患者の診療データscikit-learn.org

実際に読み込んでみる

Python
# データセットを読み込み
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()

import pandas as pd
pd.DataFrame(diabetes.data, columns=("age", "sex", "bmi", "map", "tc", "ldl", "hdl", "tch", "ltg", "glu"))

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

数字の手書き文字データ

0から9の10種類の文字の手書きの数字を64(8×8)個の画素に分解したデータです。Optical recognition of handwritten digits dataset と呼ばれています。アヤメデータに続いて有名なもので、初心者向けの学習本等には必ず出てくるサンプルです。

レコード数 1797(10クラスの場合)
カラム数 64
主な用途 多クラス分類
参考 数字の手書き文字データscikit-learn.org

実際に読み込んでみる

Python
# データセットを読み込み
from sklearn.datasets import load_digits
digits = load_digits(n_class=10)

# 出力結果は割愛
import pandas as pd
pd.DataFrame(digits.data)

# 目的変数 (手書きの内容)
digits.target

生理学的特徴と運動能力の関係についてのデータ(Linnerrud dataset)

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

レコード数 20
カラム数 説明変数・目的変数ともに3つずつ
主な用途 多変数回帰
参考 生理学的特徴と運動能力の関係についてのデータscikit-learn.org

説明変数の構成

Weight 体重
Waist ウエスト
Pulse 脈拍

目的変数の構成

Chins 懸垂の回数
Situps 腹筋の回数
Jumps 跳躍

実際に読み込んでみる

Python
# データセットを読み込み
from sklearn.datasets import load_linnerud
linnerud = load_linnerud()

import pandas as pd
pd.DataFrame(linnerud.data, columns=linnerud.feature_names)

	Chins	Situps	Jumps
0	5.0	162.0	60.0
1	2.0	110.0	60.0
2	12.0	101.0	101.0
3	12.0	105.0	37.0
.. 以下略 ..

# 目的変数(3種類)をデータフレームとして表示
import pandas as pd
pd.DataFrame(linnerud.target, columns=linnerud.target_names)

	Weight	Waist	Pulse
0	191.0	36.0	50.0
1	189.0	37.0	52.0
2	193.0	38.0	58.0
3	162.0	35.0	62.0
.. 以下略 ..

ワインの品質データ(Wine recognition dataset)

11種類のワインの成分データと、ワイン専門家によるワインの品質がまとめられたデータセットです。

レコード数 178
カラム数 13
主な用途 分類
参考 ワインの品質データscikit-learn.org

実際に読み込んでみる

Python
# データセットを読み込み
from sklearn.datasets import load_wine
wine = load_wine()

import pandas as pd
pd.DataFrame(wine.data, columns=wine.feature_names)

乳がんデータ(Breast cancer wisconsin [diagnostic] dataset)

乳がんの診断データがまとめられたデータセットです。各ケースは検査値を含む32の値を持っており、変数の多いデータセットになっています。各ケースには、良性腫瘍か悪性腫瘍の診断結果が付いており、これを目的変数とする分類学習になります。

レコード数 569
カラム数 30
主な用途 分類
参考 乳がんデータscikit-learn.org

実際に読み込んでみる

Python
# データセットを読み込み
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()

import pandas as pd
pd.DataFrame(cancer.data, columns=cancer.feature_names)

まとめ

scikit-learnからロードできる7つのデータセットを紹介しました。これらは分類や回帰の学習の際にすぐに使えるので、非常に便利です。特にアイリスデータセットや手書き文字はどの学習教材でも取り扱っていて、有名なデータセットです。

一方で、csvデータをインポートして分析を始めることもできますし、様々な方法がありますので、幅広く知って素早くデータを扱えるようにしておきましょう。

Pandasのread_csvでcsvファイルを読み込む方法