scikit-learn には、機械学習やデータマイニングをすぐに試すことができるよう、実験用データが同梱されています。このページでは、いくつかのデータセットについて紹介します。
Iris (アヤメの計測データ、通称:アイリス)
“setosa”, “versicolor”, “virginica” という 3 種類の品種のアヤメのがく片 (Sepal)、花弁 (Petal) の幅および長さを計測したデータです。
データセットの詳細
レコード数 | 150 |
---|---|
カラム数 | 4 |
主な用途 | 分類 (Classification) |
データセットの詳細 | UCI Machine Learning Repository: Iris Data Set |
各カラムの構成
sepal length (cm) | がく片の長さ |
---|---|
sepal width (cm) | がく片の幅 |
petal length (cm) | 花弁の長さ |
petal width (cm) | 花弁の幅 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
>>> # データセットを読み込み >>> from sklearn.datasets import load_iris >>> iris = load_iris() >>> # Pandas のデータフレームとして表示 >>> import pandas as pd >>> pd.DataFrame(iris.data, columns=iris.feature_names) 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 5 5.4 3.9 1.7 0.4 6 4.6 3.4 1.4 0.3 7 5.0 3.4 1.5 0.2 8 4.4 2.9 1.4 0.2 9 4.9 3.1 1.5 0.1 10 5.4 3.7 1.5 0.2 ... (中略) 149 5.9 3.0 5.1 1.8 [150 rows x 4 columns] >>> # 各データの分類 (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]) >>> iris.target_names array(['setosa', 'versicolor', 'virginica'], dtype='<U10') |
Boston house-prices (ボストン市の住宅価格)
米国ボストン市郊外における地域別の住宅価格のデータセット。
データセットの詳細
レコード数 | 506 |
---|---|
カラム数 | 14 |
主な用途 | 回帰 (Regression) |
データセットの詳細 | UCI Machine Learning Repository: Housing Data Set |
各カラムの構成
CRIM | 人口 1 人当たりの犯罪発生数 |
---|---|
ZN | 25,000 平方フィート以上の住居区画の占める割合 |
INDUS | 小売業以外の商業が占める面積の割合 |
CHAS | チャールズ川によるダミー変数 (1: 川の周辺, 0: それ以外) |
NOX | NOx の濃度 |
RM | 住居の平均部屋数 |
AGE | 1940 年より前に建てられた物件の割合 |
DIS | 5 つのボストン市の雇用施設からの距離 (重み付け済) |
RAD | 環状高速道路へのアクセスしやすさ |
TAX | $10,000 ドルあたりの不動産税率の総計 |
PTRATIO | 町毎の児童と教師の比率 |
B | 町毎の黒人 (Bk) の比率を次の式で表したもの。 1000(Bk – 0.63)^2 |
LSTAT | 給与の低い職業に従事する人口の割合 (%) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
>>> # データセットを読み込み >>> from sklearn.datasets import load_boston >>> boston = load_boston() >>> # 説明変数を Pandas のデータフレームとして表示 >>> import pandas as pd >>> pd.DataFrame(boston.data, columns=boston.feature_names) CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \ 0 0.00632 18.0 2.31 0 0.538 6.575 65.2 4.0900 1 296 1 0.02731 0.0 7.07 0 0.469 6.421 78.9 4.9671 2 242 2 0.02729 0.0 7.07 0 0.469 7.185 61.1 4.9671 2 242 3 0.03237 0.0 2.18 0 0.458 6.998 45.8 6.0622 3 222 4 0.06905 0.0 2.18 0 0.458 7.147 54.2 6.0622 3 222 5 0.02985 0.0 2.18 0 0.458 6.430 58.7 6.0622 3 222 6 0.08829 12.5 7.87 0 0.524 6.012 66.6 5.5605 5 311 7 0.14455 12.5 7.87 0 0.524 6.172 96.1 5.9505 5 311 8 0.21124 12.5 7.87 0 0.524 5.631 100.0 6.0821 5 311 9 0.17004 12.5 7.87 0 0.524 6.004 85.9 6.5921 5 311 10 0.22489 12.5 7.87 0 0.524 6.377 94.3 6.3467 5 311 ... (中略) 505 0.04741 0.0 11.93 0 0.573 6.030 80.8 2.5050 1 273 PTRATIO B LSTAT 0 15.3 396.90 4.98 1 17.8 396.90 9.14 2 17.8 392.83 4.03 3 18.7 394.63 2.94 4 18.7 396.90 5.33 5 18.7 394.12 5.21 6 15.2 395.60 12.43 7 15.2 396.90 19.15 8 15.2 386.63 29.93 9 15.2 386.71 17.10 10 15.2 392.52 20.45 ... (中略) 505 21.0 396.90 7.88 [506 rows x 13 columns] >>> # 目的変数 (1,000 ドル台でオーナーが所有する住宅の価格の中央値) >>> 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 (糖尿病患者の診断データ)
糖尿病患者 442 人の検査数値と 1 年後の疾患進行状況(正規化済み)。
データセットの詳細
レコード数 | 442 |
---|---|
カラム数 | 10 |
主な用途 | 回帰 (Regression) |
データセットの詳細 | Least Angle Regression diabetes.sdata.txt |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
>>> from sklearn.datasets import load_diabetes >>> diabetes = load_diabetes() >>> # Pandas のデータフレームとして表示 >>> import pandas as pd >>> pd.DataFrame(diabetes.data, columns=("age", "sex", "bmi", "map", "tc", "ldl", "hdl", "tch", "ltg", "glu")) age sex bmi map tc ldl hdl \ 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.005671 -0.045599 -0.034194 -0.032356 3 -0.089063 -0.044642 -0.011595 -0.036656 0.012191 0.024991 -0.036038 4 0.005383 -0.044642 -0.036385 0.021872 0.003935 0.015596 0.008142 5 -0.092695 -0.044642 -0.040696 -0.019442 -0.068991 -0.079288 0.041277 6 -0.045472 0.050680 -0.047163 -0.015999 -0.040096 -0.024800 0.000779 7 0.063504 0.050680 -0.001895 0.066630 0.090620 0.108914 0.022869 8 0.041708 0.050680 0.061696 -0.040099 -0.013953 0.006202 -0.028674 9 -0.070900 -0.044642 0.039062 -0.033214 -0.012577 -0.034508 -0.024993 10 -0.096328 -0.044642 -0.083808 0.008101 -0.103389 -0.090561 -0.013948 ... (中略) 41 -0.045472 -0.044642 -0.073030 -0.081414 0.083740 0.027809 0.173816 tch ltg glu 0 -0.002592 0.019908 -0.017646 1 -0.039493 -0.068330 -0.092204 2 -0.002592 0.002864 -0.025930 3 0.034309 0.022692 -0.009362 4 -0.002592 -0.031991 -0.046641 5 -0.076395 -0.041180 -0.096346 6 -0.039493 -0.062913 -0.038357 7 0.017703 -0.035817 0.003064 8 -0.002592 -0.014956 0.011349 9 -0.002592 0.067736 -0.013504 10 -0.076395 -0.062913 -0.034215 ... (中略) 441 -0.039493 -0.004220 0.003064 [442 rows x 10 columns] >>> >>> # 目的変数 (1 年後の疾患進行状況) >>> diabetes.target array([ 151., 75., 141., 206., 135., 97., 138., 63., 110., 310., 101., 69., 179., 185., 118., 171., 166., 144., 97., 168., 68., 49., 68., 245., 184., 202., 137., 85., 131., 283., 129., 59., 341., 87., 65., 102., ... (中略) 173., 72., 49., 64., 48., 178., 104., 132., 220., 57.]) |
Digits (数字の手書き文字)
0 ~ 9 の 10 文字の手書きの数字を 64 (8×8) 個の画素に分解したものです。
データセットの詳細
レコード数 | 1,797 (10 クラスの場合) |
---|---|
カラム数 | 64 |
主な用途 | 分類 (classification) |
データセットの詳細 | UCI Machine Learning Repository: Optical Recognition of Handwritten Digits Data Set |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
>>> from sklearn.datasets import load_digits >>> digits = load_digits(n_class=10) >>> # データセットの概要 >>> print(digits.DESCR) Optical Recognition of Handwritten Digits Data Set =================================================== Notes ----- Data Set Characteristics: :Number of Instances: 5620 ... (以下略) >>> # Pandas のデータフレームとして表示 >>> import pandas as pd >>> pd.DataFrame(digits.data) 0 1 2 3 4 5 6 7 8 9 ... 54 55 56 57 58 59 60 \ 0 0 0 5 13 9 1 0 0 0 0 ... 0 0 0 0 6 13 10 1 0 0 0 12 13 5 0 0 0 0 ... 0 0 0 0 0 11 16 2 0 0 0 4 15 12 0 0 0 0 ... 5 0 0 0 0 3 11 3 0 0 7 15 13 1 0 0 0 8 ... 9 0 0 0 7 13 13 4 0 0 0 1 11 0 0 0 0 0 ... 0 0 0 0 0 2 16 5 0 0 12 10 0 0 0 0 0 0 ... 4 0 0 0 9 16 16 6 0 0 0 12 13 0 0 0 0 0 ... 8 0 0 0 1 9 15 7 0 0 7 8 13 16 15 1 0 0 ... 0 0 0 0 13 5 0 8 0 0 9 14 8 1 0 0 0 0 ... 8 0 0 0 11 16 15 9 0 0 11 12 0 0 0 0 0 2 ... 4 0 0 0 9 12 13 10 0 0 1 9 15 11 0 0 0 0 ... 0 0 0 0 1 10 13 ... (中略) 1796 0 0 10 14 8 1 0 0 0 2 ... 8 0 0 1 8 12 14 61 62 63 0 0 0 0 1 10 0 0 2 16 9 0 3 9 0 0 4 4 0 0 5 10 0 0 6 11 3 0 7 0 0 0 8 11 1 0 9 3 0 0 10 3 0 0 ... (中略) 1796 12 1 0 [1797 rows x 64 columns] >>> # 目的変数 (手書きの内容) >>> digits.target_names array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> digits.target array([0, 1, 2, ..., 8, 9, 8]) |
Linnerud (生理学的特徴と運動能力の関係)
ノースカロライナ州立大学の A. C. linnerud 博士が作成した、20 人の成人男性に対してフィットネスクラブで測定した 3 つの生理学的特徴と 3 つの運動能力の関係。
データセットの詳細
レコード数 | 20 |
---|---|
カラム数 | 説明変数:3, 目的変数: 3 |
主な用途 | 多変数回帰 (multivariate regression) |
データセットの詳細 | R: Linnerud Dataset |
説明変数の構成
Weight | 体重 |
---|---|
Waist | ウエスト (胴囲) |
Pulse | 脈拍 |
目的変数の構成
Chins | 懸垂の回数 |
---|---|
Situps | 腹筋の回数 |
Jumps | 跳躍 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
>>> from sklearn.datasets import load_linnerud >>> linnerud = load_linnerud() >>> # データセットの概要 >>> print(linnerud.DESCR) Linnerrud dataset Notes ----- Data Set Characteristics: :Number of Instances: 20 ... (以下略) >>> # Pandas のデータフレームとして表示 >>> import pandas as pd >>> pd.DataFrame(linnerud.data, columns=linnerud.feature_names) Chins Situps Jumps 0 5 162 60 1 2 110 60 2 12 101 101 3 12 105 37 4 13 155 58 5 4 101 42 6 8 101 38 7 6 125 40 8 15 200 40 9 17 251 250 10 17 120 38 ... (中略) 19 2 110 43 >>> # 目的変数 (3 種類) を Pandas のデータフレームとして表示 >>> import pandas as pd >>> pd.DataFrame(linnerud.target, columns=linnerud.target_names) Weight Waist Pulse 0 191 36 50 1 189 37 52 2 193 38 58 3 162 35 62 4 189 35 46 5 182 36 56 6 211 38 56 7 167 34 60 8 176 31 74 9 154 33 56 10 169 34 50 ... (中略) 19 138 33 68 |
参考: 5. Dataset loading utilities — scikit-learn 0.17.1 documentation