File size: 2,588 Bytes
1ba3f22 9a997e4 1ba3f22 c119738 1ba3f22 9a997e4 1ba3f22 9a997e4 993f2a6 c119738 a241bb3 9a997e4 c119738 9a997e4 c119738 9a997e4 a241bb3 31284a7 affc682 a241bb3 9a997e4 31284a7 9a997e4 affc682 993f2a6 9a997e4 |
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 72 73 74 75 76 77 78 79 80 |
"All constants used in the project."
from pathlib import Path
import pandas
# The directory of this project
REPO_DIR = Path(__file__).parent
# This repository's main necessary directories
DEPLOYMENT_PATH = REPO_DIR / "deployment_files"
FHE_KEYS = REPO_DIR / ".fhe_keys"
CLIENT_FILES = REPO_DIR / "client_files"
SERVER_FILES = REPO_DIR / "server_files"
# Path targeting pre-processor saved files
PRE_PROCESSOR_USER_PATH = DEPLOYMENT_PATH / 'pre_processor_user.pkl'
PRE_PROCESSOR_THIRD_PARTY_PATH = DEPLOYMENT_PATH / 'pre_processor_third_party.pkl'
# Create the necessary directories
FHE_KEYS.mkdir(exist_ok=True)
CLIENT_FILES.mkdir(exist_ok=True)
SERVER_FILES.mkdir(exist_ok=True)
# Store the server's URL
SERVER_URL = "http://localhost:8000/"
# Path to data file
# Details about pre-processing steps can be found in the 'development.py' and 'pre_processing.py'
# files
DATA_PATH = "data/data.csv"
# Development settings
RANDOM_STATE = 0
INITIAL_INPUT_SHAPE = (1, 49)
CLIENT_TYPES = ["user", "bank", "third_party"]
INPUT_INDEXES = {
"user": 0,
"bank": 1,
"third_party": 2,
}
INPUT_SLICES = {
"user": slice(0, 42), # First position: start from 0
"bank": slice(42, 43), # Second position: start from n_feature_user
"third_party": slice(43, 49), # Third position: start from n_feature_user + n_feature_bank
}
USER_COLUMNS = [
'Own_car', 'Own_property', 'Work_phone', 'Phone', 'Email', 'Num_children', 'Household_size',
'Total_income', 'Age', 'Income_type', 'Education_type', 'Family_status', 'Housing_type',
'Occupation_type',
]
BANK_COLUMNS = ["Account_age"]
THIRD_PARTY_COLUMNS = ["Years_employed", "Employed"]
_data = pandas.read_csv(DATA_PATH, encoding="utf-8")
def get_min_max(data, column):
"""Get min/max values of a column in order to input them in Gradio's API as key arguments."""
return {
"minimum": int(data[column].min()),
"maximum": int(data[column].max()),
}
# App data min and max values
ACCOUNT_MIN_MAX = get_min_max(_data, "Account_age")
CHILDREN_MIN_MAX = get_min_max(_data, "Num_children")
INCOME_MIN_MAX = get_min_max(_data, "Total_income")
AGE_MIN_MAX = get_min_max(_data, "Age")
EMPLOYED_MIN_MAX = get_min_max(_data, "Years_employed")
FAMILY_MIN_MAX = get_min_max(_data, "Household_size")
# App data choices
INCOME_TYPES = list(_data["Income_type"].unique())
OCCUPATION_TYPES = list(_data["Occupation_type"].unique())
HOUSING_TYPES = list(_data["Housing_type"].unique())
EDUCATION_TYPES = list(_data["Education_type"].unique())
FAMILY_STATUS = list(_data["Family_status"].unique())
|