CUSTOMER Consistency of invoice Amount across invoice Weekdays 14d vs 28d
SDK code to create CUSTOMER_Consistency_of_invoice_Amount_across_invoice_Weekdays_14d_vs_28d¶
Feature description:
Consistency score of the customer measured by the Cosine Similarity between the Distribution representing the cumulative Amount of invoice, categorized by their respective invoice's Weekday, for both the 14d and 28d periods.
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', '28d']
windows = ['14d', '28d']
Get view from table¶
In [ ]:
Copied!
# Get view from GROCERYINVOICE event table.
groceryinvoice_view = catalog.get_view("GROCERYINVOICE")
# Get view from GROCERYINVOICE event table.
groceryinvoice_view = catalog.get_view("GROCERYINVOICE")
In [ ]:
Copied!
# Extract day_of_week date part from Timestamp column for GROCERYINVOICE view.
groceryinvoice_view["Weekday of invoice"] = groceryinvoice_view["Timestamp"].dt.day_of_week
# Extract day_of_week date part from Timestamp column for GROCERYINVOICE view.
groceryinvoice_view["Weekday of invoice"] = groceryinvoice_view["Timestamp"].dt.day_of_week
Do window aggregation from GROCERYINVOICE¶
See SDK reference for features
See SDK reference to groupby a view
See SDK reference to do aggregation over time
In [ ]:
Copied!
# Group GROCERYINVOICE view by customer entity (GroceryCustomerGuid) across different Weekday of
# invoices.
groceryinvoice_view_by_customer_across_weekday_of_invoice =\
groceryinvoice_view.groupby(
['GroceryCustomerGuid'], category="Weekday of invoice"
)
# Group GROCERYINVOICE view by customer entity (GroceryCustomerGuid) across different Weekday of
# invoices.
groceryinvoice_view_by_customer_across_weekday_of_invoice =\
groceryinvoice_view.groupby(
['GroceryCustomerGuid'], category="Weekday of invoice"
)
In [ ]:
Copied!
# Distribution representing the cumulative Amount of invoice, categorized by their respective
# invoice's Weekday, for the customer over time.
feature_group =\
groceryinvoice_view_by_customer_across_weekday_of_invoice.aggregate_over(
"Amount", method=fb.AggFunc.SUM,
feature_names=[
"CUSTOMER_invoice_Amount_across_invoice_Weekdays"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_invoice_Amount_across_invoice_Weekdays_14d object from feature group.
customer_invoice_amount_across_invoice_weekdays_14d =\
feature_group["CUSTOMER_invoice_Amount_across_invoice_Weekdays_14d"]
# Get CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d object from feature group.
customer_invoice_amount_across_invoice_weekdays_28d =\
feature_group["CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d"]
# Distribution representing the cumulative Amount of invoice, categorized by their respective
# invoice's Weekday, for the customer over time.
feature_group =\
groceryinvoice_view_by_customer_across_weekday_of_invoice.aggregate_over(
"Amount", method=fb.AggFunc.SUM,
feature_names=[
"CUSTOMER_invoice_Amount_across_invoice_Weekdays"
+ "_" + w for w in windows
],
windows=windows
)
# Get CUSTOMER_invoice_Amount_across_invoice_Weekdays_14d object from feature group.
customer_invoice_amount_across_invoice_weekdays_14d =\
feature_group["CUSTOMER_invoice_Amount_across_invoice_Weekdays_14d"]
# Get CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d object from feature group.
customer_invoice_amount_across_invoice_weekdays_28d =\
feature_group["CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d"]
In [ ]:
Copied!
# Derive Consistency feature from cosine similarity between
# CUSTOMER_invoice_Amount_across_invoice_Weekdays_14d
# and CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d =\
customer_invoice_amount_across_invoice_weekdays_14d.cd.cosine_similarity(
customer_invoice_amount_across_invoice_weekdays_28d
)
# Give a name to new feature
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.name = \
"CUSTOMER_Consistency_of_invoice_Amount_across_invoice_Weekdays_14d_vs_28d"
# Derive Consistency feature from cosine similarity between
# CUSTOMER_invoice_Amount_across_invoice_Weekdays_14d
# and CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d =\
customer_invoice_amount_across_invoice_weekdays_14d.cd.cosine_similarity(
customer_invoice_amount_across_invoice_weekdays_28d
)
# Give a name to new feature
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.name = \
"CUSTOMER_Consistency_of_invoice_Amount_across_invoice_Weekdays_14d_vs_28d"
Preview feature¶
Read on the feature primary entity concept
Read on the serving entity concept
In [ ]:
Copied!
#Check the primary entity of the feature'
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.primary_entity
#Check the primary entity of the feature'
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.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 CUSTOMER_Consistency_of_invoice_Amount_across_invoice_Weekdays_14d_vs_28d
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.preview(
preview_table
)
#Preview CUSTOMER_Consistency_of_invoice_Amount_across_invoice_Weekdays_14d_vs_28d
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.preview(
preview_table
)
Save feature¶
In [ ]:
Copied!
# Save feature
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.save()
# Save feature
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.save()
Add description and see feature definition file¶
In [ ]:
Copied!
# Add description
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.update_description(
"Consistency score of the customer measured by the Cosine Similarity "
"between the Distribution representing the cumulative Amount of "
"invoice, categorized by their respective invoice's Weekday, for both "
"the 14d and 28d periods."
)
# See feature definition file
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.definition
# Add description
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.update_description(
"Consistency score of the customer measured by the Cosine Similarity "
"between the Distribution representing the cumulative Amount of "
"invoice, categorized by their respective invoice's Weekday, for both "
"the 14d and 28d periods."
)
# See feature definition file
customer_consistency_of_invoice_amount_across_invoice_weekdays_14d_vs_28d.definition