2024年6月22日土曜日

scikit-learnのデータセット、Bunchクラスはとても有用

scikit-learnのデータセット

scikit-learnは機械学習を扱う便利なライブラリですが、簡単に試せるようにサンプル・データセットも用意されています。 
多くの方はscikit-learnの入門にこのデータセットを利用されると思います。

sklearn.__version__ : 1.4.2

 サンプルデータセットには小さいサイズのToy Datasetsと画像などの大きなサイズのReal World Datasetsの2種類が用意されています。


#! /usr/bin/env python
# -*- coding:utf-8 -*-

iris_data = sklearn.datasets.load_iris()

print(type(iris_data))


<class 'sklearn.utils._bunch.Bunch'>

データセットはBunchクラスのオブジェクトとして読み込まれます。

Bunchクラスはdictのサブクラスでdictと同じように扱えるので、keys()でメンバ一覧出来ます。

print(iris_data.keys())

dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename', 'data_module'])


Bunchクラスのデータをpandasのデータフレームに変換する

Bunchクラスのデータをpandasのデータフレームとして扱うには、データの中身をdata変数、列名をfeature_namesから取ります。

 
 df = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)
 
 pritn(df.head())
 
 

 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

このようにデータフレームとしても扱えますが、Bunchオブジェクトは説明変数、目的変数、注釈などに分けてあるので通常のデータフレームよりデータの内容が理解しやすいです。

通常のデータフレームは行と列ですぐに扱えますが、扱いやすい分、列名が短縮系で意味が分からなかったり、データ自身を解釈するのに他に説明が必要です。

Bunchクラスではデータの意味や説明まで含まれているので、データをどのように扱うか他を参照しなくても理解出来ます。

scikit-learnは急速に進化中ですが、Bunchクラスはサンプルデータだけでなく、もっと広まっても良い気がします。

0 件のコメント:

コメントを投稿

Pythonで地図空間データを扱う⑤

ベースの地図が出来た所で、他のデータを被せてみます。 国土地理院の  500mメッシュ別将来推計人口データ  を使用します。 同じく神奈川県のデータ  500m_mesh_suikei_2018_shape_14.zip をダウンロードします。 ベースの地図データと同じ場所に展開...