CUSTOMER vs OVERALL invoice Amount across invoice Weekdays 28d
SDK code to create CUSTOMER_vs_OVERALL_invoice_Amount_across_invoice_Weekdays_28d¶
Feature description:
Similarity between the customer and all customers measured by the Cosine Similarity between the Distribution representing the cumulative Amount of invoice, categorized by their respective invoice's Weekday, over 28d for both entities.
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 = ['28d']
windows = ['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_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_28d object from feature group.
customer_invoice_amount_across_invoice_weekdays_28d =\
feature_group["CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d"]
In [ ]:
Copied!
# Group GROCERYINVOICE view across different Weekday of invoices.
groceryinvoice_view_by_overall_across_weekday_of_invoice =\
groceryinvoice_view.groupby(
[], category="Weekday of invoice"
)
# Group GROCERYINVOICE view across different Weekday of invoices.
groceryinvoice_view_by_overall_across_weekday_of_invoice =\
groceryinvoice_view.groupby(
[], category="Weekday of invoice"
)
In [ ]:
Copied!
# Distribution representing the cumulative Amount of invoice, categorized by their respective
# invoice's Weekday, over time.
feature_group =\
groceryinvoice_view_by_overall_across_weekday_of_invoice.aggregate_over(
"Amount", method=fb.AggFunc.SUM,
feature_names=[
"OVERALL_invoice_Amount_across_invoice_Weekdays"
+ "_" + w for w in windows
],
windows=windows
)
# Get OVERALL_invoice_Amount_across_invoice_Weekdays_28d object from feature group.
overall_invoice_amount_across_invoice_weekdays_28d =\
feature_group["OVERALL_invoice_Amount_across_invoice_Weekdays_28d"]
# Distribution representing the cumulative Amount of invoice, categorized by their respective
# invoice's Weekday, over time.
feature_group =\
groceryinvoice_view_by_overall_across_weekday_of_invoice.aggregate_over(
"Amount", method=fb.AggFunc.SUM,
feature_names=[
"OVERALL_invoice_Amount_across_invoice_Weekdays"
+ "_" + w for w in windows
],
windows=windows
)
# Get OVERALL_invoice_Amount_across_invoice_Weekdays_28d object from feature group.
overall_invoice_amount_across_invoice_weekdays_28d =\
feature_group["OVERALL_invoice_Amount_across_invoice_Weekdays_28d"]
Derive Similarity feature across entities¶
In [ ]:
Copied!
# Derive Similarity feature from cosine similarity between
# CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d
# and OVERALL_invoice_Amount_across_invoice_Weekdays_28d
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d =\
customer_invoice_amount_across_invoice_weekdays_28d.cd.cosine_similarity(
overall_invoice_amount_across_invoice_weekdays_28d
)
# Give a name to new feature
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.name = \
"CUSTOMER_vs_OVERALL_invoice_Amount_across_invoice_Weekdays_28d"
# Derive Similarity feature from cosine similarity between
# CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d
# and OVERALL_invoice_Amount_across_invoice_Weekdays_28d
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d =\
customer_invoice_amount_across_invoice_weekdays_28d.cd.cosine_similarity(
overall_invoice_amount_across_invoice_weekdays_28d
)
# Give a name to new feature
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.name = \
"CUSTOMER_vs_OVERALL_invoice_Amount_across_invoice_Weekdays_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_vs_overall_invoice_amount_across_invoice_weekdays_28d.primary_entity
#Check the primary entity of the feature'
customer_vs_overall_invoice_amount_across_invoice_weekdays_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_vs_OVERALL_invoice_Amount_across_invoice_Weekdays_28d
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.preview(
preview_table
)
#Preview CUSTOMER_vs_OVERALL_invoice_Amount_across_invoice_Weekdays_28d
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.preview(
preview_table
)
Save feature¶
In [ ]:
Copied!
# Save feature
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.save()
# Save feature
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.save()
Add description and see feature definition file¶
In [ ]:
Copied!
# Add description
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.update_description(
"Similarity between the customer and all customers measured by the "
"Cosine Similarity between the Distribution representing the cumulative"
" Amount of invoice, categorized by their respective invoice's Weekday,"
" over 28d for both entities."
)
# See feature definition file
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.definition
# Add description
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.update_description(
"Similarity between the customer and all customers measured by the "
"Cosine Similarity between the Distribution representing the cumulative"
" Amount of invoice, categorized by their respective invoice's Weekday,"
" over 28d for both entities."
)
# See feature definition file
customer_vs_overall_invoice_amount_across_invoice_weekdays_28d.definition