scikit-learn 組み込みのデータセットを扱う (sklearn.dataset)

scikit-learn の sklearn.datasets モジュールは、組み込みのデータセットをロードする関数 (load_*) や、インターネット上のデータセットを取得する関数 (fetch_*) を提供しています。 scikit-learn の各種モジュールの振る舞いを学ぶときは、これらのデータセットをサンプルデータとして使うと便利です。

組み込みのデータセット

load_ で始まる関数を使用すると、scikit-learn に組み込まれているデータセットを読み込むことができます。 データ数は少ないですが、実験には十分です。

使用例
from sklearn.datasets import load_diabetes

diabetes = load_diabetes()
関数名用途説明
load_diabetes回帰糖尿病 (diabetes) 患者の診断データです。このデータセットは、糖尿病患者の臨床データからなり、主に糖尿病の進行を予測するための回帰分析に使用されます。データには患者の年齢、性別、平均血圧、BMI(Body Mass Index)、血清の 6 つの生化学的特徴(血清中の濃度など)などの特徴が含まれています。1 年後の糖尿病の進行を示す数値を予測します。
load_linnerud回帰体力トレーニングの効果に関する 2 つのデータセットです。
  1. Physical Exercise Data: このデータセットには、20 人の被験者の体力トレーニングに関する情報が含まれています。特徴量には、腕立て伏せ、仰向けの上体起こし、スクワットの回数が含まれており、これらの情報はトレーニングの効果を示すものです。
  2. Physiological Data: このデータセットには、20人の被験者の生理学的データが含まれており、特徴量には体重、腕立て伏せ、仰向けの上体起こし、腕立て伏せと仰向けの上体起こしの最大心拍数などが含まれています。
load_breast_cancer分類乳がん (breast cancer) 患者の腫瘍に関するデータで、主に乳がんの分類タスクに使用されます。データには腫瘍の特性に関する情報(腫瘍の半径、テクスチャ、周囲の腫瘍の平滑度など)が含まれており、それぞれのサンプルが「良性」または「悪性」のいずれかに分類されています。
load_digits分類手書き数字認識のための画像データです。0 から 9 までの手書き数字の画像が含まれており、各画像は 8x8 ピクセルのグレースケール画像として表現されています。機械学習アルゴリズムを使用して手書き数字を識別するために使用できます。
load_iris分類アヤメ(iris)の計測データです。iris データセットは、機械学習の教育と実験用に広く使用されるデータセットの一つです。3 つの異なる種類のアヤメの花の特性が含まれており、各花の 4 つの特徴量が記録されています。これらの特徴量は、がく片(sepal)と花弁(petal)の長さと幅に関するもので、アヤメの種類を分類するために使用できます。
load_wine分類ワインの化学的特性に関するデータセットです。異なる種類のワインの特性に関する情報が含まれており、主にワインの分類タスクや品質評価に使用されます。データにはアルコール濃度、酸度、フェノール類の濃度、色の強さ、色の濃さなど、ワインの化学的特性に関する 13 の特徴量が含まれています。各サンプルは 3 つの異なるワインクラス(種類)に属しています。
load_sample_image画像指定した画像のデータセットを numpy array として取得できます。
  1. "china": 中国の風景画像で、機械学習のコンピュータビジョンタスクなどで使用されます。
  2. "flower": 花の画像で、画像処理や画像分類のタスクに使用されます。

ダウンロード可能なデータセット

fetch_ で始まる関数を使うと、インターネット上で公開されている有名なデータセットを読み込むことができます。

関数名用途説明
fetch_california_housing回帰カリフォルニアの住宅価格に関するデータセットで、カリフォルニア州の異なる地域(ブロックグループ)に関する住宅価格の情報とその地域の特徴に関する情報を含みます。具体的には、以下の特徴量が含まれています:
  • 住宅価格の中央値
  • 収入の中央値
  • 住宅の年齢の中央値
  • 部屋数の中央値
  • 寝室数の中央値
  • 人口の中央値
  • 世帯数の中央値
  • 地理的な位置情報(緯度と経度)
