chkp-talexm commited on
Commit ·
bd5afec
1
Parent(s): bc47cc1
update
Browse files
app.py
CHANGED
|
@@ -55,9 +55,8 @@ def preprocess_input(input_df):
|
|
| 55 |
"webpage_id": "nunique"
|
| 56 |
}).reset_index()
|
| 57 |
|
| 58 |
-
#
|
| 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 |
-
#
|
| 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)
|
|
|
|
| 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.
|
| 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 |
|