機械学習といえば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 |
主な用途 | 多クラス分類 |
各カラムの構成
sepal length (cm) | がく片の長さ |
sepal width (cm) | がく片の幅 |
petal length (cm) | 花弁の長さ |
petal width (cm) | 花弁の幅 |
実際に読み込んでみる
from sklearn.datasets import load_irisでインポートすることができます。一部省略していますが、データの中を見てみると特徴量が色々と入っていることがわかります。
# データセットを読み込み
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 |
主な用途 | 回帰 |
各カラムの構成
CRIM | 人口1人あたりの犯罪発生率 |
ZN | 25,000平方フィート以上の住居区画の占める割合 |
INDUS | 小売業以外の商業が占める面積の割合 |
CHAS | チャールズ川によるダミー変数(1:川の周辺、0:それ以外) |
NOX | NOXの濃度 |
RM | 住居の平均部屋数 |
AGE | 1940年より前に建てられた物件の割合 |
DIS | 5つのボストン市の雇用施設からの距離(重み付け済) |
RAD | 環状高速道路へのアクセスしやすさ |
TAX | $10,000ドルあたりの不動産税率の総計 |
PTRATIO | 町毎の児童と教師の比率 |
B | 町毎の黒人(Bk)の比率 |
LSTAT | 給与の低い職業に従事する人口の割合(%) |
実際に読み込んでみる
# データセットを読み込み
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 |
主な用途 | 回帰 |
実際に読み込んでみる
# データセットを読み込み
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 |
主な用途 | 多クラス分類 |
実際に読み込んでみる
# データセットを読み込み
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つずつ |
主な用途 | 多変数回帰 |
説明変数の構成
Weight | 体重 |
Waist | ウエスト |
Pulse | 脈拍 |
目的変数の構成
Chins | 懸垂の回数 |
Situps | 腹筋の回数 |
Jumps | 跳躍 |
実際に読み込んでみる
# データセットを読み込み
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 |
主な用途 | 分類 |
実際に読み込んでみる
# データセットを読み込み
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 |
主な用途 | 分類 |
実際に読み込んでみる
# データセットを読み込み
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データをインポートして分析を始めることもできますし、様々な方法がありますので、幅広く知って素早くデータを扱えるようにしておきましょう。
