私は最近、Dataikuの認定資格の中でも最も難易度の高い、Developer認定に挑戦中です。
Developer認定は内容もさながら、2024年4月現在英語での受講しかできないということで、様々な障壁にぶつかりました。
その経験を数回に分けてまとめてみたいと思います。
今回は、Dataikuのコードライブラリ機能でGitリポジトリからコードをインポートできるのですが、それで詰まったことを纏めます。
Dataikuの認定資格とは?
まず、Dataikuの認定資格は、Dataikuのプラットフォームを効果的に使用するためのスキルと知識を証明するもので、誰でも無料で受講することが可能です。
中でもDeveloper認定は、Dataikuでのコーディング能力を向上させることに特化した資格で、技術者がDataikuを使用してカスタム機械学習モデルを構築したり、プロジェクト内でコードを共有したりする方法を学びます。この認定は、Dataikuのプラットフォームでの開発スキルを証明するものであり、データサイエンスプロジェクトにおける技術的な役割に従事する人々にとって価値があります。詳細については、Dataiku Academyの公式ウェブサイトを参照してください。
Dataikuのコードライブラリ機能について
Dataikuのコードライブラリ機能は、プロジェクト内で再利用可能なコードを保存し、管理するための機能です。
プロジェクトライブラリにコードを追加することで、コードレシピやノートブックなどのプロジェクト内のさまざまな場所でそのコードを簡単に使用することができます。
また、Gitリポジトリからコードをインポートすることも可能で、チーム間でコードを共有し、協力して開発することが容易になります。
この機能の価値は、開発プロセスの効率化と、コードの再利用による一貫性と品質の向上にあります。詳細については、Dataikuの公式ドキュメントを参照してください。
Dataikuのコードライブラリ機能でGitリポジトリからコードをインポートする手順は以下の通りです。
- Dataikuのプロジェクトに移動し、「Libraries」をクリックします。
- 「Git」>「Import from Git…」を選択します。
- GitリポジトリのURLを入力します。必要に応じてブランチ名、タグ名、またはコミットIDを指定します。
- リポジトリの一部のみをインポートする場合は、サブパスを入力します。
- 「Target path」にインポート先のパスを指定します。例えば、
/python/と入力すると、Pythonフォルダにインポートされます。
- 「Save and Retrieve」をクリックしてリポジトリを取得します。
上記の手順で、簡単にGitリポジトリからコードライブラリをインポートすることが可能です。
今回、特にサブパスを指定せずにトレーニング用のリポジトリ全体をインポートしたのですが、その際にいくつかの注意点が有りました。
既存のライブラリが消えてしまう
python直下を指定してGitリポジトリをインポートした場合、python直下に既に存在しているライブラリが消えてしまうという現象が発生しました。
インポート前の状態
インポート後の状態、インポート前にはあったmake_framesなどのモジュールが消失している。。。
これを防ぐためには、python直下にフォルダを作成し、そこにインポートすることが必要になりそうです。
今回はpython/code-samplesというフォルダを指定し、インポートすることでそれまでに作成しているライブラリを上書きせず、新しいライブラリをインポートすることができました。
pythonフォルダ直下に無いコードがインポートできない
Gitリポジトリからインポートしたimpute_valuesのようなライブラリはpythonフォルダ直下に存在しません。
これらは通常の import [ファイル名] のようなインポートの仕方が出来ず、以下のようなコードだとエラーが発生します。
# -*- coding: utf-8 -*-
import dataiku
import pandas as pd
from impute_values import imputeLocationAvg
## if you import the function from Github, be sure to add an import statement here
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE
# Read recipe inputs
heart_disease_joined = dataiku.Dataset("heart_disease_joined")
df = heart_disease_joined.get_dataframe()
## if you cannot import the 'imputeLocationAvg' from Github, then paste the function below
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE
for col_name in df.columns:
df[col_name] = imputeLocationAvg(df, col_name)
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE
# Write recipe outputs
heart_disease_imputed_values = dataiku.Dataset("heart_disease_imputed_values")
heart_disease_imputed_values.write_with_schema(df)
解決策として、importする必要のあるライブラリは、python直下に置くようにしましょう!
ちなみにフォルダ名などにpythonで使用不可な文字(ハイフンなど)を使っていなければ、ピリオド区切りでパス指定することでも読み込むことができます。
以下/python/dev以下にモジュールを配置した場合の例
# -*- coding: utf-8 -*-
import dataiku
import pandas as pd
from dev.impute_values import imputeLocationAvg
## if you import the function from Github, be sure to add an import statement here
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE
# Read recipe inputs
heart_disease_joined = dataiku.Dataset("heart_disease_joined")
df = heart_disease_joined.get_dataframe()
## if you cannot import the 'imputeLocationAvg' from Github, then paste the function below
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE
for col_name in df.columns:
df[col_name] = imputeLocationAvg(df, col_name)
# -------------------------------------------------------------------------------- NOTEBOOK-CELL: CODE
# Write recipe outputs
heart_disease_imputed_values = dataiku.Dataset("heart_disease_imputed_values")
heart_disease_imputed_values.write_with_schema(df)
まとめ
DataikuのDeveloper認定の分野の一つである、コードライブラリのインポートで詰まったことを纏めると、
- pythonフォルダ直下にimportしない!!!
- 既存のライブラリが消えてしまいます。
- importパスに注意!!!
- pythonフォルダ直下に無いライブラリは、ファイル名でインポートできないためピリオド区切りのパス指定を行う必要が有ります。
より良い方法をご存じの方がいらっしゃいましたら、是非教えてください!