「身体運動のデータセット」について学ぶ(scikit-learn /トイデータセット)

2023年5月13日

この記事では、統計学を初めて学ぶ筆者が、「scikit-learn」の「トイデータセット」における「身体運動のデータセット」について学んだ内容について記載しています。

学習には、scikit-learnのガイド「7.1. Toy datasets」を参考にし、Pythonのプログラミングにも触れ、理解を深めました。

プログラミングには、機械学習ライブラリのscikit-learnを使用しました。

この記事は、他の人が参考にできるよう、わかりやすく書くことを心がけました。

scikit-learn トイデータセット

機械学習ライブラリscikit-learnに用意されている「トイデータセット」は、機械学習の問題を解くためのサンプルデータセットのことで、いくつかの種類が用意されています。例えば、Iris(アヤメ)の花の特徴から、その種類を分類する問題を解くための「irisデータセット」や、ボストン市の住宅価格に関するデータを用いて、住宅価格を予測する問題を解くための「bostonデータセット」などがあります。

scikit-learnにはいくつかの小さな標準データセットが付属しており、外部のウェブサイトからファイルをダウンロードする必要はありません。

これらは以下の関数を使って読み込むことができます。

load_boston() : load_boston は 1.0 で非推奨となり、1.2 で削除される予定である。

load_iris() : アヤメのデータセット(分類)をロードして返す。

load_diabetes() : 糖尿病のデータセット(回帰)をロードして返す。

load_linnerud() : 身体運動のデータセットをロードして返す。

load_digits() : 数字のデータセット(分類)をロードして返す。

load_wine() : ワインのデータセット(分類)をロードして返す。

load_breast_cancer() : ウィスコンシン州の乳がんのデータセット(分類)をロードして返す。7.1. Toy datasetsts

身体運動のデータセット

Linnerrudデータセットは、フィットネスクラブの中年男性20人から収集された、3つの運動(データ)と3つの生理学的(ターゲット)変数から成る、マルチアウトプット回帰データセットです:

physiological(生理学的) – 3つの生理学的変数に関する20の観測値を含むCSV:
体重、ウエスト、脈拍。
exercise(運動) – 3つの運動変数に関する20の観測値を含むCSV:
チンアップ、シットアップ、ジャンプ。

Pythonプログラミング

「身体運動のデータセット」をイメージしやすいようPythonでのプログラミングについても学びます。

プログラム

身体運動のデータセットを読み込み、データセットの詳細を出力します。

from sklearn.datasets import load_linnerud

# 身体運動のデータセットを読み込む
linnerud = load_linnerud()

# データセットの詳細を出力する
print("身体運動のデータセットの定義:")
print("----------------------------")
print("データセット名:", linnerud['DESCR'])
print("----------------------------")
print("特徴量名:", linnerud['feature_names'])
print("----------------------------")
print("特徴量の数:", len(linnerud['feature_names']))
print("----------------------------")
print("クラス名:", linnerud['target_names'])
print("----------------------------")
print("クラスの数:", len(linnerud['target_names']))
print("----------------------------")
print("データ数:", len(linnerud['data']))
print("----------------------------")
print("データの先頭5行:")
print(linnerud['data'][:5])
print("----------------------------")
print("クラスの先頭5行:")
print(linnerud['target'][:5])

実行結果

身体運動のデータセットの定義:
----------------------------
データセット名: .. _linnerrud_dataset:

Linnerrud dataset
-----------------

**Data Set Characteristics:**

    :Number of Instances: 20
    :Number of Attributes: 3
    :Missing Attribute Values: None

The Linnerud dataset is a multi-output regression dataset. It consists of three
exercise (data) and three physiological (target) variables collected from
twenty middle-aged men in a fitness club:

- *physiological* - CSV containing 20 observations on 3 physiological variables:
   Weight, Waist and Pulse.
- *exercise* - CSV containing 20 observations on 3 exercise variables:
   Chins, Situps and Jumps.

.. topic:: References

  * Tenenhaus, M. (1998). La regression PLS: theorie et pratique. Paris:
    Editions Technic.

----------------------------
特徴量名: ['Chins', 'Situps', 'Jumps']
----------------------------
特徴量の数: 3
----------------------------
クラス名: ['Weight', 'Waist', 'Pulse']
----------------------------
クラスの数: 3
----------------------------
データ数: 20
----------------------------
データの先頭5行:
[[  5. 162.  60.]
 [  2. 110.  60.]
 [ 12. 101. 101.]
 [ 12. 105.  37.]
 [ 13. 155.  58.]]
