avatar2102's picture
Upload final AdaBoost model and experiment log
27b28e6 verified
Raw
History Blame Contribute Delete
3.29 kB
import os
import pandas as pd
import joblib
from sklearn.ensemble import AdaBoostClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
from huggingface_hub import HfApi
from huggingface_hub.utils import RepositoryNotFoundError, HfHubHTTPError
DATASET_REPO_ID = "avatar2102/engine-predictive-maintenance"
MODEL_REPO_ID = "avatar2102/engine-predictive-maintenance-model"
token = os.getenv("PREDICTIVE_GIT_TOKEN")
if token is None:
raise ValueError("PREDICTIVE_GIT_TOKEN environment variable not set")
api = HfApi(token=token)
# Load train/test data from Hugging Face dataset repo
train_path = f"hf://datasets/{DATASET_REPO_ID}/train.csv"
test_path = f"hf://datasets/{DATASET_REPO_ID}/test.csv"
train_df = pd.read_csv(train_path)
test_df = pd.read_csv(test_path)
print("Train and test datasets loaded successfully from Hugging Face.")
print("Train shape:", train_df.shape)
print("Test shape:", test_df.shape)
# Split features and target
X_train = train_df.drop("engine_condition", axis=1)
y_train = train_df["engine_condition"]
X_test = test_df.drop("engine_condition", axis=1)
y_test = test_df["engine_condition"]
print("Feature-target split completed.")
# Final AdaBoost model using tuned parameters from interim phase
final_model = AdaBoostClassifier(
n_estimators=150,
learning_rate=0.05,
random_state=42
)
# Train model
final_model.fit(X_train, y_train)
print("Final AdaBoost model trained successfully.")
# Predict on test data
y_pred = final_model.predict(X_test)
# Evaluate model
accuracy = accuracy_score(y_test, y_pred)
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
cm = confusion_matrix(y_test, y_pred)
print("Model evaluation completed.")
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("F1-score:", f1)
print("Confusion Matrix:")
print(cm)
# Save experiment log
log_df = pd.DataFrame([{
"model": "AdaBoost",
"n_estimators": 150,
"learning_rate": 0.05,
"cv_f1_score": 0.7742989393943112,
"test_accuracy": accuracy,
"test_precision": precision,
"test_recall": recall,
"test_f1_score": f1,
"confusion_matrix": str(cm.tolist())
}])
log_df.to_csv("prediction_project/model_building/final_adaboost_model_log.csv", index=False)
print("Experiment log saved successfully.")
# Save model locally
joblib.dump(final_model, "prediction_project/model_building/adaboost_final_model.joblib")
print("Model saved locally as joblib.")
# Create model repo if missing
try:
api.repo_info(repo_id=MODEL_REPO_ID, repo_type="model")
print(f"Model repo '{MODEL_REPO_ID}' already exists. Using it.")
except (RepositoryNotFoundError, HfHubHTTPError):
print(f"Model repo '{MODEL_REPO_ID}' not found. Creating new repo...")
api.create_repo(repo_id=MODEL_REPO_ID, repo_type="model", exist_ok=True)
print(f"Model repo '{MODEL_REPO_ID}' created.")
# Upload model_building folder to HF Model Hub
api.upload_folder(
folder_path="prediction_project/model_building",
repo_id=MODEL_REPO_ID,
repo_type="model",
commit_message="Upload final AdaBoost model and experiment log"
)
print("Model uploaded successfully to Hugging Face Model Hub.")