fivedollarwitch commited on
Commit
f908289
·
verified ·
1 Parent(s): 15c5631

Create NextPlaceBaseModel.py

Browse files
Files changed (1) hide show
  1. NextPlaceBaseModel.py +47 -0
NextPlaceBaseModel.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from typing import Union, Tuple
2
+ import datetime
3
+
4
+ class NextPlaceBaseModel:
5
+
6
+
7
+ def __init__(self):
8
+ self._load_model()
9
+
10
+
11
+ def _load_model(self):
12
+ """
13
+ Perform any actions needed to load the model.
14
+ EX: Establish API connections, download an ML model for inference, etc...
15
+ """
16
+ print("Loading model...")
17
+ # Optional model loading
18
+ print("Model loaded.")
19
+
20
+
21
+ def _sale_date_predictor(self, daysOnMarket: int):
22
+ """
23
+ Calculate the expected sale date based on the national average
24
+ :param daysOnMarket: number of days this house has been on the market
25
+ :return: the predicted sale date, based on the national average of 34 days
26
+ """
27
+ national_average = 34
28
+ if daysOnMarket < national_average:
29
+ days_until_sale = national_average - daysOnMarket
30
+ sale_date = datetime.date.today() + datetime.timedelta(days=days_until_sale)
31
+ return sale_date
32
+ else:
33
+ return datetime.date.today() + datetime.timedelta(days=1)
34
+
35
+
36
+ def run_inference(self, input_data: dict[str, Union[str, int, float]]) -> Tuple[float, str]:
37
+ """
38
+ Predict the sale price and sale date for the house represented by `input_data`
39
+ :param input_data: a formatted Synapse from the validator, representing a currently listed house
40
+ :return: the predicted sale price and predicted sale date for this home
41
+ """
42
+ predicted_sale_price = float(input_data['price']) if ('price' in input_data) else 1.0
43
+ predicted_sale_date = self._sale_date_predictor(input_data['dom']) if ('dom' in input_data) else datetime.date.today() + datetime.timedelta(days=1)
44
+ predicted_sale_date = predicted_sale_date.strftime("%Y-%m-%d")
45
+ print(f"Predicted sale price: {predicted_sale_price}")
46
+ print(f"Predicted sale date: {predicted_sale_date}")
47
+ return predicted_sale_price, predicted_sale_date