CUSTOMER Variability of invoice Weekday based on invoice Amount 28d
SDK code to create CUSTOMER_Variability_of_invoice_Weekday_based_on_invoice_Amount_28d¶
Feature description:
The feature evaluates the distribution of a customer's invoice's Amount across various invoice's Weekday categories over a 28d period using entropy. Higher entropy signifies a more uniform distribution of invoice's Amount across categories, while lower entropy suggests a concentration within specific invoice's Weekday categories.
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"]
Derive feature from aggregation across categories¶
In [ ]:
Copied!
# Get Variability of invoice Weekday based on invoice Amount from
# CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d =\
customer_invoice_amount_across_invoice_weekdays_28d.cd.entropy()
# Give a name to new feature
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.name = \
"CUSTOMER_Variability_of_invoice_Weekday_based_on_invoice_Amount_28d"
# Get Variability of invoice Weekday based on invoice Amount from
# CUSTOMER_invoice_Amount_across_invoice_Weekdays_28d
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d =\
customer_invoice_amount_across_invoice_weekdays_28d.cd.entropy()
# Give a name to new feature
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.name = \
"CUSTOMER_Variability_of_invoice_Weekday_based_on_invoice_Amount_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_variability_of_invoice_weekday_based_on_invoice_amount_28d.primary_entity
#Check the primary entity of the feature'
customer_variability_of_invoice_weekday_based_on_invoice_amount_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_Variability_of_invoice_Weekday_based_on_invoice_Amount_28d
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.preview(
preview_table
)
#Preview CUSTOMER_Variability_of_invoice_Weekday_based_on_invoice_Amount_28d
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.preview(
preview_table
)
Save feature¶
In [ ]:
Copied!
# Save feature
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.save()
# Save feature
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.save()
Add description and see feature definition file¶
In [ ]:
Copied!
# Add description
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.update_description(
"The feature evaluates the distribution of a customer's invoice's "
"Amount across various invoice's Weekday categories over a 28d period "
"using entropy. Higher entropy signifies a more uniform distribution of"
" invoice's Amount across categories, while lower entropy suggests a "
"concentration within specific invoice's Weekday categories."
)
# See feature definition file
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.definition
# Add description
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.update_description(
"The feature evaluates the distribution of a customer's invoice's "
"Amount across various invoice's Weekday categories over a 28d period "
"using entropy. Higher entropy signifies a more uniform distribution of"
" invoice's Amount across categories, while lower entropy suggests a "
"concentration within specific invoice's Weekday categories."
)
# See feature definition file
customer_variability_of_invoice_weekday_based_on_invoice_amount_28d.definition