ITEM Quantity Z Score to CUSTOMER X PRODUCT item Quantity 14d
SDK code to create ITEM_Quantity_Z_Score_to_CUSTOMER_X_PRODUCT_item_Quantity_14d¶
Feature description:
Z-Score of the item Quantity in relation to the distribution of item Quantity among all items with the same customer_x_product as that item over a 14d period.
In [ ]:
Copied!
import featurebyte as fb
fb.use_profile("tutorial")
import featurebyte as fb
fb.use_profile("tutorial")
Activate catalog¶
In [ ]:
Copied!
catalog = fb.Catalog.activate("Grocery Dataset Tutorial")
catalog = fb.Catalog.activate("Grocery Dataset Tutorial")
Set windows for aggregation¶
In [ ]:
Copied!
windows = ['14d']
windows = ['14d']
Get view from table¶
In [ ]:
Copied!
# Get view from INVOICEITEMS item table.
invoiceitems_view = catalog.get_view("INVOICEITEMS")
# Get view from INVOICEITEMS item table.
invoiceitems_view = catalog.get_view("INVOICEITEMS")
In [ ]:
Copied!
# Create lookup feature from Quantity column for item entity.
item_quantity =\
invoiceitems_view["Quantity"].as_feature("ITEM_Quantity")
# Create lookup feature from Quantity column for item entity.
item_quantity =\
invoiceitems_view["Quantity"].as_feature("ITEM_Quantity")
Do window aggregation from INVOICEITEMS¶
See SDK reference for features
See SDK reference to groupby a view
See SDK reference to do aggregation over time
In [ ]:
Copied!
# Group INVOICEITEMS view by customer_x_product entity (['GroceryCustomerGuid',
# 'GroceryProductGuid']).
invoiceitems_view_by_customer_x_product =\
invoiceitems_view.groupby(['GroceryCustomerGuid', 'GroceryProductGuid'])
# Group INVOICEITEMS view by customer_x_product entity (['GroceryCustomerGuid',
# 'GroceryProductGuid']).
invoiceitems_view_by_customer_x_product =\
invoiceitems_view.groupby(['GroceryCustomerGuid', 'GroceryProductGuid'])
In [ ]:
Copied!
# Get Avg of Quantity for the customer_x_product over time.
feature_group =\
invoiceitems_view_by_customer_x_product.aggregate_over(
"Quantity", method="avg",
feature_names=[
"CUSTOMER_X_PRODUCT_Avg_of_item_Quantity"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_X_PRODUCT_Avg_of_item_Quantity_14d object from feature group.
customer_x_product_avg_of_item_quantity_14d =\
feature_group["CUSTOMER_X_PRODUCT_Avg_of_item_Quantity_14d"]
# Get Avg of Quantity for the customer_x_product over time.
feature_group =\
invoiceitems_view_by_customer_x_product.aggregate_over(
"Quantity", method="avg",
feature_names=[
"CUSTOMER_X_PRODUCT_Avg_of_item_Quantity"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_X_PRODUCT_Avg_of_item_Quantity_14d object from feature group.
customer_x_product_avg_of_item_quantity_14d =\
feature_group["CUSTOMER_X_PRODUCT_Avg_of_item_Quantity_14d"]
In [ ]:
Copied!
# Get Std of Quantity for the customer_x_product over time.
feature_group =\
invoiceitems_view_by_customer_x_product.aggregate_over(
"Quantity", method="std",
feature_names=[
"CUSTOMER_X_PRODUCT_Std_of_item_Quantity"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_X_PRODUCT_Std_of_item_Quantity_14d object from feature group.
customer_x_product_std_of_item_quantity_14d =\
feature_group["CUSTOMER_X_PRODUCT_Std_of_item_Quantity_14d"]
# Get Std of Quantity for the customer_x_product over time.
feature_group =\
invoiceitems_view_by_customer_x_product.aggregate_over(
"Quantity", method="std",
feature_names=[
"CUSTOMER_X_PRODUCT_Std_of_item_Quantity"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_X_PRODUCT_Std_of_item_Quantity_14d object from feature group.
customer_x_product_std_of_item_quantity_14d =\
feature_group["CUSTOMER_X_PRODUCT_Std_of_item_Quantity_14d"]
Compare lookup with aggregation¶
In [ ]:
Copied!
# Get the Z-Score of the item Quantity in relation to the distribution of item Quantity among all
# items with the same customer_x_product as that item over a 14d period.
item_quantity_z_score_to_customer_x_product_item_quantity_14d = (
item_quantity
- customer_x_product_avg_of_item_quantity_14d
) / customer_x_product_std_of_item_quantity_14d
# Give a name to new feature
item_quantity_z_score_to_customer_x_product_item_quantity_14d.name = \
"ITEM_Quantity_Z_Score_to_CUSTOMER_X_PRODUCT_item_Quantity_14d"
# Get the Z-Score of the item Quantity in relation to the distribution of item Quantity among all
# items with the same customer_x_product as that item over a 14d period.
item_quantity_z_score_to_customer_x_product_item_quantity_14d = (
item_quantity
- customer_x_product_avg_of_item_quantity_14d
) / customer_x_product_std_of_item_quantity_14d
# Give a name to new feature
item_quantity_z_score_to_customer_x_product_item_quantity_14d.name = \
"ITEM_Quantity_Z_Score_to_CUSTOMER_X_PRODUCT_item_Quantity_14d"
Preview feature¶
Read on the feature primary entity concept
Read on the serving entity concept
In [ ]:
Copied!
#Check the primary entity of the feature'
item_quantity_z_score_to_customer_x_product_item_quantity_14d.primary_entity
#Check the primary entity of the feature'
item_quantity_z_score_to_customer_x_product_item_quantity_14d.primary_entity
In [ ]:
Copied!
#Get observation table: 'Preview Table with 10 items'
preview_table = catalog.get_observation_table(
"Preview Table with 10 items"
)
#Get observation table: 'Preview Table with 10 items'
preview_table = catalog.get_observation_table(
"Preview Table with 10 items"
)
In [ ]:
Copied!
#Preview ITEM_Quantity_Z_Score_to_CUSTOMER_X_PRODUCT_item_Quantity_14d
item_quantity_z_score_to_customer_x_product_item_quantity_14d.preview(
preview_table
)
#Preview ITEM_Quantity_Z_Score_to_CUSTOMER_X_PRODUCT_item_Quantity_14d
item_quantity_z_score_to_customer_x_product_item_quantity_14d.preview(
preview_table
)
Save feature¶
In [ ]:
Copied!
# Save feature
item_quantity_z_score_to_customer_x_product_item_quantity_14d.save()
# Save feature
item_quantity_z_score_to_customer_x_product_item_quantity_14d.save()
Add description and see feature definition file¶
In [ ]:
Copied!
# Add description
item_quantity_z_score_to_customer_x_product_item_quantity_14d.update_description(
"Z-Score of the item Quantity in relation to the distribution of item "
"Quantity among all items with the same customer_x_product as that item"
" over a 14d period."
)
# See feature definition file
item_quantity_z_score_to_customer_x_product_item_quantity_14d.definition
# Add description
item_quantity_z_score_to_customer_x_product_item_quantity_14d.update_description(
"Z-Score of the item Quantity in relation to the distribution of item "
"Quantity among all items with the same customer_x_product as that item"
" over a 14d period."
)
# See feature definition file
item_quantity_z_score_to_customer_x_product_item_quantity_14d.definition