|
|
import pandas as pd |
|
|
from xgboost import XGBRegressor |
|
|
from sklearn.model_selection import train_test_split |
|
|
from sklearn.metrics import mean_absolute_error |
|
|
import joblib |
|
|
from utils.preprocessing import preprocess_data |
|
|
from huggingface_hub import HfApi, login |
|
|
import os |
|
|
|
|
|
def train_engagement_rate(): |
|
|
"""Train the engagement rate prediction model.""" |
|
|
|
|
|
df = pd.read_json("data/raw/engagement_metrics.json") |
|
|
df = preprocess_data(df) |
|
|
|
|
|
|
|
|
X = df[['caption_length', 'hashtag_count', 'sentiment']] |
|
|
y = df['engagement_rate'] |
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) |
|
|
|
|
|
engagement_model = XGBRegressor(random_state=42) |
|
|
engagement_model.fit(X_train, y_train) |
|
|
y_pred = engagement_model.predict(X_test) |
|
|
mae = mean_absolute_error(y_test, y_pred) |
|
|
print(f"Engagement Rate Prediction Model - MAE: {mae:.4f}") |
|
|
|
|
|
|
|
|
joblib.dump(engagement_model, "engagement_rate_model.pkl") |
|
|
|