{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceType":"competition","sourceId":35332,"databundleVersionId":3723648},{"sourceType":"datasetVersion","sourceId":3739819,"datasetId":2231132,"databundleVersionId":3794269}],"dockerImageVersionId":31286,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport lightgbm as lgb\nimport matplotlib.pyplot as plt\n\n# 1. Rutas Corregidas\n# Usamos 'train.parquet' de raddar para los datos de comportamiento\npath_data = '/kaggle/input/datasets/raddar/amex-data-integer-dtypes-parquet-format/train.parquet'\n# Usamos 'train_labels.csv' de la competencia original para las respuestas (0 o 1)\npath_labels = '/kaggle/input/competitions/amex-default-prediction/train_labels.csv'\n\nprint(\"Cargando datos optimizados (Parquet)...\")\n# Cargamos una muestra de los datos de comportamiento\ndf = pd.read_parquet(path_data).head(100000)\n\nprint(\"Cargando etiquetas oficiales (CSV)...\")\n# El archivo de etiquetas sí es un CSV real y UTF-8\nlabels = pd.read_csv(path_labels)\n\nprint(\"Sincronizando registros (Merge)...\")\n# Unimos el comportamiento del cliente con su etiqueta de pago\ntrain_df = pd.merge(df, labels, on='customer_ID', how='inner')\n\n# 2. Preparación de variables\n# Quitamos lo que no es predictivo y el objetivo\nX = train_df.drop(columns=['customer_ID', 'S_2', 'target'], errors='ignore')\ny = train_df['target']\n\nprint(\"Entrenando modelo de scoring...\")\n# Un modelo de 50 árboles es ligero y rápido para esta prueba\nmodel = lgb.LGBMClassifier(n_estimators=200, device=\"cpu\", random_state=42)\nmodel.fit(X, y)\n\nprint(\"¡Proceso completado! Generando gráfico de importancia:\")\nplt.figure(figsize=(10, 6))\nlgb.plot_importance(model, max_num_features=10)\nplt.title(\"Factores que más influyen en el Score Financiero (Amex)\")\nplt.show()","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-03-13T15:23:16.432598Z","iopub.execute_input":"2026-03-13T15:23:16.432963Z","iopub.status.idle":"2026-03-13T15:23:42.167892Z","shell.execute_reply.started":"2026-03-13T15:23:16.432934Z","shell.execute_reply":"2026-03-13T15:23:42.166876Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# 1. Generamos las probabilidades (el score)\n# predict_proba nos da dos columnas: [Prob de ser 0, Prob de ser 1]\n# Tomamos la segunda columna [:, 1] que es el riesgo de impago\nscores = model.predict_proba(X)[:, 1]\n\n# 2. Creamos una tabla comparativa\nresultados = pd.DataFrame({\n    'ID_Cliente': train_df['customer_ID'],\n    'Realidad (Target)': y,\n    'Score_Riesgo': scores\n})\n\n# 3. Mostramos los 10 clientes con mayor riesgo detectado\nprint(\"Top 10 Clientes con Mayor Riesgo de Impago:\")\nprint(resultados.sort_values(by='Score_Riesgo', ascending=False).head(10))\n\n# 4. Histograma de Scores\nplt.figure(figsize=(8, 5))\nplt.hist(resultados['Score_Riesgo'], bins=50, color='skyblue', edgecolor='black')\nplt.title('Distribución de Scores de Riesgo (Probabilidades)')\nplt.xlabel('Score (0 = Seguro, 1 = Riesgo Alto)')\nplt.ylabel('Cantidad de Clientes')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-13T15:44:04.908785Z","iopub.execute_input":"2026-03-13T15:44:04.909212Z","iopub.status.idle":"2026-03-13T15:44:05.483225Z","shell.execute_reply.started":"2026-03-13T15:44:04.909170Z","shell.execute_reply":"2026-03-13T15:44:05.481929Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Muestra las primeras 20 variables y cuántas hay en total\ncolumnas = X.columns.tolist()\nprint(f\"Total de variables usadas: {len(columnas)}\")\nprint(\"Ejemplos de variables en el modelo:\")\nprint(columnas[:20]) # Esto te dará el listado en formato B_4, D_43, etc.","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-13T15:32:38.836676Z","iopub.execute_input":"2026-03-13T15:32:38.837075Z","iopub.status.idle":"2026-03-13T15:32:38.844138Z","shell.execute_reply.started":"2026-03-13T15:32:38.837044Z","shell.execute_reply":"2026-03-13T15:32:38.842554Z"}},"outputs":[],"execution_count":null}]}