scikit-learnのサンプルデータセットを入手する
scikit-learnには、いくつかのデータセットが備わっています。大別すると、ToyデータセットとRealworldデータセットに分けられます。Realworldデータセットの方が、大規模なデータになります。
目次
データセットの種類
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を使って分析できます。
更新日
公開日
広告
Pythonでデータ分析カテゴリの投稿
- DataFrameの欠損値を特定の値で置き換える
- Pythonでpandas入門1(データの入力とデータへのアクセス)
- Pythonでpandas入門2(データの追加と削除および並び替え)
- Pythonでpandas入門3(データの統計量の計算)
- Pythonでpandas入門4(データの連結と結合)
- Pythonでpandas入門5(欠損値(NaN)の扱い)
- Pythonでデータを学習用と検証用に分割する
- Pythonでデータ分析入門1(初めての回帰分析)
- Pythonでデータ分析入門2(初めてのロジスティック回帰(2クラス分類))
- Pythonでデータ分析入門3(初めての決定木(多クラス分類))
- Pythonで回帰モデルの評価関数
- Pythonで箱ひげ図を描く
- Python(pandas)でExcelファイルを読み込んでDataFrameにする
- pandasでカテゴリ変数を数値データに変換する
- pandasでクロス集計する
- pandasで同じデータ(要素)がいくつあるか調べる
- pandasで相関係数を計算する
- pandasとseabornでデータの可視化(散布図行列)
- pandasの学習用のデータセットを入手する
- scikit-learnのサンプルデータセットを入手する