film_mlmodule / steps /evaluation.py
root
first hf commit
6defa3d
raw
history blame contribute delete
No virus
1.32 kB
import logging
from typing import Tuple
from typing_extensions import Annotated
import pandas as pd
from zenml import step
from zenml.client import Client
import mlflow
from sklearn.base import RegressorMixin
from src.evaluation import MSE, R2, RMSE
experiment_tracker = Client().active_stack.experiment_tracker
@step(experiment_tracker=experiment_tracker.name)
def evaluate_model(
model: RegressorMixin,
X_test: pd.DataFrame,
y_test: pd.DataFrame
) -> Tuple[
Annotated[float, "r2_score"],
Annotated[float, "rmse_score"]
]:
"""
Trains the model on ingested data
Args:
df: the ingested data
"""
try:
prediction = model.predict(X_test)
mse_class = MSE()
mse_score = mse_class.calculate_scores(y_test, prediction)
mlflow.log_metric("mse", mse_score)
r2_class = R2()
r2_score = r2_class.calculate_scores(y_test, prediction)
mlflow.log_metric("r2", r2_score)
rmse_class = RMSE()
rmse_score = rmse_class.calculate_scores(y_test, prediction)
mlflow.log_metric("rmse", rmse_score)
return r2_score, rmse_score
except Exception as e:
logging.error(f"Error in evaluating model: {e}")
raise e