scikit-learnのサンプルデータセットを入手する

scikit-learnには、いくつかのデータセットが備わっています。大別すると、ToyデータセットとRealworldデータセットに分けられます。Realworldデータセットの方が、大規模なデータになります。

目次

  1. データセットの種類
  2. データセットのダウンロード
  3. データセットをダウンロードしてみる

データセットの種類

Toy datasets

Boston house prices dataset

ボストンの住宅価格

Iris plants dataset

アヤメの花の分類

Diabetes dataset

検診データと糖尿病の進行状況

Optical recognition of handwritten digits dataset

手書き数字の分類

Linnerrud dataset

運動能力と身体データ

Wine recognition dataset

ワインの特徴と格付け

Breast cancer wisconsin (diagnostic) dataset

乳がんの分類

RealWorld datasets

The Olivetti faces dataset

人物のいろいろな状態での顔

The 20 newsgroups text dataset

20のトピックについての18,000以上の投稿データ

The Labeled Faces in the Wild face recognition dataset

ネットで収集した顔画像

Forest covertypes

USの森林の木の種類

RCV1 dataset

800,000以上のロイターの記事

Kddcup 99 dataset

ネットワークのアクセスデータ

California Housing dataset

カリフォルニアの住宅価格

データセットのダウンロード

Toyデータセットには、各データセット毎にダウンロード用の関数があります。

import sklearn.datasets

data = load_boston([return_X_y])
data = load_iris([return_X_y], [as_frame])
data = load_diabetes([return_X_y], [as_frame])
data = load_digits([n_class], [return_X_y], [as_frame])
data = load_linnerud([return_X_y], [as_frame])
data = load_wine([return_X_y], [as_frame])
data = load_breast_cancer([return_X_y], [as_frame])

変数

内容

return_X_y

bool

省略可。規定値はFalse。戻り値をタプルにするか。

as_frame

bool

省略可。規定値はFalse。pandasのDataframeにするか。

n_class

int

省略可。規定値は10。ロードするクラスの数。0~10。

data

Bunch, tuple

ロードされたデータ。

引数に何も指定しないと、戻り値の型はBunchになります。Bunch型のデータには、生データの他に列名やデータの説明などの情報が含まれます。

RealWorldデータセットのダウンロードについては、本家サイトを参照してください。

データセットをダウンロードしてみる

irisデータセットをダウンロードしてみます。

from sklearn.datasets import load_iris

data = load_iris()
print(data.keys())
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])

Bunch型は辞書型になっていて、キーを指定すると値が取り出せます。

irisデータの場合は、dataに説明変数が、targetに目的変数(分類クラス)が、target_namesに分類名(種類の名前)が、DESCRにデータの説明が、feature_namesに説明変数の列名が入っています。

では、return_X_yにTrueを指定してダウンロードしてみます。

from sklearn.datasets import load_iris

data_X, data_y = load_iris(return_X_y=True)

print(type(data_X))
print(data_X.shape)
print(data_y.shape)
<class 'numpy.ndarray'>
(150, 4)
(150,)

ロードされたデータはndarray型になります。説明変数と目的変数だけになります。

次に、as_frameにTrueを指定してみます。as_frameをTrueにする場合は、return_X_yもTrueにしておく必要があります。

from sklearn.datasets import load_iris

data_X, data_y = load_iris(return_X_y=True, as_frame=True)

print(type(data_X))
print(data_X.head())
print(type(data_y))
print(data_y.head())
<class 'pandas.core.frame.DataFrame'>
   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
<class 'pandas.core.series.Series'>
0    0
1    0
2    0
3    0
4    0
Name: target, dtype: int32

説明変数の方はpandas.Dataframeに、目的変数の方はpandas.Seriesになりました。

DataFrameに変換する

Bunch形式のデータをpandasのDataFrameに変換します。

Bunch形式のデータの中のdataというキーの値が説明変数なので、それをDataFrameに変換します。その際、feature_namesの値が各列の名前になっているのでcolumnsに指定します。また、targetというキーの値が目的変数なので、これをSeriesに変換します。

import pandas as pd
from sklearn.datasets import load_iris

data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
Y = pd.Series(data.target)

print(X.head())
print(Y.value_counts())
   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

0    50
1    50
2    50
dtype: int64

これで、pandasを使って分析できます。

更新日
公開日

広告