Spaces:
Runtime error
Runtime error
import pandas as pd | |
from sklearn.linear_model import LinearRegression | |
import joblib | |
from agents.agent import Agent | |
from agents.specialist_agent import SpecialistAgent | |
from agents.frontier_agent import FrontierAgent | |
from agents.random_forest_agent import RandomForestAgent | |
class EnsembleAgent(Agent): | |
name = "Ensemble Agent" | |
color = Agent.YELLOW | |
def __init__(self, collection): | |
""" | |
Create an instance of Ensemble, by creating each of the models | |
And loading the weights of the Ensemble | |
""" | |
self.log("Initializing Ensemble Agent") | |
self.specialist = SpecialistAgent() | |
self.frontier = FrontierAgent(collection) | |
self.random_forest = RandomForestAgent() | |
self.model = joblib.load('ensemble_model.pkl') | |
self.log("Ensemble Agent is ready") | |
def price(self, description: str) -> float: | |
""" | |
Run this ensemble model | |
Ask each of the models to price the product | |
Then use the Linear Regression model to return the weighted price | |
:param description: the description of a product | |
:return: an estimate of its price | |
""" | |
self.log("Running Ensemble Agent - collaborating with specialist, frontier and random forest agents") | |
specialist = self.specialist.price(description) | |
frontier = self.frontier.price(description) | |
random_forest = self.random_forest.price(description) | |
X = pd.DataFrame({ | |
'Specialist': [specialist], | |
'Frontier': [frontier], | |
'RandomForest': [random_forest], | |
'Min': [min(specialist, frontier, random_forest)], | |
'Max': [max(specialist, frontier, random_forest)], | |
}) | |
y = self.model.predict(X)[0] | |
self.log(f"Ensemble Agent complete - returning ${y:.2f}") | |
return y |