您可以使用 "assetframe-lib
为watsonx.aiStudio 笔记本中的数据资产创建、查看和编辑特征组信息。
功能组定义了数据资产列的附加元数据,可用于下游的watsonx.aiRuntime 任务。 有关在 UI 中使用功能部件组的更多信息,请参阅 管理功能部件组 。
设置 assetframe-lib
和 ibm-watson-studio-lib
库
用于Python的 "assetframe-lib
库已预装,可直接导入到watsonx.aiStudio 的笔记本中。 但是,它依赖于 ibm-watson-studio-lib
库。 以下步骤描述了如何设置这两个库。
要将项目令牌插入到 Notebook 中:
单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
如果存在项目令牌,那么会向 Notebook 中添加一个包含下列信息的单元格:
from ibm_watson_studio_lib import access_project_or_space wslib = access_project_or_space({"token":"<ProjectToken>"})
<ProjectToken>
是项目令牌的值。如果在消息中告知您不存在任何项目令牌,请单击消息中的链接以重定向到项目的 " 访问控制 " 页面,您可以在该页面中创建项目令牌。 您必须有资格创建项目令牌。
要创建项目令牌,请执行以下操作:
- 从 管理 选项卡中,选择 " 访问控制 " 页面,然后单击 访问令牌下的 新建访问令牌 。
- 输入名称,选择项目的编辑者角色,然后创建令牌。
- 返回到 Notebook,单击 Notebook 工具栏上的更多图标,然后单击插入项目令牌。
导入
assetframe-lib
并使用创建的ibm-watson-studio-lib
实例对其进行初始化。from assetframe_lib import AssetFrame AssetFrame._wslib = wslib
assetframe-lib 函数和方法
assetframe-lib 库公开了一组按以下方式分组的函数和方法:
创建资产框架
资产框架用于定义现有数据资产或 pandas DataFrame上的功能部件组元数据。 每个资产只能有一个功能部件组。 如果在 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.aiRuntime 任务可以使用的元数据。 您可以在数据集中每列创建一个功能部件。
您可以使用下列其中一个函数在资产框架中创建,检索或除去列:
add_feature(column_name, role='Input')
此功能向具有给定角色的资产框架添加新功能。
参数:
column_name
: (必需) 要为其创建功能部件的列的名称。role
: (可选) 功能部件的角色。 它缺省为 输入。有效的角色为:
- 输入: 机器学习模型的输入
- 目标: 预测模型的目标
- Identifier: 数据集中行的标识。
- 输入: 机器学习模型的输入
create_default_features()
此函数为数据集中的所有列创建功能。 功能部件的角色将缺省为 输入。
get_features()
此函数检索资产框架的所有功能部件。
get_feature(column_name)
此函数检索给定列名的功能部件。
参数:
column_name
: (必需) 要为其创建功能部件的列的字符串名称。
get_features_by_role(role)
此函数检索具有给定角色的数据帧的所有功能。
参数:
role
: (必需) 功能部件必须具有的角色。 这可以是 输入, 目标 或 标识。
remove_feature(feature_or_column_name)
此功能将从资产框架中除去该功能部件。
参数:
feature_or_column_name
: (必需) 要除去其功能部件的功能部件或列的名称。
显示为数据集中的所有列创建功能部件以及检索其中一个列以进行进一步规范的示例:
# 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.aiRuntime 任务中的预期用途。
有效的角色为:
Input
:该特征可用作watsonx.ai运行时模型的输入。Identifier
: 该功能部件唯一地标识数据集中的行。Target
: 该功能可以用作预测算法中的目标。
此时,一个功能部件必须正好具有一个角色。
您可以使用以下方法来处理角色:
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()
此方法返回功能部件的配方。
预览数据
您可以预览数据资产或 pandas DataFrame 的数据,其中包含有关功能部件的其他信息,例如公平性信息。
显示的数据类似于 pandas DataFrame ,其中包含有关功能部件角色,描述或诀窍的可选标题信息。 公平性信息与有利或不利标签,受监视组和参考组的颜色一起显示。
此时,您最多可以检索数据资产的 100 行样本数据。
使用以下函数来预览数据:
head(num_rows=5, display_options=['role'])
此函数返回 pandas DataFrame中数据集的前
num_rows
行。参数:
num_rows
: (可选) 要检索的行数。display_options
: (可选) 列标题可以显示数据集中列的其他信息。使用以下选项来显示功能部件属性:
role
: 显示此列的功能部件的角色。description
: 显示此列的功能部件的描述。recipe
: 显示此列的功能部件的配方。
获取公平性信息
您可以将资产框架中所有功能部件的公平性信息作为 Python 字典进行检索。 这包括包含作为受保护属性的受监视组和/或参考组以及具有有利或不利标签的目标功能部件的所有功能部件。
如果具有公平性信息的列的数据类型是数字,那么标签和组的值将转换为数字值 (如果可能)。
公平信息可直接用于AutoAI或AI Fairness 360。
您可以使用以下函数来检索资产框架的公平性信息:
get_fairness_info(target=None)
此函数返回一个 Python 字典,其中包含目标列的有利和不利标签以及受监视和引用组的受保护属性。
参数:
target: (可选) 目标功能部件。 如果只有一个具有角色
Target
的功能部件,那么将自动使用该功能部件。显示如何检索公平性信息的示例:
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
。
了解更多信息
请参阅资源中心中的 创建和使用功能部件存储数据 样本项目。
父主题: 在 Notebook 中装入和访问数据