File size: 1,930 Bytes
468c485
 
 
 
 
 
 
 
 
 
95fbab2
 
468c485
e3a65a1
 
468c485
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95fbab2
468c485
95fbab2
468c485
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import os
import sys
sys.path.append('..')

import joblib
from sklearn.preprocessing import StandardScaler
import pandas as pd
import numpy as np
from scipy.special import inv_boxcox

from model import lambda_values
from preprocessing import boxcox

model_path = "src/ranfor_model.joblib"
scaler_path = "src/scaler.joblib"

def load_model():
    model = joblib.load(model_path)
    return model

def load_std_scaler():
    scaler = joblib.load(scaler_path)
    return scaler


constant = 1e-5
min_value_longitude = -124.35

columns = ["longitude","latitude","housingMedianAge","totalRooms","totalBedrooms","population","households","medianIncome"]

lamda_values = [value for value in lambda_values.values()]


def make_input(input_data:list,lamda_values:list,scaler) -> list:

    input_data[0] += abs(min_value_longitude) + constant
    transformed_data = []

    #since input_data has 8 elements, the element of lamda_values(for medianHouseValue)
    #will be ignored in for loop due to the zip function 

    for data,lamda_value in zip(input_data,lamda_values):
        transformed_data.append(boxcox(data,lmbda=lamda_value))

    transformed_data = np.array(transformed_data).reshape(1,-1)
    transformed_data_scaled = scaler.transform(transformed_data)

    return transformed_data_scaled

def make_prediction(input_data:list,model) -> list:
    
    pred_value_transformed = model.predict(input_data)
    pred_value = inv_boxcox(pred_value_transformed,lamda_values[-1])
    return pred_value



if __name__ =="__main__":
    actual_output = 52900
    new_data = [-1.1906e+02,  3.6150e+01,  2.5000e+01,  2.4020e+03,  4.7800e+02,
         1.5270e+03,  4.6100e+02,  2.3194e+00]
    scaler = load_std_scaler()

    tranformed_data = make_input(new_data,lamda_values=lamda_values,scaler=scaler)

    mod = load_model()

    pred_value = make_prediction(tranformed_data,model=mod)
    print(pred_value)
    print(actual_output)