MLSystemTFG / resultview.py
luismidv's picture
push
1215868
import pandas as pd
import similarity as sm
import json
def tenant_visualization(similarity_matrix, requested_tenants):
#TODO VIEW COMPATIBILITY BETWEEN REQUESTED TENANTS
print(f"The options for visualizatio are:\n"+
"1.Compatibility for each tenants with requested ones\n"+
"2.Mean compatibility for each tenant\n"+
"3.Most compatible tenant for the requested ones\n"+
"4.Obtain registers from most compatible tenants\n")
option = int(input("What option are u choosing: "))
tenant_lines = similarity_matrix[requested_tenants].mean()
match(option):
case 1:
tenant_lines.head(5)
print(f"Compatibility for each tenants with requested ones \n{tenant_lines}")
case 2:
mean_compatibility = tenant_lines.mean(axis = 0)
print(f"Mean compatibility for each tenant:\n {mean_compatibility} ")
case 3:
most_compatible = tenant_lines.sort_values(ascending = False)
print(f"Max compatibility for each tenant:\n {most_compatible} ")
case 4:
most_compatible = tenant_lines.sort_values(ascending = False)
print(f"Most compatible tenants registers\n {most_compatible}")
def tenant_inference(similarity_matrix, requested_tenants,dataframe):
print("Tenant inference check")
#TODO THIS FUNCTION IS THE ONE USED DURING INFERENCE TIME THE MODEL WILL CALCULATE THE 4 TENANTS WITH THE HIGHER COMPATIBILITY
try:
similarity_matrix = similarity_matrix.astype(int)
similarity_tenant = similarity_matrix[requested_tenants].sort_values(ascending = False).head(4)
final_tenants = similarity_tenant.index
tenant_features = dataframe.loc[final_tenants, ["names", "age", "smoking", "email"]]
print(tenant_features)
tenants_dict = {
key : list(tenant_features[key]) for key in tenant_features.columns
}
tenants_dict["Similarity"] = list(similarity_tenant)
return tenants_dict
except Exception as error:
print(f"Error: {error}")
def algo_start(id):
dataframe, original_dataframe = sm.data_preparing()
print("Received data preparing")
#sm.data_checking(dataframe)
similarity_matrix = sm.encoder_matrix(dataframe, min_range = 0, max_range=100)
print("Received similarity")
tenant_list = tenant_inference(similarity_matrix, id,original_dataframe)
print("Fin algo start check")
return tenant_list
#json_convert(tenant_list)
#tenant_visualization(similarity_matrix, [20,40,50,18,15])
def json_convert(tenant_list):
print("Entering json_convert")
#THE ALGO START FUNCTION COULD BE DOING THIS DIRECTLY, IS A POSSIBLE IMPROVEMENT IF THE WEB ISN'T WORKING FAST ENOUGH
tenants_dict = {
str(i) : { "Names" : " ", "Age": " ", "Smoking": " ", "Email" : " ", "Compatibility" : " "} for i in range(4)
}
tenant_counter = 0
for tenant in tenant_list:
tenant_features = tenant[0]
tenant_compatibility = tenant[1]
for feature in tenant_features.index:
tenants_dict[str(tenant_counter)][feature] = str(tenant_features[feature])
tenants_dict[str(tenant_counter)]["Compatibility"] = str(tenant_compatibility)
tenant_counter += 1
tenants_json = json.dumps(tenants_dict, indent = 4)
return tenants_json