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 | |
| ########################################################################################################### | |