業界・業務から探す
導入目的・課題から探す
データ・AIについて学ぶ
News
Hakkyについて
ウェビナーコラム
◆トップ【AI・機械学習】
AI

執筆者:Handbook編集部

Kedroのデータ読み込みについて

はじめに

Kedroでcsvなどのデータを扱う際には、catalog.ymlにデータ形式やファイルパス、入力・出力形式などを以下のように記述する。

example_iris_data:
  type: pandas.CSVDataSet
  filepath: data/01_raw/iris.csv

(ここでは入力・出力形式は省略している。)

しかし、デフォルトではcsvファイルやpickleファイル等の特定の形式のみにしか対応していない。

デフォルトでは読み込めないファイルを扱いたいときは、自分で読み込み方法を指定する必要がある。 本稿では、それについて解説する。

方法

フォルダの構成

kedro newでKedroフォルダを生成すると、src/project_nameという名前のサブフォルダが存在する(実際にはproject_nameの部分は自分で指定した名前になっている)。 この中にextrasと言う名前のサブフォルダを生成し、その中に__init__.pydatasetsフォルダを生成する。さらに、datasetsの中に__init__.pycustom_datasets.pyを生成する。(ここで、custom_datasetsの部分は任意の文字列で良いが、本稿ではこのように設定する。)

ここまでをいったんまとめると、フォルダ構成はこのようになる。

src/project_name/extras
├── __init__.py
└── datasets
    ├── __init__.py
    └── custom_dataset.py

.pyファイルの設定

次に、custom_datasets.pyの中身を書き込む。 大まかには、まずclassを作成し、その中にファイルのロードやセーブの方法を定義していく流れである。

ここでは、fastTextの学習済みモデルを公開しましたで公開している様な.vecファイルをgensimライブラリを使って読み込むことを考える。

まずclass(ここではWordVecと命名する)を作成し、その中に_load, _save, _describeといった各関数を定義する。ここでは読み込みのみを行いたいので、_load関数のみ具体的に記述することにする。ちなみに_save, _describeも使わないからといって定義をしないと怒られる。

from typing import Any, Dict
from kedro.io import AbstractDataSet
import numpy as np
import gensim


class WordVec(AbstractDataSet):
    def __init__(self, filepath: str):
        self._filepath = filepath

    def _load(self):
        return gensim.models.KeyedVectors.load_word2vec_format(
            self._filepath, binary=False
        )

    def _save(self):
        ...

    def _describe(self):
        ...

catalog.ymlの設定

ファイルの読み込み方法を指定した後は、ファイルの場所等をcatalog.ymlに記述する必要がある。基本的には"はじめに"で述べたような書き方で良いが、typeの欄の書き方に注意されたい。 具体的には以下のように記述する。:

fast_text_model:
  type: project_name.extras.datasets.custom_datasets.WordVec
  filepath: data/01_raw/fast_text_model.vec

ファイルの名称に関しては任意の文字列で良い。

確認

念のため、上手く読み込めるか確認する。kedro runで丸ごと実行するよりもkedro ipythonで部分的に確認するのが手軽である。

ターミナルで

$ kedro ipython

と打つと対話形式のセッションが開かれるので、以下のように入力する。

catalog.load("fast_text_model")

特にエラーが出なければOK

参考文献

2025年06月15日に最終更新
読み込み中...