scikit-learnのデータセット7種を紹介![2020年最新版]
- そらまめ
- 2020年8月19日
- 読了時間: 6分
更新日:2020年8月20日

こんにちは、そらまめです。
「今回は機械学習を始めたいけどデータを集めるのが大変(~_~;)」
と言った人の為に、scikit-learnに内蔵されており、お手軽に使えるデータセット7種を紹介していきたいと思います!
scikit-learnには教師あり学習の回帰と分類を行うためのデータセットが揃っているので用途に応じて使ってみて下さい。
回帰…連続したデータを予測したいときに使います
例) 株価予測、店舗の来客数予測 など
分類…データが属するクラスを予測したいときに使います
例)画像から犬、猫を分類、色や大きさから花の種類を分類 など
今回の記事はscikit-learn 0.23.2版の公式ドキュメントをもとに作成しています。
ボストン市住宅価格のデータ(Boston house prices dataset) [回帰]
これはボストン市郊外における、地域別の住宅価格のデータセットです。
説明変数に使える列が13個と多く、データ分析の学習や、回帰についての機械学習論文で良く使用されています。
レコード数:506
カラム数 :14
目的変数 :「住宅価格」(1000ドル単位)の中央値。
使用用途 :回帰
・データの読み込み
# データセットを読み込み
from sklearn.datasets import load_boston
boston = load_boston()
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(boston.data, columns=boston.feature_names)

# 目的変数 (1000ドル台でオーナーが所有する住宅の価格の中央値)
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 dataset)
糖尿病患者442人の検査数値データと1年後の疾患進行状況についてまとめられたデータセットで、先ほどのボストン住宅価格のデータと同様に回帰で用いられることが多いです。
医療系ITを目指す方は一度は触れておくべきデータセットだと思います!
レコード数:442
カラム数 :10
目的変数 :基準から1年後の疾患進行の定量的尺度
使用用途 :回帰
・データの読み込み
#データセットを読み込み
from sklearn.datasets import load_diabetes
diabetes = load_diabetes()
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(diabetes.data, columns=diabetes.feature_names)

# 目的変数 (1 年後の疾患進行状況)
diabetes.target
array([151., 75., 141., 206., 135., 97., 138., 63., 110., 310., 101.,(中略)…178., 104., 132.,220., 57.])
アヤメの品種のデータ(Iris plants dataset)
アイリスデータとは、機械学習の分類やクラスタリングでよく用いられるアヤメ(Iris)の品種のデータセットです。
アヤメの品種のSetosa、Versicolor、Virginicaの3品種に関する150件のデータが入っており、花弁とがく片片の情報から品種の分類を行っていきます。
データの作成者は現代推測統計学の確率者であるロナルド・フィッシャーです!
レコード数:150
カラム数 :5
目的変数 :アヤメの品種
使用用途 :多クラス分類、クラスタリング
・データの読み込み
# データセットを読み込み
from sklearn.datasets import load_iris
iris = load_iris()
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(iris.data, columns=iris.feature_names)

# 各データの分類 (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])
数字の手書き文字データ(Optical recognition of handwritten digits dataset)
0から9までの10種類の手書き数字を64画素(8×8)に分解したデータセットです。
アヤメデータに次いで分類のデータセットでは有名で、機械学習の本にもよく登場しています。
また、MNISTと呼ばれる同じく手書き数字のデータセットは機械学習の'Hello World'と呼ばれるほど有名で、機械学習を勉強する際には1度は触れることになると思います!
レコード数:1797(10クラスの場合)
カラム数 :64
目的変数 :0~9までの数字
使用用途 :多クラス分類
・データの読み込み
#データセットの読み込み
from sklearn.datasets import load_digits
digits = load_digits(n_class=10)
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(digits.data)
#列名が多いので省略します
# 目的変数 (手書きの内容)
digits.target
array([0, 1, 2, ..., 8, 9, 8])
ワインの品質データ(Wine recognition dataset)
アルコール度数や色の度合いなどの12種類の説明変数をもとに、イタリアの同じ地域で栽培されているブドウで作られたワインの品種を分類するためのデータセットです。
レコード数:178
カラム数 :13
目的変数 :ワインの種類(3種)
使用用途 :多クラス分類
#データセットの読み込み
from sklearn.datasets import load_wine
wine = load_wine()
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(wine.data,columns=wine.feature_names)
#列の名前が長いので省略します
# 目的変数 (ワインの品種 0: 'class_0', 1: 'class_1', 2: 'class_2')
wine.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, 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, 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])
乳がんデータ(Breast cancer wisconsin [diagnostic] dataset)
乳がんの診断データがまとめられたデータセットです。説明変数の数が31個と多いデータセットとなっており、この情報から患者さんが良性腫瘍か悪性腫瘍かを分類する二値分類タスクとなっています。
レコード数:569
カラム数 :32
目的変数 :良性腫瘍or悪性腫瘍
使用用途 :二値分類
#データセットの読み込み
from sklearn.datasets import load_breast_cancer
breast_cancer = load_breast_cancer()
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(breast_cancer.data,columns=breast_cancer.feature_names)
#列名が多いので省略します
# 目的変数 (0:良性腫瘍, 1:悪性腫瘍)
breast_cancer.target
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, (中略)‥ 0, 1])
生理学的特徴と運動能力の関係についてのデータ(Linnerrud dataset)
ノースカロライナ州立大学のA.C.linnerud博士が作成した、20人の成人男性に対して測定した、3つの生理学的特徴と3つの運動能力の関係を整理した多変量回帰を扱うデータセットとなっています。
レコード数:20
カラム数 :説明変数・目的変数ともに3つ
目的変数 :体重、ウエスト、脈拍
使用用途 :多変量回帰
#データセットの読み込み
from sklearn.datasets import load_linnerud
linnerud = load_linnerud()
# Pandas のデータフレームとして表示
import pandas as pd
pd.DataFrame(linnerud.data,columns=linnerud.feature_names)

# 目的変数 (Weight:体重, Waist:ウエスト, Pulse:脈拍)
pd.DataFrame(linnerud.target,columns=linnerud.target_names)

まとめ

今回はscikit-learnで使えるデータセット7種を紹介していきました。これらは分類や回帰について勉強していく際に気軽に学習を行うことが出来るのでとても便利です!
特にアヤメとボストンのデータセットは機械学習の本を読んでいると度々遭遇することにはなると思います。
そしてこれらのデータで機械学習の進め方について理解出来たら以前紹介したデータサイエンスコンペにもぜひ参加してみて下さい!
万を超えるレコード数のデータを扱うコンペも普通にありますので、大変ですがとてもいい経験になると思います!
以前の記事:
コメント