Spaces:
Sleeping
Sleeping
########################################################################################################### | |
# Default | |
########################################################################################################### | |
import pandas as pd | |
from collections import OrderedDict | |
# default_dct | |
default_dct = { | |
"data_import": { | |
"gold_layer_df": pd.DataFrame(), | |
"granularity_selection": "daily", | |
"dashboard_df": None, | |
"tool_df": None, | |
"unique_panels": [], | |
"imputation_df": None, | |
"imputed_tool_df": None, | |
"group_dict": {}, | |
"category_dict": {}, | |
}, | |
"data_validation": { | |
"target_column": 0, | |
"selected_panels": None, | |
"selected_feature": 0, | |
"validated_variables": [], | |
"Non_media_variables": 0, | |
"correlation": [], | |
}, | |
"transformations": { | |
"final_df": None, | |
"summary_string": None, | |
"Media": {}, | |
"Exogenous": {}, | |
"Internal": {}, | |
"Specific": {}, | |
"correlation_plot_selection": [], | |
}, | |
"model_build": { | |
"sel_target_col": None, | |
"all_iters_check": False, | |
"iterations": 0, | |
"build_button": False, | |
"show_results_check": False, | |
"session_state_saved": {}, | |
}, | |
"model_tuning": { | |
"sel_target_col": None, | |
"sel_model": {}, | |
"flag_expander": False, | |
"start_date_default": None, | |
"end_date_default": None, | |
"repeat_default": "No", | |
"flags": {}, | |
"select_all_flags_check": {}, | |
"selected_flags": {}, | |
"trend_check": False, | |
"week_num_check": False, | |
"sine_cosine_check": False, | |
"session_state_saved": {}, | |
}, | |
"saved_model_results": { | |
"selected_options": None, | |
"model_grid_sel": [1], | |
}, | |
"current_media_performance": { | |
"model_outputs": {}, | |
}, | |
"media_performance": {"start_date": None, "end_date": None}, | |
"response_curves": { | |
"original_metadata_file": None, | |
"modified_metadata_file": None, | |
}, | |
"scenario_planner": { | |
"original_metadata_file": None, | |
"modified_metadata_file": None, | |
}, | |
"saved_scenarios": {"saved_scenarios_dict": OrderedDict()}, | |
"optimized_result_analysis": { | |
"selected_scenario_selectbox_visualize": 0, | |
"metric_selectbox_visualize": 0, | |
}, | |
} | |
########################################################################################################### | |
# Data Import | |
########################################################################################################### | |
# Constants Data Import | |
upload_rows_limit = 1000000 # Maximum number of rows allowed for upload | |
upload_column_limit = 1000 # Maximum number of columns allowed for upload | |
word_length_limit_lower = 2 # Minimum allowed length for words | |
word_length_limit_upper = 100 # Maximum allowed length for words | |
minimum_percent_overlap = ( | |
1 # Minimum required percentage of overlap with the reference data | |
) | |
minimum_row_req = 30 # Minimum number of rows required | |
percent_drop_col_threshold = 50 # Percentage threshold above which columns are automatically categorized for drop imputation | |
########################################################################################################### | |
# Transfromations | |
########################################################################################################### | |
# Constants Transformations | |
predefined_defaults = { | |
"Lag": (1, 2), | |
"Lead": (1, 2), | |
"Moving Average": (1, 2), | |
"Saturation": (10, 20), | |
"Power": (2, 4), | |
"Adstock": (0.5, 0.7), | |
} # Pre-defined default values of every transformation | |
# Transfromations min, max and step | |
lead_min_value = 1 | |
lead_max_value = 10 | |
lead_step = 1 | |
lag_min_value = 1 | |
lag_max_value = 10 | |
lag_step = 1 | |
moving_average_min_value = 1 | |
moving_average_max_value = 10 | |
moving_average_step = 1 | |
saturation_min_value = 0 | |
saturation_max_value = 100 | |
saturation_step = 1 | |
power_min_value = 1 | |
power_max_value = 5 | |
power_step = 1 | |
adstock_min_value = 0.0 | |
adstock_max_value = 1.0 | |
adstock_step = 0.05 | |
display_max_col = 500 # Maximum columns to display | |
########################################################################################################### | |
# Model Build | |
########################################################################################################### | |
MAX_COMBINATIONS = 50000 # Max number of model combinations possible | |
MIN_MODEL_NAME_LENGTH = 0 # model can only be saved if len(model_name) is greater than this value | |
MIN_P_VALUE_THRESHOLD = 0.06 # coefficients with p values less than this value are considered valid | |
MODEL_POS_COEFF_RATIO_THRESHOLD = 0 # ratio of positive coefficients/total coefficients for model validity | |
MODEL_P_VALUE_RATIO_THRESHOLD = 0 # ratio of coefficients with p value/total coefficients for model validity | |
MAX_TOP_FEATURES = 5 # max number of top features selected per variable | |
MAX_NUM_FILTERS = 10 # maximum number of filters allowed | |
DEFAULT_FILTER_VALUE = 0.0 # default value of a new filter | |
VIF_LOW_THRESHOLD = 3 # Threshold for VIF to be colored green | |
VIF_HIGH_THRESHOLD = 10 # Threshold for VIF to be colored red | |
DEFAULT_TRAIN_RATIO = 3/4 # default train set ratio (75%) | |
########################################################################################################### | |
# Model Tuning | |
########################################################################################################### | |
import numpy as np | |
NUM_FLAG_COLS_TO_DISPLAY = 4 # Number of columns to be created on UI to display flags | |
HALF_YEAR_THRESHOLD = 6 # Threshold of months to create quarter frequency sine-cosine waves | |
FULL_YEAR_THRESHOLD = 12 # Threshold of months to create quarter annual sine-cosine waves | |
TREND_MIN = 5 # Starting value of trend line | |
ANNUAL_FREQUENCY = 2 * np.pi / 365 # annual frequency | |
QTR_FREQUENCY_FACTOR = 4 # multiplication factor to get quarterly frequency | |
HALF_YEARLY_FREQUENCY_FACTOR = 2 # multiplication factor to get semi-annual frequency | |
########################################################################################################### | |
# Scenario Planner | |
########################################################################################################### | |
# Constants Scenario Planner | |
xtol_tolerance_per = 1 # Percenatge of tolerance | |
mroi_threshold = 0.05 # mROI threshold | |
word_length_limit_lower = 2 # Minimum allowed length for words | |
word_length_limit_upper = 100 # Maximum allowed length for words | |
########################################################################################################### | |
# PPT utils | |
########################################################################################################### | |
TITLE_FONT_SIZE = 20 | |
AXIS_LABEL_FONT_SIZE = 8 | |
CHART_TITLE_FONT_SIZE = 14 | |
AXIS_TITLE_FONT_SIZE = 12 | |
DATA_LABEL_FONT_SIZE = 8 | |
LEGEND_FONT_SIZE = 10 | |
PIE_LEGEND_FONT_SIZE = 7 | |
########################################################################################################### | |
# Page Name | |
########################################################################################################### | |