----------------------------
クラスの先頭5行:
[[191.  36.  50.]
 [189.  37.  52.]
 [193.  38.  58.]
 [162.  35.  62.]
 [189.  35.  46.]]

和訳します。(.. topic:: Referencesを除きます。)

身体運動のデータセットの定義:
----------------------------
データセット名: .. _linnerrud_dataset:

Linnerrudデータセット

データセットの特徴:

:インスタンス数: 20
:属性の数: 3
:欠損値: なし

Linnerrudデータセットは、フィットネスクラブの中年男性20人から収集された、3つの運動(データ)と3つの生理学的(ターゲット)変数から成る、マルチアウトプット回帰データセットです:

physiological(生理学的) - 3つの生理学的変数に関する20の観測値を含むCSV:
体重、ウエスト、脈拍。
exercise(運動) - 3つの運動変数に関する20の観測値を含むCSV:
チンアップ、シットアップ、ジャンプ。

特徴量名: ['Chins', 'Situps', 'Jumps']

特徴量の数: 3

クラス名: ['Weight', 'Waist', 'Pulse']

----------------------------
クラスの数: 3
----------------------------
データ数: 20
----------------------------
データの先頭5行:
[[  5. 162.  60.]
 [  2. 110.  60.]
 [ 12. 101. 101.]
 [ 12. 105.  37.]
 [ 13. 155.  58.]]
----------------------------
クラスの先頭5行:
[[191.  36.  50.]
 [189.  37.  52.]
 [193.  38.  58.]
 [162.  35.  62.]
 [189.  35.  46.]]

プログラムの説明

from sklearn.datasets import load_linnerud

scikit-learnのdatasetsモジュールから、load_linnerud関数をインポートします。これにより、linnerudデータセットを読み込むことができます。

# 身体運動のデータセットを読み込む
linnerud = load_linnerud()

load_linnerud()関数を使って、linnerudデータセットを読み込み、linnerudという名前で保存します。

# データセットの詳細を出力する
print("身体運動のデータセットの定義:")
print("----------------------------")
print("データセット名:", linnerud['DESCR'])
print("----------------------------")
print("特徴量名:", linnerud['feature_names'])
print("----------------------------")
print("特徴量の数:", len(linnerud['feature_names']))
print("----------------------------")
print("クラス名:", linnerud['target_names'])
print("----------------------------")
print("クラスの数:", len(linnerud['target_names']))
print("----------------------------")
print("データ数:", len(linnerud['data']))
print("----------------------------")

print(“データセット名:", linnerud['DESCR’])は、身体運動のデータセットの詳細情報を出力します。
print(“特徴量名:", linnerud['feature_names’])は、身体運動のデータセットの特徴量名を出力します。
print(“特徴量の数:", len(linnerud['feature_names’]))は、身体運動のデータセットの特徴量の数を出力します。
print(“クラス名:", linnerud['target_names’])は、身体運動のデータセットのクラス名を出力します。
print(“クラスの数:", len(linnerud['target_names’]))は、身体運動のデータセットのクラスの数を出力します。
print(“データ数:", len(linnerud['data’]))は、身体運動のデータセットのデータの数を出力します。

print("データの先頭5行:")
print(iris['data'][:5])
print("----------------------------")
print("クラスの先頭5行:")
print(iris['target'][:5])

print(linnerud['data’][:5])は、身体運動のデータセットの最初の5行を出力します。

linnerud['data’]は、身体運動のデータセットから取得したデータの行列を表します。各行が1つのデータポイントであり、各列が3つの特徴量の値を表します。linnerud['data’][:5]は、最初の5つの行を取得するためのPythonのスライスです。したがって、print(linnerud['data’][:5])は、最初の5つのデータポイントの特徴量の値を表示します。

print(linnerud['target’][:5])は、身体運動のデータセットのクラスの最初の5行を出力します。

linnerud['target’]は、身体運動のデータセットから取得したクラスラベルを表します。各クラスラベルは、各データポイントに対応しています。linnerud['target’][:5]は、最初の5つのクラスラベルを取得するためのPythonのスライスです。したがって、print(linnerud['target’][:5])は、最初の5つのデータポイントのクラスラベルを表示します。