Vous pouvez utiliser le " assetframe-lib
pour créer, afficher et modifier les informations sur les groupes de caractéristiques pour les ressources de données dans les carnets de notes de watsonx.ai Studio.
Les groupes de fonctionnalités définissent des métadonnées supplémentaires sur les colonnes de votre ressource de données qui peuvent être utilisées dans les tâches du Runtime watsonx.ai en aval. Pour plus d'informations sur l'utilisation des groupes de fonctions dans l'interface utilisateur, voir Gestion des groupes de fonctions .
Configuration des bibliothèques assetframe-lib
et ibm-watson-studio-lib
La bibliothèque 'assetframe-lib
pour Python est pré-installée et peut être importée directement dans un notebook dans watsonx.ai Studio. Cependant, il s'appuie sur la bibliothèque ibm-watson-studio-lib
. Les étapes suivantes décrivent comment configurer les deux bibliothèques.
Pour insérer le jeton du projet dans le bloc-notes :
Cliquez sur l'icône Plus dans la barre d'outils du bloc-notes, puis sur Insérer un jeton de projet.
Si un jeton de projet existe, une cellule contenant les informations suivantes est ajoutée au bloc-notes :
from ibm_watson_studio_lib import access_project_or_space wslib = access_project_or_space({"token":"<ProjectToken>"})
<ProjectToken>
est la valeur du jeton de projet.Si un message vous dit qu'aucun jeton de projet n'existe, cliquez sur le lien dans le message à rediriger vers la page Contrôle d'accès du projet dans laquelle vous pouvez créer un jeton de projet. Vous devez être éligible pour créer un jeton de projet.
Pour créer un jeton de projet :
- Dans l'onglet Gérer, sélectionnez la page Contrôle d'accès et cliquez sur Nouveau jeton d'accès sous Jetons d'accès.
- Entrez un nom, sélectionnez le rôle Éditeur pour le projet et créez un jeton.
- Retournez à votre bloc-notes, cliquez sur l'icône Plus dans la barre d'outils du bloc-notes, puis cliquez sur Insérer un jeton de projet.
Importez
assetframe-lib
et initialisez-le avec l'instanceibm-watson-studio-lib
créée.from assetframe_lib import AssetFrame AssetFrame._wslib = wslib
Les fonctions et méthodes assetframe-lib
La bibliothèque assetframe-lib expose un ensemble de fonctions et de méthodes regroupées de la manière suivante:
Création d'un cadre d'actif
Un cadre d'actif est utilisé pour définir des métadonnées de groupe de fonctions sur un actif de données existant ou sur un cadre de données ( DataFrame) pandas. Vous pouvez avoir exactement un groupe de fonctions pour chaque actif. Si vous créez un asset frame sur un pandas DataFrame, vous pouvez stocker le pandas DataFrame avec les métadonnées du groupe d'entités en tant qu'asset de données dans votre projet.
Vous pouvez utiliser l'une des fonctions suivantes pour créer votre cadre d'actif:
AssetFrame.from_data_asset(asset_name, create_default_features=False)
Cette fonction crée un nouveau cadre d'actif qui encapsule un actif de données existant dans votre projet. S'il existe déjà un groupe de fonctions pour cet actif, par exemple créé dans l'interface utilisateur, il est lu à partir des métadonnées de l'actif.
Paramètres :
asset_name
: (Obligatoire) Nom d'un actif de données dans votre projet.create_default_features
: (Facultatif) Crée des fonctions pour toutes les colonnes de l'actif de données.
AssetFrame.from_pandas(name, dataframe, create_default_features=False)
Cette fonction crée un nouveau cadre d'actif encapsulant un DataFramepandas.
Paramètres :
name
: (Obligatoire) Nom du cadre d'actif. Ce nom sera utilisé comme nom de l'actif de données si vous stockez votre groupe de fonctions dans votre projet à une étape ultérieure.dataframe
: (obligatoire) DataFrame pandas que vous souhaitez stocker avec les informations de groupe de fonctions.create_default_features
: (Facultatif) Créez des fonctions pour toutes les colonnes de la trame de données.Exemple de création d'un cadre d'actifs à partir d'un DataFrame: pandas :
# 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")
Création, extraction et suppression de fonctions
Une fonctionnalité définit des métadonnées qui peuvent être utilisées par les tâches du Runtime watsonx.ai en aval. Vous pouvez créer une fonction par colonne dans votre jeu de données.
Vous pouvez utiliser l'une des fonctions suivantes pour créer, extraire ou supprimer des colonnes de votre cadre d'actif:
add_feature(column_name, role='Input')
Cette fonction ajoute une nouvelle fonction à votre cadre d'actif avec le rôle donné.
Paramètres :
column_name
: (Obligatoire) Nom de la colonne pour laquelle créer une fonction.role
: (Facultatif) Rôle de la fonction. La valeur par défaut est Entrée.Les rôles valides sont les suivants :
- Entrée: entrée pour un modèle d'apprentissage automatique
- Cible: cible d'un modèle de prévision
- Identificateur: identificateur d'une ligne dans votre fichier.
- Entrée: entrée pour un modèle d'apprentissage automatique
create_default_features()
Cette fonction crée des fonctions pour toutes les colonnes de votre jeu de données. Les rôles des fonctions seront définis par défaut sur Entrée.
get_features()
Cette fonction extrait toutes les fonctions du cadre d'actif.
get_feature(column_name)
Cette fonction extrait la fonction pour le nom de colonne indiqué.
Paramètres :
column_name
: (Obligatoire) Nom de chaîne de la colonne pour laquelle créer la fonction.
get_features_by_role(role)
Cette fonction extrait toutes les fonctions de la trame de données avec le rôle donné.
Paramètres :
role
: (Obligatoire) Rôle que les fonctions doivent avoir. Il peut s'agir de Entrée, Cible ou Identificateur.
remove_feature(feature_or_column_name)
Cette fonction supprime la fonction du cadre de l'actif.
Paramètres :
feature_or_column_name
: (Obligatoire) Fonction ou nom de la colonne pour laquelle supprimer la fonction.
Exemple illustrant la création de fonctions pour toutes les colonnes du jeu de données et l'extraction de l'une de ces colonnes pour des spécifications supplémentaires:
# 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')
Spécification des attributs de fonction
Les fonctionnalités spécifient des métadonnées supplémentaires sur les colonnes qui peuvent être utilisées dans les tâches du Runtime watsonx.ai en aval.
Vous pouvez utiliser la fonction suivante pour extraire la colonne pour laquelle la fonction est définie:
get_column_name()
Cette fonction extrait le nom de colonne pour lequel la fonction est définie.
Rôle
Le rôle spécifie l'utilisation prévue de la fonctionnalité dans une tâche d'exécution de watsonx.ai
Les rôles valides sont les suivants :
Input
: La caractéristique peut être utilisée comme entrée d'un modèle d'exécution watsonx.aiIdentifier
: la fonction identifie de manière unique une ligne dans le jeu de données.Target
: La fonction peut être utilisée comme cible dans un algorithme de prévision.
A ce stade, une fonction doit avoir exactement un rôle.
Vous pouvez utiliser les méthodes suivantes pour utiliser le rôle:
set_roles(roles)
Cette méthode définit les rôles de la fonction.
Paramètres :
roles
: (obligatoire) Rôles à utiliser. Sous la forme d'une chaîne unique ou d'un tableau de chaînes.
get_roles()
Cette méthode renvoie tous les rôles de la fonction.
Exemple illustrant l'obtention d'une fonction et la définition d'un rôle:
# 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')
Descriptif
Description facultative de la fonction. La valeur par défaut est None
.
Vous pouvez utiliser les méthodes suivantes pour gérer la description.
set_description(description)
Cette méthode définit la description de la fonction.
Paramètres :
description
: (Obligatoire) Chaîne ouNone
pour supprimer la description.
get_description()
Cette méthode renvoie la description de la fonction.
Informations d'équité pour des résultats favorables et défavorables
Vous pouvez spécifier des libellés favorables et défavorables pour une fonction avec un rôle Target
.
Vous pouvez utiliser les méthodes suivantes pour définir et extraire des libellés favorables ou défavorables.
Résultats favorables
Vous pouvez utiliser les méthodes suivantes pour définir et obtenir des libellés favorables:
set_favorable_labels(labels)
Cette méthode définit des libellés favorables pour la fonction.
Paramètres :
labels
: (Obligatoire) Chaîne ou liste de chaînes avec des libellés favorables.
get_favorable_labels()
Cette méthode renvoie les libellés favorables de la fonction.
Résultats défavorables
Vous pouvez utiliser les méthodes suivantes pour définir et obtenir des libellés défavorables:
set_unfavorable_labels(labels)
Cette méthode définit des libellés défavorables pour la fonction.
Paramètres :
labels
: (Obligatoire) Chaîne ou liste de chaînes avec des libellés défavorables.
get_unfavorable_labels()
Cette méthode obtient les libellés défavorables de la fonction.
Exemple illustrant la définition de libellés favorables et défavorables:
# 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")
Informations d'équité pour les groupes surveillés et de référence
Certaines colonnes de vos données peuvent être sujettes à un biais injuste. Vous pouvez spécifier des groupes surveillés et de référence pour une utilisation ultérieure dans les tâches de watsonx.ai Runtime. Ils peuvent être spécifiés pour les fonctions ayant le rôle Input
.
Vous pouvez spécifier des valeurs uniques ou des plages de valeurs numériques sous la forme d'une chaîne entre crochets et d'une valeur de début et de fin, par exemple [0,15]
.
Vous pouvez utiliser les méthodes suivantes pour définir et extraire des groupes surveillés et des groupes de référence:
set_monitored_groups(groups)
Cette méthode définit les groupes surveillés pour la fonction.
Paramètres :
groups
: (Obligatoire) Chaîne ou liste de chaînes avec des groupes surveillés.
get_monitored_groups()
Cette méthode permet d'obtenir les groupes surveillés de la fonction.
set_reference_groups(groups)
Cette méthode définit des groupes de référence pour la fonction.
Paramètres :
groups
: (Obligatoire) Chaîne ou liste de chaînes avec des groupes de référence.
get_reference_groups()
Cette méthode extrait les groupes de référence de la fonction.
Exemple illustrant la définition de groupes surveillés et de groupes de référence:
# 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]")
Descriptions de valeur
Vous pouvez utiliser des descriptions de valeurs pour spécifier des descriptions de valeurs de colonne dans vos données.
Vous pouvez utiliser les méthodes suivantes pour définir et extraire des descriptions:
set_value_descriptions(value_descriptions)
Cette méthode définit les descriptions des valeurs de la fonction.
Paramètres :
value_descriptions
: (Obligatoire) Dictionnaire Pyton ou liste de dictionnaires au format suivant:{'value': '<value>', 'description': '<description>'}
get_value_descriptions()
Cette méthode renvoie toutes les descriptions de valeur de la fonction.
get_value_description(value)
Cette méthode renvoie la description de la valeur indiquée.
Paramètres :
value
: (Obligatoire) Valeur pour laquelle extraire la description de la valeur.
add_value_description(value, description)
Cette méthode ajoute une description de valeur avec la valeur et la description données à la liste des descriptions de valeur de la fonction.
Paramètres :
value
: (Obligatoire) Valeur de chaîne de la description de la valeur.description
: (Obligatoire) Description de la chaîne de la description de la valeur.
remove_value_description(value)
Cette méthode supprime la description de valeur associée à la valeur indiquée de la liste des descriptions de valeur de la fonction.
Paramètres :
value
: (Obligatoire) Valeur de la description de la valeur à supprimer.
Exemple montrant comment définir des descriptions de valeur:
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)
Recette
Vous pouvez utiliser la recette pour décrire comment une fonction a été créée, par exemple avec une formule ou un fragment de code. La valeur par défaut est None
.
Vous pouvez utiliser les méthodes suivantes pour utiliser la recette.
set_recipe(recipe)
Cette méthode définit la recette de la fonction.
Paramètres :
recipe
: (Obligatoire) Chaîne ou Aucune pour supprimer la recette.
get_recipe()
Cette méthode renvoie la recette de la fonction.
Prévisualisation des données
Vous pouvez prévisualiser les données de votre actif de données ou pandas DataFrame avec des informations supplémentaires sur vos fonctions, telles que les informations d'équité.
Les données sont affichées comme un DataFrame pandas avec des informations d'en-tête facultatives sur les rôles de fonction, les descriptions ou les recettes. Les informations d'équité sont affichées avec des couleurs pour les libellés favorables ou défavorables, les groupes surveillés et les groupes de référence.
A ce stade, vous pouvez extraire jusqu'à 100 lignes d'exemples de données pour un actif de données.
Utilisez la fonction suivante pour prévisualiser les données:
head(num_rows=5, display_options=['role'])
Cette fonction renvoie les
num_rows
premières lignes de l'ensemble de données dans une DataFramepandas.Paramètres :
num_rows
: (Facultatif) Nombre de lignes à extraire.display_options
: (Facultatif) L'en-tête de colonne peut afficher des informations supplémentaires pour une colonne de votre ensemble de données.Utilisez ces options pour afficher les attributs de fonction:
role
: affiche le rôle d'une fonction pour cette colonne.description
: affiche la description d'une fonction pour cette colonne.recipe
: affiche la recette d'une fonction pour cette colonne.
Obtention d'informations sur l'équité
Vous pouvez extraire les informations d'équité de toutes les fonctions de votre cadre d'actif sous la forme d'un dictionnaire Python . Cela inclut toutes les fonctions contenant des groupes surveillés ou de référence (ou les deux) en tant qu'attributs protégés et la fonction cible avec des libellés favorables ou défavorables.
Si le type de données d'une colonne contenant des informations d'équité est numérique, les valeurs des libellés et des groupes sont transformées en valeurs numériques si possible.
Les informations d'équité peuvent être utilisées directement dans AutoAI ou AI Fairness 360 .
Vous pouvez utiliser la fonction suivante pour extraire les informations d'équité de votre cadre d'actif:
get_fairness_info(target=None)
Cette fonction renvoie un dictionnaire Python avec des libellés favorables et défavorables de la colonne cible et des attributs protégés avec des groupes surveillés et des groupes de référence.
Paramètres :
target: (Facultatif) La fonction cible. S'il n'existe qu'une seule fonction avec le rôle
Target
, elle est utilisée automatiquement.Exemple montrant comment extraire des informations d'équité:
af.get_fairness_info()
Sortie affichant les informations d'équité:
{ '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]] }] }
Enregistrement des informations de groupe de fonctions
Une fois que vous avez complètement spécifié ou mis à jour vos fonctions, vous pouvez sauvegarder l'ensemble de la définition de groupe de fonctions en tant que métadonnées pour votre actif de données.
Si vous avez créé l'asset frame à partir d'un pandas DataFrame,, un nouvel asset sera créé dans le stockage du projet avec le nom de l'asset frame.
Vous pouvez utiliser la méthode suivante pour stocker les informations de votre groupe de fonctions:
to_data_asset(overwrite_data=False)
Cette méthode sauvegarde les informations de groupe de fonctions dans les métadonnées d'actifs. Il crée un nouvel actif de données, si le cadre d'actif a été créé à partir d'un DataFramepandas.
Paramètres :
overwrite_data
: (Facultatif) Ecrase également le contenu de l'actif avec les données du cadre de l'actif. La valeur par défaut estFalse
.
En savoir plus
Voir l'exemple de projet Création et utilisation de données de magasin de fonctions dans le concentrateur de ressources.
Rubrique parent : Chargement et accès aux données dans un bloc-notes