chkp-talexm commited on
Commit
bd5afec
·
1 Parent(s): bc47cc1
Files changed (1) hide show
  1. app.py +8 -17
app.py CHANGED
@@ -55,9 +55,8 @@ def preprocess_input(input_df):
55
  "webpage_id": "nunique"
56
  }).reset_index()
57
 
58
- # Rename columns after aggregation
59
  age_sex_product_agg.columns = ["age_level", "gender", "product",
60
- "click_sum_age_sex_prod", "click_count_age_sex_prod",
61
  "unique_campaigns_age_sex_prod", "unique_webpages_age_sex_prod"]
62
 
63
  input_df = input_df.merge(age_sex_product_agg, on=["age_level", "gender", "product"], how="left")
@@ -68,44 +67,36 @@ def preprocess_input(input_df):
68
  "webpage_id": "nunique"
69
  }).reset_index()
70
 
71
- # Rename columns after aggregation
72
  city_age_product_agg.columns = ["city_development_index", "age_level", "product",
73
- "click_sum_city_age_prod", "click_count_city_age_prod",
74
  "unique_campaigns_city_age_prod", "unique_webpages_city_age_prod"]
 
75
  input_df = input_df.merge(city_age_product_agg, on=["city_development_index", "age_level", "product"], how="left")
76
  input_df.fillna(0, inplace=True)
 
 
77
  features = ["age_level", "gender", "product", "campaign_id", "webpage_id",
78
  "product_category_1", "product_category_2", "user_group_id",
79
  "user_depth", "city_development_index", "var_1",
80
-
81
- # Include Aggregated Features
82
- "click_sum_age_sex_prod", "click_count_age_sex_prod",
83
  "unique_campaigns_age_sex_prod", "unique_webpages_age_sex_prod",
84
- "click_sum_city_age_prod", "click_count_city_age_prod",
85
  "unique_campaigns_city_age_prod", "unique_webpages_city_age_prod"]
86
 
87
- target = "is_click"
88
-
89
  categorical_columns = ["gender", "product", "campaign_id", "webpage_id"]
90
 
91
  # ===========================
92
  # ENCODE CATEGORICAL FEATURES
93
  # ===========================
94
 
95
- # Convert categorical features to category type
96
- for col in categorical_columns:
97
- input_df[col] = input_df[col].astype("category")
98
-
99
- # Encode categorical variables consistently
100
  label_encoders = {}
101
  for col in categorical_columns:
102
  le = LabelEncoder()
103
- input_df[col] = input_df[col].astype(str).map(lambda s: le.transform([s])[0] if s in le.classes_ else -1)
 
104
 
105
  # Normalize numerical features
106
  numerical_columns = [col for col in features if col not in categorical_columns]
107
  scaler = StandardScaler()
108
- input_df[numerical_columns] = scaler.transform(input_df[numerical_columns])
109
 
110
  return input_df
111
 
 
55
  "webpage_id": "nunique"
56
  }).reset_index()
57
 
58
+ # Fix renaming: Remove columns that are missing
59
  age_sex_product_agg.columns = ["age_level", "gender", "product",
 
60
  "unique_campaigns_age_sex_prod", "unique_webpages_age_sex_prod"]
61
 
62
  input_df = input_df.merge(age_sex_product_agg, on=["age_level", "gender", "product"], how="left")
 
67
  "webpage_id": "nunique"
68
  }).reset_index()
69
 
70
+ # Fix renaming: Remove columns that are missing
71
  city_age_product_agg.columns = ["city_development_index", "age_level", "product",
 
72
  "unique_campaigns_city_age_prod", "unique_webpages_city_age_prod"]
73
+
74
  input_df = input_df.merge(city_age_product_agg, on=["city_development_index", "age_level", "product"], how="left")
75
  input_df.fillna(0, inplace=True)
76
+
77
+ # Feature List (Removed click_sum and click_count)
78
  features = ["age_level", "gender", "product", "campaign_id", "webpage_id",
79
  "product_category_1", "product_category_2", "user_group_id",
80
  "user_depth", "city_development_index", "var_1",
 
 
 
81
  "unique_campaigns_age_sex_prod", "unique_webpages_age_sex_prod",
 
82
  "unique_campaigns_city_age_prod", "unique_webpages_city_age_prod"]
83
 
 
 
84
  categorical_columns = ["gender", "product", "campaign_id", "webpage_id"]
85
 
86
  # ===========================
87
  # ENCODE CATEGORICAL FEATURES
88
  # ===========================
89
 
 
 
 
 
 
90
  label_encoders = {}
91
  for col in categorical_columns:
92
  le = LabelEncoder()
93
+ input_df[col] = le.fit_transform(input_df[col].astype(str)) # Apply transformation correctly
94
+ label_encoders[col] = le # Store encoder for reference
95
 
96
  # Normalize numerical features
97
  numerical_columns = [col for col in features if col not in categorical_columns]
98
  scaler = StandardScaler()
99
+ input_df[numerical_columns] = scaler.fit_transform(input_df[numerical_columns])
100
 
101
  return input_df
102