このデータセットは、住宅価格の回帰分析や予測モデルをトレーニングするために使用されます。
fetch_20newsgroups分類20 Newsgroups データセットは、ニュースグループのメッセージからなるテキストデータセットで、クラスタリングやテキスト分類などの自然言語処理タスクのために使用されます。20 の異なるニュースグループが含まれており、それぞれのニュースグループに関するテキストメッセージが含まれています。このデータセットは、カテゴリ分類やテキスト処理の実験に広く使用されます。
fetch_20newsgroups_vectorized分類fetch_20newsgroups と同様ですが、ニュース記事がベクトルデータ(特徴量)化されています。
fetch_covtype分類木の種類を予測するためのデータセットで、土壌の種類や、標高、傾斜などの情報が含まれています。
fetch_kddcup99分類KDD99 のネットワーク侵入検知のコンペで用いられたデータで、持続時間やプロトコルなどの情報から攻撃の種類を予測します。
fetch_lfw_people分類LFW(Labeled Faces in the Wild)データセットは、多くの有名人や一般の人々の顔画像です。主に顔認識や顔検出などのコンピュータビジョンタスクの評価に使用されます。顔画像のピクセル値とそれに対応するラベル(各画像の人物の名前)が含まれています。
fetch_lfw_pairs分類異なる顔写真のペアで、同じ人物の場合と、異なる人物の場合があります。顔認識モデルのトレーニング、人物の同一性認識、シャッフルされた同一性認識など、さまざまなコンピュータビジョンタスクに使用できます。
fetch_olivetti_faces分類Olivetti Research Laboratory が収集した顔画像 (Olivetti Faces) データセットです。40 人の異なる被写体に対する顔画像のコレクションで、各被写体について、10 枚の異なる表情やポーズの画像が含まれています。画像は白黒で、サイズは 64x64 ピクセルです。このデータセットは、顔認識、顔検出、表情認識、顔の特徴量抽出など、さまざまなコンピュータビジョンタスクのトレーニングおよび評価に使用されます。
fetch_rcv1分類Reuters Corpus Volume I(RCV1)はニュース記事のコレクションで、カテゴリ分類タスクやトピックモデリングなどの自然言語処理タスクに使用できる大規模なテキストデータセットです。RCV1 データセットには、ニュース記事の本文や関連するカテゴリ情報が含まれています。
fetch_openmlその他OpenML プロジェクトからデータセットをダウンロードします。OpenML は、機械学習コミュニティに対して多くの機械学習データセットを提供するプラットフォームです。OpenML のデータセットは、分類、回帰、クラスタリング、異常検出など、さまざまな機械学習タスクに使用できます。

データセットを pandas のデータフレームにする

dataset モジュールが返すデータは numpy.ndarray 形式になっているので、pandas でデータ処理したいときは、DataFrame 形式に変換する必要があります。

diabetes データセットからデータフレームを作成する
import pandas as pd
from sklearn.datasets import load_diabetes

# 糖尿病のデータセットをロード
diabetes = load_diabetes()

# DataFrame 形式にする
df = pd.DataFrame(data=diabetes.data, columns=diabetes.feature_names)
print(df.head(3))

# 目的変数(糖尿病の進行状況)
print(diabetes.target[:3])
実行結果
        age       sex       bmi        bp        s1        s2        s3  \
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.005670 -0.045599 -0.034194 -0.032356

         s4        s5        s6
0 -0.002592  0.019907 -0.017646
1 -0.039493 -0.068332 -0.092204
2 -0.002592  0.002861 -0.025930

[151.  75. 141.]
wine データセットからデータフレームを作成する
import pandas as pd
from sklearn.datasets import load_wine

# ワインのデータセットをロード
wine = load_wine()

# DataFrame 形式にする
df = pd.DataFrame(data=wine.data, columns=wine.feature_names)
print(df.head(3))

# 目的変数(ワインの種類)
print(wine.target[:3])
実行結果
   alcohol  malic_acid   ash  alcalinity_of_ash  magnesium  total_phenols  \
0    14.23        1.71  2.43               15.6      127.0           2.80
1    13.20        1.78  2.14               11.2      100.0           2.65
2    13.16        2.36  2.67               18.6      101.0           2.80

   flavanoids  nonflavanoid_phenols  proanthocyanins  color_intensity   hue  \
0        3.06                  0.28             2.29             5.64  1.04
1        2.76                  0.26             1.28             4.38  1.05
2        3.24                  0.30             2.81             5.68  1.03

   od280/od315_of_diluted_wines  proline
0                          3.92   1065.0
1                          3.40   1050.0
2                          3.17   1185.0

[0 0 0]