assetframe-lib
、watsonx.aiStudio ノートブックのデータ資産のフィーチャーグループ情報を作成、表示、編集することができます。
フィーチャーグループは、下流のwatsonx.aiRuntime タスクで使用できる、データ資産の列に関する追加メタデータを定義します。 UI でのフィーチャー・グループの使用について詳しくは、 フィーチャー・グループの管理 を参照してください。
assetframe-lib
および ibm-watson-studio-lib
ライブラリーのセットアップ
Python用ライブラリ「assetframe-lib
」はプリインストールされており、watsonx.aiStudioのノートブックに直接インポートすることができます。 ただし、 ibm-watson-studio-lib
ライブラリーに依存します。 以下のステップでは、両方のライブラリーをセットアップする方法について説明します。
プロジェクト・トークンをノートブックに挿入するには、以下のようにします。
ノートブックのツールバーにある「その他」アイコンをクリックして、「プロジェクト・トークンの挿入」をクリックします。
プロジェクト・トークンが存在している場合、以下の情報が含まれたセルがノートブックに追加されます。
from ibm_watson_studio_lib import access_project_or_space wslib = access_project_or_space({"token":"<ProjectToken>"})
<ProjectToken>
は、プロジェクト・トークンの値です。プロジェクト・トークンが存在しないというメッセージが表示された場合は、メッセージ内のリンクをクリックして、プロジェクトの「アクセス制御」ページにリダイレクトします。このページで、プロジェクト・トークンを作成できます。 プロジェクト・トークンを作成する資格がなければなりません。
プロジェクト・トークンを作成するには、以下のようにします。
- 「管理」タブで、「アクセス制御」ページを選択し、「アクセス・トークン」の下の「新規アクセス・トークン」をクリックします。
- 名前を入力し、プロジェクトの「エディター」ロールを選択し、トークンを作成します。
- ノートブックに戻り、ノートブック・ツールバーの「その他」アイコンをクリックして、「プロジェクト・トークンの挿入」をクリックします。
assetframe-lib
をインポートし、作成したibm-watson-studio-lib
インスタンスで初期化します。from assetframe_lib import AssetFrame AssetFrame._wslib = wslib
assetframe-lib の関数とメソッド
assetframe-lib ライブラリーは、以下のようにグループ化された関数およびメソッドのセットを公開します。
アセット・フレームの作成
資産フレームは、既存のデータ資産または pandas DataFrame上のフィーチャー・グループ・メタデータを定義するために使用されます。 資産ごとに 1 つのフィーチャー・グループのみを持つことができます。 pandasDataFrame,上にアセットフレームを作成すると、フィーチャグループのメタデータと共に pandasDataFrameをデータアセットとしてプロジェクトに保存することができます。
以下のいずれかの機能を使用して、アセット・フレームを作成できます。
AssetFrame.from_data_asset(asset_name, create_default_features=False)
この機能は、プロジェクト内の既存のデータ資産をラップする新しい資産フレームを作成します。 この資産のフィーチャー・グループが既に存在する場合 (例えば、ユーザー・インターフェースで作成されている場合)、そのフィーチャー・グループは資産メタデータから読み取られます。
IBM Knowledge Catalog などで、アセットに列の説明や列タグがすでに定義されている場合、この情報は作成されたフィーチャーで自動的に利用できるようになります。
パラメーター:
asset_name
: (必須) プロジェクト内のデータ・アセットの名前。create_default_features
: (オプション) データ資産内のすべての列に対してフィーチャーを作成します。
AssetFrame.from_pandas(name, dataframe, create_default_features=False)
この関数は、pandas DataFrameをラップする新規アセット・フレームを作成します。
パラメーター:
name
: (必須) アセット・フレームの名前。 この名前は、後のステップでフィーチャー・グループをプロジェクトに保管する場合に、データ資産の名前として使用されます。dataframe
: (必須) フィーチャー・グループ情報とともに保管する pandas の DataFrame 。create_default_features
: (オプション) データ・フレーム内のすべての列に対してフィーチャーを作成します。pandasDataFrame:からアセットフレームを作成する例:
# Create an asset frame from a pandas DataFrame and set # the name of the asset frame. af = AssetFrame.from_pandas(dataframe=credit_risk_df, name="Credit Risk Training Data")
フィーチャーの作成、取得、および削除
フィーチャーは、下流のwatsonx.aiランタイムタスクで使用できるメタデータを定義します。 データ・セット内の列ごとに 1 つのフィーチャーを作成できます。
以下のいずれかの関数を使用して、資産フレームの列を作成、取得、または削除できます。
add_feature(column_name, role='Input')
この機能により、指定された役割を持つアセット・フレームに新しいフィーチャーが追加されます。
パラメーター:
column_name
: (必須) フィーチャーを作成する対象の列の名前。role
: (オプション) この機能の役割。 デフォルトは 「入力」です。有効な役割は以下のとおりです。
- 「入力」: 機械学習モデルの入力
- 「ターゲット」: 予測モデルのターゲット
- ID: データ・セット内の行の ID。
- 「入力」: 機械学習モデルの入力
create_default_features()
この関数は、データ・セット内のすべての列に対してフィーチャーを作成します。 特徴量の役割は、デフォルトで 「入力」になります。
get_features()
この関数は、資産フレームのすべてのフィーチャーを取得します。
get_feature(column_name)
この関数は、指定された列名のフィーチャーを取得します。
パラメーター:
column_name
: (必須) フィーチャーを作成する対象の列のストリング名。
get_features_by_role(role)
この関数は、指定された役割を持つデータ・フレームのすべてのフィーチャーを取得します。
パラメーター:
role
: (必須) フィーチャーが持つ必要がある役割。 これは、 「入力」、 「ターゲット」 、または 「ID」のいずれかです。
remove_feature(feature_or_column_name)
この機能により、資産フレームからフィーチャーが削除されます。
パラメーター:
feature_or_column_name
: (必須) フィーチャー、またはフィーチャーを削除する対象の列の名前。
データ・セット内のすべての列に対してフィーチャーを作成し、さらに指定するためにそれらの列の 1 つを取得する例を以下に示します。
# Create features for all columns in the data set and retrieve a column
# for further specifications.
af.create_default_features()
risk_feat = af.get_feature('Risk')
フィーチャー属性の指定
フィーチャーは、下流のwatsonx.aiRuntime タスクで使用される可能性のあるカラムの追加メタデータを指定します。
以下の関数を使用して、フィーチャーが定義されている列を取得できます。
get_column_name()
この関数は、フィーチャーが定義されている列名を取得します。
役割
役割は、watsonx.aiランタイムタスクでの機能の使用目的を指定します。
有効な役割は以下のとおりです。
Input
: このフィーチャーは、watsonx.aiランタイムモデルの入力として使用できます。Identifier
: フィーチャーは、データ・セット内の行を一意的に識別します。Target
: この特徴量は、予測アルゴリズムでターゲットとして使用できます。
現時点では、フィーチャーは 1 つの役割のみを持つ必要があります。
ロールを操作するには、以下の方法を使用できます。
set_roles(roles)
このメソッドは、フィーチャーのロールを設定します。
パラメーター:
roles
: (必須) 使用されるロール。 単一ストリングとして、またはストリングの配列として。
get_roles()
このメソッドは、フィーチャーのすべてのロールを返します。
フィーチャーの取得とロールの設定を示す例:
# Set the role of the feature 'Risk' to 'Target' to use it as a target in a prediction model.
risk_feat = af.get_feature('Risk')
risk_feat.set_roles('Target')
説明
フィーチャーの説明 (オプション)。 デフォルトはNone
です。IBM Knowledge Catalog などでアセットに既に列の説明が定義されている場合、この情報は自動的にフィーチャーで使用できるようになります。
説明を処理するには、以下の方法を使用できます。
set_description(description)
このメソッドは、フィーチャーの説明を設定します。
パラメーター:
description
: (必須) 説明を削除するには、ストリングまたはNone
のいずれかを指定します。
get_description()
このメソッドは、フィーチャーの説明を返します。
好ましい結果と好ましくない結果の公平性情報
Target
役割を持つ特徴量に対して、好ましいラベルと好ましくないラベルを指定できます。
以下のメソッドを使用して、好ましいラベルまたは好ましくないラベルを設定および取得できます。
好ましい結果
以下の方法を使用して、望ましいラベルを設定および取得できます。
set_favorable_labels(labels)
このメソッドは、フィーチャーに望ましいラベルを設定します。
パラメーター:
labels
: (必須) 望ましいラベルを持つストリングまたはストリングのリスト。
get_favorable_labels()
このメソッドは、フィーチャーの好ましいラベルを返します。
好ましくない結果
以下の方法を使用して、好ましくないラベルを設定および取得できます。
set_unfavorable_labels(labels)
このメソッドは、フィーチャーに対して好ましくないラベルを設定します。
パラメーター:
labels
: (必須) ラベルが好ましくないストリングまたはストリングのリスト。
get_unfavorable_labels()
このメソッドは、フィーチャーの好ましくないラベルを取得します。
好ましいラベルと好ましくないラベルの設定例を以下に示します。
# Set favorable and unfavorable labels for the target feature 'Risk'.
risk_feat = af.get_feature('Risk')
risk_feat.set_favorable_labels("No Risk")
risk_feat.set_unfavorable_labels("Risk")
モニター対象グループと参照グループの公平性情報
データの一部の列では、不公平なバイアスが発生する可能性があります。 watsonx.aiRuntime タスクでさらに使用するために、監視グループと参照グループを指定することができます。 これらは、ロール Input
を持つフィーチャーに対して指定できます。
単一値または数値範囲を、大括弧と開始値および終了値を含むストリングとして指定できます (例: [0,15]
)。
以下のメソッドを使用して、モニター対象グループおよび参照グループを設定および取得できます。
set_monitored_groups(groups)
このメソッドは、機能のモニター対象グループを設定します。
パラメーター:
groups
: (必須) モニター対象グループを含むストリングまたはストリングのリスト。
get_monitored_groups()
このメソッドは、フィーチャーのモニター対象グループを取得します。
set_reference_groups(groups)
このメソッドは、フィーチャーの参照グループを設定します。
パラメーター:
groups
: (必須) 参照グループを持つストリングまたはストリングのリスト。
get_reference_groups()
このメソッドは、フィーチャーの参照グループを取得します。
モニター対象グループおよび参照グループの設定を示す例:
# Set monitored and reference groups for the features 'Sex' and 'Age'.
sex_feat = af.get_feature("Sex")
sex_feat.set_reference_groups("male")
sex_feat.set_monitored_groups("female")
age_feat = af.get_feature("Age")
age_feat.set_monitored_groups("[0,25]")
age_feat.set_reference_groups("[26,80]")
値の説明
値の説明を使用して、データ内の列値の説明を指定できます。
以下のメソッドを使用して、説明を設定および取得できます。
set_value_descriptions(value_descriptions)
このメソッドは、フィーチャーの値の説明を設定します。
パラメーター:
value_descriptions
: (必須) Pyton 辞書、または以下の形式の辞書のリスト:{'value': '<value>', 'description': '<description>'}
get_value_descriptions()
このメソッドは、フィーチャーのすべての値の説明を返します。
get_value_description(value)
このメソッドは、指定された値の値の説明を返します。
パラメーター:
value
: (必須) 値の説明を取得する対象の値。
add_value_description(value, description)
このメソッドは、指定された値と説明を持つ値の説明を、フィーチャーの値の説明のリストに追加します。
パラメーター:
value
: (必須) 値の説明のストリング値。description
: (必須) 値の説明のストリング説明。
remove_value_description(value)
このメソッドは、指定された値を持つ値の説明を、フィーチャーの値の説明のリストから削除します。
パラメーター:
value
: (必須) 削除される値の説明の値。
値の説明を設定する方法を示す例を以下に示します。
plan_feat = af.get_feature("InstallmentPlans")
val_descriptions = [
{'value': 'stores',
'description': 'customer has additional business installment plan'},
{'value': 'bank',
'description': 'customer has additional personal installment plan'},
{'value': 'none',
'description': 'customer has no additional installment plan'}
]
plan_feat.set_value_descriptions(val_descriptions)
レシピ
レシピを使用して、例えば数式やコード・スニペットを使用して、フィーチャーがどのように作成されたかを記述できます。 デフォルトは None
です。
レシピを操作するには、以下の方法を使用できます。
set_recipe(recipe)
このメソッドは、フィーチャーのレシピを設定します。
パラメーター:
recipe
: (必須) レシピを削除するには、ストリングまたは「なし」のいずれかを指定します。
get_recipe()
このメソッドは、フィーチャーのレシピを返します。
データのプレビュー
公平性情報などの特徴量に関する追加情報を使用して、データ資産またはパンダ DataFrame のデータをプレビューできます。
データは、フィーチャーの役割、説明、またはレシピに関するオプションのヘッダー情報とともに、pandas DataFrame のように表示されます。 公平性情報は、好ましいラベルまたは好ましくないラベル、モニター対象グループ、および参照グループの色分けとともに表示されます。
現時点では、1 つのデータ資産に対して最大 100 行のサンプル・データを取得できます。
データをプレビューするには、以下の機能を使用します。
head(num_rows=5, display_options=['role'])
この関数は、pandas DataFrame内のデータ・セットの最初の
num_rows
行を返します。パラメーター:
num_rows
: (オプション) 取得する行の数。display_options
: (オプション) 列ヘッダーには、データ・セット内の列に関する追加情報を表示できます。フィーチャー属性を表示するには、以下のオプションを使用します。
role
: この列の機能の役割を表示します。description
: この列の機能の説明を表示します。recipe
: この列のフィーチャーのレシピを表示します。
公平性情報の取得
資産フレーム内のすべての特徴量の公平性情報を Python 辞書として取得できます。 これには、保護属性としてモニター対象グループまたは参照グループ (あるいはその両方) を含むすべての特徴量と、好ましいラベルまたは好ましくないラベルを持つターゲット特徴量が含まれます。
公平性情報を持つ列のデータ・タイプが数値の場合、ラベルとグループの値は、可能であれば数値に変換されます。
フェアネス情報は、AutoAIまたはAIフェアネス360で直接使用することができます。
以下の関数を使用して、資産フレームの公平性情報を取得できます。
get_fairness_info(target=None)
この関数は、ターゲット列の好ましいラベルと好ましくないラベル、およびモニター対象グループと参照グループを持つ保護属性を含む Python ディクショナリーを返します。
パラメーター:
target: (オプション) ターゲット・フィーチャー。 役割
Target
を持つ機能が 1 つしかない場合は、その機能が自動的に使用されます。公平性情報を取得する方法を示す例:
af.get_fairness_info()
公平性情報を示す出力:
{ 'favorable_labels': ['No Risk'], 'unfavorable_labels': ['Risk'], 'protected_attributes': [ {'feature': 'Sex', 'monitored_group': ['female'], 'reference_group': ['male']}, {'feature': 'Age', 'monitored_group': [[0.0, 25]], 'reference_group': [[26, 80]] }] }
フィーチャー・グループ情報の保存
フィーチャーを完全に指定または更新した後、フィーチャー・グループ定義全体をデータ資産のメタデータとして保存できます。
pandasDataFrame,からアセットフレームを作成した場合、プロジェクトストレージにアセットフレームの名前で新しいデータアセットが作成されます。
フィーチャー・グループ情報を保管するには、以下の方法を使用できます。
to_data_asset(overwrite_data=False)
このメソッドは、フィーチャー・グループ情報を資産メタデータに保存します。 資産フレームが pandas DataFrameから作成された場合は、新しいデータ資産が作成されます。
パラメーター:
overwrite_data
: (オプション) アセット・フレームからのデータでアセット・コンテンツも上書きします。 デフォルトはFalse
です。
もっと見る
リソース・ハブの「 フィーチャー・ストア・データの作成および使用 」サンプル・プロジェクトを参照してください。
親トピック: ノートブックでのデータのロードとアクセス