Spaces:
Sleeping
Sleeping
Alexis Galvis
commited on
Commit
·
1e07e50
1
Parent(s):
d790594
fix
Browse files- app.py +7 -5
- requirements.txt +0 -0
- utils/calculate_probability_prediction.py +2 -3
app.py
CHANGED
@@ -30,7 +30,7 @@ st.sidebar.header("Ingrese los valores del préstamo")
|
|
30 |
|
31 |
# Nuevas variables de entrada con descripciones
|
32 |
annual_inc = st.sidebar.number_input(
|
33 |
-
"Ingreso Anual (USD)", min_value=
|
34 |
help="(float) Ingreso anual en dólares antes de impuestos."
|
35 |
)
|
36 |
emp_length = st.sidebar.selectbox(
|
@@ -46,7 +46,7 @@ purpose = st.sidebar.selectbox(
|
|
46 |
help="(categoría) Razón principal del préstamo."
|
47 |
)
|
48 |
zip_code = st.sidebar.number_input(
|
49 |
-
"Código Postal", min_value=
|
50 |
help="(int) Código postal de residencia del solicitante."
|
51 |
)
|
52 |
open_acc = st.sidebar.number_input(
|
@@ -54,7 +54,7 @@ open_acc = st.sidebar.number_input(
|
|
54 |
help="(int) Número total de cuentas de crédito abiertas."
|
55 |
)
|
56 |
total_monthly_debt = st.sidebar.number_input(
|
57 |
-
"Pagos Mensuales de Deuda (USD)", min_value=0
|
58 |
help="(float) Total de pagos mensuales de deuda (préstamos, tarjetas, hipotecas)."
|
59 |
)
|
60 |
|
@@ -77,10 +77,12 @@ if st.sidebar.button("Predecir"):
|
|
77 |
|
78 |
# Preprocesar y predecir
|
79 |
data_processed = preprocessor.transform(df)
|
80 |
-
predictions
|
|
|
81 |
y_scores = joblib.load(os.path.join('data', 'output', 'loan_scores.pkl'))
|
82 |
credit_score = probability_to_score_v3(predictions[0])
|
83 |
-
|
|
|
84 |
# Mostrar resultado
|
85 |
color = credit_score_range_classification(credit_score)
|
86 |
st.markdown(
|
|
|
30 |
|
31 |
# Nuevas variables de entrada con descripciones
|
32 |
annual_inc = st.sidebar.number_input(
|
33 |
+
"Ingreso Anual (USD)", min_value=6000, value=75000,
|
34 |
help="(float) Ingreso anual en dólares antes de impuestos."
|
35 |
)
|
36 |
emp_length = st.sidebar.selectbox(
|
|
|
46 |
help="(categoría) Razón principal del préstamo."
|
47 |
)
|
48 |
zip_code = st.sidebar.number_input(
|
49 |
+
"Código Postal", min_value=0, max_value=1000, step=1, value=0,
|
50 |
help="(int) Código postal de residencia del solicitante."
|
51 |
)
|
52 |
open_acc = st.sidebar.number_input(
|
|
|
54 |
help="(int) Número total de cuentas de crédito abiertas."
|
55 |
)
|
56 |
total_monthly_debt = st.sidebar.number_input(
|
57 |
+
"Pagos Mensuales de Deuda (USD)", min_value=0, value=600,
|
58 |
help="(float) Total de pagos mensuales de deuda (préstamos, tarjetas, hipotecas)."
|
59 |
)
|
60 |
|
|
|
77 |
|
78 |
# Preprocesar y predecir
|
79 |
data_processed = preprocessor.transform(df)
|
80 |
+
predictions= model.predict(data_processed)
|
81 |
+
print(f"Predicción: {predictions}")
|
82 |
y_scores = joblib.load(os.path.join('data', 'output', 'loan_scores.pkl'))
|
83 |
credit_score = probability_to_score_v3(predictions[0])
|
84 |
+
print(f"Puntaje de Crédito: {credit_score}")
|
85 |
+
|
86 |
# Mostrar resultado
|
87 |
color = credit_score_range_classification(credit_score)
|
88 |
st.markdown(
|
requirements.txt
CHANGED
Binary files a/requirements.txt and b/requirements.txt differ
|
|
utils/calculate_probability_prediction.py
CHANGED
@@ -1,8 +1,7 @@
|
|
1 |
import numpy as np
|
2 |
|
3 |
-
|
4 |
def probability_to_score_v3(prob, base_score=300, max_score=850, threshold=0.326,
|
5 |
-
|
6 |
"""
|
7 |
Convierte probabilidades en puntajes de crédito con expansión no lineal
|
8 |
para distribuir mejor en los extremos.
|
@@ -45,4 +44,4 @@ def probability_to_score_v3(prob, base_score=300, max_score=850, threshold=0.326
|
|
45 |
# Asegurar que el score esté dentro del rango permitido
|
46 |
score = np.clip(score, base_score, max_score)
|
47 |
|
48 |
-
return score
|
|
|
1 |
import numpy as np
|
2 |
|
|
|
3 |
def probability_to_score_v3(prob, base_score=300, max_score=850, threshold=0.326,
|
4 |
+
expansion_factor_low=3, expansion_factor_high=0.7):
|
5 |
"""
|
6 |
Convierte probabilidades en puntajes de crédito con expansión no lineal
|
7 |
para distribuir mejor en los extremos.
|
|
|
44 |
# Asegurar que el score esté dentro del rango permitido
|
45 |
score = np.clip(score, base_score, max_score)
|
46 |
|
47 |
+
return float(score)
|