概要
diabetesデータは、年齢や性別など10個の特徴量と、それらの測定1年後の糖尿病の進行度に関する数値を、442人について集めたデータ。出典は”From Bradley Efron, Trevor Hastie, Iain Johnstone and Robert Tibshirani (2004) “Least Angle Regression,” Annals of Statistics (with discussion), 407-499″。
ここではPythonのscikit-learn
にあるdiabetes
データの使い方をまとめる。
データの取得とデータ構造
Pythonで扱う場合、scikit-learn.datasets
モジュールにあるload_diabetes()
でデータを取得できる。データはBunchクラスのオブジェクト
データの構造は辞書型で、442人の糖尿病に関する10個の特徴量をレコードとした配列、442人の測定1年後の糖尿病の進行度を示す数値データの配列など。
データのキーは以下のようになっている。
データの内容
'data'
~特徴量データセット
10個の特徴量を列とし、442人の被検者を業とした2次元配列。DESCRに説明されているように、これらのデータは標本平均と標本分散で正規化されており、各特徴量とも、データの和はゼロ(正確には1×10-14~1×10-13のオーダーの実数)、2乗和は1となる。
'target'
~糖尿病の進行度
442人に関する10個の特徴量データを測定した1年後の糖尿病の進行度を示す数値。原文でも”a measure of disease progression one year after baseline”としか示されていない。このデータは正規化されていない。
'feature_names'
~特徴名
10種類の特徴量の名称
sklearn | R | ||
0 | age | age | 年齢 |
1 | sex | sex | 性別 |
2 | bmi | bmi | BMI(Body Mass Index) |
3 | bp | map | (動脈の)平均血圧(Average blood pressure) |
4 | S1 | tc | 総コレステロール? |
5 | S2 | ldl | 悪玉コレステロール(Low Density Lipoprotein) |
6 | S3 | hdl | 善玉コレステロール(High Density Lipoprotein) |
7 | S4 | tch | 総コレステロール? |
8 | S5 | ltg | ラモトリギン? |
9 | S6 | glu | 血糖=グルコース? |
scikit-learn
では後半のデータがs1
~s6
とだけ表示されていて、DESCR
においても”six blood serum measurements”とだけ書かれている。Rのデータセットでは、これらがtc
, ldl
など血清に関する指標の略号で示されている。
tcとtchはどちらも総コレステロールに関するデータのようだが、どういう違いなのかよくわからない。少なくとも双方に正の相関があるが、ばらつきは大きい。
'filename'
~ファイル名
CSVファイルのフルパス名が示されている。scikit-learnの他のデータセットと以下の2点が異なっている。
- 特徴量データdiabetes_data.csvとターゲットデータdiabetes_target.csvの2つのファイルに分かれている
- ファイルの拡張子がcsvとなっているが、区切りはスペースとなっている
diabetes_data.csv
1行に10個の実数がスペース区切りで配置されており、442行のデータがある。442人分の10個の特徴量データ
diabetes_target.csv
ターゲットyに相当する442行の実数データ。
‘DESCR’~データセットの説明
データセットの説明。各特徴量データが標準化されていることが説明されている。
データの利用
各データの取得方法
data、targetなどのデータを取り出すのに、以下の2つの方法がある。
- 辞書のキーを使って呼び出す(例:
diabetes['data']
) - キーの文字列をプロパティーに指定する(例:
diabetes.data
)
dataの扱い
そのまま2次元配列として扱うか、pandas.DataFrame
で扱う。特定の特徴量データを取り出すには、ファンシー・インデックスを使う。