diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..54453326022674ae38865dbacea78b6aaad0deb3 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,15 @@ +.git +.gitignore +.pytest_cache +__pycache__/ +**/__pycache__/ +*.pyc +*.pyo +*.pyd +*.db +venv/ +.venv/ +.env +alembic_smoke.db +EDA_For_All_Tree.ipynb +EDA_For_All_Tree_clean.ipynb diff --git a/.env.example b/.env.example new file mode 100644 index 0000000000000000000000000000000000000000..64d578b58b63f6810c199480491df0be724936b2 --- /dev/null +++ b/.env.example @@ -0,0 +1,28 @@ +ORACULO_APP_NAME=Oraculo Adult Income API +ORACULO_APP_VERSION=2.0.0 +ORACULO_ENVIRONMENT=development +ORACULO_DEBUG=false + +ORACULO_DATABASE_URL=sqlite:///./oraculo.db +ORACULO_DATABASE_ECHO=false +ORACULO_AUTO_CREATE_TABLES=true +ORACULO_AUTO_SEED_ADMIN=true +ORACULO_SEED_ADMIN_EMAIL=admin@example.com +ORACULO_SEED_ADMIN_PASSWORD=ChangeMe!12345 +ORACULO_SEED_ADMIN_NAME=Administrator + +ORACULO_MODEL_PATH=app/ml/pipeline_produccion.pkl + +ORACULO_JWT_SECRET_KEY=replace-this-with-a-long-random-secret-at-least-32-chars +ORACULO_JWT_ALGORITHM=HS256 +ORACULO_ACCESS_TOKEN_EXPIRE_MINUTES=60 + +ORACULO_ALLOWED_HOSTS=localhost,127.0.0.1,*.hf.space,*.huggingface.co +ORACULO_CORS_ALLOW_ORIGINS=http://localhost:3000,http://127.0.0.1:3000 + +ORACULO_MAX_REQUEST_SIZE_BYTES=32768 +ORACULO_RATE_LIMIT_ENABLED=true +ORACULO_RATE_LIMIT_REQUESTS=60 +ORACULO_RATE_LIMIT_WINDOW_SECONDS=60 + +ORACULO_DOCS_ENABLED=true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..979b34908f285bae0941fd8254e02d60d577321b --- /dev/null +++ b/.gitignore @@ -0,0 +1,124 @@ +# ========================================== +# OS / File Explorer +# ========================================== +.DS_Store +Thumbs.db +Desktop.ini +$RECYCLE.BIN/ + +# ========================================== +# Editors / IDEs +# ========================================== +.idea/ +.vscode/ +*.code-workspace + +# ========================================== +# Python +# ========================================== +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +.python-version + +# ========================================== +# Virtual Environments +# ========================================== +venv/ +.venv/ +env/ +ENV/ + +# ========================================== +# Environment / Secrets +# ========================================== +.env +.env.local +.env.*.local +!.env.example + +# ========================================== +# Packaging / Build +# ========================================== +build/ +dist/ +site/ +.eggs/ +*.egg +*.egg-info/ +pip-wheel-metadata/ + +# ========================================== +# Testing / Coverage / Type Checking +# ========================================== +.pytest_cache/ +.coverage +.coverage.* +htmlcov/ +.hypothesis/ +.tox/ +.nox/ +.mypy_cache/ +.pyre/ +.ruff_cache/ + +# ========================================== +# Jupyter +# ========================================== +.ipynb_checkpoints/ + +# ========================================== +# Logs / Runtime Files +# ========================================== +*.log +logs/ +*.pid +*.pid.lock +*.out +*.err + +# ========================================== +# Local Databases / Storage +# ========================================== +*.db +*.db-shm +*.db-wal +*.sqlite +*.sqlite3 +instance/ + +# ========================================== +# Alembic / Migration Local Noise +# ========================================== +alembic_smoke.db + +# ========================================== +# Local ML / Notebook Outputs +# Keep the canonical model artifact tracked if needed. +# ========================================== +mlops_activos/ +artifacts/ +outputs/ +reports/ +tmp/ +temp/ +*.tmp +*.bak +*.orig + +# ========================================== +# Hugging Face / Cache / Misc +# ========================================== +.cache/ +.huggingface/ + +# ========================================== +# Frontend / Node (safe to keep even if unused) +# ========================================== +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..183d6bf784551159485510a3d5cf422ade55abb7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,31 @@ +FROM python:3.11-slim + +ENV PYTHONDONTWRITEBYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + PIP_NO_CACHE_DIR=1 \ + ORACULO_ENVIRONMENT=staging \ + ORACULO_DOCS_ENABLED=true + +RUN apt-get update \ + && apt-get install -y --no-install-recommends libgomp1 \ + && rm -rf /var/lib/apt/lists/* + +RUN useradd --create-home --uid 1000 user + +WORKDIR /app + +COPY requirements.txt /app/requirements.txt + +RUN pip install --upgrade pip \ + && pip install --no-cache-dir -r /app/requirements.txt + +COPY . /app + +RUN mkdir -p /data \ + && chown -R user:user /app /data + +USER user + +EXPOSE 7860 + +CMD ["sh", "-c", "alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port 7860"] diff --git a/EDA_For_All_Tree.ipynb b/EDA_For_All_Tree.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..18e3c7d4fa82d363a1412d614d3616e3a1dafbb9 --- /dev/null +++ b/EDA_For_All_Tree.ipynb @@ -0,0 +1,22544 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🚀 FASE 1.1: Ingesta Acelerada Estructural ===\n", + " 🔍 Heurística Principal: Separador ';' detectado por Sniffer.\n", + " ⚡ Ejecutando ingesta paralela con motor POLARS (Multi-core)...\n", + " ✔️ Archivo cargado a velocidad extrema y convertido a Pandas Mutable.\n", + "\n", + "📊 Diagnóstico de Ingesta:\n", + " ⏱️ Tiempo de lectura : 0.0896 segundos\n", + " 📐 Dimensiones : 32,561 filas x 15 columnas\n", + " 💾 Consumo de RAM : 17.65 MB\n", + "\n", + "--- 👁️ Radiografía de Estructura Inicial (Primeras 3 filas) ---\n", + "\n", + " age workclass fnlwgt education education.num marital.status occupation relationship race sex capital.gain capital.loss hours.per.week native.country income\n", + "0 90 ? 77053 HS-grad 9 Widowed ? Not-in-family White Female 0 4356 40 United-States <=50 K\n", + "1 82 Private 132870 HS-grad 9 Widowed Exec-managerial Not-in-family White Female 0 4356 18 United-States <=50K \n", + "2 66 ? 186061 Some-college 10 Widowed ? Unmarried Black Female 0 4356 40 United-States <=50K\n", + "\n", + "✅ Datos iniciales cargados de forma segura en la memoria de 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import csv\n", + "import time\n", + "import logging # 🚀 NUEVO: Librería de Telemetría Estándar\n", + "import pandas as pd\n", + "from typing import Tuple, Any, Optional\n", + "from IPython.display import display\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# ==========================================\n", + "# 🚀 FIX ARQUITECTÓNICO: Configuración del Sistema de Telemetría (Logging)\n", + "# ==========================================\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "logger.setLevel(logging.INFO)\n", + "\n", + "# Evitar duplicación de handlers si se ejecuta la celda varias veces\n", + "if not logger.handlers:\n", + " # 1. Handler para archivo físico (Persistencia en Servidor/K8s para Datadog/CloudWatch)\n", + " file_handler = logging.FileHandler(\"mlops_pipeline_auditoria.log\", encoding='utf-8')\n", + " file_formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')\n", + " file_handler.setFormatter(file_formatter)\n", + " \n", + " # 2. Handler para la consola (Mantiene la estética en Jupyter Notebook)\n", + " console_handler = logging.StreamHandler()\n", + " console_formatter = logging.Formatter('%(message)s') \n", + " console_handler.setFormatter(console_formatter)\n", + " \n", + " logger.addHandler(file_handler)\n", + " logger.addHandler(console_handler)\n", + "\n", + "# Intentamos cargar el motor de ultra-alta velocidad (Polars)\n", + "try:\n", + " import polars as pl\n", + " MOTOR_PRINCIPAL = 'polars'\n", + "except ImportError:\n", + " MOTOR_PRINCIPAL = 'pandas'\n", + " logger.warning(\"⚠️ Aviso: 'polars' no detectado. Usando 'pandas' (Motor C) como respaldo de emergencia.\")\n", + "\n", + "\n", + "# ==========================================\n", + "# 🚀 EL CONTENEDOR DE ESTADO (PIPELINE MANAGER)\n", + "# ==========================================\n", + "class PipelineManager:\n", + " \"\"\"\n", + " Cerebro MLOps que transporta los datos y artefactos de una fase a otra.\n", + " Elimina la dependencia de variables globales (locals()/globals()) y \n", + " hace que el código sea seguro para producción.\n", + " \"\"\"\n", + " def __init__(self):\n", + " # 🚀 FIX ARQUITECTÓNICO: Ingesta inicial centralizada\n", + " self.datos_crudos = None \n", + " \n", + " # El estado centralizado post-split\n", + " self.X_train = None\n", + " self.y_train = None\n", + " self.X_test = None\n", + " self.y_test = None\n", + " self.rutas = {\n", + " 'num_vars': [], \n", + " 'cat_vars': [], \n", + " 'bool_vars': [], \n", + " 'date_vars': []\n", + " }\n", + " self.pesos_train = None\n", + " self.grupos_cv = None\n", + " # Diccionario para guardar todos los transformadores entrenados (Escaladores, Imputadores)\n", + " self.artefactos_preprocesamiento = {} \n", + " # Diccionario para la serialización final\n", + " self.artefactos = {}\n", + "\n", + " def cargar_split(self, X_tr: pd.DataFrame, X_te: pd.DataFrame, y_tr: pd.Series, y_te: pd.Series):\n", + " \"\"\"Inicializa las 4 matrices sagradas del Machine Learning.\"\"\"\n", + " self.X_train = X_tr\n", + " self.X_test = X_te\n", + " self.y_train = y_tr\n", + " self.y_test = y_te\n", + "\n", + " def guardar_artefacto(self, nombre: str, modelo: Any):\n", + " \"\"\"Guarda un transformador o valor crudo entrenado en la memoria del Manager.\"\"\"\n", + " self.artefactos_preprocesamiento[nombre] = modelo\n", + " self.artefactos[nombre] = modelo\n", + "\n", + "\n", + "def ingesta_acelerada_multicore(\n", + " ruta_archivo: str,\n", + " convertir_a_pandas_mutable: bool = True\n", + ") -> Tuple[Optional[Any], int]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.1] Ingesta Acelerada Multi-core (Nivel Producción 2026).\n", + " - Motor: Usa Polars (Rust) para leer millones de filas usando todos los hilos del CPU.\n", + " - Inteligencia Escalonada: Sniffer primario + Escáner de frecuencia de respaldo para delimitadores rebeldes.\n", + " - Tolerancia a Encodings (NUEVO): Ignora caracteres corruptos al detectar el separador.\n", + " - Mutabilidad: Extrae los datos al backend nativo de NumPy permitiendo cirugía de datos posterior.\n", + " \"\"\"\n", + " # ==========================================\n", + " # 1. Cláusulas de Guarda (Seguridad del File System)\n", + " # ==========================================\n", + " if not ruta_archivo or not isinstance(ruta_archivo, str):\n", + " logger.error(\"🛑 Error Crítico: Ruta de archivo inválida o nula.\")\n", + " return None, 0\n", + "\n", + " if not os.path.exists(ruta_archivo):\n", + " logger.error(f\"🛑 Error Crítico: El archivo '{ruta_archivo}' no fue encontrado en el sistema.\")\n", + " return None, 0\n", + "\n", + " logger.info(\"=== 🚀 FASE 1.1: Ingesta Acelerada Estructural ===\")\n", + "\n", + " # ==========================================\n", + " # 2. Inteligencia de Detección de Separador (Escudo Doble + Tolerancia a Fallos)\n", + " # ==========================================\n", + " separador_detectado = ',' # Default absoluto\n", + " try:\n", + " # 🔧 FIX MLOPS: errors='replace' evita que el código crashee si hay bytes corruptos (ej. 0xa0)\n", + " with open(ruta_archivo, 'r', encoding='utf-8', errors='replace') as archivo:\n", + " # Leemos solo un bloque minúsculo para no ahogar la RAM\n", + " muestra = archivo.read(10240) \n", + "\n", + " try:\n", + " # INTENTO 1: Motor Sniffer oficial de Python\n", + " separador_detectado = csv.Sniffer().sniff(muestra).delimiter\n", + "\n", + " # Manejo especial: A veces el sniffer confunde letras normales con separadores en textos sucios\n", + " if separador_detectado.isalnum():\n", + " raise ValueError(\"Sniffer detectó una letra/número como separador. Activando respaldo.\")\n", + "\n", + " logger.info(f\" 🔍 Heurística Principal: Separador '{separador_detectado}' detectado por Sniffer.\")\n", + "\n", + " except Exception:\n", + " # INTENTO 2: Escáner de Frecuencia (El Fallback Inteligente)\n", + " separadores_candidatos = [',', ';', '\\t', '|']\n", + " lineas = muestra.strip().split('\\n')[:10] # Analizamos las primeras 10 líneas\n", + "\n", + " # Contamos cuántas veces aparece cada candidato en la muestra\n", + " conteos = {sep: sum(linea.count(sep) for linea in lineas) for sep in separadores_candidatos}\n", + " mejor_candidato = max(conteos, key=conteos.get)\n", + "\n", + " if conteos[mejor_candidato] > 0:\n", + " separador_detectado = mejor_candidato\n", + " if separador_detectado == '\\t':\n", + " logger.info(\" 🛡️ Heurística de Respaldo: Sniffer falló, pero se detectó 'TABULADOR' por frecuencia.\")\n", + " else:\n", + " logger.info(f\" 🛡️ Heurística de Respaldo: Sniffer falló, pero se detectó '{separador_detectado}' por frecuencia.\")\n", + " else:\n", + " logger.warning(\" ⚠️ Alerta MLOps: Formato irreconocible o archivo de una sola columna. Forzando coma (',').\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\" 🛑 Error fatal al inspeccionar el archivo: {e}. Forzando coma (',').\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Ingesta de Alta Velocidad\n", + " # ==========================================\n", + " df_resultante = None\n", + " inicio_timer = time.time()\n", + "\n", + " try:\n", + " if MOTOR_PRINCIPAL == 'polars':\n", + " logger.info(f\" ⚡ Ejecutando ingesta paralela con motor POLARS (Multi-core)...\")\n", + "\n", + " # Polars lee en paralelo, ignora errores de codificación (utf8-lossy) y líneas corruptas\n", + " df_polars = pl.read_csv(\n", + " ruta_archivo,\n", + " separator=separador_detectado,\n", + " ignore_errors=True,\n", + " infer_schema_length=10000,\n", + " encoding='utf8-lossy'\n", + " )\n", + "\n", + " # MLOps: Convertimos a Pandas nativo (NumPy backend).\n", + " if convertir_a_pandas_mutable:\n", + " df_resultante = df_polars.to_pandas()\n", + " logger.info(\" ✔️ Archivo cargado a velocidad extrema y convertido a Pandas Mutable.\")\n", + " else:\n", + " df_resultante = df_polars\n", + " logger.info(\" ✔️ Archivo cargado a velocidad extrema (Mantenido en Polars).\")\n", + "\n", + " else:\n", + " # Fallback a Pandas si el usuario no tiene Polars instalado\n", + " logger.info(f\" 🐢 Ejecutando ingesta con motor PANDAS (C-Engine)...\")\n", + " df_resultante = pd.read_csv(\n", + " ruta_archivo,\n", + " sep=separador_detectado,\n", + " engine='c',\n", + " on_bad_lines='skip',\n", + " low_memory=False\n", + " )\n", + " logger.info(\" ✔️ Archivo cargado mediante fallback de seguridad (Nativo Mutable).\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\"🛑 Error crítico durante la lectura del archivo: {e}\")\n", + " return None, 0\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " # ==========================================\n", + " # 4. Snapshot de Memoria y Reporte UI\n", + " # ==========================================\n", + " filas, columnas = df_resultante.shape\n", + "\n", + " # Cálculo de memoria seguro (Dependiendo si es Pandas o Polars)\n", + " if isinstance(df_resultante, pd.DataFrame):\n", + " memoria_mb = df_resultante.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " else:\n", + " memoria_mb = df_resultante.estimated_size() / (1024 ** 2)\n", + "\n", + " logger.info(f\"\\n📊 Diagnóstico de Ingesta:\")\n", + " logger.info(f\" ⏱️ Tiempo de lectura : {tiempo_total:.4f} segundos\")\n", + " logger.info(f\" 📐 Dimensiones : {filas:,} filas x {columnas} columnas\")\n", + " logger.info(f\" 💾 Consumo de RAM : {memoria_mb:.2f} MB\")\n", + "\n", + " logger.info(\"\\n--- 👁️ Radiografía de Estructura Inicial (Primeras 3 filas) ---\")\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " display(df_resultante.head(3))\n", + " else:\n", + " logger.info(\"\\n\" + df_resultante.head(3).to_string())\n", + "\n", + " return df_resultante, filas\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb\n", + "# ==========================================\n", + "# IMPORTANTE: Si no tienes Polars, instálalo en una celda arriba con: !pip install polars\n", + "\n", + "ruta_dataset = 'adult.csv' # Cambia esto por tu archivo real\n", + "\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Instanciar el Manager en la Línea 1 del flujo principal\n", + " manager = PipelineManager()\n", + " \n", + " df_crudo, total_filas_originales = ingesta_acelerada_multicore(\n", + " ruta_archivo=ruta_dataset,\n", + " convertir_a_pandas_mutable=True # 🔥 La clave para habilitar la cirugía de datos posterior\n", + " )\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar el estado crudo directamente en el Manager\n", + " if df_crudo is not None:\n", + " manager.datos_crudos = df_crudo\n", + " logger.info(\"\\n✅ Datos iniciales cargados de forma segura en la memoria de 'manager.datos_crudos'.\")\n", + "\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo en la celda de ejecución: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "=== 🧬 FASE 1.1.5: Escáner Topológico de Atributos (15 columnas en total) ===\n", + "#### 📦 Bloque 1 (Columnas 1 a 15)\n", + "| # | 🗂️ Atributo (Izquierda) | ⚙️ Dtype | # | 🗂️ Atributo (Derecha) | ⚙️ Dtype |\n", + "|:---:|---|:---:|:---:|---|:---:|\n", + "| **1** | `age` | *int64* | **11** | `capital.gain` | *int64* |\n", + "| **2** | `workclass` | *object* | **12** | `capital.loss` | *int64* |\n", + "| **3** | `fnlwgt` | *int64* | **13** | `hours.per.week` | *int64* |\n", + "| **4** | `education` | *object* | **14** | `native.country` | *object* |\n", + "| **5** | `education.num` | *int64* | **15** | `income` | *object* |\n", + "| **6** | `marital.status` | *object* | - | - | - |\n", + "| **7** | `occupation` | *object* | - | - | - |\n", + "| **8** | `relationship` | *object* | - | - | - |\n", + "| **9** | `race` | *object* | - | - | - |\n", + "| **10** | `sex` | *object* | - | - | - |\n", + "\n", + "✔️ Mapeo estructural completado con éxito.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "from typing import Optional\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# FASE 1.2: ESCÁNER TOPOLÓGICO DE ATRIBUTOS\n", + "# ==========================================\n", + "def mapear_columnas_oraculo(df: Optional[pd.DataFrame]) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.1.5] Escáner Topológico de Atributos.\n", + " - Blindaje: Valida la existencia y estado de la matriz en memoria.\n", + " - Paginación Dinámica: Muestra las columnas en bloques de 20.\n", + " - UI Inteligente: Renderiza en 2 columnas (10 a la izquierda, 10 a la derecha) usando Markdown.\n", + " - Telemetría MLOps: Extrae y loguea el tipo de dato subyacente (dtype).\n", + " \"\"\"\n", + " if df is None or df.empty:\n", + " logger.error(\"🛑 Error Crítico [Escáner]: El DataFrame proporcionado está vacío o no existe en memoria.\")\n", + " return\n", + "\n", + " columnas = df.columns.tolist()\n", + " tipos = df.dtypes.astype(str).tolist()\n", + " total_cols = len(columnas)\n", + "\n", + " logger.info(f\"\\n=== 🧬 FASE 1.1.5: Escáner Topológico de Atributos ({total_cols} columnas en total) ===\")\n", + "\n", + " # Procesamiento por lotes (chunks de 20)\n", + " for i in range(0, total_cols, 20):\n", + " # Extracción segura del bloque actual\n", + " chunk_cols = columnas[i:i+20]\n", + " chunk_tipos = tipos[i:i+20]\n", + "\n", + " # División interna: 10 a la izquierda, 10 a la derecha\n", + " mitad = 10\n", + " left_cols = chunk_cols[:mitad]\n", + " left_tipos = chunk_tipos[:mitad]\n", + " right_cols = chunk_cols[mitad:]\n", + " right_tipos = chunk_tipos[mitad:]\n", + "\n", + " # Construcción dinámica de la tabla Markdown para Jupyter/Logs\n", + " md_table = f\"#### 📦 Bloque { (i // 20) + 1 } (Columnas {i + 1} a {min(i + 20, total_cols)})\\n\"\n", + " md_table += \"| # | 🗂️ Atributo (Izquierda) | ⚙️ Dtype | # | 🗂️ Atributo (Derecha) | ⚙️ Dtype |\\n\"\n", + " md_table += \"|:---:|---|:---:|:---:|---|:---:|\\n\"\n", + "\n", + " for j in range(mitad):\n", + " # Índices absolutos para la visualización\n", + " idx_left = i + j\n", + " idx_right = i + j + mitad\n", + "\n", + " # Renderizado de la celda izquierda (con protección de desbordamiento)\n", + " if j < len(left_cols):\n", + " str_idx_l = f\"**{idx_left + 1}**\"\n", + " str_col_l = f\"`{left_cols[j]}`\"\n", + " str_typ_l = f\"*{left_tipos[j]}*\"\n", + " else:\n", + " str_idx_l, str_col_l, str_typ_l = \"-\", \"-\", \"-\"\n", + "\n", + " # Renderizado de la celda derecha (con protección de desbordamiento)\n", + " if j < len(right_cols):\n", + " str_idx_r = f\"**{idx_right + 1}**\"\n", + " str_col_r = f\"`{right_cols[j]}`\"\n", + " str_typ_r = f\"*{right_tipos[j]}*\"\n", + " else:\n", + " str_idx_r, str_col_r, str_typ_r = \"-\", \"-\", \"-\"\n", + "\n", + " # Inserción de la fila en la tabla\n", + " md_table += f\"| {str_idx_l} | {str_col_l} | {str_typ_l} | {str_idx_r} | {str_col_r} | {str_typ_r} |\\n\"\n", + "\n", + " # 🛡️ Cláusula de Seguridad Visual Integrada con Logging\n", + " if MODO_VISUAL:\n", + " display(Markdown(md_table))\n", + " # Logueamos en el archivo físico de manera silenciosa para no ensuciar el notebook\n", + " logger.debug(f\"Renderizado visual del Bloque {(i // 20) + 1} completado.\")\n", + " else:\n", + " # En Headless/Producción, imprime la estructura raw para DataDog/CloudWatch\n", + " logger.info(md_table) \n", + "\n", + " logger.info(\"✔️ Mapeo estructural completado con éxito.\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificamos que el manager centralizado exista\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos los datos crudos directamente desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene cargados 'datos_crudos'. Ejecuta la ingesta primero.\")\n", + "\n", + " mapear_columnas_oraculo(manager.datos_crudos)\n", + " \n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo en el escáner de atributos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧬 FASE 1.2: Purga de Clones Absolutos ===\n", + " 🔍 Escaneando la matriz en busca de espejos perfectos...\n", + " 🚨 ALERTA: Se detectaron 24 filas 100% idénticas.\n", + " ↳ Acción: Ejecutando guillotina (Conservando solo el registro original)...\n", + "\n", + "✅ Purga completada en 0.106s.\n", + " 📉 Filas eliminadas : 24\n", + " 📊 Filas puras : 32,537\n", + " 🚀 RAM Liberada : 0.01 MB\n", + "\n", + "📦 [MLOps] Matriz purgada y actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def purgar_clones_absolutos(df_crudo: pd.DataFrame) -> Tuple[pd.DataFrame, int]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.2] Purga de Clones Absolutos (Nivel Producción).\n", + " - Inteligencia Estructural: Busca filas 100% idénticas en todas sus dimensiones.\n", + " - Prevención de Leakage Temprano: Elimina duplicados originados por errores \n", + " de extracción (SQL JOINs cruzados) que inflarían el conteo estadístico.\n", + " - MLOps: Perfila la memoria RAM liberada en el proceso y lo registra en Logs.\n", + " \"\"\"\n", + " # ==========================================\n", + " # 1. Cláusulas de Guarda (Seguridad)\n", + " # ==========================================\n", + " if not isinstance(df_crudo, pd.DataFrame) or df_crudo.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df_crudo, 0\n", + "\n", + " logger.info(\"=== 🧬 FASE 1.2: Purga de Clones Absolutos ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " filas_originales = len(df_crudo)\n", + "\n", + " # 📸 Snapshot de memoria real (Deep)\n", + " mem_antes = df_crudo.memory_usage(deep=True).sum() / (1024 ** 2)\n", + "\n", + " # ==========================================\n", + " # 2. Escáner de Redundancia Total (Fuerza Bruta C)\n", + " # ==========================================\n", + " logger.info(\" 🔍 Escaneando la matriz en busca de espejos perfectos...\")\n", + "\n", + " # duplicated() en Pandas usa tablas hash en C subyacente, es ultra-rápido\n", + " # keep='first' marca como True a los impostores (copias) y salva al original\n", + " mascara_clones = df_crudo.duplicated(keep='first')\n", + " cantidad_clones = mascara_clones.sum()\n", + "\n", + " # ==========================================\n", + " # 3. La Guillotina de Clones\n", + " # ==========================================\n", + " if cantidad_clones > 0:\n", + " logger.warning(f\" 🚨 ALERTA: Se detectaron {cantidad_clones:,} filas 100% idénticas.\")\n", + " logger.info(\" ↳ Acción: Ejecutando guillotina (Conservando solo el registro original)...\")\n", + "\n", + " # Filtramos la matriz quedándonos solo con los que NO son clones (~mascara)\n", + " df_sin_clones = df_crudo[~mascara_clones].copy()\n", + "\n", + " # Reseteamos el índice para que FLAML/LightGBM no colapsen por saltos numéricos\n", + " df_sin_clones.reset_index(drop=True, inplace=True)\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo de Hardware (Logs)\n", + " # ==========================================\n", + " mem_despues = df_sin_clones.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " ahorro_ram = mem_antes - mem_despues\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Purga completada en {tiempo_total:.3f}s.\")\n", + " logger.info(f\" 📉 Filas eliminadas : {cantidad_clones:,}\")\n", + " logger.info(f\" 📊 Filas puras : {len(df_sin_clones):,}\")\n", + " logger.info(f\" 🚀 RAM Liberada : {ahorro_ram:.2f} MB\")\n", + "\n", + " else:\n", + " df_sin_clones = df_crudo.copy()\n", + " tiempo_total = time.time() - inicio_timer\n", + " logger.info(f\"\\n ✔️ Matriz impecable. No se encontraron clones absolutos ({tiempo_total:.3f}s).\")\n", + "\n", + " return df_sin_clones, cantidad_clones\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificamos que el manager centralizado exista\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos los datos crudos directamente desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene cargados 'datos_crudos'. Ejecuta la ingesta primero.\")\n", + "\n", + " # Ejecutamos la purga consumiendo los datos directamente del manager\n", + " df_sin_clones, total_clones_destruidos = purgar_clones_absolutos(df_crudo=manager.datos_crudos)\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Actualizamos el estado del manager con la matriz limpia\n", + " manager.datos_crudos = df_sin_clones\n", + " logger.info(\"\\n📦 [MLOps] Matriz purgada y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Purga de Clones: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🪓 FASE 1.3: Guillotina Temprana (IA Estructural y Migración de IDs) ===\n", + " 🎯 [TARGET SELECCIONADO]: 'income' se mantendrá intacto.\n", + " 🪓 [DECRETO DEL ARQUITECTO]: 1 variables decapitadas manualmente: ['fnlwgt']\n", + " 🧠 Activando Motor de Correlación para buscar Fugas de Datos ocultas...\n", + " ✅ La matriz parece estar libre de Fugas de Datos obvias.\n", + "\n", + "✅ Cirugía Estructural Completada en 0.0808s:\n", + " 🎯 Target Definitivo : income\n", + " 🔪 Filas destruidas (Basura) : 0\n", + " 📉 Columnas destruidas : 2\n", + " 🪓 Eliminaciones Manuales : 1\n", + " 🛡️ Columnas migradas a Index : 0\n", + " 📊 Variables predictoras : 13\n", + "\n", + "📦 Variable guardada con éxito en memoria: target_ganador_fase1 = 'income'\n", + "📦 [MLOps] Matriz decapitada y actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import re\n", + "from typing import Tuple, List, Optional\n", + "import time\n", + "import warnings\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ejecutar_guillotina_inteligente(\n", + " df: pd.DataFrame,\n", + " targets_potenciales: List[str],\n", + " columnas_a_eliminar_manual: Optional[List[str]] = None # 🚀 FIX: Nuevo parámetro manual\n", + ") -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3] La Guillotina Temprana (Nivel AutoML Avanzado).\n", + " - Batalla de Targets: Conserva el primero de la lista y destruye a sus rivales explícitos.\n", + " - Guillotina Manual: Elimina variables forzadas por el Arquitecto.\n", + " - IA Anti-Leakage: Escanea TODA la matriz y decapita automáticamente variables 'tramposas'.\n", + " - Regla de Oro: Purga filas si el Target es nulo.\n", + " - Escáner de Degradación: Destruye columnas con >90% de nulos.\n", + " - Escáner de Entropía V3 (NUEVO): Detecta IDs en CamelCase/PascalCase y llaves primarias desordenadas.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " logger.info(\"=== 🪓 FASE 1.3: Guillotina Temprana (IA Estructural y Migración de IDs) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + "\n", + " # 👑 Se extrae al ganador inmediatamente\n", + " target_principal = targets_potenciales[0]\n", + "\n", + " reporte_operaciones = {\n", + " 'target_escogido': target_principal, \n", + " 'filas_sin_target_eliminadas': 0, \n", + " 'targets_secundarios_eliminados': [], \n", + " 'fugas_datos_detectadas_ia': [], \n", + " 'nulos_masivos_eliminados': [], \n", + " 'constantes_eliminadas': [],\n", + " 'isomorficas_redundantes_eliminadas': [],\n", + " 'ids_migrados_al_index': [],\n", + " 'eliminadas_manualmente': [] # 🚀 FIX: Registro manual\n", + " }\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # ==========================================\n", + " # 1. LA BATALLA, BLINDAJE Y AUTO-LEAKAGE\n", + " # ==========================================\n", + " if target_principal in df_opt.columns:\n", + " logger.info(f\" 🎯 [TARGET SELECCIONADO]: '{target_principal}' se mantendrá intacto.\")\n", + " filas_antes = len(df_opt)\n", + "\n", + " patron_regex = r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$'\n", + " mask_basura = df_opt[target_principal].astype(str).str.match(patron_regex)\n", + "\n", + " if mask_basura.any():\n", + " df_opt.loc[mask_basura, target_principal] = np.nan\n", + "\n", + " df_opt.dropna(subset=[target_principal], inplace=True)\n", + "\n", + " filas_destruidas = filas_antes - len(df_opt)\n", + " if filas_destruidas > 0:\n", + " reporte_operaciones['filas_sin_target_eliminadas'] = filas_destruidas\n", + " logger.info(f\" 🧹 [REGLA DE ORO]: {filas_destruidas} filas aniquiladas por contener Target nulo.\")\n", + " else:\n", + " logger.warning(f\" ⚠️ Alerta: El target '{target_principal}' no se encontró en la matriz.\")\n", + " return df, {}\n", + "\n", + " # 🚀 FIX: EJECUCIÓN DE GUILLOTINA MANUAL ANTES DE LA IA\n", + " if columnas_a_eliminar_manual:\n", + " a_borrar_manual = [col for col in columnas_a_eliminar_manual if col in df_opt.columns and col != target_principal]\n", + " if a_borrar_manual:\n", + " df_opt.drop(columns=a_borrar_manual, inplace=True)\n", + " reporte_operaciones['eliminadas_manualmente'] = a_borrar_manual\n", + " logger.info(f\" 🪓 [DECRETO DEL ARQUITECTO]: {len(a_borrar_manual)} variables decapitadas manualmente: {a_borrar_manual}\")\n", + "\n", + " if len(targets_potenciales) > 1:\n", + " targets_secundarios = targets_potenciales[1:]\n", + " a_borrar_targets = [t for t in targets_secundarios if t in df_opt.columns]\n", + "\n", + " if a_borrar_targets:\n", + " df_opt.drop(columns=a_borrar_targets, inplace=True)\n", + " reporte_operaciones['targets_secundarios_eliminados'] = a_borrar_targets\n", + " logger.info(f\" 🗑️ [BATALLA]: Decapitando rivales explícitos: {a_borrar_targets}\")\n", + "\n", + " logger.info(\" 🧠 Activando Motor de Correlación para buscar Fugas de Datos ocultas...\")\n", + "\n", + " trampas_descubiertas = []\n", + " umbral_trampa = 0.85 \n", + "\n", + " rey_numerico = pd.factorize(df_opt[target_principal])[0] if df_opt[target_principal].dtype == 'object' or df_opt[target_principal].dtype == 'category' else df_opt[target_principal]\n", + "\n", + " for col in df_opt.columns:\n", + " if col == target_principal: continue\n", + "\n", + " if pd.api.types.is_numeric_dtype(df_opt[col]) or pd.api.types.is_bool_dtype(df_opt[col]):\n", + " mask = ~df_opt[col].isna() & (rey_numerico != -1) \n", + " if mask.sum() > 100: \n", + " correlacion = np.abs(np.corrcoef(df_opt.loc[mask, col], rey_numerico[mask])[0, 1])\n", + "\n", + " if correlacion >= umbral_trampa:\n", + " trampas_descubiertas.append(col)\n", + " logger.warning(f\" 🚨 [Fuga Detectada]: '{col}' predice al Rey con {correlacion*100:.1f}% de exactitud. Es trampa.\")\n", + "\n", + " if trampas_descubiertas:\n", + " df_opt.drop(columns=trampas_descubiertas, inplace=True)\n", + " reporte_operaciones['fugas_datos_detectadas_ia'] = trampas_descubiertas\n", + " logger.info(f\" 🔪 Decapitando fugas del futuro automáticas: {trampas_descubiertas}\")\n", + " else:\n", + " logger.info(\" ✅ La matriz parece estar libre de Fugas de Datos obvias.\")\n", + "\n", + " filas_totales_actuales = len(df_opt)\n", + "\n", + " # ==========================================\n", + " # 🚀 2. ESCÁNER DE DEGRADACIÓN (Nulos Masivos)\n", + " # ==========================================\n", + " umbral_nulos = 0.90 \n", + " nulos_ratios = df_opt.isna().mean()\n", + " a_borrar_nulos = nulos_ratios[nulos_ratios >= umbral_nulos].index.tolist()\n", + "\n", + " if target_principal in a_borrar_nulos:\n", + " a_borrar_nulos.remove(target_principal)\n", + "\n", + " if a_borrar_nulos:\n", + " df_opt.drop(columns=a_borrar_nulos, inplace=True)\n", + " reporte_operaciones['nulos_masivos_eliminados'] = a_borrar_nulos\n", + " logger.info(f\" 🕳️ [DEGRADACIÓN]: {len(a_borrar_nulos)} variables destruidas por nulos irrecuperables (>90%).\")\n", + "\n", + " # ==========================================\n", + " # 🧠 3. ESCÁNER DE ENTROPÍA V3 (IDs Inteligentes & CamelCase)\n", + " # ==========================================\n", + " patron_id_base = re.compile(r'(^id$|_id$|^id_|^cod_|^codigo|_codigo$|_code$|^idx$|uuid|hash|pk|cedula)', re.IGNORECASE)\n", + " a_borrar_constantes = []\n", + " ids_encontrados = []\n", + "\n", + " for col in df_opt.columns:\n", + " if col == target_principal: continue\n", + "\n", + " unicos = df_opt[col].nunique(dropna=False) \n", + "\n", + " if unicos <= 1:\n", + " a_borrar_constantes.append(col)\n", + " continue\n", + " elif not pd.api.types.is_float_dtype(df_opt[col]):\n", + " frecuencia_top = df_opt[col].value_counts(normalize=True, dropna=False).iloc[0]\n", + " if frecuencia_top >= 0.995: \n", + " a_borrar_constantes.append(col)\n", + " continue\n", + "\n", + " ratio_unicidad = unicos / filas_totales_actuales\n", + " es_id = False\n", + "\n", + " # 🚀 FIX: Soporte semántico para CamelCase/PascalCase (ej. PatientId, AppointmentID)\n", + " es_id_semantico = bool(patron_id_base.search(col))\n", + " if not es_id_semantico and len(col) > 2:\n", + " if col.endswith('Id') or col.endswith('ID'):\n", + " es_id_semantico = True\n", + "\n", + " if es_id_semantico and unicos > 10: \n", + " es_id = True\n", + " elif pd.api.types.is_integer_dtype(df_opt[col]) and ratio_unicidad >= 0.95:\n", + " # 🚀 FIX: Si un entero es >95% único, es Llave Primaria (no requiere estar ordenado).\n", + " es_id = True\n", + " elif pd.api.types.is_object_dtype(df_opt[col]) or pd.api.types.is_string_dtype(df_opt[col]):\n", + " if ratio_unicidad >= 0.80:\n", + " longitudes = df_opt[col].dropna().astype(str).str.len()\n", + " if longitudes.nunique() == 1 and longitudes.iloc[0] >= 10:\n", + " es_id = True\n", + " elif ratio_unicidad >= 0.99 and not pd.api.types.is_float_dtype(df_opt[col]):\n", + " es_id = True\n", + "\n", + " if es_id:\n", + " ids_encontrados.append(col)\n", + "\n", + " if a_borrar_constantes:\n", + " df_opt.drop(columns=a_borrar_constantes, inplace=True)\n", + " reporte_operaciones['constantes_eliminadas'] = a_borrar_constantes\n", + "\n", + " if ids_encontrados:\n", + " df_opt.set_index(ids_encontrados, inplace=True)\n", + " reporte_operaciones['ids_migrados_al_index'] = ids_encontrados\n", + " logger.info(f\" 🔒 IDs migrados de forma segura al Index: {ids_encontrados}\")\n", + "\n", + " # ==========================================\n", + " # 4. DETECCIÓN DE ISOMORFISMO (1:1 Redundancia)\n", + " # ==========================================\n", + " dicc_unicos = {}\n", + " for col in df_opt.columns:\n", + " if col == target_principal: continue\n", + "\n", + " n_val = df_opt[col].nunique()\n", + " if 1 < n_val <= 100: \n", + " dicc_unicos.setdefault(n_val, []).append(col)\n", + "\n", + " a_borrar_isomorfismo = []\n", + " for n_val, columnas in dicc_unicos.items():\n", + " if len(columnas) > 1: \n", + " for i in range(len(columnas)):\n", + " for j in range(i + 1, len(columnas)):\n", + " col_A = columnas[i]\n", + " col_B = columnas[j]\n", + "\n", + " if col_A in a_borrar_isomorfismo or col_B in a_borrar_isomorfismo:\n", + " continue\n", + "\n", + " combinaciones = len(df_opt[[col_A, col_B]].drop_duplicates())\n", + "\n", + " if combinaciones == n_val:\n", + " if pd.api.types.is_numeric_dtype(df_opt[col_A]) and not pd.api.types.is_numeric_dtype(df_opt[col_B]):\n", + " a_borrar_isomorfismo.append(col_B)\n", + " else:\n", + " a_borrar_isomorfismo.append(col_A)\n", + "\n", + " if a_borrar_isomorfismo:\n", + " df_opt.drop(columns=a_borrar_isomorfismo, inplace=True)\n", + " reporte_operaciones['isomorficas_redundantes_eliminadas'] = a_borrar_isomorfismo\n", + "\n", + " # ==========================================\n", + " # 5. Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " columnas_destruidas = (\n", + " len(reporte_operaciones['targets_secundarios_eliminados']) +\n", + " len(reporte_operaciones['fugas_datos_detectadas_ia']) +\n", + " len(reporte_operaciones['nulos_masivos_eliminados']) +\n", + " len(reporte_operaciones['constantes_eliminadas']) +\n", + " len(reporte_operaciones['isomorficas_redundantes_eliminadas']) +\n", + " len(reporte_operaciones['eliminadas_manualmente']) # 🚀 FIX: Sumadas al total\n", + " )\n", + "\n", + " logger.info(f\"\\n✅ Cirugía Estructural Completada en {tiempo_total:.4f}s:\")\n", + " logger.info(f\" 🎯 Target Definitivo : {reporte_operaciones['target_escogido']}\")\n", + " logger.info(f\" 🔪 Filas destruidas (Basura) : {reporte_operaciones['filas_sin_target_eliminadas']}\")\n", + " logger.info(f\" 📉 Columnas destruidas : {columnas_destruidas}\")\n", + " if reporte_operaciones['eliminadas_manualmente']:\n", + " logger.info(f\" 🪓 Eliminaciones Manuales : {len(reporte_operaciones['eliminadas_manualmente'])}\")\n", + " logger.info(f\" 🛡️ Columnas migradas a Index : {len(reporte_operaciones['ids_migrados_al_index'])}\")\n", + " logger.info(f\" 📊 Variables predictoras : {df_opt.shape[1]}\")\n", + "\n", + " return df_opt, reporte_operaciones\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación robusta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación segura de los datos crudos\n", + " if getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.1 y 1.2.\")\n", + "\n", + " mis_targets = [\n", + " 'income', # 👑 EL REY\n", + " 'DecileScore', # Su rival a eliminar\n", + " ] \n", + "\n", + " # 🚀 FIX MLOps: Agrega aquí las columnas que deseas matar manualmente\n", + " columnas_basura = [\n", + " 'fnlwgt',\n", + " 'RawScore',\n", + " 'RecSupervisionLevel',\n", + " 'LastName',\n", + " 'FirstName',\n", + " 'MiddleName',\n", + " 'Agency_Text', \n", + " 'AssessmentType',\n", + " 'ScaleSet',\n", + " 'ScaleSet_ID',\n", + " 'Scale_ID',\n", + " 'ScaleSet_ID',\n", + " 'AssessmentType',\n", + " 'RecSupervisionLevelText',\n", + " 'DisplayText',\n", + " 'is_recid',\n", + " 'r_charge_degree',\n", + " 'r_days_from_arrest',\n", + " 'r_offense_date',\n", + " 'r_charge_desc',\n", + " 'r_jail_in',\n", + " 'is_violent_recid',\n", + " 'event',\n", + " 'decile_score_duplicated_0',\n", + " 'v_score_text',\n", + " 'name',\n", + " 'first',\n", + " 'last',\n", + " 'dob',\n", + " 'age_cat',\n", + " 'c_jail_in',\n", + " 'c_jail_out',\n", + " 'c_days_from_compas',\n", + " 'c_charge_desc',\n", + " 'screening_date',\n", + " 'priors_count_duplicated_0'\n", + " ]\n", + "\n", + " # Ejecutamos consumiendo y sobreescribiendo en el PipelineManager\n", + " df_purgado, reporte_guillotina = ejecutar_guillotina_inteligente(\n", + " df=manager.datos_crudos,\n", + " targets_potenciales=mis_targets,\n", + " columnas_a_eliminar_manual=columnas_basura # 🚀 FIX: Pasamos el parámetro\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Actualizamos el Manager y guardamos metadatos\n", + " manager.datos_crudos = df_purgado\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos el reporte EXPLÍCITAMENTE en el manager para la Fase 1.3.1\n", + " manager.reporte_guillotina = reporte_guillotina\n", + " \n", + " target_ganador_fase1 = reporte_guillotina.get('target_escogido')\n", + " \n", + " # 💡 TRUCO: Guardamos el nombre del target ganador como metadato en las rutas\n", + " if target_ganador_fase1:\n", + " if not hasattr(manager, 'rutas'):\n", + " manager.rutas = {}\n", + " manager.rutas['target_name'] = target_ganador_fase1\n", + " \n", + " logger.info(f\"\\n📦 Variable guardada con éxito en memoria: target_ganador_fase1 = '{target_ganador_fase1}'\")\n", + " logger.info(\"📦 [MLOps] Matriz decapitada y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en La Guillotina Temprana: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "{\n", + " \"target_escogido\": \"income\",\n", + " \"filas_sin_target_eliminadas\": 0,\n", + " \"targets_secundarios_eliminados\": [],\n", + " \"fugas_datos_detectadas_ia\": [],\n", + " \"nulos_masivos_eliminados\": [],\n", + " \"constantes_eliminadas\": [],\n", + " \"isomorficas_redundantes_eliminadas\": [\n", + " \"education\"\n", + " ],\n", + " \"ids_migrados_al_index\": [],\n", + " \"eliminadas_manualmente\": [\n", + " \"fnlwgt\"\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "\n", + "\n", + "# Ejecuta esto para ver el acta de defunción de tus columnas:\n", + "import json\n", + "logger.info(json.dumps(reporte_guillotina, indent=4))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== ⚖️ FASE 1.3.1: Auditoría y Justificación del Dictamen ===\n", + "\n", + "📜 Resolución Oficial: Justificación de Limpieza Estructural\n", + "🎯 Target Protegido: income\n", + "\n", + "---\n", + "👯 Isomorfismo (Redundancia 1:1):\n", + "* Decisión MLOps: Se detectaron pares de columnas que dicen exactamente lo mismo en diferente formato (ej. 'ID_Ciudad' y 'Nombre_Ciudad'). Mantener ambas infla la dimensionalidad de la matriz, ralentiza el entrenamiento y causa multicolinealidad sin aportar nueva información.\n", + "* Columnas Afectadas (1): education\n", + "\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "from IPython.display import display, Markdown\n", + "from typing import Dict\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR MLOPS: AUDITOR DE EXPLICABILIDAD\n", + "# ==========================================\n", + "def auditar_dictamen_guillotina(reporte: Dict) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3.1] Auditor del Dictamen (Explainable AI).\n", + " - Transparencia: Traduce las eliminaciones técnicas a explicaciones de negocio.\n", + " - Audit Trail: Justifica por qué cada columna era un riesgo matemático o estructural.\n", + " - Clean UI: Renderiza un informe en formato Markdown ideal para Jupyter Notebooks o texto plano en Headless.\n", + " \"\"\"\n", + " if not reporte:\n", + " logger.error(\"🛑 Error: El reporte de la guillotina está vacío o no se generó correctamente.\")\n", + " return\n", + "\n", + " logger.info(\"=== ⚖️ FASE 1.3.1: Auditoría y Justificación del Dictamen ===\")\n", + "\n", + " # Textos de justificación arquitectónica\n", + " justificaciones = {\n", + " 'targets_secundarios_eliminados': (\n", + " \"🗑️ **Targets Secundarios (Evitar la Bola de Cristal):**\",\n", + " \"Se eliminaron porque dejar un target alternativo en la matriz de entrenamiento causa una 'Fuga del Futuro'. \"\n", + " \"El modelo aprendería a predecir el resultado usando la respuesta de su rival, lo cual es imposible en el mundo real.\"\n", + " ),\n", + " 'fugas_datos_detectadas_ia': (\n", + " \"🚨 **Fugas de Datos (Correlación Extrema):**\",\n", + " \"La IA detectó que estas variables predecían al Target con más de un 85% de exactitud por sí solas. \"\n", + " \"En MLOps, esto casi siempre es un 'Caballo de Troya' (ej. usar 'impuestos_pagados' para predecir si alguien es 'rico'). Destruyen la capacidad de generalizar.\"\n", + " ),\n", + " 'nulos_masivos_eliminados': (\n", + " \"🕳️ **Degradación Masiva (>90% Nulos):**\",\n", + " \"Se eliminaron porque carecen de señal estadística. Intentar imputar (rellenar) una variable donde falta el 90% \"\n", + " \"de la información equivale a inventar datos, lo que induciría alucinaciones matemáticas en el modelo.\"\n", + " ),\n", + " 'constantes_eliminadas': (\n", + " \"🧊 **Variables Constantes (Varianza Cero):**\",\n", + " \"Se eliminaron porque tienen un único valor para casi todos los registros (ej. un dataset donde todos son del mismo país). \"\n", + " \"Matemáticamente, si no hay variación, el algoritmo no puede trazar fronteras de decisión. Son peso muerto.\"\n", + " ),\n", + " 'isomorficas_redundantes_eliminadas': (\n", + " \"👯 **Isomorfismo (Redundancia 1:1):**\",\n", + " \"Se detectaron pares de columnas que dicen exactamente lo mismo en diferente formato (ej. 'ID_Ciudad' y 'Nombre_Ciudad'). \"\n", + " \"Mantener ambas infla la dimensionalidad de la matriz, ralentiza el entrenamiento y causa multicolinealidad sin aportar nueva información.\"\n", + " ),\n", + " 'ids_migrados_al_index': (\n", + " \"🔒 **Protección de Identidad (Migración al Index):**\",\n", + " \"Los IDs no se eliminan, se protegen moviéndolos al índice de la matriz. Si se dejan como variables predictoras, \"\n", + " \"los árboles de decisión (como Random Forest o LightGBM) 'memorizarán' a los pacientes por su ID en lugar de aprender los verdaderos patrones.\"\n", + " )\n", + " }\n", + "\n", + " # Renderizado Inteligente\n", + " contenido_md = f\"### 📜 Resolución Oficial: Justificación de Limpieza Estructural\\n\"\n", + " contenido_md += f\"**🎯 Target Protegido:** `{reporte.get('target_escogido', 'Desconocido')}`\\n\\n\"\n", + "\n", + " if reporte.get('filas_sin_target_eliminadas', 0) > 0:\n", + " contenido_md += f\"> **Regla de Oro Aplicada:** Se aniquilaron **{reporte['filas_sin_target_eliminadas']} filas** porque su valor en el Target era nulo. Un modelo no puede aprender de una respuesta que no existe.\\n\\n\"\n", + "\n", + " contenido_md += \"---\\n\"\n", + "\n", + " operaciones_realizadas = 0\n", + "\n", + " # Recorremos el diccionario y solo mostramos las secciones donde la guillotina actuó\n", + " for llave, (titulo, explicacion) in justificaciones.items():\n", + " elementos = reporte.get(llave, [])\n", + " if elementos:\n", + " operaciones_realizadas += 1\n", + " lista_formateada = \", \".join([f\"`{e}`\" for e in elementos])\n", + " contenido_md += f\"{titulo}\\n\"\n", + " contenido_md += f\"* **Decisión MLOps:** {explicacion}\\n\"\n", + " contenido_md += f\"* **Columnas Afectadas ({len(elementos)}):** {lista_formateada}\\n\\n\"\n", + "\n", + " if operaciones_realizadas == 0:\n", + " contenido_md += \"✅ **Matriz Impecable:** La Guillotina evaluó la matriz y no encontró anomalías estructurales severas. Ninguna columna fue alterada.\\n\"\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " display(Markdown(contenido_md))\n", + " # Logueamos en silencio que la operación visual fue exitosa\n", + " logger.debug(\"Auditoría visual renderizada en Jupyter con éxito.\")\n", + " else:\n", + " # En entornos Headless, limpiamos el Markdown para que el log de texto quede inmaculado y legible\n", + " texto_plano = contenido_md.replace('**', '').replace('`', '').replace('### ', '').replace('> ', '')\n", + " logger.info(\"\\n\" + texto_plano)\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura y exclusiva desde el contenedor de estado\n", + " if not hasattr(manager, 'reporte_guillotina') or manager.reporte_guillotina is None:\n", + " raise ValueError(\"El Manager no tiene cargado el 'reporte_guillotina'. Ejecuta la Fase 1.3 y asegúrate de guardar el reporte en 'manager.reporte_guillotina'.\")\n", + "\n", + " # Ejecutamos el auditor consumiendo el diccionario interno del manager\n", + " auditar_dictamen_guillotina(manager.reporte_guillotina)\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Auditoría: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "✅ No hay variables acusadas de ser fugas del futuro o targets secundarios para auditar.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias UI y Matemáticas\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "from IPython.display import display, Markdown\n", + "import warnings\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR MLOPS: AUTOPSIA DE FUGA DE DATOS (LEAKAGE)\n", + "# ==========================================\n", + "def autopsia_fuga_datos(df_original: pd.DataFrame, target_principal: str, columnas_sospechosas: list) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3.2] Autopsia de Fuga del Futuro (Target Leakage Proof).\n", + " - MLOps Core: Demuestra estadísticamente por qué una variable es un \"Caballo de Troya\".\n", + " - Conversión Inteligente: Factoriza variables categóricas automáticamente para medir correlación matemática.\n", + " - Renderizado Táctico: Muestra cómo cambia el comportamiento de la variable sospechosa según la clase del Target.\n", + " \"\"\"\n", + " if df_original is None or df_original.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz original está vacía o es inválida.\")\n", + " return\n", + "\n", + " if not columnas_sospechosas:\n", + " logger.info(\"✅ [BYPASS] No hay targets secundarios ni fugas detectadas para auditar.\")\n", + " return\n", + "\n", + " if target_principal not in df_original.columns:\n", + " logger.error(f\"🛑 Error Crítico: El Target Principal '{target_principal}' no existe en la matriz.\")\n", + " return\n", + "\n", + " logger.info(\"=== 🔮 FASE 1.3.2: Autopsia de Fuga del Futuro (Prueba de Fraude Predictivo) ===\")\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # Preparación del Target (Lo pasamos a números si es texto para medir correlación)\n", + " y_real = df_original[target_principal]\n", + " if y_real.dtype == 'object' or y_real.dtype == 'category':\n", + " y_numerico = pd.factorize(y_real)[0]\n", + " else:\n", + " y_numerico = y_real\n", + "\n", + " for col in columnas_sospechosas:\n", + " if col not in df_original.columns:\n", + " continue\n", + "\n", + " # 🛡️ Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🔍 Expediente de Fraude: `{col}` vs `{target_principal}`\"))\n", + " logger.info(f\"\\n[AUDITORÍA] Evaluando Expediente de Fraude: '{col}' vs '{target_principal}'\")\n", + " else:\n", + " logger.info(f\"\\n### 🔍 Expediente de Fraude: `{col}` vs `{target_principal}`\")\n", + "\n", + " # 1. Blindaje contra Nulos para el cálculo matemático\n", + " mask = ~df_original[col].isna() & ~y_real.isna()\n", + " datos_limpios = df_original.loc[mask, col]\n", + " y_limpio = y_numerico[mask]\n", + "\n", + " if len(datos_limpios) < 10:\n", + " logger.warning(f\" ⚠️ Datos insuficientes para auditar '{col}'.\")\n", + " continue\n", + "\n", + " # 2. Factorización Inteligente si el rival también es categórico\n", + " es_numerica = pd.api.types.is_numeric_dtype(datos_limpios)\n", + " if not es_numerica:\n", + " datos_numericos = pd.factorize(datos_limpios)[0]\n", + " else:\n", + " datos_numericos = datos_limpios\n", + "\n", + " # 3. Cálculo de Correlación (La prueba del delito)\n", + " correlacion = np.abs(np.corrcoef(datos_numericos, y_limpio)[0, 1])\n", + "\n", + " # Veredicto de Correlación\n", + " if correlacion >= 0.85:\n", + " alerta = \"🔴 FRAUDE EXTREMO (Clon del Target)\"\n", + " elif correlacion >= 0.50:\n", + " alerta = \"🟠 ALTO RIESGO (Bola de Cristal parcial)\"\n", + " else:\n", + " alerta = \"🟡 RIESGO ESTRUCTURAL (Variable redundante o Target secundario de negocio)\"\n", + "\n", + " logger.info(f\" 📈 Correlación Matemática : {correlacion:.2%} -> {alerta}\")\n", + " logger.info(f\" 💡 Explicación MLOps : Si la correlación es muy alta, el modelo simplemente memoriza esta columna y deja de pensar. Si no es alta, al ser un 'Target Secundario', representa un evento del futuro que no conocerás cuando llegue un cliente nuevo.\\n\")\n", + "\n", + " # 4. Tabla de Comportamiento Dinámico (¿Cómo delata al target?)\n", + " logger.info(f\" 📊 Radiografía del Comportamiento (Promedios / Distribución por Clase de Target):\")\n", + "\n", + " try:\n", + " if es_numerica:\n", + " # Si el rival es numérico, agrupamos para ver cómo su promedio delata al target\n", + " resumen = df_original.groupby(target_principal)[col].agg(['mean', 'median', 'std']).reset_index()\n", + " resumen.columns = [f'Target ({target_principal})', 'Promedio', 'Mediana', 'Desviación']\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " tabla_estilizada = (\n", + " resumen.style\n", + " .format({'Promedio': '{:.2f}', 'Mediana': '{:.2f}', 'Desviación': '{:.2f}'})\n", + " .background_gradient(cmap='Oranges', subset=['Promedio'])\n", + " .hide(axis=\"index\")\n", + " )\n", + " display(tabla_estilizada)\n", + " # Registro silencioso en texto plano para los logs\n", + " logger.debug(\"\\n\" + resumen.to_string(index=False, float_format=\"{:.2f}\".format))\n", + " else:\n", + " logger.info(\"\\n\" + resumen.to_string(index=False, float_format=\"{:.2f}\".format))\n", + "\n", + " else:\n", + " # Si el rival es categórico, hacemos una tabla cruzada (Crosstab)\n", + " resumen = pd.crosstab(df_original[target_principal], df_original[col], normalize='index') * 100\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " tabla_estilizada = (\n", + " resumen.style\n", + " .format(\"{:.1f}%\")\n", + " .background_gradient(cmap='Oranges', axis=1)\n", + " )\n", + " display(tabla_estilizada)\n", + " # Registro silencioso en texto plano para los logs\n", + " logger.debug(\"\\n\" + resumen.to_string(float_format=\"{:.1f}%\".format))\n", + " else:\n", + " logger.info(\"\\n\" + resumen.to_string(float_format=\"{:.1f}%\".format))\n", + "\n", + " except Exception as e:\n", + " logger.warning(f\" ⚠️ No se pudo renderizar la tabla de cruce: {e}\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción de datos crudos desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.1 y 1.2.\")\n", + " \n", + " df_para_autopsia = getattr(manager, 'datos_crudos_pre_guillotina', manager.datos_crudos)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción del reporte desde el contenedor de estado (sin fallbacks inseguros)\n", + " if not hasattr(manager, 'reporte_guillotina') or manager.reporte_guillotina is None:\n", + " raise ValueError(\"El Manager no tiene cargado el 'reporte_guillotina'. Ejecuta la Fase 1.3.\")\n", + "\n", + " # 1. Extraemos a los acusados (Targets secundarios + Fugas detectadas por la IA)\n", + " target_rey = manager.reporte_guillotina.get('target_escogido', '')\n", + "\n", + " acusados = []\n", + " acusados.extend(manager.reporte_guillotina.get('targets_secundarios_eliminados', []))\n", + " acusados.extend(manager.reporte_guillotina.get('fugas_datos_detectadas_ia', []))\n", + "\n", + " # 2. Ejecutamos el juicio visual\n", + " if acusados and target_rey:\n", + " logger.info(f\">>> ⚖️ LLEVANDO AL ESTRADO A {len(acusados)} VARIABLES ACUSADAS DE LEAKAGE <<<\")\n", + " autopsia_fuga_datos(\n", + " df_original=df_para_autopsia, \n", + " target_principal=target_rey,\n", + " columnas_sospechosas=acusados\n", + " )\n", + " else:\n", + " logger.info(\"✅ No hay variables acusadas de ser fugas del futuro o targets secundarios para auditar.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Autopsia de Fugas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "✅ No se detectaron variables constantes para auditar en el reporte previo.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias UI y Matemáticas\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "from IPython.display import display, Markdown\n", + "import warnings\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR MLOPS: AUTOPSIA FORENSE (PROFILING VIRTUAL)\n", + "# ==========================================\n", + "def autopsia_forense_variables(df_original: pd.DataFrame, columnas_condenadas: list) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3.3] Autopsia Forense de Variables (Análisis Post-Mortem).\n", + " - Perfilado Matemático: Extrae la Moda, el Porcentaje absoluto y la frecuencia.\n", + " - UI de Calor (Color Mapping): Aplica un gradiente térmico para resaltar visualmente el desbalance.\n", + " - Escudo de Memoria (AutoML): Limita la tabla visual al Top 10 para evitar colapsar el Notebook.\n", + " - Tolerancia a Nulos: Incluye los NaN en el cálculo de porcentajes para dar la imagen real.\n", + " \"\"\"\n", + " if df_original is None or df_original.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz original está vacía o es inválida.\")\n", + " return\n", + "\n", + " if not columnas_condenadas:\n", + " logger.info(\"✅ [BYPASS] La lista de columnas a auditar está vacía. No hay autopsia necesaria.\")\n", + " return\n", + "\n", + " logger.info(\"=== 🔬 FASE 1.3.3: Autopsia Forense de Variables (Radiografía de Varianza) ===\")\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " for col in columnas_condenadas:\n", + " if col not in df_original.columns:\n", + " logger.warning(f\" ⚠️ Alerta: La columna '{col}' no existe en el DataFrame proporcionado.\")\n", + " continue\n", + "\n", + " # 1. Extracción de Datos Crudos\n", + " serie = df_original[col]\n", + " total_filas = len(serie)\n", + " nulos = serie.isna().sum()\n", + "\n", + " # 2. Cálculos Estadísticos MLOps\n", + " # Calculamos la Moda (El valor que más se repite)\n", + " moda_serie = serie.mode(dropna=True)\n", + " moda_val = moda_serie.iloc[0] if not moda_serie.empty else \"N/A (100% Nulo)\"\n", + "\n", + " # Distribución absoluta y relativa (Top 10 para blindaje de RAM UI)\n", + " conteo = serie.value_counts(dropna=False).head(10)\n", + " porcentajes = serie.value_counts(dropna=False, normalize=True).head(10)\n", + "\n", + " # 3. Construcción de la Tabla de Autopsia\n", + " df_reporte = pd.DataFrame({\n", + " 'Valor / Categoría': conteo.index.astype(str),\n", + " 'Frecuencia (Filas)': conteo.values,\n", + " 'Porcentaje (%)': porcentajes.values * 100\n", + " })\n", + "\n", + " # 4. Inteligencia de UI: Estilizado Térmico (Color Gradient)\n", + " # Entre más alto el porcentaje, más oscuro será el color (usamos la paleta Reds/Rojos)\n", + " \n", + " if MODO_VISUAL:\n", + " tabla_estilizada = (\n", + " df_reporte.style\n", + " .format({\n", + " 'Frecuencia (Filas)': '{:,.0f}', \n", + " 'Porcentaje (%)': '{:.3f}%'\n", + " })\n", + " .background_gradient(cmap='Reds', subset=['Porcentaje (%)'])\n", + " .set_caption(f\"Distribución Top 10 de la variable '{col}'\")\n", + " .hide(axis=\"index\") # Ocultamos el index por defecto para mayor limpieza visual\n", + " )\n", + "\n", + " # 5. Renderizado Ejecutivo y Logging\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🩻 Análisis Post-Mortem: `{col}`\"))\n", + " logger.debug(f\"Renderizando visualmente autopsia de la variable '{col}'\")\n", + " else:\n", + " logger.info(f\"\\n### 🩻 Análisis Post-Mortem: `{col}`\")\n", + " \n", + " logger.info(f\" 📌 Valor Dominante (Moda) : {moda_val}\")\n", + " logger.info(f\" 🕳️ Total de Datos Nulos : {nulos:,} ({nulos/total_filas:.2%})\")\n", + " logger.info(f\" 🔍 Renderizando distribución...\\n\")\n", + "\n", + " if MODO_VISUAL:\n", + " display(tabla_estilizada)\n", + " # Logging silencioso en texto plano para los registros del servidor\n", + " logger.debug(\"\\n\" + df_reporte.to_string(index=False, float_format=\"{:.3f}%\".format))\n", + " else:\n", + " # Impresión en texto plano para Headless\n", + " logger.info(\"\\n\" + df_reporte.to_string(index=False, float_format=\"{:.3f}%\".format))\n", + " \n", + " logger.info(\"-\" * 80)\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos la matriz pre-guillotina desde el Manager\n", + " # Usamos 'datos_crudos_pre_guillotina' si existe, o 'datos_crudos' si falló el guardado previo\n", + " df_para_autopsia = getattr(manager, 'datos_crudos_pre_guillotina', getattr(manager, 'datos_crudos', None))\n", + " \n", + " if df_para_autopsia is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Ingesta (1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción exclusiva y estricta desde el contenedor de estado\n", + " if not hasattr(manager, 'reporte_guillotina') or manager.reporte_guillotina is None:\n", + " raise ValueError(\"El Manager no tiene cargado el 'reporte_guillotina'. Ejecuta la Fase 1.3.\")\n", + "\n", + " # Extraemos automáticamente las variables constantes que la guillotina condenó\n", + " # (Por ejemplo: 'entrada_es_home')\n", + " columnas_constantes = manager.reporte_guillotina.get('constantes_eliminadas', [])\n", + "\n", + " if columnas_constantes:\n", + " logger.info(f\">>> 🩺 INICIANDO AUTOPSIA PARA {len(columnas_constantes)} VARIABLES CONSTANTES <<<\")\n", + " autopsia_forense_variables(\n", + " df_original=df_para_autopsia, \n", + " columnas_condenadas=columnas_constantes\n", + " )\n", + " else:\n", + " logger.info(\"✅ No se detectaron variables constantes para auditar en el reporte previo.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Autopsia Forense: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32537 non-null int64 \n", + " 1 workclass 32537 non-null object\n", + " 2 education.num 32537 non-null int64 \n", + " 3 marital.status 32537 non-null object\n", + " 4 occupation 32537 non-null object\n", + " 5 relationship 32537 non-null object\n", + " 6 race 32537 non-null object\n", + " 7 sex 32537 non-null object\n", + " 8 capital.gain 32537 non-null int64 \n", + " 9 capital.loss 32537 non-null int64 \n", + " 10 hours.per.week 32537 non-null int64 \n", + " 11 native.country 32537 non-null object\n", + " 12 income 32537 non-null object\n", + "dtypes: int64(5), object(8)\n", + "memory usage: 3.2+ MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "df_purgado.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔗 Conectando MLOps: Heredando Target 'income' desde la Guillotina <<<\n", + "=== 🗜️ FASE 1.4: Downcasting Matemático Inteligente (IA de Contenido) ===\n", + " 🔍 Escaneando contenido para inferencia de tipos profundos...\n", + " 🎯 Target 'income' blindado y convertido a categoría.\n", + "\n", + "✅ Compresión Matemática Completada en 0.159s:\n", + " 📉 Transformaciones: 5 Int | 0 Float | 8 Cat | 0 Date | 0 Bool\n", + " 💾 Memoria Inicial : 15.60 MB\n", + " 💽 Memoria Final : 0.54 MB (-96.6%)\n", + "📦 [MLOps] Matriz comprimida y actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import re\n", + "import time\n", + "import warnings # 🔧 NUEVO: Módulo para controlar las alertas de la consola\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def downcasting_matematico_inteligente(\n", + " df: pd.DataFrame, \n", + " umbral_categoria: float = 0.50,\n", + " target_col: str = None\n", + ") -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.4] Downcasting Matemático (Nivel AutoML).\n", + " - Regla Target: Convierte el target directamente a 'category' blindándolo.\n", + " - Detección Temporal Avanzada con Auto-Limpieza (NUEVO): Elimina basura léxica ('?', '*', etc.) de fechas y horas automáticamente.\n", + " - Auto-Parsing IoT: Detecta columnas numéricas que en realidad son fechas ocultas.\n", + " - Detección Booleana Oculta: Usa Regex para filtrar basura y mapea textos 'yes/no' a 'boolean'.\n", + " - Compresión Numérica: Reduce float64 a float32 y asigna tipos INT firmados (int8, 16, 32).\n", + " - Muro Anti-Objetos: Obliga a todo texto sobreviviente a ser 'category' para proteger LightGBM.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " logger.info(\"=== 🗜️ FASE 1.4: Downcasting Matemático Inteligente (IA de Contenido) ===\")\n", + "\n", + " # 🚀 FIX MLOps: SILENCIADOR BLINDADO CONTRA AVISOS DE FECHAS Y REGEX\n", + " warnings.filterwarnings(\"ignore\", category=UserWarning)\n", + " warnings.filterwarnings(\"ignore\", message=\".*Could not infer format.*\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + "\n", + " mem_antes = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " filas_totales = len(df_opt)\n", + " contadores = {'int': 0, 'float': 0, 'category': 0, 'datetime': 0, 'bool': 0}\n", + "\n", + " logger.info(\" 🔍 Escaneando contenido para inferencia de tipos profundos...\")\n", + "\n", + " # Motor Regex para Falsos Nulos\n", + " patron_nulos_ocultos = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " for col in df_opt.columns:\n", + " tipo_actual = df_opt[col].dtype\n", + " unicos_count = df_opt[col].nunique(dropna=False)\n", + "\n", + " # ==========================================\n", + " # 1. EL TARGET ES REY (Blindaje Prioritario)\n", + " # ==========================================\n", + " if target_col and col == target_col:\n", + " if df_opt[col].dtype.name != 'category':\n", + " df_opt[col] = df_opt[col].astype('category')\n", + " contadores['category'] += 1\n", + " logger.info(f\" 🎯 Target '{col}' blindado y convertido a categoría.\")\n", + " continue\n", + "\n", + " # ==========================================\n", + " # 2. Inferencia Profunda en Textos (Objects)\n", + " # ==========================================\n", + " if pd.api.types.is_object_dtype(tipo_actual) or pd.api.types.is_string_dtype(tipo_actual):\n", + "\n", + " valores_limpios = df_opt[col].dropna()\n", + " if valores_limpios.empty: continue\n", + "\n", + " valores_puros = valores_limpios.astype(str).str.lower().str.strip()\n", + " unicos_texto = set(valores_puros.unique())\n", + "\n", + " # Escudo Regex contra Falsos Nulos\n", + " textos_reales = {x for x in unicos_texto if not patron_nulos_ocultos.match(x)}\n", + "\n", + " # A. Detección de Booleanos Ocultos en Texto\n", + " diccionario_bool = {\n", + " 'yes': True, 'no': False, \n", + " 'si': True, 'true': True, 'false': False, 'verdadero': True, 'falso': False,\n", + " 't': True, 'f': False, 'y': True, 'n': False,\n", + " '1': True, '0': False\n", + " }\n", + "\n", + " if textos_reales and textos_reales.issubset(diccionario_bool.keys()):\n", + " df_opt[col] = df_opt[col].astype(str).str.lower().str.strip().map(diccionario_bool)\n", + " df_opt[col] = df_opt[col].astype('boolean') \n", + " contadores['bool'] += 1\n", + " logger.info(f\" ⚖️ Texto Booleano detectado en '{col}': Convertido a boolean (Soporta Nulos).\")\n", + " continue\n", + "\n", + " # 🚀 B. Detección Heurística de Fechas y Tiempos (Super-Regex + Auto-Limpieza)\n", + " muestra = valores_puros.head(50)\n", + "\n", + " # 🛡️ ESCUDO DE AUTO-LIMPIEZA: Simulamos quitar caracteres extraños de la muestra\n", + " # Mantenemos números, letras (AM/PM, Meses), espacios y separadores típicos de tiempo (- / : .)\n", + " muestra_limpia = muestra.str.replace(r'[^0-9a-zA-Z\\s\\-\\/:\\.]', '', regex=True).str.strip()\n", + "\n", + " patron_fecha_clasica = r'(?i)[-/:]|(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)'\n", + " patron_unix_txt = r'^1\\d{9}(?:\\.\\d+)?$|^1\\d{12}(?:\\.\\d+)?$'\n", + "\n", + " es_fecha_clasica = muestra_limpia.str.contains(patron_fecha_clasica, regex=True).any()\n", + " es_unix_txt = muestra_limpia.str.contains(patron_unix_txt, regex=True).any()\n", + "\n", + " if len(muestra_limpia) > 0 and (es_fecha_clasica or es_unix_txt):\n", + " try:\n", + " # Probamos la conversión matemática en el entorno seguro (muestra)\n", + " if es_unix_txt:\n", + " prueba_fecha = pd.to_datetime(pd.to_numeric(muestra_limpia, errors='coerce'), unit='s', errors='coerce')\n", + " else:\n", + " prueba_fecha = pd.to_datetime(muestra_limpia, errors='coerce', dayfirst=True)\n", + "\n", + " if prueba_fecha.notna().mean() >= 0.80:\n", + " # 🚀 ¡Aprobado! Aplicamos la limpieza léxica a toda la columna real (salvaguardando los NaNs)\n", + " mask_viva = df_opt[col].notna()\n", + " df_opt.loc[mask_viva, col] = (\n", + " df_opt.loc[mask_viva, col]\n", + " .astype(str)\n", + " .str.replace(r'[^0-9a-zA-Z\\s\\-\\/:\\.]', '', regex=True)\n", + " .str.strip()\n", + " )\n", + "\n", + " # Conversión Final\n", + " if es_unix_txt:\n", + " df_opt[col] = pd.to_datetime(pd.to_numeric(df_opt[col], errors='coerce'), unit='s', errors='coerce')\n", + " logger.info(f\" 🕒 Unix Timestamp Textual detectado en '{col}': Auto-limpiado y convertido a Datetime.\")\n", + " else:\n", + " df_opt[col] = pd.to_datetime(df_opt[col], errors='coerce', dayfirst=True)\n", + " logger.info(f\" 📅 Fecha/Hora detectada en '{col}': Basura purgada y convertida a Datetime (NaNs protegidos).\")\n", + " contadores['datetime'] += 1\n", + " continue\n", + " except Exception:\n", + " pass \n", + "\n", + " # C. FIX MLOPS: Optimización y Forzado de Categóricas\n", + " ratio_unicidad = unicos_count / filas_totales\n", + " if ratio_unicidad < umbral_categoria:\n", + " df_opt[col] = df_opt[col].astype('category')\n", + " contadores['category'] += 1\n", + " else:\n", + " # El Muro Anti-Objetos: Forzamos la conversión para proteger Fases futuras\n", + " df_opt[col] = df_opt[col].astype('category')\n", + " contadores['category'] += 1\n", + " logger.warning(f\" ⚠️ '{col}' tiene alta cardinalidad ({ratio_unicidad:.1%}). Forzado a 'category' por seguridad algorítmica.\")\n", + "\n", + " # ==========================================\n", + " # 3. Compresión de Numéricas y Booleanas Nativas\n", + " # ==========================================\n", + " elif pd.api.types.is_numeric_dtype(tipo_actual):\n", + " # 🚀 3.0 Detección Heurística de Unix Timestamps Numéricos (Sensores IoT)\n", + " muestra_num = df_opt[col].dropna().head(50)\n", + " if len(muestra_num) > 0:\n", + " es_unix_segundos = (muestra_num >= 631152000).all() and (muestra_num <= 2208988800).all()\n", + " es_unix_milisegundos = (muestra_num >= 631152000000).all() and (muestra_num <= 2208988800000).all()\n", + "\n", + " if (es_unix_segundos or es_unix_milisegundos) and unicos_count > 2:\n", + " unidad_tiempo = 'ms' if es_unix_milisegundos else 's'\n", + " df_opt[col] = pd.to_datetime(df_opt[col], unit=unidad_tiempo, errors='coerce')\n", + " contadores['datetime'] += 1\n", + " logger.info(f\" 🕒 Unix Timestamp Numérico ({unidad_tiempo}) detectado en '{col}': Convertido a Datetime IoT.\")\n", + " continue\n", + "\n", + " c_min = df_opt[col].min()\n", + " c_max = df_opt[col].max()\n", + " tiene_nulos = df_opt[col].isna().any()\n", + "\n", + " # 3.1 Detección Booleana Numérica Nativa\n", + " unicos_numericos = df_opt[col].dropna().unique()\n", + " if set(unicos_numericos).issubset({0, 1, 0.0, 1.0}):\n", + " df_opt[col] = df_opt[col].astype('boolean') \n", + " contadores['bool'] += 1\n", + " continue\n", + "\n", + " # 3.2 Compresión de Enteros (Signed INT exactos)\n", + " if pd.api.types.is_integer_dtype(tipo_actual) and not tiene_nulos:\n", + " if c_min >= np.iinfo(np.int8).min and c_max <= np.iinfo(np.int8).max:\n", + " df_opt[col] = df_opt[col].astype(np.int8)\n", + " elif c_min >= np.iinfo(np.int16).min and c_max <= np.iinfo(np.int16).max:\n", + " df_opt[col] = df_opt[col].astype(np.int16)\n", + " elif c_min >= np.iinfo(np.int32).min and c_max <= np.iinfo(np.int32).max:\n", + " df_opt[col] = df_opt[col].astype(np.int32)\n", + "\n", + " if df_opt[col].dtype != tipo_actual:\n", + " contadores['int'] += 1\n", + "\n", + " # 3.3 Compresión de Flotantes \n", + " elif pd.api.types.is_float_dtype(tipo_actual):\n", + " if c_min >= np.finfo(np.float32).min and c_max <= np.finfo(np.float32).max:\n", + " df_opt[col] = df_opt[col].astype(np.float32)\n", + " contadores['float'] += 1\n", + "\n", + " # ==========================================\n", + " # D. Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " mem_despues = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " ahorro_mb = mem_antes - mem_despues\n", + " porcentaje_ahorro = 100 * (ahorro_mb / mem_antes) if mem_antes > 0 else 0\n", + "\n", + " # 🔧 Limpieza final: Restauramos las advertencias generales para el resto del cuaderno\n", + " warnings.filterwarnings(\"default\", category=UserWarning)\n", + "\n", + " logger.info(f\"\\n✅ Compresión Matemática Completada en {time.time() - inicio_timer:.3f}s:\")\n", + " logger.info(f\" 📉 Transformaciones: {contadores['int']} Int | {contadores['float']} Float | {contadores['category']} Cat | {contadores['datetime']} Date | {contadores['bool']} Bool\")\n", + " logger.info(f\" 💾 Memoria Inicial : {mem_antes:.2f} MB\")\n", + " logger.info(f\" 💽 Memoria Final : {mem_despues:.2f} MB (-{porcentaje_ahorro:.1f}%)\")\n", + "\n", + " metricas_ram = {\n", + " 'mem_inicial_mb': mem_antes,\n", + " 'mem_final_mb': mem_despues,\n", + " 'ahorro_mb': ahorro_mb,\n", + " 'porcentaje_ahorro': porcentaje_ahorro\n", + " }\n", + "\n", + " return df_opt, metricas_ram\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.1 y 1.3.\")\n", + "\n", + " # 🔗 CONEXIÓN MLOps: Extraemos el target dinámicamente guardado en la Guillotina\n", + " target_heredado = manager.rutas.get('target_name', None)\n", + "\n", + " if target_heredado:\n", + " logger.info(f\">>> 🔗 Conectando MLOps: Heredando Target '{target_heredado}' desde la Guillotina <<<\")\n", + " else:\n", + " logger.warning(\">>> ⚠️ Advertencia: No se encontró un Target en las rutas del manager. Procesando sin escudo. <<<\")\n", + "\n", + " # Ejecutamos el downcasting consumiendo la matriz del manager\n", + " df_comprimido, metricas_downcast = downcasting_matematico_inteligente(\n", + " df=manager.datos_crudos,\n", + " umbral_categoria=0.50,\n", + " target_col=target_heredado # <- Alimentación dinámica desde el manager\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Actualizamos el estado de la matriz en el manager\n", + " manager.datos_crudos = df_comprimido\n", + " logger.info(\"📦 [MLOps] Matriz comprimida y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Downcasting Matemático: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32537 non-null int64 \n", + " 1 workclass 32537 non-null object\n", + " 2 education.num 32537 non-null int64 \n", + " 3 marital.status 32537 non-null object\n", + " 4 occupation 32537 non-null object\n", + " 5 relationship 32537 non-null object\n", + " 6 race 32537 non-null object\n", + " 7 sex 32537 non-null object\n", + " 8 capital.gain 32537 non-null int64 \n", + " 9 capital.loss 32537 non-null int64 \n", + " 10 hours.per.week 32537 non-null int64 \n", + " 11 native.country 32537 non-null object\n", + " 12 income 32537 non-null object\n", + "dtypes: int64(5), object(8)\n", + "memory usage: 3.2+ MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "df_purgado.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🛡️ FASE 2.1: Auditoría de Integridad y Sanitización de Columnas ===\n", + "\n", + "✅ Auditoría Estructural Completada en 0.002s:\n", + " ✨ Columnas Sanitizadas : 13\n", + " ✔️ Duplicados : Ninguno detectado (Esquema saludable)\n", + "\n", + " 📊 Mapa de Tipos de Datos (dtypes):\n", + " - category : 8 columnas\n", + " - int8 : 3 columnas\n", + " - int32 : 1 columnas\n", + " - int16 : 1 columnas\n", + "\n", + "📦 [MLOps] Nombres de columnas sanitizados y matriz actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import re\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def auditar_y_sanitizar_columnas(df: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " [FASE 2 - Paso 2.1] Detección de Tipos y Prevención de Crash.\n", + " - Sanitización Regex: Limpia espacios, tildes y caracteres especiales de los nombres de columnas.\n", + " - Resolución de Duplicados: Detecta nombres idénticos y les asigna un sufijo (evita el colapso de LightGBM/FLAML).\n", + " - Auditoría de Tipos: Genera un reporte rápido de la integridad del esquema.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df\n", + "\n", + " logger.info(\"=== 🛡️ FASE 2.1: Auditoría de Integridad y Sanitización de Columnas ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + "\n", + " # ==========================================\n", + " # 1. Motor Regex de Sanitización (Formato Producción)\n", + " # ==========================================\n", + " # Convierte \"Edad del Cliente (%)\" a \"edad_del_cliente\"\n", + " nombres_originales = list(df_opt.columns)\n", + " nombres_limpios = []\n", + "\n", + " for col in nombres_originales:\n", + " # Convertimos a string, minúsculas y quitamos espacios a los lados\n", + " col_str = str(col).strip().lower()\n", + " # Reemplazamos cualquier cosa que NO sea letra o número por un guion bajo\n", + " col_str = re.sub(r'[^a-z0-9_]', '_', col_str)\n", + " # Eliminamos guiones bajos múltiples consecutivos (ej. '__' a '_')\n", + " col_str = re.sub(r'_+', '_', col_str)\n", + " # Quitamos guiones bajos al principio o al final\n", + " col_str = col_str.strip('_')\n", + " nombres_limpios.append(col_str)\n", + "\n", + " df_opt.columns = nombres_limpios\n", + "\n", + " # ==========================================\n", + " # 2. Escudo Anti-Crash (Resolución de Duplicados)\n", + " # ==========================================\n", + " columnas_finales = []\n", + " dicc_vistos = {}\n", + " duplicados_corregidos = 0\n", + "\n", + " for col in df_opt.columns:\n", + " if col not in dicc_vistos:\n", + " dicc_vistos[col] = 0\n", + " columnas_finales.append(col)\n", + " else:\n", + " dicc_vistos[col] += 1\n", + " duplicados_corregidos += 1\n", + " # Si \"ingreso\" ya existe, lo llama \"ingreso_v1\"\n", + " nuevo_nombre = f\"{col}_v{dicc_vistos[col]}\"\n", + " columnas_finales.append(nuevo_nombre)\n", + " logger.warning(f\" ⚠️ Peligro de Crash Evitado: Columna '{col}' renombrada a '{nuevo_nombre}'\")\n", + "\n", + " df_opt.columns = columnas_finales\n", + "\n", + " # ==========================================\n", + " # 3. Auditoría de Tipos (Alternativa Limpia a .info)\n", + " # ==========================================\n", + " conteo_tipos = df_opt.dtypes.astype(str).value_counts().to_dict()\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + " logger.info(f\"\\n✅ Auditoría Estructural Completada en {tiempo_total:.3f}s:\")\n", + " logger.info(f\" ✨ Columnas Sanitizadas : {len(df_opt.columns)}\")\n", + " if duplicados_corregidos > 0:\n", + " logger.info(f\" 🩹 Duplicados Resueltos : {duplicados_corregidos} (Prevención LightGBM activada)\")\n", + " else:\n", + " logger.info(f\" ✔️ Duplicados : Ninguno detectado (Esquema saludable)\")\n", + "\n", + " logger.info(\"\\n 📊 Mapa de Tipos de Datos (dtypes):\")\n", + " for tipo, cantidad in conteo_tipos.items():\n", + " logger.info(f\" - {tipo.ljust(12)}: {cantidad} columnas\")\n", + "\n", + " return df_opt\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.4 primero.\")\n", + "\n", + " # Ejecutamos la sanitización consumiendo la matriz central\n", + " df_sanitizado = auditar_y_sanitizar_columnas(df=manager.datos_crudos)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Sobrescribimos el estado en el Manager\n", + " manager.datos_crudos = df_sanitizado\n", + " logger.info(\"\\n📦 [MLOps] Nombres de columnas sanitizados y matriz actualizada de forma segura en 'manager.datos_crudos'.\")\n", + " \n", + " # 💡 TRUCO: Si sanitizamos las columnas, también debemos sanitizar el nombre del target en las rutas\n", + " if hasattr(manager, 'rutas') and 'target_name' in manager.rutas:\n", + " target_original = manager.rutas['target_name']\n", + " target_limpio = re.sub(r'[^a-z0-9_]', '_', str(target_original).strip().lower())\n", + " target_limpio = re.sub(r'_+', '_', target_limpio).strip('_')\n", + " manager.rutas['target_name'] = target_limpio\n", + " logger.debug(f\"Target enrutado sanitizado a: {target_limpio}\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Auditoría de Columnas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
534Private9DivorcedOther-serviceUnmarriedWhiteFemale0377045United-States<=50K
638Private6SeparatedAdm-clericalUnmarriedWhiteMale0377040United-States<=50K
774State-gov16Never-marriedProf-specialtyOther-relativeWhiteFemale0368320United-States> 50 K
868Federal-gov9DivorcedProf-specialtyNot-in-familyWhiteFemale0368340United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "5 34 Private 9 Divorced Other-service \n", + "6 38 Private 6 Separated Adm-clerical \n", + "7 74 State-gov 16 Never-married Prof-specialty \n", + "8 68 Federal-gov 9 Divorced Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "5 Unmarried White Female 0 3770 45 \n", + "6 Unmarried White Male 0 3770 40 \n", + "7 Other-relative White Female 0 3683 20 \n", + "8 Not-in-family White Female 0 3683 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K \n", + "5 United-States <=50K \n", + "6 United-States <=50K \n", + "7 United-States > 50 K \n", + "8 United-States <=50K " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado[0:9]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧹 FASE 2.2: Normalización Categórica y Fusión Tipográfica ===\n", + " 🧬 'income': 4 variantes tipográficas fusionadas.\n", + "\n", + "✅ Normalización Textual Completada en 0.019s:\n", + " 📊 Columnas Procesadas : 8\n", + " 🩹 Conflictos Resueltos : 4 (Clases canónicas consolidadas)\n", + "\n", + "📦 [MLOps] Categorías normalizadas y fusionadas de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def normalizar_categoricas_y_fusionar(df: pd.DataFrame) -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 2 - Paso 2.2] Normalización de Categóricas y Corrección por Mayoría.\n", + " - Limpieza Textual: Minúsculas, sin tildes, strip.\n", + " - Escáner de Espacios Internos: Fusiona tokens como \"<=50 k\" a \"<=50k\".\n", + " - Fusión Canónica: Al mapear el texto sucio a su versión limpia, los errores \n", + " tipográficos se agrupan automáticamente, sumando sus frecuencias y \n", + " preservando la distribución estadística real.\n", + " - Zero-RAM Overhead: Trabaja sobre los diccionarios de categorías, no sobre la matriz entera.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " logger.info(\"=== 🧹 FASE 2.2: Normalización Categórica y Fusión Tipográfica ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + " contadores = {'procesadas': 0, 'conflictos_resueltos': 0}\n", + "\n", + " for col in df_opt.columns:\n", + " tipo = df_opt[col].dtype\n", + "\n", + " # Filtro: Solo actuamos si la variable es de texto o una categoría de Pandas\n", + " if pd.api.types.is_object_dtype(tipo) or pd.api.types.is_string_dtype(tipo) or isinstance(tipo, pd.CategoricalDtype):\n", + "\n", + " # 1. Extracción Eficiente (Extraemos solo los valores únicos para no saturar RAM)\n", + " if isinstance(tipo, pd.CategoricalDtype):\n", + " categorias_crudas = df_opt[col].cat.categories\n", + " else:\n", + " categorias_crudas = df_opt[col].dropna().unique()\n", + "\n", + " if len(categorias_crudas) == 0:\n", + " continue\n", + "\n", + " # Convertimos a Series para usar la API vectorizada de Pandas .str\n", + " s_limpia = pd.Series(categorias_crudas).astype(str)\n", + "\n", + " # ==========================================\n", + " # 2. MOTOR REGEX DE SANITIZACIÓN MULTICAPA\n", + " # ==========================================\n", + " # A. Minúsculas\n", + " s_limpia = s_limpia.str.lower()\n", + "\n", + " # B. Remover Tildes y Acentos (Normalización NFKD)\n", + " s_limpia = s_limpia.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8')\n", + "\n", + " # C. Colapsar múltiples espacios seguidos a uno solo\n", + " s_limpia = s_limpia.str.replace(r'\\s+', ' ', regex=True)\n", + "\n", + " # D. Remover espacios alrededor de símbolos (Ej: \"<= 50\" -> \"<=50\")\n", + " s_limpia = s_limpia.str.replace(r'\\s*([^\\w\\s])\\s*', r'\\1', regex=True)\n", + "\n", + " # E. Remover espacios entre números y letras (Ej: \"50 k\" -> \"50k\")\n", + " s_limpia = s_limpia.str.replace(r'(?<=\\d)\\s+(?=[a-z])|(?<=[a-z])\\s+(?=\\d)', '', regex=True)\n", + "\n", + " # F. Strip final y convertir espacios restantes a guiones bajos (Ej: \"united states\" -> \"united_states\")\n", + " s_limpia = s_limpia.str.strip().str.replace(r'\\s+', '_', regex=True)\n", + "\n", + " # ==========================================\n", + " # 3. FUSIÓN Y MAPEO (Corrección por Mayoría)\n", + " # ==========================================\n", + " # Creamos un diccionario: { \" <=50 k \" : \"<=50k\", \"<=50K\" : \"<=50k\" }\n", + " mapper = dict(zip(categorias_crudas, s_limpia))\n", + "\n", + " # Calculamos cuántas clases \"basura\" se agruparon en una clase canónica\n", + " unicos_antes = len(categorias_crudas)\n", + " unicos_despues = s_limpia.nunique()\n", + " conflictos = unicos_antes - unicos_despues\n", + "\n", + " # Aplicamos el diccionario directamente a la matriz\n", + " # Al usar .map(), los NaNs originales se respetan y se quedan como NaNs.\n", + " if isinstance(tipo, pd.CategoricalDtype):\n", + " df_opt[col] = df_opt[col].map(mapper).astype('category')\n", + " else:\n", + " df_opt[col] = df_opt[col].map(mapper)\n", + "\n", + " contadores['procesadas'] += 1\n", + " contadores['conflictos_resueltos'] += conflictos\n", + "\n", + " if conflictos > 0:\n", + " logger.info(f\" 🧬 '{col}': {conflictos} variantes tipográficas fusionadas.\")\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Normalización Textual Completada en {tiempo_total:.3f}s:\")\n", + " logger.info(f\" 📊 Columnas Procesadas : {contadores['procesadas']}\")\n", + " logger.info(f\" 🩹 Conflictos Resueltos : {contadores['conflictos_resueltos']} (Clases canónicas consolidadas)\")\n", + "\n", + " return df_opt, contadores\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 2.1 primero.\")\n", + "\n", + " # Ejecutamos la normalización consumiendo la matriz central\n", + " df_normalizado, reporte_cat = normalizar_categoricas_y_fusionar(df=manager.datos_crudos)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Sobrescribimos el estado en el Manager\n", + " manager.datos_crudos = df_normalizado\n", + " logger.info(\"\\n📦 [MLOps] Categorías normalizadas y fusionadas de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Normalización de Categóricas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
534Private9DivorcedOther-serviceUnmarriedWhiteFemale0377045United-States<=50K
638Private6SeparatedAdm-clericalUnmarriedWhiteMale0377040United-States<=50K
774State-gov16Never-marriedProf-specialtyOther-relativeWhiteFemale0368320United-States> 50 K
868Federal-gov9DivorcedProf-specialtyNot-in-familyWhiteFemale0368340United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "5 34 Private 9 Divorced Other-service \n", + "6 38 Private 6 Separated Adm-clerical \n", + "7 74 State-gov 16 Never-married Prof-specialty \n", + "8 68 Federal-gov 9 Divorced Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "5 Unmarried White Female 0 3770 45 \n", + "6 Unmarried White Male 0 3770 40 \n", + "7 Other-relative White Female 0 3683 20 \n", + "8 Not-in-family White Female 0 3683 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K \n", + "5 United-States <=50K \n", + "6 United-States <=50K \n", + "7 United-States > 50 K \n", + "8 United-States <=50K " + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado[0:9]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🚑 FASE 2.3: Rescate de Falsos Textos y Compresión Flotante ===\n", + " 🔍 Buscando números disfrazados de texto...\n", + " 🛡️ [INMUNIDAD] Columna Target 'income' protegida. Omitiendo casteo.\n", + "\n", + "✅ Rescate y Casteo Completado en 0.290s:\n", + " ✔️ Columnas Rescatadas : 0 (No se detectaron falsos textos)\n", + " 🛡️ Protecciones Activas: 7 textos reales ignorados con éxito\n", + " 👑 Target Protegido : Sí ('income')\n", + " 💾 Memoria Inicial : 0.54 MB\n", + " 💽 Memoria Final : 0.54 MB (-0.0%)\n", + "\n", + "📦 [MLOps] Falsos textos rescatados y matriz actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def rescate_numerico_y_compresion(\n", + " df: pd.DataFrame, \n", + " target_principal: str, # 👑 NUEVO: El nombre del Target para blindarlo\n", + " tolerancia_destruccion: float = 0.05\n", + ") -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 2 - Paso 2.3] Casteo Forzado y Rescate de Falsos Textos.\n", + " - Escudo del Rey: Inmunidad absoluta para la variable Target. Jamás será casteada.\n", + " - Motor Regex: Limpia símbolos de moneda, porcentajes y comas miliares.\n", + " - Casteo Coerce: Fuerza la conversión a numérico aislando textos irreconocibles como NaNs.\n", + " - Rollback AutoML: Si la conversión genera demasiados NaNs (>5%), revierte los cambios.\n", + " - Downcasting Integrado: Al rescatar el número, evalúa min/max y asigna el float ideal.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " # 🚀 FIX MLOps: Búsqueda dinámica insensible a mayúsculas (Case-Insensitive)\n", + " target_lower = str(target_principal).lower()\n", + " cols_lower = [str(c).lower() for c in df.columns]\n", + "\n", + " if target_lower not in cols_lower:\n", + " logger.error(f\"🛑 Error Crítico: El Target '{target_principal}' (ni sus variantes en minúscula) se encontró en la matriz.\")\n", + " return df, {}\n", + "\n", + " # Reasignamos el target al nombre exacto que tiene actualmente en la matriz\n", + " target_principal = df.columns[cols_lower.index(target_lower)]\n", + "\n", + " logger.info(\"=== 🚑 FASE 2.3: Rescate de Falsos Textos y Compresión Flotante ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + " filas_totales = len(df_opt)\n", + "\n", + " mem_antes = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " contadores = {'rescatadas_float32': 0, 'rescatadas_float64': 0, 'ignoradas_texto_real': 0, 'target_protegido': 1}\n", + "\n", + " logger.info(\" 🔍 Buscando números disfrazados de texto...\")\n", + "\n", + " for col in df_opt.columns:\n", + " # 👑 ESCUDO DEL REY: Si es el Target, lo saltamos inmediatamente\n", + " if col == target_principal:\n", + " logger.info(f\" 🛡️ [INMUNIDAD] Columna Target '{col}' protegida. Omitiendo casteo.\")\n", + " continue\n", + "\n", + " tipo_actual = df_opt[col].dtype\n", + "\n", + " # Solo intentamos el rescate en columnas que son texto o categorías\n", + " if pd.api.types.is_object_dtype(tipo_actual) or pd.api.types.is_string_dtype(tipo_actual) or isinstance(tipo_actual, pd.CategoricalDtype):\n", + "\n", + " # 1. Snapshot de Seguridad (Rollback)\n", + " nulos_originales = df_opt[col].isna().sum()\n", + "\n", + " # 2. Extracción y Limpieza Regex\n", + " # Reemplazamos símbolos comunes que disfrazan números ($, €, £, %, comas miliares y espacios)\n", + " serie_limpia = df_opt[col].astype(str).str.replace(r'[$,€£%\\s]', '', regex=True)\n", + "\n", + " # 3. Casteo Forzado\n", + " serie_numerica = pd.to_numeric(serie_limpia, errors='coerce')\n", + "\n", + " # 4. Auditoría de Destrucción (¿Era realmente un número?)\n", + " nulos_nuevos = serie_numerica.isna().sum()\n", + " tasa_destruccion = (nulos_nuevos - nulos_originales) / filas_totales\n", + "\n", + " # Si se destruyó menos del 5% de los datos, ¡era un falso texto! Procedemos.\n", + " if tasa_destruccion <= tolerancia_destruccion:\n", + "\n", + " c_min = serie_numerica.min()\n", + " c_max = serie_numerica.max()\n", + "\n", + " # 5. Downcasting Integrado Inteligente (Asignación del Float Ideal)\n", + " if c_min >= np.finfo(np.float32).min and c_max <= np.finfo(np.float32).max:\n", + " df_opt[col] = serie_numerica.astype(np.float32)\n", + " contadores['rescatadas_float32'] += 1\n", + " else:\n", + " df_opt[col] = serie_numerica.astype(np.float64)\n", + " contadores['rescatadas_float64'] += 1\n", + "\n", + " logger.info(f\" 🚑 Rescate Exitoso: '{col}' convertida a {df_opt[col].dtype}\")\n", + "\n", + " else:\n", + " # Era una categoría de texto real (ej. \"Married-civ-spouse\"). Abortamos y protegemos.\n", + " contadores['ignoradas_texto_real'] += 1\n", + "\n", + " # ==========================================\n", + " # Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " mem_despues = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " ahorro_mb = mem_antes - mem_despues\n", + " porcentaje_ahorro = 100 * (ahorro_mb / mem_antes) if mem_antes > 0 else 0\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + " total_rescatadas = contadores['rescatadas_float32'] + contadores['rescatadas_float64']\n", + "\n", + " logger.info(f\"\\n✅ Rescate y Casteo Completado en {tiempo_total:.3f}s:\")\n", + " if total_rescatadas > 0:\n", + " logger.info(f\" 📉 Columnas Rescatadas : {total_rescatadas} ({contadores['rescatadas_float32']} float32 | {contadores['rescatadas_float64']} float64)\")\n", + " else:\n", + " logger.info(f\" ✔️ Columnas Rescatadas : 0 (No se detectaron falsos textos)\")\n", + "\n", + " logger.info(f\" 🛡️ Protecciones Activas: {contadores['ignoradas_texto_real']} textos reales ignorados con éxito\")\n", + " logger.info(f\" 👑 Target Protegido : Sí ('{target_principal}')\")\n", + " logger.info(f\" 💾 Memoria Inicial : {mem_antes:.2f} MB\")\n", + " logger.info(f\" 💽 Memoria Final : {mem_despues:.2f} MB (-{porcentaje_ahorro:.1f}%)\")\n", + "\n", + " return df_opt, contadores\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta las fases previas.\")\n", + "\n", + " # 🔗 CONEXIÓN MLOps: Extraemos el target dinámicamente guardado\n", + " if not hasattr(manager, 'rutas') or 'target_name' not in manager.rutas:\n", + " raise ValueError(\"No se encontró el Target protegido en las rutas del Manager. Asegúrate de ejecutar la Fase 1.3.\")\n", + " \n", + " target_heredado = manager.rutas['target_name']\n", + "\n", + " # Ejecutamos el rescate consumiendo los datos del manager\n", + " df_rescatado, reporte_rescate = rescate_numerico_y_compresion(\n", + " df=manager.datos_crudos,\n", + " target_principal=target_heredado, # 👑 Pasamos dinámicamente el ganador\n", + " tolerancia_destruccion=0.05 # Si falla en >5% de filas, asume que es texto puro y no lo toca\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Sobrescribimos el estado en el Manager\n", + " manager.datos_crudos = df_rescatado\n", + " logger.info(\"\\n📦 [MLOps] Falsos textos rescatados y matriz actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Rescate Numérico: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🎯 Target auto-detectado del pipeline: 'income'\n", + "--- 🔬 Simulando un entorno Train/Test para probar la validación ---\n", + "=== 🕵️‍♂️ FASE 3.1: Validación Adversaria (Train vs Test) ===\n", + " 🚀 Entrenando LightGBM Adversario...\n", + " ⚖️ Veredicto del AUC: 0.5113 (Umbral de peligro: 0.6)\n", + " ✔️ Matriz Segura. Train y Test provienen de la misma distribución estadística.\n", + " ⏱️ Tiempo de validación: 0.09s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple, List\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import roc_auc_score\n", + "import lightgbm as lgb\n", + "import warnings\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def validacion_adversaria_automl(\n", + " df_train: pd.DataFrame, \n", + " df_test: pd.DataFrame, \n", + " target_col: str,\n", + " umbral_auc: float = 0.60\n", + ") -> Tuple[List[str], float]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.1] Validación Adversaria (Detector de Concept Drift).\n", + " - Objetivo: Entrenar un LightGBM para distinguir entre Train y Test.\n", + " - Inteligencia: Si el AUC > umbral, extrae las variables culpables del drift.\n", + " - Blindaje: Ignora automáticamente la variable objetivo real para no hacer trampa.\n", + " - Pre-procesamiento: Descompone variables Datetime en numéricas para evitar crasheos de LightGBM.\n", + " - MLOps: Retorna la lista de variables tóxicas para ejecutarlas en la guillotina.\n", + " \"\"\"\n", + " if df_train.empty or df_test.empty:\n", + " logger.error(\"🛑 Error Crítico: Uno de los DataFrames está vacío.\")\n", + " return [], 0.0\n", + "\n", + " logger.info(\"=== 🕵️‍♂️ FASE 3.1: Validación Adversaria (Train vs Test) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # ==========================================\n", + " # 1. Preparación del Escenario Adversario\n", + " # ==========================================\n", + " # Copiamos para no alterar los originales\n", + " X_tr = df_train.copy()\n", + " X_te = df_test.copy()\n", + "\n", + " # Eliminamos el Target real de negocio (ej. 'income') si existe, \n", + " # porque el Test no lo debería tener (o no debemos usarlo aquí)\n", + " if target_col in X_tr.columns: X_tr.drop(columns=[target_col], inplace=True)\n", + " if target_col in X_te.columns: X_te.drop(columns=[target_col], inplace=True)\n", + "\n", + " # Alineamos columnas por si el Test viene con menos variables\n", + " columnas_comunes = list(set(X_tr.columns).intersection(set(X_te.columns)))\n", + " X_tr = X_tr[columnas_comunes]\n", + " X_te = X_te[columnas_comunes]\n", + "\n", + " # Creamos el Target Adversario: 0 = Train, 1 = Test\n", + " X_tr['is_test'] = 0\n", + " X_te['is_test'] = 1\n", + "\n", + " # Unimos todo en un solo DataFrame\n", + " df_adversario = pd.concat([X_tr, X_te], axis=0, ignore_index=True)\n", + "\n", + " # 🚀 NUEVO ESCUDO: Descomposición de Datetimes para LightGBM\n", + " cols_datetime = df_adversario.select_dtypes(include=['datetime64', 'datetimetz']).columns\n", + " if len(cols_datetime) > 0:\n", + " logger.info(f\" 🗓️ Descomponiendo {len(cols_datetime)} variables Datetime para LightGBM...\")\n", + " for col in cols_datetime:\n", + " df_adversario[f'{col}_year'] = df_adversario[col].dt.year\n", + " df_adversario[f'{col}_month'] = df_adversario[col].dt.month\n", + " df_adversario[f'{col}_day'] = df_adversario[col].dt.day\n", + " df_adversario[f'{col}_dayofweek'] = df_adversario[col].dt.dayofweek\n", + " # Destruimos las originales que causan el crasheo\n", + " df_adversario.drop(columns=cols_datetime, inplace=True)\n", + "\n", + " # 🚀 NUEVO ESCUDO 2: Compatibilidad de Booleanos\n", + " # LightGBM prefiere los booleanos nativos de pandas como numéricos o categóricos\n", + " cols_bool = df_adversario.select_dtypes(include=['boolean']).columns\n", + " if len(cols_bool) > 0:\n", + " for col in cols_bool:\n", + " df_adversario[col] = df_adversario[col].astype('float32') # Float soporta NaNs y LightGBM lo entiende\n", + "\n", + " y_adv = df_adversario['is_test']\n", + " X_adv = df_adversario.drop(columns=['is_test'])\n", + "\n", + " # ==========================================\n", + " # 2. División Interna para Evaluación Justa\n", + " # ==========================================\n", + " # Separamos 30% solo para medir el AUC del modelo adversario\n", + " X_adv_train, X_adv_val, y_adv_train, y_adv_val = train_test_split(\n", + " X_adv, y_adv, test_size=0.30, random_state=42, stratify=y_adv\n", + " )\n", + "\n", + " # ==========================================\n", + " # 3. Entrenamiento del Modelo Espía (LightGBM)\n", + " # ==========================================\n", + " logger.info(\" 🚀 Entrenando LightGBM Adversario...\")\n", + "\n", + " # LightGBM es ideal porque detecta las variables 'category' nativamente\n", + " modelo_adv = lgb.LGBMClassifier(\n", + " n_estimators=50, # Rápido, solo queremos ver si hay un patrón obvio\n", + " learning_rate=0.1,\n", + " max_depth=4,\n", + " random_state=42,\n", + " n_jobs=-1,\n", + " verbosity=-1 # Muteamos los warnings de C++\n", + " )\n", + "\n", + " modelo_adv.fit(X_adv_train, y_adv_train)\n", + "\n", + " # ==========================================\n", + " # 4. Veredicto del Tribunal (AUC y SHAP/Gain)\n", + " # ==========================================\n", + " preds = modelo_adv.predict_proba(X_adv_val)[:, 1]\n", + " auc_score = roc_auc_score(y_adv_val, preds)\n", + "\n", + " variables_a_neutralizar = []\n", + "\n", + " logger.info(f\" ⚖️ Veredicto del AUC: {auc_score:.4f} (Umbral de peligro: {umbral_auc})\")\n", + "\n", + " if auc_score > umbral_auc:\n", + " logger.warning(\" 🚨 PELIGRO: Concept Drift Detectado. El modelo puede distinguir Train de Test.\")\n", + "\n", + " # Extraemos la importancia de las variables (Feature Importance by Gain)\n", + " importancias = pd.DataFrame({\n", + " 'Variable': X_adv.columns,\n", + " 'Importancia': modelo_adv.feature_importances_\n", + " }).sort_values(by='Importancia', ascending=False)\n", + "\n", + " # Regla AutoML: Tomamos las variables que acumulan el 80% de la importancia del drift\n", + " importancias['Acumulado'] = importancias['Importancia'].cumsum() / importancias['Importancia'].sum()\n", + " variables_toxicas = importancias[importancias['Acumulado'] <= 0.80]['Variable'].tolist()\n", + "\n", + " # Si solo una variable causa el 100% del drift, la lista podría estar vacía, la forzamos\n", + " if not variables_toxicas:\n", + " variables_toxicas = [importancias.iloc[0]['Variable']]\n", + "\n", + " variables_a_neutralizar = variables_toxicas\n", + " logger.warning(f\" 🪓 Variables Tóxicas marcadas para la guillotina: {variables_a_neutralizar}\")\n", + "\n", + " else:\n", + " logger.info(\" ✔️ Matriz Segura. Train y Test provienen de la misma distribución estadística.\")\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + " logger.info(f\" ⏱️ Tiempo de validación: {tiempo_total:.2f}s\")\n", + "\n", + " # Mapeo Inverso: Si una variable tóxica fue 'Date_year', significa que la original 'Date' debe morir\n", + " variables_finales_a_neutralizar = set()\n", + " for var_tox in variables_a_neutralizar:\n", + " if '_year' in var_tox or '_month' in var_tox or '_day' in var_tox or '_dayofweek' in var_tox:\n", + " base_col = var_tox.rsplit('_', 1)[0]\n", + " if base_col in df_train.columns:\n", + " variables_finales_a_neutralizar.add(base_col)\n", + " else:\n", + " variables_finales_a_neutralizar.add(var_tox)\n", + "\n", + " return list(variables_finales_a_neutralizar), auc_score\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz central\n", + " if not hasattr(manager, 'datos_crudos') or getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta las fases previas.\")\n", + "\n", + " # ==========================================\n", + " # 🧠 AUTO-DETECCIÓN DEL TARGET (MLOps Wiring)\n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos el target de las rutas del Manager\n", + " if not hasattr(manager, 'rutas') or 'target_name' not in manager.rutas:\n", + " raise ValueError(\"🛑 No se encontró el Target ('target_name') en las rutas del Manager. Ejecuta la Fase 1.3.\")\n", + " \n", + " target_detectado = manager.rutas['target_name']\n", + "\n", + " logger.info(f\"🎯 Target auto-detectado del pipeline: '{target_detectado}'\")\n", + "\n", + " # 💡 PARADOJA DE UN SOLO DATASET:\n", + " logger.info(\"--- 🔬 Simulando un entorno Train/Test para probar la validación ---\")\n", + " df_train_simulado, df_test_simulado = train_test_split(manager.datos_crudos, test_size=0.20, random_state=99)\n", + "\n", + " vars_toxicas, score_auc = validacion_adversaria_automl(\n", + " df_train=df_train_simulado,\n", + " df_test=df_test_simulado,\n", + " target_col=target_detectado, # <--- Se inyecta automáticamente aquí\n", + " umbral_auc=0.60\n", + " )\n", + "\n", + " # Si detectamos variables del futuro/drift, las aniquilamos del dataset principal de una vez\n", + " if vars_toxicas:\n", + " logger.info(f\"\\n 🔪 Ejecutando Neutralización en manager.datos_crudos...\")\n", + " manager.datos_crudos.drop(columns=vars_toxicas, inplace=True, errors='ignore')\n", + " logger.info(f\" ✅ Variables {vars_toxicas} eliminadas de la matriz principal.\")\n", + " logger.info(\"📦 [MLOps] Matriz protegida contra Concept Drift y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Validación Adversaria: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K " + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🎯 Target heredado dinámicamente desde el manager: 'income'\n", + "\n", + "=== 🧱 FASE 3.2: Aislamiento del Target ('income') y Enrutamiento ===\n", + " 🔍 Mapeando la topología de las características predictoras (X)...\n", + "\n", + "✅ Aislamiento y Enrutamiento Completado en 0.006s:\n", + " ✔️ Regla de Oro : 0 filas destruidas (Target 100% íntegro).\n", + " 📦 Matriz Predictora (X): 32,537 filas x 12 columnas\n", + " 🎯 Vector Objetivo (y) : 32,537 etiquetas aisladas\n", + "\n", + " 🛣️ Mapas de Ruteo Creados:\n", + " - Numéricas (num_vars) : 5 columnas\n", + " - Categóricas (cat_vars) : 7 columnas\n", + " - Booleanas (bool_vars): 0 columnas\n", + " - Temporales (date_vars): 0 columnas\n", + "📦 [MLOps] Matriz predictora (X), vector objetivo (y) y rutas de variables inyectadas de forma segura en el Manager.\n", + "🧹 [RAM Shield] Matriz 'datos_crudos' original eliminada para liberar memoria.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re # 🚀 NUEVO: Importamos regex para la limpieza profunda\n", + "from typing import Tuple, Dict, List\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def aislar_target_y_enrutar(\n", + " df: pd.DataFrame, \n", + " target_col: str\n", + ") -> Tuple[pd.DataFrame, pd.Series, Dict[str, List[str]]]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.2] Aislamiento del Target y Regla de Oro.\n", + " - Auto-Corrección Extendida: Detecta el target ignorando mayúsculas, espacios, guiones y guiones bajos.\n", + " - Regla Estricta: Purga (elimina) cualquier registro donde la variable objetivo sea nula.\n", + " - Aislamiento Temprano: Separa la matriz en características (X) y objetivo (y).\n", + " - Enrutamiento (AutoML): Escanea los dtypes y crea listas explícitas de variables.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " raise ValueError(\"La matriz está vacía o es inválida.\")\n", + "\n", + " # ==========================================\n", + " # 🚀 NUEVO: Auto-Corrección Inteligente de Columnas (Bulletproof)\n", + " # ==========================================\n", + " if target_col not in df.columns:\n", + " # Función destructiva: borra todo lo que no sea letra o número para una comparación pura\n", + " def normalizar(nombre):\n", + " return re.sub(r'[^a-z0-9]', '', str(nombre).lower())\n", + "\n", + " target_norm = normalizar(target_col) # 'No-show' se convierte en 'noshow'\n", + " mapa_cols = {normalizar(c): c for c in df.columns}\n", + "\n", + " if target_norm in mapa_cols:\n", + " target_real = mapa_cols[target_norm]\n", + " logger.info(f\" 🪄 [AUTO-CORRECCIÓN] Target original '{target_col}' mapeado a -> '{target_real}'\")\n", + " target_col = target_real # Actualizamos la variable para usar la que sí existe en el DataFrame\n", + " else:\n", + " logger.error(f\"🛑 Error Crítico: La variable objetivo '{target_col}' (o su versión '{target_norm}') no existe. Columnas vistas: {list(df.columns)}\")\n", + " raise KeyError(f\"La variable objetivo '{target_col}' no existe.\")\n", + "\n", + " logger.info(f\"=== 🧱 FASE 3.2: Aislamiento del Target ('{target_col}') y Enrutamiento ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " # ==========================================\n", + " # 1. La Regla de Oro (Purga de Target Nulo)\n", + " # ==========================================\n", + " filas_iniciales = len(df)\n", + "\n", + " # Copiamos y eliminamos las filas sin piedad donde el target es NaN\n", + " df_limpio = df.dropna(subset=[target_col]).copy() \n", + "\n", + " filas_finales = len(df_limpio)\n", + " nulos_purgados = filas_iniciales - filas_finales\n", + "\n", + " # ==========================================\n", + " # 2. El Aislamiento (Split X, y)\n", + " # ==========================================\n", + " y = df_limpio[target_col]\n", + " X = df_limpio.drop(columns=[target_col])\n", + "\n", + " # ==========================================\n", + " # 3. Escáner de Enrutamiento (AutoML Routing)\n", + " # ==========================================\n", + " rutas = {\n", + " 'num_vars': [],\n", + " 'cat_vars': [],\n", + " 'date_vars': [],\n", + " 'bool_vars': []\n", + " }\n", + "\n", + " logger.info(\" 🔍 Mapeando la topología de las características predictoras (X)...\")\n", + "\n", + " for col in X.columns:\n", + " tipo = X[col].dtype\n", + "\n", + " # Booleanas (Damos prioridad a las bool_vars para que no se confundan con numéricas)\n", + " if pd.api.types.is_bool_dtype(tipo):\n", + " rutas['bool_vars'].append(col)\n", + " # Numéricas (Int y Float)\n", + " elif pd.api.types.is_numeric_dtype(tipo):\n", + " rutas['num_vars'].append(col)\n", + " # Categóricas y Textos\n", + " elif isinstance(tipo, pd.CategoricalDtype) or pd.api.types.is_object_dtype(tipo) or pd.api.types.is_string_dtype(tipo):\n", + " rutas['cat_vars'].append(col)\n", + " # Fechas y Tiempos\n", + " elif pd.api.types.is_datetime64_any_dtype(tipo):\n", + " rutas['date_vars'].append(col)\n", + " else:\n", + " logger.warning(f\" ⚠️ Advertencia: Tipo de dato no reconocido en '{col}': {tipo}\")\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Aislamiento y Enrutamiento Completado en {tiempo_total:.3f}s:\")\n", + " if nulos_purgados > 0:\n", + " logger.info(f\" 🔪 Regla de Oro Aplicada: {nulos_purgados} filas destruidas por no tener Target.\")\n", + " else:\n", + " logger.info(f\" ✔️ Regla de Oro : 0 filas destruidas (Target 100% íntegro).\")\n", + "\n", + " logger.info(f\" 📦 Matriz Predictora (X): {X.shape[0]:,} filas x {X.shape[1]} columnas\")\n", + " logger.info(f\" 🎯 Vector Objetivo (y) : {len(y):,} etiquetas aisladas\")\n", + " logger.info(f\"\\n 🛣️ Mapas de Ruteo Creados:\")\n", + " logger.info(f\" - Numéricas (num_vars) : {len(rutas['num_vars'])} columnas\")\n", + " logger.info(f\" - Categóricas (cat_vars) : {len(rutas['cat_vars'])} columnas\")\n", + " logger.info(f\" - Booleanas (bool_vars): {len(rutas['bool_vars'])} columnas\")\n", + " logger.info(f\" - Temporales (date_vars): {len(rutas['date_vars'])} columnas\")\n", + "\n", + " return X, y, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz central\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta las fases previas.\")\n", + "\n", + " # ==========================================\n", + " # 🧠 AUTO-DETECCIÓN DEL TARGET (Protegido)\n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción estricta del target\n", + " if not hasattr(manager, 'rutas') or 'target_name' not in manager.rutas:\n", + " raise ValueError(\"🛑 No se encontró la variable objetivo ('target_name') en el Manager. Ejecuta la guillotina (Fase 1.3) primero.\")\n", + "\n", + " variable_objetivo = manager.rutas['target_name']\n", + " logger.info(f\"🎯 Target heredado dinámicamente desde el manager: '{variable_objetivo}'\\n\")\n", + "\n", + " # Generamos la división definitiva y el enrutamiento\n", + " X, y, rutas_variables = aislar_target_y_enrutar(\n", + " df=manager.datos_crudos, \n", + " target_col=variable_objetivo\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos X, y en el contenedor de estado central\n", + " manager.X_train = X\n", + " manager.y_train = y\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Acoplamos las rutas al manager, manteniendo el 'target_name'\n", + " rutas_variables['target_name'] = variable_objetivo\n", + " manager.rutas = rutas_variables\n", + "\n", + " logger.info(\"📦 [MLOps] Matriz predictora (X), vector objetivo (y) y rutas de variables inyectadas de forma segura en el Manager.\")\n", + "\n", + " # Liberamos la memoria de 'datos_crudos' ya que la matriz se ha dividido\n", + " del manager.datos_crudos\n", + " logger.info(\"🧹 [RAM Shield] Matriz 'datos_crudos' original eliminada para liberar memoria.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Aislamiento del Target: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['age', 'education_num', 'capital_gain', 'capital_loss', 'hours_per_week']" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['num_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['workclass',\n", + " 'marital_status',\n", + " 'occupation',\n", + " 'relationship',\n", + " 'race',\n", + " 'sex',\n", + " 'native_country']" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['cat_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['date_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['bool_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧱 FASE 3.3: Levantando el Muro de Hierro (Split 80/20) ===\n", + " ✨ [TARGET LIMPIO] No se detectaron nulos ocultos en la variable objetivo.\n", + "\n", + "✅ Muro de Hierro levantado en 0.040s:\n", + " 🧠 Naturaleza del Target : Clasificación (Estratificado)\n", + " 🚂 Matriz de TRAIN : 26,029 filas (80.0%)\n", + " 🔒 Matriz de TEST : 6,508 filas (20.0%)\n", + "\n", + "📜 EDICTO DE MLOPS (Regla de Oro para las Fases 4 y 5):\n", + " 1. Todo Imputador, Scaler o Encoder debe ENTRENARSE estrictamente sobre TRAIN usando .fit()\n", + " 2. TEST es ciego. Solo se le aplicará .transform() usando las reglas aprendidas de TRAIN.\n", + "\n", + "📦 [MLOps] Matrices Train/Test divididas y aseguradas en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Any\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def levantar_muro_de_hierro(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " test_size: float = 0.20,\n", + " random_state: int = 42\n", + ") -> Tuple[pd.DataFrame, pd.DataFrame, pd.Series, pd.Series]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.3] División Inmediata y Muro de Hierro.\n", + " - Purga de Target: Aplica Regex avanzado para destruir nulos ocultos en 'y' y alinear 'X'.\n", + " - Inteligencia (AutoML): Detecta la naturaleza del Target (y) para aplicar \n", + " estratificación automática si es clasificación, o corte simple si es regresión.\n", + " - Seguridad: Verifica integridad dimensional antes del corte.\n", + " - Arquitectura MLOps: Prepara el terreno para la regla sagrada: \n", + " Transformadores usarán .fit_transform() en Train y SOLO .transform() en Test.\n", + " \"\"\"\n", + " if X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz X o el vector y están vacíos.\")\n", + " raise ValueError(\"La matriz X o el vector y están vacíos.\")\n", + "\n", + " if len(X) != len(y):\n", + " logger.error(f\"🛑 Desalineación Crítica: X tiene {len(X)} filas pero y tiene {len(y)}.\")\n", + " raise ValueError(\"Desalineación Crítica entre X e y.\")\n", + "\n", + " logger.info(f\"=== 🧱 FASE 3.3: Levantando el Muro de Hierro (Split {100-test_size*100:.0f}/{test_size*100:.0f}) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " # ==========================================\n", + " # 0.5. Purga de Nulos Ocultos en el Target (El Escudo Regex)\n", + " # ==========================================\n", + " # Usamos tu regex convirtiendo temporalmente a string para evitar errores si 'y' es numérica\n", + " patron_regex = r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$'\n", + " mascara_regex = y.astype(str).str.match(patron_regex, na=True)\n", + "\n", + " # Combinamos con los NaNs nativos de Pandas por si acaso\n", + " mascara_nulos_reales = y.isna()\n", + " mascara_borrar = mascara_regex | mascara_nulos_reales\n", + "\n", + " filas_a_borrar = mascara_borrar.sum()\n", + "\n", + " if filas_a_borrar > 0:\n", + " logger.warning(f\" 🧹 [PURGA TARGET] Detectados {filas_a_borrar} registros con respuesta (y) nula/inválida.\")\n", + " # Filtramos 'y' y luego usamos sus índices sobrevivientes para filtrar 'X'\n", + " y = y[~mascara_borrar].copy()\n", + " X = X.loc[y.index].copy()\n", + " logger.info(f\" 🗑️ Filas eliminadas de X e y para mantener integridad dimensional (Dataset restante: {len(y):,}).\")\n", + "\n", + " if len(y) == 0:\n", + " logger.error(\"🛑 Error Fatal: El dataset quedó vacío tras purgar los Targets inválidos.\")\n", + " raise ValueError(\"El dataset quedó vacío tras purgar los Targets inválidos.\")\n", + " else:\n", + " logger.info(\" ✨ [TARGET LIMPIO] No se detectaron nulos ocultos en la variable objetivo.\")\n", + "\n", + " # ==========================================\n", + " # 1. Detección Inteligente de Estratificación\n", + " # ==========================================\n", + " # Si 'y' tiene pocos valores únicos (ej. < 100) o es texto/categoría, asumimos CLASIFICACIÓN.\n", + " es_clasificacion = False\n", + " if pd.api.types.is_object_dtype(y.dtype) or isinstance(y.dtype, pd.CategoricalDtype):\n", + " es_clasificacion = True\n", + " elif pd.api.types.is_numeric_dtype(y.dtype) and y.nunique() < 100:\n", + " es_clasificacion = True\n", + "\n", + " estrategia_stratify = y if es_clasificacion else None\n", + "\n", + " # ==========================================\n", + " # 2. La División (La Guillotina Temporal)\n", + " # ==========================================\n", + " X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, \n", + " test_size=test_size, \n", + " random_state=random_state, \n", + " stratify=estrategia_stratify\n", + " )\n", + "\n", + " # ==========================================\n", + " # 3. Reporte de Arquitectura\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Muro de Hierro levantado en {tiempo_total:.3f}s:\")\n", + " logger.info(f\" 🧠 Naturaleza del Target : {'Clasificación (Estratificado)' if es_clasificacion else 'Regresión (Corte Simple)'}\")\n", + " logger.info(f\" 🚂 Matriz de TRAIN : {X_train.shape[0]:,} filas ({len(X_train)/len(X):.1%})\")\n", + " logger.info(f\" 🔒 Matriz de TEST : {X_test.shape[0]:,} filas ({len(X_test)/len(X):.1%})\")\n", + "\n", + " logger.info(\"\\n📜 EDICTO DE MLOPS (Regla de Oro para las Fases 4 y 5):\")\n", + " logger.info(\" 1. Todo Imputador, Scaler o Encoder debe ENTRENARSE estrictamente sobre TRAIN usando .fit()\")\n", + " logger.info(\" 2. TEST es ciego. Solo se le aplicará .transform() usando las reglas aprendidas de TRAIN.\")\n", + "\n", + " return X_train, X_test, y_train, y_test\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Obtenemos los datos sin dividir que guardamos temporalmente en la Fase 3.2\n", + " # El manager guarda provisionalmente la matriz X completa en X_train antes del split real\n", + " X_sin_dividir = getattr(manager, 'X_train', None)\n", + " y_sin_dividir = getattr(manager, 'y_train', None)\n", + "\n", + " if X_sin_dividir is None or y_sin_dividir is None:\n", + " raise ValueError(\"El Manager no tiene 'X' o 'y' cargados. Ejecuta el Aislamiento (Fase 3.2) primero.\")\n", + "\n", + " # 2. Ejecutamos la división consumiendo los datos centrales\n", + " X_tr, X_te, y_tr, y_te = levantar_muro_de_hierro(\n", + " X=X_sin_dividir, \n", + " y=y_sin_dividir, \n", + " test_size=0.20,\n", + " random_state=42 \n", + " )\n", + "\n", + " # 3. Guardamos los resultados DE VUELTA en el manager para que viajen a las siguientes fases\n", + " if hasattr(manager, 'cargar_split'):\n", + " manager.cargar_split(X_tr, X_te, y_tr, y_te)\n", + " else:\n", + " # Fallback de seguridad si el método cargar_split no existe en la versión actual del Manager\n", + " manager.X_train = X_tr\n", + " manager.X_test = X_te\n", + " manager.y_train = y_tr\n", + " manager.y_test = y_te\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Matrices Train/Test divididas y aseguradas en el PipelineManager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Train/Test Split: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
2525221?10never-married?own-childwhitemale0020united-states
334941private11married-civ-spousesaleshusbandwhitemale4386060united-states
458424private9never-marriedhandlers-cleanersunmarriedblackfemale0040united-states
700359private9widowedprof-specialtynot-in-familywhitefemale0018united-states
88235private9married-civ-spousesaleshusbandasian-pac-islandermale0188750iran
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "25252 21 ? 10 never-married ? \n", + "3349 41 private 11 married-civ-spouse sales \n", + "4584 24 private 9 never-married handlers-cleaners \n", + "7003 59 private 9 widowed prof-specialty \n", + "882 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "25252 own-child white male 0 0 \n", + "3349 husband white male 4386 0 \n", + "4584 unmarried black female 0 0 \n", + "7003 not-in-family white female 0 0 \n", + "882 husband asian-pac-islander male 0 1887 \n", + "\n", + " hours_per_week native_country \n", + "25252 20 united-states \n", + "3349 60 united-states \n", + "4584 40 united-states \n", + "7003 18 united-states \n", + "882 50 iran " + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "manager.X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
2110239self-emp-inc10divorcedcraft-repairnot-in-familywhitemale0099united-states
2146935private13married-civ-spouseadm-clericalhusbandwhitemale0040united-states
2081531private13married-civ-spouseprof-specialtyhusbandwhitemale0035united-states
2213867self-emp-inc13widowedother-serviceunmarriedwhitefemale0035united-states
1143656self-emp-not-inc9married-spouse-absentexec-managerialnot-in-familywhitemale0070united-states
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status \\\n", + "21102 39 self-emp-inc 10 divorced \n", + "21469 35 private 13 married-civ-spouse \n", + "20815 31 private 13 married-civ-spouse \n", + "22138 67 self-emp-inc 13 widowed \n", + "11436 56 self-emp-not-inc 9 married-spouse-absent \n", + "\n", + " occupation relationship race sex capital_gain \\\n", + "21102 craft-repair not-in-family white male 0 \n", + "21469 adm-clerical husband white male 0 \n", + "20815 prof-specialty husband white male 0 \n", + "22138 other-service unmarried white female 0 \n", + "11436 exec-managerial not-in-family white male 0 \n", + "\n", + " capital_loss hours_per_week native_country \n", + "21102 0 99 united-states \n", + "21469 0 40 united-states \n", + "20815 0 35 united-states \n", + "22138 0 35 united-states \n", + "11436 0 70 united-states " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "manager.X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 26029 entries, 25252 to 7084\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 26029 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 26029 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 26029 non-null int32 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 26029 non-null category\n", + "dtypes: category(7), int16(1), int32(1), int8(3)\n", + "memory usage: 613.3 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "manager.X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧭 FASE 3.4: Motor de Estrategia de Validación (Cross-Validation) ===\n", + " 🔍 Analizando topología de la matriz para Validación Cruzada...\n", + " ⚖️ Matriz transversal simple (Clasificación). Activando estratificación equilibrada.\n", + "\n", + "✅ Estrategia de Validación Definida en 0.002s:\n", + " 🎯 Esquema Final : StratifiedKFold (Mantiene proporción real de clases)\n", + " 🔪 Folds (Cortes) : 5\n", + "\n", + "📦 [MLOps] Mapa topológico de validación (Folds) guardado de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Any, List, Optional\n", + "from sklearn.model_selection import StratifiedKFold, KFold, TimeSeriesSplit, GroupKFold\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def definir_estrategia_validacion(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " n_splits: int = 5,\n", + " date_vars: Optional[List[str]] = None\n", + ") -> Tuple[Any, Optional[np.ndarray]]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.4] Esquema de Validación Inteligente (Árbitro Topológico).\n", + " - Analiza la presencia simultánea o individual de Tiempo (Fechas) e Identidad (IDs).\n", + " - Elige matemáticamente la estrategia de K-Folds más segura para evitar Fugas de Datos.\n", + " \"\"\"\n", + " if X_train.empty or y_train.empty:\n", + " logger.error(\"🛑 Error Crítico: X_train o y_train están vacíos.\")\n", + " raise ValueError(\"X_train o y_train están vacíos.\")\n", + "\n", + " logger.info(f\"=== 🧭 FASE 3.4: Motor de Estrategia de Validación (Cross-Validation) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " date_vars = date_vars or []\n", + " es_clasificacion = False\n", + " grupos_cv = None\n", + "\n", + " # ==========================================\n", + " # 1. Detección de Naturaleza del Problema (Target)\n", + " # ==========================================\n", + " if pd.api.types.is_object_dtype(y_train.dtype) or isinstance(y_train.dtype, pd.CategoricalDtype):\n", + " es_clasificacion = True\n", + " elif pd.api.types.is_numeric_dtype(y_train.dtype) and y_train.nunique() < 100:\n", + " es_clasificacion = True\n", + "\n", + " # ==========================================\n", + " # 2. Extracción de Grupos (Desde el Índice)\n", + " # ==========================================\n", + " nombre_indice = X_train.index.name\n", + " tiene_ids_reales = isinstance(X_train.index, pd.MultiIndex) or (nombre_indice is not None and nombre_indice != 'auto_id')\n", + "\n", + " if tiene_ids_reales:\n", + " if isinstance(X_train.index, pd.MultiIndex):\n", + " grupos_cv = np.array(['_'.join(map(str, idx)) for idx in X_train.index])\n", + " else:\n", + " grupos_cv = X_train.index.to_numpy()\n", + "\n", + " # ==========================================\n", + " # 3. El Árbitro Inteligente (Matriz de Decisión MLOps)\n", + " # ==========================================\n", + " estrategia_cv = None\n", + " nombre_estrategia = \"\"\n", + " tiene_tiempo = len(date_vars) > 0\n", + "\n", + " logger.info(\" 🔍 Analizando topología de la matriz para Validación Cruzada...\")\n", + "\n", + " # Escenario A: Datos de Panel (Tiempo + Identidad)\n", + " if tiene_tiempo and tiene_ids_reales:\n", + " # Sklearn no tiene un \"GroupTimeSeriesSplit\" nativo perfecto, usamos GroupKFold como la opción más segura \n", + " # para evitar que un mismo ID se filtre entre Folds, asumiendo que los Lags (Fase 14.1) ya encapsularon la historia.\n", + " estrategia_cv = GroupKFold(n_splits=n_splits)\n", + " nombre_estrategia = f\"GroupKFold (Prioridad ID sobre Tiempo - {len(np.unique(grupos_cv))} grupos)\"\n", + " logger.warning(\" ⚠️ Conflicto detectado: La matriz tiene TIEMPO y tiene IDs simultáneamente (Datos de Panel).\")\n", + " logger.info(\" ↳ Decisión Arquitectónica: Predomina el ID. Es más crítico evitar que el modelo memorice\")\n", + " logger.info(\" el futuro de un mismo paciente/ciudad. Se usará Agrupación por Identidad.\")\n", + "\n", + " # Escenario B: Serie de Tiempo Pura (Solo Tiempo, un solo protagonista)\n", + " elif tiene_tiempo and not tiene_ids_reales:\n", + " estrategia_cv = TimeSeriesSplit(n_splits=n_splits)\n", + " nombre_estrategia = \"TimeSeriesSplit (Corte Secuencial Histórico)\"\n", + " logger.info(\" ⏱️ Solo hay Tiempo (Sin IDs múltiples). Activando validación secuencial estricta.\")\n", + "\n", + " # Escenario C: Transversal Múltiple (Solo IDs, sin reloj)\n", + " elif not tiene_tiempo and tiene_ids_reales:\n", + " estrategia_cv = GroupKFold(n_splits=n_splits)\n", + " nombre_estrategia = f\"GroupKFold (Agrupado estricto por Índice - {len(np.unique(grupos_cv))} grupos)\"\n", + " logger.info(\" 🧬 Solo hay IDs (Sin reloj). Activando blindaje de identidad transversal.\")\n", + "\n", + " # Escenario D: Transversal Simple (Ni Tiempo, Ni IDs complejos)\n", + " else:\n", + " if es_clasificacion:\n", + " estrategia_cv = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + " nombre_estrategia = \"StratifiedKFold (Mantiene proporción real de clases)\"\n", + " logger.info(\" ⚖️ Matriz transversal simple (Clasificación). Activando estratificación equilibrada.\")\n", + " else:\n", + " estrategia_cv = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + " nombre_estrategia = \"Standard KFold (Corte Aleatorio Simple)\"\n", + " logger.info(\" 📈 Matriz transversal simple (Regresión). Activando partición aleatoria.\")\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo\n", + " # ==========================================\n", + " logger.info(f\"\\n✅ Estrategia de Validación Definida en {time.time() - inicio_timer:.3f}s:\")\n", + " logger.info(f\" 🎯 Esquema Final : {nombre_estrategia}\")\n", + " logger.info(f\" 🔪 Folds (Cortes) : {n_splits}\")\n", + "\n", + " if grupos_cv is not None:\n", + " logger.warning(\" ⚠️ IMPORTANTE : El motor ha devuelto el vector 'grupos_cv'. Asegúrate de inyectarlo en tu modelo.\")\n", + "\n", + " return estrategia_cv, grupos_cv\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de datos desde el manager\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos de entrenamiento (X_train/y_train). Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Extraemos las fechas detectadas de forma segura desde las rutas del manager\n", + " fechas_detectadas = []\n", + " if hasattr(manager, 'rutas'):\n", + " fechas_detectadas = manager.rutas.get('date_vars', [])\n", + "\n", + " # Generamos la estrategia y extraemos los grupos ocultos consumiendo datos del manager\n", + " cv_strategy, grupos_cv_extraidos = definir_estrategia_validacion(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " n_splits=5,\n", + " date_vars=fechas_detectadas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos generados estrictamente en el Manager\n", + " manager.grupos_cv = grupos_cv_extraidos\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('cv_strategy', cv_strategy)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['cv_strategy'] = cv_strategy\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Mapa topológico de validación (Folds) guardado de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición): Reflejamos temporalmente en variables globales por si tus celdas de abajo aún las piden\n", + " estrategia_cv = cv_strategy\n", + " grupos_cv = manager.grupos_cv\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Definición de Estrategia CV: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== ⚓ FASE 3.5: Desanclaje del Índice y Sincronización (TRAIN) ===\n", + " ✅ Completado en 0.0010s\n", + " 🗑️ Índices destruidos : Índice numérico nativo\n", + " 🔗 Sincronización : X e y (26029 filas) perfectamente alineados.\n", + "=== ⚓ FASE 3.5: Desanclaje del Índice y Sincronización (TEST) ===\n", + " ✅ Completado en 0.0008s\n", + " 🗑️ Índices destruidos : Índice numérico nativo\n", + " 🔗 Sincronización : X e y (6508 filas) perfectamente alineados.\n", + "\n", + "⚙️ Estado Global: Matrices purificadas devueltas de forma segura al PipelineManager y listas para Scikit-Learn.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple, Optional\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def desanclar_indice_estructural(\n", + " X: pd.DataFrame, \n", + " y: Optional[pd.Series] = None,\n", + " nombre_dataset: str = \"Matriz\"\n", + ") -> Tuple[pd.DataFrame, Optional[pd.Series]]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 3.5] Desanclaje del Índice y Purificación.\n", + " - Purga de Identidad: Elimina los IDs del índice para liberar memoria y evitar \n", + " que transformadores de Scikit-Learn/Categorical Encoders fallen por desalineación.\n", + " - Sincronización Estricta: Resetea (X, y) en paralelo garantizando la topología.\n", + " - Arquitectura Modular: Se ejecuta por separado para Train y Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(f\"🛑 Error Crítico: La matriz X ({nombre_dataset}) está vacía o es inválida.\")\n", + " raise ValueError(f\"La matriz X ({nombre_dataset}) está vacía o es inválida.\")\n", + "\n", + " logger.info(f\"=== ⚓ FASE 3.5: Desanclaje del Índice y Sincronización ({nombre_dataset}) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Captura de metadatos para el reporte\n", + " nombres_indices = X.index.names\n", + "\n", + " # 2. Desanclaje de X\n", + " X_clean = X.reset_index(drop=True)\n", + " y_clean = None\n", + "\n", + " # 3. Desanclaje de y (Si existe) y Auditoría\n", + " if y is not None:\n", + " if y.empty:\n", + " logger.error(f\"🛑 Error Crítico: La variable objetivo y ({nombre_dataset}) está vacía.\")\n", + " raise ValueError(f\"La variable objetivo y ({nombre_dataset}) está vacía.\")\n", + "\n", + " y_clean = y.reset_index(drop=True)\n", + " assert len(X_clean) == len(y_clean), f\"🚨 Ruptura dimensional en {nombre_dataset} detectada tras desanclaje.\"\n", + "\n", + " # ==========================================\n", + " # Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\" ✅ Completado en {tiempo_total:.4f}s\")\n", + " if nombres_indices and nombres_indices[0] is not None:\n", + " logger.info(f\" 🗑️ Índices destruidos : {list(nombres_indices)}\")\n", + " else:\n", + " logger.info(f\" 🗑️ Índices destruidos : Índice numérico nativo\")\n", + "\n", + " if y is not None:\n", + " logger.info(f\" 🔗 Sincronización : X e y ({len(X_clean)} filas) perfectamente alineados.\")\n", + " else:\n", + " logger.info(f\" 🔗 Sincronización : X ({len(X_clean)} filas) desanclada de forma independiente.\")\n", + "\n", + " return X_clean, y_clean\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación limpia y estricta usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación segura de atributos en el Manager\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene las matrices cargadas. Ejecuta la división Train/Test (Fase 3.3).\")\n", + "\n", + " # 2. Desanclamos TRAIN extrayendo los datos del Manager\n", + " X_train_clean, y_train_clean = desanclar_indice_estructural(\n", + " X=manager.X_train, \n", + " y=manager.y_train,\n", + " nombre_dataset=\"TRAIN\"\n", + " )\n", + "\n", + " # 3. Desanclamos TEST extrayendo los datos del Manager\n", + " X_test_clean, y_test_clean = desanclar_indice_estructural(\n", + " X=manager.X_test, \n", + " y=manager.y_test,\n", + " nombre_dataset=\"TEST\"\n", + " )\n", + "\n", + " # 4. Guardamos los resultados purificados de vuelta en el Manager\n", + " manager.X_train = X_train_clean\n", + " manager.y_train = y_train_clean\n", + " manager.X_test = X_test_clean\n", + " manager.y_test = y_test_clean\n", + "\n", + " logger.info(\"\\n⚙️ Estado Global: Matrices purificadas devueltas de forma segura al PipelineManager y listas para Scikit-Learn.\")\n", + "\n", + " # (Transición): Reflejamos en variables globales por si tus celdas de abajo aún las piden\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " y_test = manager.y_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except AssertionError as assert_err:\n", + " logger.error(f\"🛑 Falla Crítica de Integridad Matemática: {assert_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Desanclaje: {e}\")\n", + "\n", + "\n", + "# # FASE 2: Exploración Visual y Pre-procesamiento de Texto\n", + "# Entendemos el negocio, limpiamos el ruido obvio y preparamos las categorías." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 📊 FASE 4.1: Diagnóstico MLOps del Target ('income') ===\n", + " 🧠 Naturaleza Detectada: Clasificación Binaria (2 clases)\n", + " 📈 Clase Mayoritaria : '<=50k' (75.9%)\n", + " 📉 Clase Minoritaria : '>50k' (24.1%)\n", + " ⚖️ Imbalance Ratio (IR): 1:3.15 (Por cada minoría hay 3.2 mayorías)\n", + "\n", + " 🚨 DIAGNÓSTICO ESTRATÉGICO PARA FASE 6:\n", + " [ALERTA AMARILLA] Desbalance Moderado. Se sugiere activar Class Weights en LightGBM/XGBoost.\n", + "\n", + "⏱️ Diagnóstico completado en 0.006s\n", + "📦 [MLOps] Clase minoritaria '>50k' capturada en el Manager y lista para Fase 4.3.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt # El único import correcto para gráficos\n", + "import seaborn as sns\n", + "import time\n", + "import warnings\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def diagnosticar_balance_target(y: pd.Series, nombre_target: str = \"Target\"):\n", + " \"\"\"\n", + " [FASE 2 - Paso 4.1] Radiografía Estadística y Diagnóstico del Target.\n", + " - IA Analítica: Detecta automáticamente si el problema es Regresión, Binario o Multiclase.\n", + " - Diagnóstico MLOps: Calcula el Imbalance Ratio (IR) y emite alertas estratégicas adaptadas al tipo.\n", + " - Extracción Automática: Retorna la clase minoritaria para ser usada en fases posteriores.\n", + " \"\"\"\n", + " if y is None or y.empty:\n", + " logger.error(\"🛑 Error Crítico: El vector objetivo (y) está vacío o no existe.\")\n", + " raise ValueError(\"El vector objetivo (y) está vacío o no existe.\")\n", + "\n", + " logger.info(f\"=== 📊 FASE 4.1: Diagnóstico MLOps del Target ('{nombre_target}') ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # Configuración estética profesional\n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\", palette=\"muted\")\n", + " warnings.simplefilter(\"ignore\", category=FutureWarning)\n", + "\n", + " # Variable para guardar la clase que retornaremos\n", + " clase_minoritaria_detectada = None\n", + "\n", + " # ==========================================\n", + " # 1. Detección Inteligente de la Topología\n", + " # ==========================================\n", + " es_clasificacion = False\n", + "\n", + " # Soporte ultra-robusto para inferir clasificación\n", + " if pd.api.types.is_object_dtype(y.dtype) or isinstance(y.dtype, pd.CategoricalDtype) or pd.api.types.is_bool_dtype(y.dtype):\n", + " es_clasificacion = True\n", + " elif pd.api.types.is_numeric_dtype(y.dtype) and y.nunique(dropna=True) <= 20: # Si es número pero tiene pocas opciones, es clasificación\n", + " es_clasificacion = True\n", + "\n", + " if MODO_VISUAL:\n", + " plt.figure(figsize=(10, 5), dpi=100)\n", + "\n", + " # ==========================================\n", + " # 2.A. Ruta AutoML para CLASIFICACIÓN\n", + " # ==========================================\n", + " if es_clasificacion:\n", + " conteo = y.value_counts(dropna=True)\n", + " porcentajes = y.value_counts(normalize=True, dropna=True) * 100\n", + "\n", + " # Extraemos la clase con menos registros sin importar el tipo\n", + " clase_minoritaria_detectada = conteo.index[-1]\n", + "\n", + " # --- BIFURCACIÓN 1: BINARIO EXACTO (2 CLASES) ---\n", + " if len(conteo) == 2:\n", + " clase_mayoritaria = conteo.index[0]\n", + " imbalance_ratio = conteo.iloc[0] / conteo.iloc[-1]\n", + "\n", + " logger.info(f\" 🧠 Naturaleza Detectada: Clasificación Binaria (2 clases)\")\n", + " logger.info(f\" 📈 Clase Mayoritaria : '{clase_mayoritaria}' ({porcentajes.iloc[0]:.1f}%)\")\n", + " logger.info(f\" 📉 Clase Minoritaria : '{clase_minoritaria_detectada}' ({porcentajes.iloc[-1]:.1f}%)\")\n", + " logger.info(f\" ⚖️ Imbalance Ratio (IR): 1:{imbalance_ratio:.2f} (Por cada minoría hay {imbalance_ratio:.1f} mayorías)\")\n", + "\n", + " logger.info(\"\\n 🚨 DIAGNÓSTICO ESTRATÉGICO PARA FASE 6:\")\n", + " if imbalance_ratio > 9: \n", + " logger.warning(\" [ALERTA ROJA] Desbalance Severo. Requisito obligatorio: Aplicar SMOTE o Class Weights extremos.\")\n", + " elif imbalance_ratio > 3: \n", + " logger.warning(\" [ALERTA AMARILLA] Desbalance Moderado. Se sugiere activar Class Weights en LightGBM/XGBoost.\")\n", + " else:\n", + " logger.info(\" [VERDE] Balance Aceptable. No se requieren técnicas de sobre-muestreo.\")\n", + "\n", + " # --- BIFURCACIÓN 2: MULTICLASE (3 O MÁS CLASES) ---\n", + " elif len(conteo) >= 3:\n", + " clase_dominante = conteo.index[0]\n", + " imbalance_ratio_extremo = conteo.iloc[0] / conteo.iloc[-1]\n", + "\n", + " logger.info(f\" 🧠 Naturaleza Detectada: Clasificación Multiclase ({len(conteo)} clases únicas)\")\n", + " logger.info(f\" 👑 Clase Dominante : '{clase_dominante}' ({porcentajes.iloc[0]:.1f}%)\")\n", + " logger.info(f\" ⚠️ Clase más débil : '{clase_minoritaria_detectada}' ({porcentajes.iloc[-1]:.1f}%)\")\n", + " logger.info(f\" ⚖️ IR Extremo (Max/Min): 1:{imbalance_ratio_extremo:.2f} (Brecha entre el mayor y el menor)\")\n", + "\n", + " logger.info(\"\\n 🚨 DIAGNÓSTICO ESTRATÉGICO MULTICLASE PARA FASE 6:\")\n", + " if imbalance_ratio_extremo > 9: \n", + " logger.warning(\" [ALERTA ROJA] Desbalance Severo Multiclase. La clase más débil está casi extinta. Requisito: SMOTE Multiclase o pesos balanceados.\")\n", + " elif imbalance_ratio_extremo > 3: \n", + " logger.warning(\" [ALERTA AMARILLA] Desbalance Moderado. Ciertas clases tienen poca representación. Sugerencia: Evaluar usando F1-Macro.\")\n", + " else:\n", + " logger.info(\" [VERDE] Balance Aceptable. Las clases están distribuidas de forma segura.\")\n", + "\n", + " # --- BIFURCACIÓN 3: ERROR DE VARIANZA CERO ---\n", + " else:\n", + " logger.error(\" 🛑 [ERROR CRÍTICO] Target de una sola clase (Varianza Cero). El modelo no puede aprender a discriminar.\")\n", + "\n", + " if MODO_VISUAL:\n", + " # 🚀 FIX MLOps: Forzamos el 'order' para que Seaborn dibuje de mayor a menor frecuencia\n", + " ax = sns.barplot(x=conteo.index, y=conteo.values, order=conteo.index, edgecolor=\".2\")\n", + " plt.title(f\"Distribución de Clases: {nombre_target}\", fontsize=14, pad=15)\n", + " plt.ylabel(\"Frecuencia (N° de filas)\")\n", + "\n", + " # 🚀 FIX MLOps: Cálculo matemático directo. Extraemos la altura de la barra dibujada \n", + " # y calculamos el % en tiempo real. Cero posibilidad de desfase.\n", + " total_filas = len(y.dropna())\n", + " for p in ax.patches:\n", + " altura_barra = p.get_height()\n", + " pct_real = (altura_barra / total_filas) * 100\n", + "\n", + " ax.annotate(f'{pct_real:.1f}%', \n", + " (p.get_x() + p.get_width() / 2., altura_barra), \n", + " ha='center', va='bottom', fontsize=11, color='black', xytext=(0, 5), \n", + " textcoords='offset points')\n", + "\n", + " # ==========================================\n", + " # 2.B. Ruta AutoML para REGRESIÓN\n", + " # ==========================================\n", + " else:\n", + " media = y.mean()\n", + " mediana = y.median()\n", + " sesgo = y.skew()\n", + "\n", + " logger.info(f\" 🧠 Naturaleza Detectada: Regresión (Valores continuos)\")\n", + " logger.info(f\" 📏 Media : {media:.2f}\")\n", + " logger.info(f\" 📍 Mediana : {mediana:.2f}\")\n", + " logger.info(f\" 📐 Sesgo : {sesgo:.2f}\")\n", + "\n", + " if MODO_VISUAL:\n", + " # Histograma con curva de densidad (KDE)\n", + " sns.histplot(y, kde=True, bins=50, color='steelblue')\n", + " plt.axvline(media, color='red', linestyle='--', label=f'Media: {media:.2f}')\n", + " plt.axvline(mediana, color='green', linestyle='-', label=f'Mediana: {mediana:.2f}')\n", + " plt.title(f\"Distribución Continua: {nombre_target}\", fontsize=14, pad=15)\n", + " plt.legend()\n", + "\n", + " logger.info(\"\\n 🚨 DIAGNÓSTICO ESTRATÉGICO PARA FASE 6:\")\n", + " if abs(sesgo) > 1:\n", + " logger.warning(\" [ALERTA AMARILLA] Cola pesada detectada (Sesgo alto). Se sugiere evaluar Log-Transform (np.log1p) antes de entrenar.\")\n", + " else:\n", + " logger.info(\" [VERDE] Distribución simétrica aceptable.\")\n", + "\n", + " # ==========================================\n", + " # 3. Finalización\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " plt.tight_layout()\n", + " plt.show()\n", + " logger.debug(\"Visualización de distribución de Target completada.\")\n", + " else:\n", + " plt.close() # Liberar memoria de la figura en Headless/Producción\n", + " \n", + " logger.info(f\"\\n⏱️ Diagnóstico completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # Retornamos la clase minoritaria al entorno\n", + " return clase_minoritaria_detectada\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación del vector objetivo en el Manager\n", + " if getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargado el vector 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # AUTO-DETECCIÓN DEL NOMBRE DEL TARGET (De los pasos anteriores, o por defecto)\n", + " if hasattr(manager.y_train, 'name') and manager.y_train.name:\n", + " nombre_target_heredado = manager.y_train.name\n", + " elif hasattr(manager, 'rutas') and 'target_name' in manager.rutas:\n", + " nombre_target_heredado = manager.rutas['target_name']\n", + " else:\n", + " nombre_target_heredado = 'Target_Manager'\n", + "\n", + " # Ejecutamos la radiografía usando el target almacenado en el manager\n", + " clase_minoritaria_global = diagnosticar_balance_target(\n", + " y=manager.y_train, \n", + " nombre_target=nombre_target_heredado \n", + " )\n", + "\n", + " if clase_minoritaria_global is not None:\n", + " # Guardamos la clase minoritaria en la memoria del manager (rutas) para usarla en el futuro\n", + " if not hasattr(manager, 'rutas'):\n", + " manager.rutas = {}\n", + " manager.rutas['clase_minoritaria'] = clase_minoritaria_global\n", + " logger.info(f\"📦 [MLOps] Clase minoritaria '{clase_minoritaria_global}' capturada en el Manager y lista para Fase 4.3.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Diagnóstico: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🔬 FASE 4.2: Auditoría Integral y Mapa de Calor de Varianza (Agnóstico) ===\n", + "\n", + "### 🔢 1. Variables Numéricas (Anomalías de Signo y Outliers Extremos)\n", + " ☄️ [ANOMALÍA GRAVITACIONAL] 'capital_loss': Máximo (4356.0) está a >10 desviaciones estándar de la media. Extremo absurdo.\n", + " ☄️ [ANOMALÍA GRAVITACIONAL] 'capital_gain': Máximo (99999.0) está a >10 desviaciones estándar de la media. Extremo absurdo.\n", + " 🤖 [CÓDIGO SISTEMA LEGACY] 'capital_gain': Máximo (99999.0) parece un NaN codificado por sistemas antiguos (999...).\n", + "\n", + " count mean std min 25% 50% 75% max top freq % Moda\n", + "capital_loss 26029.00 88.63 406.63 0.00 0.00 0.00 0.00 4356.00 0 24797 95.27\n", + "capital_gain 26029.00 1095.66 7466.78 0.00 0.00 0.00 0.00 99999.00 0 23847 91.62\n", + "hours_per_week 26029.00 40.44 12.29 1.00 40.00 40.00 45.00 99.00 40 12194 46.85\n", + "education_num 26029.00 10.08 2.57 1.00 9.00 10.00 12.00 16.00 9 8383 32.21\n", + "age 26029.00 38.50 13.62 17.00 28.00 37.00 47.00 90.00 36 725 2.79\n", + "--------------------------------------------------------------------------------\n", + "\n", + "### 🔠 2. Variables Categóricas (Ruido y Máscaras Regex)\n", + " 🎭 [MÁSCARA DETECTADA] 'native_country': Contiene nulos camuflados ('?').\n", + " 🎭 [MÁSCARA DETECTADA] 'workclass': Contiene nulos camuflados ('?').\n", + " 🎭 [MÁSCARA DETECTADA] 'occupation': Contiene nulos camuflados ('?').\n", + "\n", + " count unique top freq % Moda\n", + "native_country 26029 41 united-states 23334 89.65\n", + "race 26029 5 white 22214 85.34\n", + "income 26029 2 <=50k 19758 75.91\n", + "workclass 26029 9 private 18182 69.85\n", + "sex 26029 2 male 17440 67.00\n", + "marital_status 26029 7 married-civ-spouse 11975 46.01\n", + "relationship 26029 6 husband 10569 40.60\n", + "occupation 26029 15 prof-specialty 3315 12.74\n", + "--------------------------------------------------------------------------------\n", + "\n", + "### 🛑 Total de Anomalías Inter-Dominio Detectadas: 6\n", + "💡 Acción: Utiliza esta información para el Paso 8 (Desenmascarar Nulos) y el Paso 12 (Outliers).\n", + "\n", + "⏱️ Auditoría Integral completada en 0.078s\n", + "\n", + "📦 [MLOps] Resultados de la auditoría de dominio guardados en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import re\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def auditar_logica_dominio_integral(X: pd.DataFrame, y: pd.Series = None):\n", + " \"\"\"\n", + " [FASE 2 - Paso 4.2] Escáner AutoML Multidimensional Agolnóstico de Anomalías de Distribución.\n", + " - Arquitectura Modular: Analiza Numéricos, Categóricos, Fechas y Booleanos independientemente de los nombres de columnas.\n", + " - Inteligencia Estadística: Detecta valores imposibles (ej. negativos donde no debe), \n", + " outliers extremos (fences), varianza cero y fechas huérfanas/futuras.\n", + " - Visualización Térmica: Aplica Heatmap de degradado al % de dominancia (Moda) si está en Jupyter.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz de características (X) está vacía.\")\n", + " raise ValueError(\"La matriz de características (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🔬 FASE 4.2: Auditoría Integral y Mapa de Calor de Varianza (Agnóstico) ===\")\n", + " inicio_timer = time.time()\n", + " alertas_totales = 0\n", + " diccionario_resultados = {} \n", + "\n", + " # Ensamblaje temporal blindado de X e y\n", + " df_analisis = X.copy()\n", + " if y is not None:\n", + " target_name = y.name if y.name else 'Target_y'\n", + " # Evitamos colisiones de nombres\n", + " if target_name in df_analisis.columns: target_name = f\"{target_name}_TargetInyectado\"\n", + " df_analisis[target_name] = y\n", + "\n", + " total_filas = len(df_analisis)\n", + "\n", + " # ==========================================\n", + " # Funciones Auxiliares de Visualización (Blindadas)\n", + " # ==========================================\n", + " def inyectar_moda_y_ordenar(df_stats, cols, df_origen):\n", + " tops, freqs = [], []\n", + " for c in cols:\n", + " vc = df_origen[c].value_counts(dropna=True)\n", + " if not vc.empty:\n", + " tops.append(vc.index[0])\n", + " freqs.append(vc.iloc[0])\n", + " else:\n", + " tops.append(np.nan); freqs.append(0)\n", + " if 'top' not in df_stats.columns: df_stats['top'] = tops\n", + " if 'freq' not in df_stats.columns: df_stats['freq'] = freqs\n", + " df_stats['% Moda'] = (df_stats['freq'].astype(float) / total_filas) * 100\n", + " return df_stats.sort_values(by='% Moda', ascending=False)\n", + "\n", + " def mostrar_tabla_con_gradiente(df_stats):\n", + " if MODO_VISUAL:\n", + " estilo = df_stats.style.background_gradient(\n", + " subset=['% Moda'], cmap='YlOrRd'\n", + " ).format({'% Moda': '{:.2f}%', 'freq': '{:.0f}'})\n", + " display(estilo)\n", + " # Log silencioso de la tabla para el servidor\n", + " logger.debug(\"\\n\" + df_stats.to_string(float_format=\"{:.2f}\".format))\n", + " else:\n", + " # Texto plano seguro para servidores Headless\n", + " logger.info(\"\\n\" + df_stats.to_string(float_format=\"{:.2f}\".format))\n", + "\n", + " # ==========================================\n", + " # 1. Análisis de Variables Numéricas (Inteligencia Híbrida)\n", + " # ==========================================\n", + " num_cols = df_analisis.select_dtypes(include=[np.number]).columns\n", + " if len(num_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 🔢 1. Variables Numéricas (Anomalías de Signo y Outliers Extremos)\"))\n", + " else:\n", + " logger.info(\"\\n### 🔢 1. Variables Numéricas (Anomalías de Signo y Outliers Extremos)\")\n", + " \n", + " stats_num = df_analisis[num_cols].describe().T\n", + " stats_num = inyectar_moda_y_ordenar(stats_num, num_cols, df_analisis)\n", + " diccionario_resultados['Numericas'] = stats_num\n", + "\n", + " for col in stats_num.index:\n", + " min_val = stats_num.loc[col, 'min']\n", + " max_val = stats_num.loc[col, 'max']\n", + " std_val = stats_num.loc[col, 'std']\n", + " mean_val = stats_num.loc[col, 'mean']\n", + " q3_val = stats_num.loc[col, '75%']\n", + " q1_val = stats_num.loc[col, '25%']\n", + "\n", + " # --- 1. Signos Imposibles ---\n", + " if min_val < 0:\n", + " logger.warning(f\" 🚨 [SIGNO NEGATIVO] '{col}': Contiene valores negativos ({min_val}). Verificar lógica de negocio.\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 2. Varianza Cero ---\n", + " if std_val == 0:\n", + " logger.warning(f\" 🧊 [VARIANZA CERO] '{col}': Todos los valores son idénticos. Inútil para predictivo.\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 3. Outliers Estadísticos Extremos (IQR) ---\n", + " iqr = q3_val - q1_val\n", + " techo_iqr = q3_val + (3 * iqr)\n", + "\n", + " if iqr > 0 and max_val > techo_iqr and max_val > 100:\n", + " logger.warning(f\" 🔥 [OUTLIER IQR] '{col}': Máximo ({max_val}) rompe el techo estadístico IQR ({techo_iqr:.2f}).\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 4. Anomalías Gravitacionales (Para distribuciones dominadas por ceros donde IQR=0) ---\n", + " elif std_val > 0 and max_val > (mean_val + (10 * std_val)):\n", + " logger.warning(f\" ☄️ [ANOMALÍA GRAVITACIONAL] '{col}': Máximo ({max_val}) está a >10 desviaciones estándar de la media. Extremo absurdo.\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 5. Códigos Legacy Universales (El detector de 9999s) ---\n", + " # Convierte el número a entero (para ignorar decimales) y busca si empieza con tres o más nueves\n", + " if max_val >= 999 and re.match(r'^9{3,}', str(int(max_val))):\n", + " logger.warning(f\" 🤖 [CÓDIGO SISTEMA LEGACY] '{col}': Máximo ({max_val}) parece un NaN codificado por sistemas antiguos (999...).\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_num)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 2. Variables Categóricas (Ruido y Máscaras Regex - Intactas/Genéricas)\n", + " # ==========================================\n", + " cat_cols = df_analisis.select_dtypes(include=['object', 'category', 'string']).columns\n", + " if len(cat_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 🔠 2. Variables Categóricas (Ruido y Máscaras Regex)\"))\n", + " else:\n", + " logger.info(\"\\n### 🔠 2. Variables Categóricas (Ruido y Máscaras Regex)\")\n", + " \n", + " stats_cat = df_analisis[cat_cols].describe().T\n", + " stats_cat = inyectar_moda_y_ordenar(stats_cat, cat_cols, df_analisis)\n", + " diccionario_resultados['Categoricas'] = stats_cat\n", + "\n", + " patron_mascara = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " for col in stats_cat.index:\n", + " unicos = stats_cat.loc[col, 'unique']\n", + "\n", + " if unicos > (total_filas * 0.9):\n", + " logger.warning(f\" 🌪️ [RUIDO ABSOLUTO] '{col}': {unicos} valores únicos. Actúa como un ID basura.\")\n", + " alertas_totales += 1\n", + "\n", + " valores_distintos = df_analisis[col].dropna().astype(str).unique()\n", + " mascaras_encontradas = [val for val in valores_distintos if patron_mascara.match(val.strip())]\n", + "\n", + " if mascaras_encontradas:\n", + " ejemplos = \", \".join(f\"'{m}'\" for m in mascaras_encontradas[:3])\n", + " logger.warning(f\" 🎭 [MÁSCARA DETECTADA] '{col}': Contiene nulos camuflados ({ejemplos}).\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_cat)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 3. Variables Booleanas (Desbalance - Intactas/Genéricas)\n", + " # ==========================================\n", + " bool_cols = df_analisis.select_dtypes(include=['bool', 'boolean']).columns\n", + " if len(bool_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### ⚖️ 3. Variables Booleanas (Desbalance Extremo)\"))\n", + " else:\n", + " logger.info(\"\\n### ⚖️ 3. Variables Booleanas (Desbalance Extremo)\")\n", + " \n", + " # Los booleanos modernos (boolean) de pandas necesitan un casteo temporal a string para describe()\n", + " stats_bool = df_analisis[bool_cols].astype(str).describe().T\n", + " stats_bool = inyectar_moda_y_ordenar(stats_bool, bool_cols, df_analisis)\n", + " diccionario_resultados['Booleanas'] = stats_bool\n", + "\n", + " for col in stats_bool.index:\n", + " porcentaje_top = stats_bool.loc[col, '% Moda']\n", + " if porcentaje_top > 99.0:\n", + " logger.warning(f\" 🧊 [VARIANZA CONGELADA] '{col}': El {porcentaje_top:.1f}% es '{stats_bool.loc[col, 'top']}'. Inútil.\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_bool)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 4. Variables de Fecha (Viajes en el Tiempo)\n", + " # ==========================================\n", + " date_cols = df_analisis.select_dtypes(include=['datetime', 'datetimetz']).columns\n", + " if len(date_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📅 4. Variables de Fecha (Viajes en el Tiempo)\"))\n", + " else:\n", + " logger.info(\"\\n### 📅 4. Variables de Fecha (Viajes en el Tiempo)\")\n", + "\n", + " # 🔧 FIX APLICADO: Eliminado datetime_is_numeric=True para compatibilidad con Pandas >= 2.0\n", + " stats_date = df_analisis[date_cols].describe().T\n", + " stats_date = inyectar_moda_y_ordenar(stats_date, date_cols, df_analisis)\n", + " diccionario_resultados['Fechas'] = stats_date\n", + "\n", + " fecha_actual = pd.Timestamp.now()\n", + " fecha_pivote_antigua = pd.Timestamp('1900-01-01')\n", + "\n", + " for col in stats_date.index:\n", + " min_date, max_date = stats_date.loc[col, 'min'], stats_date.loc[col, 'max']\n", + "\n", + " if max_date > fecha_actual:\n", + " logger.warning(f\" 🚀 [VIAJE AL FUTURO] '{col}': Fecha máxima ({max_date.date()}) es mayor a hoy.\")\n", + " alertas_totales += 1\n", + "\n", + " if min_date <= fecha_pivote_antigua:\n", + " logger.warning(f\" 🦖 [FECHA FÓSIL] '{col}': Fecha mínima ({min_date.date()}). Sospecha de error.\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_date)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 5. Reporte Ejecutivo\n", + " # ==========================================\n", + " if alertas_totales == 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### ✅ [DOMINIO COMPLETAMENTE LIMPIO] Ninguna anomalía de distribución detectada.\"))\n", + " else:\n", + " logger.info(\"\\n### ✅ [DOMINIO COMPLETAMENTE LIMPIO] Ninguna anomalía de distribución detectada.\")\n", + " else:\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🛑 Total de Anomalías Inter-Dominio Detectadas: **{alertas_totales}**\"))\n", + " else:\n", + " logger.warning(f\"\\n### 🛑 Total de Anomalías Inter-Dominio Detectadas: {alertas_totales}\")\n", + " logger.info(\"💡 Acción: Utiliza esta información para el Paso 8 (Desenmascarar Nulos) y el Paso 12 (Outliers).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Auditoría Integral completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return diccionario_resultados\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta las fases previas.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Ejecutar la sonda multiespectral agnóstica extrayendo los datos del manager\n", + " dicc_describe = auditar_logica_dominio_integral(X=manager.X_train, y=manager.y_train)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar los resultados en el manager\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('diccionario_auditoria_dominio', dicc_describe)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['diccionario_auditoria_dominio'] = dicc_describe\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Resultados de la auditoría de dominio guardados en el PipelineManager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Validación Integral: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔗 Conectando MLOps: Heredando Clase Favorable '>50k' desde el Diagnóstico <<<\n", + "=== ⚖️ FASE 4.3: Auditoría de Atributos Protegidos (Línea Base de Sesgo) ===\n", + " 🛡️ Atributos Protegidos detectados automáticamente: ['age', 'workclass', 'education_num', 'marital_status', 'race', 'sex', 'native_country']\n", + " 🔒 ESTATUS: Aislados lógicamente. NO SERÁN ELIMINADOS de la matriz.\n", + "\n", + " 🎯 Clase Favorable inyectada por MLOps: '>50k'\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `age`\n", + " 🧠 [AutoML] Transformando variable continua 'age' en rangos demográficos para medir el sesgo de forma justa...\n", + " 👑 Grupo Históricamente Privilegiado: '(37.0, 47.0]' (Tasa base: 36.2%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(47.0, 90.0]': DIR = 0.94 (34.2%) | 🚨 [ALERTA] '(16.999, 28.0]': DIR = 0.11 (4.1%)\n", + " 🚨 [ALERTA] '(28.0, 37.0]': DIR = 0.68 (24.6%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'age' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `workclass`\n", + " 👑 Grupo Históricamente Privilegiado: 'self-emp-inc' (Tasa base: 54.8%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] 'federal-gov': DIR = 0.69 (37.8%) | 🚨 [ALERTA] 'private': DIR = 0.40 (21.9%)\n", + " 🚨 [ALERTA] 'local-gov': DIR = 0.55 (30.1%) | 🚨 [ALERTA] '?': DIR = 0.20 (10.8%)\n", + " 🚨 [ALERTA] 'self-emp-not-inc': DIR = 0.53 (28.9%) | ✅ [JUSTO] 'never-worked': DIR = nan (nan%)\n", + " 🚨 [ALERTA] 'state-gov': DIR = 0.48 (26.6%) | ✅ [JUSTO] 'without-pay': DIR = nan (nan%)\n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'workclass' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `education_num`\n", + " 🧠 [AutoML] Transformando variable continua 'education_num' en rangos demográficos para medir el sesgo de forma justa...\n", + " 👑 Grupo Históricamente Privilegiado: '(12.0, 16.0]' (Tasa base: 48.5%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] '(10.0, 12.0]': DIR = 0.53 (25.5%) | 🚨 [ALERTA] '(0.999, 9.0]': DIR = 0.27 (12.9%)\n", + " 🚨 [ALERTA] '(9.0, 10.0]': DIR = 0.40 (19.3%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'education_num' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `marital_status`\n", + " 👑 Grupo Históricamente Privilegiado: 'married-civ-spouse' (Tasa base: 44.8%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] 'divorced': DIR = 0.23 (10.3%) | 🚨 [ALERTA] 'separated': DIR = 0.15 (6.5%)\n", + " 🚨 [ALERTA] 'widowed': DIR = 0.20 (8.9%) | 🚨 [ALERTA] 'never-married': DIR = 0.10 (4.6%)\n", + " 🚨 [ALERTA] 'married-spouse-absent': DIR = 0.17 (7.6%) | ✅ [JUSTO] 'married-af-spouse': DIR = nan (nan%)\n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'marital_status' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `race`\n", + " 👑 Grupo Históricamente Privilegiado: 'asian-pac-islander' (Tasa base: 27.2%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] 'white': DIR = 0.94 (25.6%) | ✅ [JUSTO] 'amer-indian-eskimo': DIR = nan (nan%)\n", + " 🚨 [ALERTA] 'black': DIR = 0.45 (12.2%) | ✅ [JUSTO] 'other': DIR = nan (nan%)\n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'race' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `sex`\n", + " 👑 Grupo Históricamente Privilegiado: 'male' (Tasa base: 30.6%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] 'female': DIR = 0.36 (10.9%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'sex' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `native_country`\n", + " 👑 Grupo Históricamente Privilegiado: 'united-states' (Tasa base: 24.6%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '?': DIR = 0.98 (24.1%) | ✅ [JUSTO] 'england': DIR = nan (nan%)\n", + " 🚨 [ALERTA] 'mexico': DIR = 0.20 (4.9%) | ✅ [JUSTO] 'france': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'cambodia': DIR = nan (nan%) | ✅ [JUSTO] 'germany': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'canada': DIR = nan (nan%) | ✅ [JUSTO] 'greece': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'china': DIR = nan (nan%) | ✅ [JUSTO] 'guatemala': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'columbia': DIR = nan (nan%) | ✅ [JUSTO] 'haiti': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'cuba': DIR = nan (nan%) | ✅ [JUSTO] 'holand-netherlands': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'dominican-republic': DIR = nan (nan%) | ✅ [JUSTO] 'honduras': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'ecuador': DIR = nan (nan%) | ✅ [JUSTO] 'hong': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'el-salvador': DIR = nan (nan%) | ✅ [JUSTO] 'hungary': DIR = nan (nan%)\n", + " -------------------------------------------------------------------------------------\n", + " ✅ [JUSTO] 'india': DIR = nan (nan%) | ✅ [JUSTO] 'philippines': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'iran': DIR = nan (nan%) | ✅ [JUSTO] 'poland': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'ireland': DIR = nan (nan%) | ✅ [JUSTO] 'portugal': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'italy': DIR = nan (nan%) | ✅ [JUSTO] 'puerto-rico': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'jamaica': DIR = nan (nan%) | ✅ [JUSTO] 'scotland': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'japan': DIR = nan (nan%) | ✅ [JUSTO] 'south': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'laos': DIR = nan (nan%) | ✅ [JUSTO] 'taiwan': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'nicaragua': DIR = nan (nan%) | ✅ [JUSTO] 'thailand': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'outlying-us(guam-usvi-etc)': DIR = nan (nan%) | ✅ [JUSTO] 'trinadad&tobago': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'peru': DIR = nan (nan%) | ✅ [JUSTO] 'vietnam': DIR = nan (nan%)\n", + " -------------------------------------------------------------------------------------\n", + " ✅ [JUSTO] 'yugoslavia': DIR = nan (nan%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'native_country' para neutralizar el sesgo.\n", + "\n", + "\n", + "⏱️ Auditoría de Atributos Protegidos completada en 0.185s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def auditar_sesgo_historico(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " clase_favorable=None, \n", + " columnas_sensibles=None\n", + "):\n", + " \"\"\"\n", + " [FASE 2 - Paso 4.3] Motor AutoML de Justicia Algorítmica (Fairness).\n", + " - Escáner Legal Contextual: Detecta atributos protegidos usando delimitadores de bases de datos.\n", + " - Soporte Datetime (NUEVO): Detecta fechas de nacimiento y extrae el año automáticamente.\n", + " - Discretización Inteligente: Convierte variables continuas (como edad/año) en rangos generacionales.\n", + " - Calcula la Tasa de Aprobación Base por grupo sociodemográfico.\n", + " - Aplica la regla legal del 80% (Disparate Impact Ratio).\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices X_train o y_train están vacías.\")\n", + " raise ValueError(\"Las matrices X_train o y_train están vacías.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 4.3: Auditoría de Atributos Protegidos (Línea Base de Sesgo) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Ensamblaje temporal para análisis\n", + " df_analisis = X.copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_analisis[target_name] = y\n", + "\n", + " # ==========================================\n", + " # 🚀 2. Detección Inteligente de Atributos Protegidos (Bilingüe + Contextual)\n", + " # ==========================================\n", + " if not columnas_sensibles:\n", + " def construir_patron(palabra):\n", + " return fr'(^{palabra}$|^{palabra}_|_{palabra}$|_{palabra}_|[a-z]{palabra.capitalize()})'\n", + "\n", + " # 📚 DICCIONARIO LEGAL EXHAUSTIVO (GDPR, EEOC, Leyes Latam)\n", + " terminos_legales = [\n", + " # 1. EDAD Y NACIMIENTO (Age & Birth)\n", + " 'age', 'edad', 'dob', 'dateofbirth', 'birth', 'birthdate', 'birthyear', 'nacimiento', \n", + " 'fechanacimiento', 'anonacimiento', 'year', 'año', 'ano', 'generation', 'generacion',\n", + " # 2. SEXO, GÉNERO Y ORIENTACIÓN (Sex, Gender & Orientation)\n", + " 'sex', 'sexo', 'gender', 'genero', 'female', 'femenino', 'male', 'masculino', \n", + " 'mujer', 'hombre', 'orientation', 'orientacion', 'sexuality', 'sexualidad', \n", + " 'sexualorientation', 'orientacionsexual', 'lgbt', 'lgbtq', 'trans', 'transgender', \n", + " 'transgenero', 'nonbinary', 'nobinario', 'intersex', 'intersexual',\n", + " # 3. RAZA, ETNIA Y ORIGEN (Race, Ethnicity & Origins)\n", + " 'race', 'raza', 'ethnic', 'etnia', 'ethnicity', 'ethniccode', 'codigoetnico',\n", + " 'color', 'origin', 'origen', 'ancestry', 'ascendencia', 'minority', 'minoria', \n", + " 'indigenous', 'indigena', 'tribe', 'tribu', 'hispanic', 'hispano', 'latino', \n", + " 'afro', 'afroamerican', 'black', 'negro', 'white', 'blanco', 'asian', 'asiatico', \n", + " 'caucasian', 'caucasico',\n", + " # 4. RELIGIÓN Y CREENCIAS (Religion & Beliefs)\n", + " 'religion', 'belief', 'creencia', 'faith', 'fe', 'creed', 'credo', 'worship', 'culto',\n", + " 'muslim', 'musulman', 'jewish', 'judio', 'christian', 'cristiano', 'catholic', \n", + " 'catolico', 'islam', 'judaismo', 'cristianismo',\n", + " # 5. NACIONALIDAD E INMIGRACIÓN (Nationality & Immigration)\n", + " 'national', 'nacional', 'nationality', 'nacionalidad', 'nation', 'nacion', \n", + " 'country', 'pais', 'citizen', 'ciudadano', 'citizenship', 'ciudadania', \n", + " 'immigrant', 'inmigrante', 'immigration', 'inmigracion', 'migrant', 'migrante', \n", + " 'refugee', 'refugiado', 'asylum', 'asilo', 'alien', 'extranjero', 'native', 'nativo',\n", + " # 6. SALUD, DISCAPACIDAD Y GENÉTICA (Health, Disability & Genetics)\n", + " 'health', 'salud', 'medical', 'medico', 'disability', 'discapacidad', 'handicap', \n", + " 'minusvalia', 'disabled', 'discapacitado', 'disease', 'enfermedad', 'illness', \n", + " 'condition', 'condicion', 'genetic', 'genetico', 'pregnant', 'embarazada', \n", + " 'pregnancy', 'embarazo', 'maternity', 'maternidad', 'paternity', 'paternidad',\n", + " # 7. ESTADO CIVIL Y FAMILIA (Marital Status & Family)\n", + " 'marital', 'conyugal', 'maritalstatus', 'estadocivil', 'civilstatus', 'civil', \n", + " 'marriage', 'matrimonio', 'wedding', 'spouse', 'esposo', 'esposa', 'conyuge', \n", + " 'widow', 'viudo', 'viuda', 'divorced', 'divorciado', 'single', 'soltero', \n", + " 'family', 'familia', 'children', 'hijos', 'dependent', 'dependents', \n", + " 'dependiente', 'dependientes',\n", + " # 8. SOCIOECONÓMICO Y EDUCACIÓN (Socioeconomic & Education)\n", + " 'income', 'ingreso', 'ingresos', 'salary', 'salario', 'wage', 'sueldo', 'wealth', \n", + " 'riqueza', 'poverty', 'pobreza', 'class', 'clase', 'estrato', 'socioeconomic', \n", + " 'socioeconomico', 'education', 'educacion', 'degree', 'grado', 'school', 'escuela', \n", + " 'university', 'universidad', 'illiterate', 'analfabeto',\n", + " # 9. SISTEMA PENAL Y CUSTODIA (Legal & Custody Status)\n", + " 'legalstatus', 'estadolegal', 'custodystatus', 'estadocustodia', 'custody', 'custodia', \n", + " 'felon', 'felony', 'conviction', 'condena', 'antecedente', 'parole', 'probation',\n", + " # 10. IDIOMA Y POLÍTICA (Language, Politics & Unions)\n", + " 'language', 'idioma', 'lenguaje', 'tongue', 'lengua', 'dialect', 'dialecto',\n", + " 'politics', 'politica', 'political', 'politico', 'union', 'tradeunion', 'sindicato', 'gremio'\n", + " ]\n", + "\n", + " patrones_completos = [construir_patron(t) for t in terminos_legales]\n", + " patron_sensible = re.compile('|'.join(patrones_completos), re.IGNORECASE)\n", + "\n", + " columnas_sensibles = [col for col in X.columns if patron_sensible.search(col)]\n", + "\n", + " if not columnas_sensibles:\n", + " logger.info(\" ✅ [INFO] No se detectaron columnas sociodemográficas protegidas en la matriz.\")\n", + " return None\n", + "\n", + " logger.info(f\" 🛡️ Atributos Protegidos detectados automáticamente: {columnas_sensibles}\")\n", + " logger.info(\" 🔒 ESTATUS: Aislados lógicamente. NO SERÁN ELIMINADOS de la matriz.\\n\")\n", + "\n", + " # 3. Detección de la Clase Favorable\n", + " if clase_favorable is None:\n", + " conteo_clases = y.value_counts(normalize=True)\n", + " clase_favorable = conteo_clases.index[-1] \n", + " logger.info(f\" 🎯 Clase Favorable auto-detectada: '{clase_favorable}' (Representa el {conteo_clases.iloc[-1]*100:.1f}%)\")\n", + " else:\n", + " logger.info(f\" 🎯 Clase Favorable inyectada por MLOps: '{clase_favorable}'\")\n", + "\n", + " df_analisis['target_binario_fairness'] = (df_analisis[target_name] == clase_favorable).astype(int)\n", + " \n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\")\n", + "\n", + " # ==========================================\n", + " # 🧠 4. Motor de Medición de Disparidad (DIR) con Auto-Binning\n", + " # ==========================================\n", + " for col in columnas_sensibles:\n", + " col_analisis = col\n", + "\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🔍 Analizando Sesgo Sociodemográfico en: `{col}`\"))\n", + " logger.debug(f\"Renderizando análisis de sesgo visual para '{col}'\")\n", + " else:\n", + " logger.info(f\"\\n### 🔍 Analizando Sesgo Sociodemográfico en: `{col}`\")\n", + "\n", + " # 🚀 FIX MLOps: Interceptor de Fechas (Datetime)\n", + " if pd.api.types.is_datetime64_any_dtype(df_analisis[col]):\n", + " logger.info(f\" 🧠 [AutoML] Fecha detectada en '{col}'. Extrayendo el Año para análisis generacional...\")\n", + " col_analisis = f\"{col}_year\"\n", + " df_analisis[col_analisis] = df_analisis[col].dt.year\n", + "\n", + " # 🚀 LA MAGIA: Si es un número continuo (edad o año extraído), lo agrupamos en rangos (cuartiles)\n", + " if pd.api.types.is_numeric_dtype(df_analisis[col_analisis]) and df_analisis[col_analisis].nunique() > 10:\n", + " logger.info(f\" 🧠 [AutoML] Transformando variable continua '{col_analisis}' en rangos demográficos para medir el sesgo de forma justa...\")\n", + " col_agrupada = f\"{col_analisis}_rangos\"\n", + " df_analisis[col_agrupada] = pd.qcut(df_analisis[col_analisis], q=4, duplicates='drop').astype(str)\n", + " col_analisis = col_agrupada\n", + "\n", + " conteo_val = df_analisis[col_analisis].value_counts(normalize=True)\n", + " # Ignoramos categorías con menos del 1% para no alertar sobre valores atípicos irrelevantes\n", + " categorias_validas = conteo_val[conteo_val > 0.01].index \n", + " df_filtrado = df_analisis[df_analisis[col_analisis].isin(categorias_validas)]\n", + "\n", + " tabla_tasas = df_filtrado.groupby(col_analisis)['target_binario_fairness'].agg(['mean', 'count']).reset_index()\n", + " tabla_tasas.rename(columns={'mean': 'Tasa_Exito', 'count': 'Muestra_Total'}, inplace=True)\n", + " tabla_tasas.sort_values(by='Tasa_Exito', ascending=False, inplace=True)\n", + "\n", + " if tabla_tasas.empty:\n", + " logger.warning(f\" ⚠️ No hay suficientes datos consistentes en '{col}' para graficar sesgos.\")\n", + " continue\n", + "\n", + " grupo_privilegiado = tabla_tasas.iloc[0][col_analisis]\n", + " tasa_maxima = tabla_tasas.iloc[0]['Tasa_Exito']\n", + "\n", + " # Evitamos división por cero si la tasa máxima es 0\n", + " if tasa_maxima == 0:\n", + " tabla_tasas['DIR (Impacto Dispar)'] = 1.0\n", + " else:\n", + " tabla_tasas['DIR (Impacto Dispar)'] = tabla_tasas['Tasa_Exito'] / tasa_maxima\n", + "\n", + " # Visualización\n", + " if MODO_VISUAL:\n", + " plt.figure(figsize=(10, 4))\n", + " ax = sns.barplot(data=tabla_tasas, x=col_analisis, y='Tasa_Exito', palette='coolwarm')\n", + " plt.axhline(tasa_maxima * 0.8, color='red', linestyle='--', label='Límite Legal MLOps (Regla 80%)')\n", + " plt.title(f\"Tasa de obtención de '{clase_favorable}' por {col}\", fontsize=14)\n", + " plt.ylabel(\"Probabilidad de Éxito\")\n", + " plt.ylim(0, max(0.5, tasa_maxima + 0.1))\n", + "\n", + " # Rotamos las etiquetas si son textos largos (rangos de edad)\n", + " plt.xticks(rotation=15) \n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " # ==========================================\n", + " # Generación de Reporte y Alertas (DOBLE COLUMNA)\n", + " # ==========================================\n", + " logger.info(f\" 👑 Grupo Históricamente Privilegiado: '{grupo_privilegiado}' (Tasa base: {tasa_maxima*100:.1f}%)\")\n", + " logger.info(\" \" + \"=\"*85)\n", + "\n", + " alertas_sesgo = 0\n", + " mensajes = [] \n", + "\n", + " for _, row in tabla_tasas.iterrows():\n", + " grupo_actual = row[col_analisis]\n", + " dir_actual = row['DIR (Impacto Dispar)']\n", + "\n", + " if grupo_actual == grupo_privilegiado:\n", + " continue\n", + "\n", + " if dir_actual < 0.80:\n", + " mensajes.append(f\"🚨 [ALERTA] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + " alertas_sesgo += 1\n", + " else:\n", + " mensajes.append(f\"✅ [JUSTO] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + "\n", + " # Motor de Paginación a 2 Columnas exportado a Log\n", + " lote_size = 20\n", + " for i in range(0, len(mensajes), lote_size):\n", + " lote = mensajes[i:i + lote_size]\n", + " mitad = (len(lote) + 1) // 2 \n", + "\n", + " for j in range(mitad):\n", + " col1 = lote[j]\n", + " col2 = lote[j + mitad] if (j + mitad) < len(lote) else \"\"\n", + " logger.info(f\" {col1:<40} | {col2}\")\n", + "\n", + " if (i + lote_size) < len(mensajes):\n", + " logger.info(\" \" + \"-\"*85)\n", + "\n", + " logger.info(\" \" + \"=\"*85)\n", + " if alertas_sesgo > 0:\n", + " logger.warning(f\" 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre '{col}' para neutralizar el sesgo.\")\n", + " logger.info(\"\\n\")\n", + "\n", + " logger.info(f\"⏱️ Auditoría de Atributos Protegidos completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de datos\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Inyección Automática de la clase minoritaria descubierta en la Fase 4.1\n", + " clase_fav_dinamica = None\n", + " if hasattr(manager, 'rutas'):\n", + " clase_fav_dinamica = manager.rutas.get('clase_minoritaria', None)\n", + " \n", + " if clase_fav_dinamica:\n", + " logger.info(f\">>> 🔗 Conectando MLOps: Heredando Clase Favorable '{clase_fav_dinamica}' desde el Diagnóstico <<<\")\n", + " else:\n", + " logger.warning(\">>> ⚠️ Advertencia: No se encontró 'clase_minoritaria' en el Manager. El motor la auto-detectará. <<<\")\n", + "\n", + " # El escáner legal operará al 100% de forma autónoma con los datos del manager\n", + " auditar_sesgo_historico(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " clase_favorable=clase_fav_dinamica \n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Auditoría de Sesgo: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 👁️ FASE 5.1: Análisis Visual Geométrico (Numéricas vs Target) ===\n", + " ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada (26,029 filas).\n", + " ⚡ Protegiendo RAM: Submuestreando a 15,000 filas aleatorias solo para renderizado...\n", + " 📊 Procesando 5 variables numéricas...\n", + "\n", + " 📌 Variable 'age': Media <=50k: 36.7 | Media >50k: 44.2\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'education_num': Media <=50k: 9.6 | Media >50k: 11.6\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'capital_gain': Media <=50k: 151.3 | Media >50k: 4071.0\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'capital_loss': Media <=50k: 53.4 | Media >50k: 199.6\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'hours_per_week': Media <=50k: 38.8 | Media >50k: 45.5\n", + "--------------------------------------------------------------------------------\n", + "⏱️ Análisis Geométrico completado en 0.02s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import time\n", + "import warnings\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radiografia_visual_numericas(X: pd.DataFrame, y: pd.Series):\n", + " \"\"\"\n", + " [FASE 2 - Paso 5.1] Motor AutoML de Visualización Bivariada (Numéricas).\n", + " - Escudo RAM (NUEVO): Submuestrea datasets masivos a 15k filas solo para renderizado visual (evita colapsos en KDE).\n", + " - Genera un Dashboard 1x2 por cada variable numérica predictora.\n", + " - Izquierda: Distribución (Histograma + KDE) solapada por el Target.\n", + " - Derecha: Boxplot para análisis de Outliers y Medianas por clase.\n", + " - Ignora variables nulas o colapsadas automáticamente para evitar crashes.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices X_train o y_train están vacías.\")\n", + " raise ValueError(\"Las matrices X_train o y_train están vacías.\")\n", + "\n", + " logger.info(f\"=== 👁️ FASE 5.1: Análisis Visual Geométrico (Numéricas vs Target) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 🔧 FIX MLOps: Silenciadores de Consola\n", + " warnings.simplefilter(\"ignore\", category=FutureWarning)\n", + " warnings.filterwarnings(\"ignore\", message=\".*Glyph.*\") # 🤫 Apaga las alertas por emojis o símbolos especiales en los gráficos\n", + " warnings.filterwarnings(\"ignore\", module=\"IPython.core.pylabtools\") # 🤫 Blindaje extra para Jupyter\n", + "\n", + " # 1. Configuración de Alta Legibilidad (Seaborn)\n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\", context=\"notebook\")\n", + " paleta_target = \"Set2\" # Paleta amigable para daltonismo (Colorblind-friendly)\n", + "\n", + " # 2. Aislamiento y Ensamblaje Seguro\n", + " num_cols = X.select_dtypes(include=[np.number]).columns.tolist()\n", + " if not num_cols:\n", + " logger.warning(\" ⚠️ [INFO] No se detectaron variables numéricas para visualizar.\")\n", + " return\n", + "\n", + " df_viz = X[num_cols].copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_viz[target_name] = y\n", + "\n", + " total_filas = len(df_viz)\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO RAM: Submuestreo Visual (Big Data)\n", + " # ==========================================\n", + " MAX_PLOT_SAMPLES = 15000\n", + " if total_filas > MAX_PLOT_SAMPLES:\n", + " logger.warning(f\" ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada ({total_filas:,} filas).\")\n", + " logger.info(f\" ⚡ Protegiendo RAM: Submuestreando a {MAX_PLOT_SAMPLES:,} filas aleatorias solo para renderizado...\")\n", + " df_plot = df_viz.sample(n=MAX_PLOT_SAMPLES, random_state=42)\n", + " else:\n", + " df_plot = df_viz\n", + "\n", + " logger.info(f\" 📊 Procesando {len(num_cols)} variables numéricas...\\n\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Renderizado Iterativo\n", + " # ==========================================\n", + " for col in num_cols:\n", + " # A. Filtro AutoML de Seguridad: Omitir si la varianza es cero o tiene 100% nulos\n", + " if df_viz[col].nunique() <= 1:\n", + " logger.info(f\" ⏭️ Saltando '{col}': Varianza Cero detectada (Constante).\")\n", + " continue\n", + "\n", + " # C. Inyección de Información Estadística Textual Rápida (Para los Logs)\n", + " # 🔧 MANTENIDO: Aquí SÍ usamos df_viz (matriz completa) para que el cálculo matemático sea 100% real\n", + " media_clases = df_viz.groupby(target_name)[col].mean().to_dict()\n", + " texto_medias = \" | \".join([f\"Media {k}: {v:.1f}\" for k, v in media_clases.items()])\n", + " \n", + " logger.info(f\" 📌 Variable '{col}': {texto_medias}\")\n", + "\n", + " if MODO_VISUAL:\n", + " # B. Creación del Lienzo (Dashboard 1 fila x 2 columnas)\n", + " fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(16, 5))\n", + " fig.suptitle(f\"Radiografía de: {col}\", fontsize=16, fontweight='bold', y=1.05)\n", + "\n", + " # --- PANEL IZQUIERDO: Distribución (Hist + KDE) ---\n", + " # Usamos common_norm=False para que las montañas se escalen independientemente \n", + " # y podamos ver la forma de la clase minoritaria sin que la mayoritaria la aplaste.\n", + " # 🔧 FIX: Usamos df_plot (ligero) en vez de df_viz\n", + " sns.histplot(\n", + " data=df_plot, x=col, hue=target_name, \n", + " kde=True, element=\"step\", stat=\"density\", common_norm=False, \n", + " palette=paleta_target, alpha=0.4, ax=axes[0]\n", + " )\n", + " axes[0].set_title(f\"Distribución y Densidad (KDE)\", fontsize=13)\n", + " axes[0].set_ylabel(\"Densidad Probabilística\")\n", + " axes[0].set_xlabel(col)\n", + "\n", + " # --- PANEL DERECHO: Boxplot (Outliers y Medianas) ---\n", + " # 🔧 FIX: Usamos df_plot (ligero) en vez de df_viz\n", + " sns.boxplot(\n", + " data=df_plot, x=target_name, y=col, \n", + " palette=paleta_target, showmeans=True, \n", + " meanprops={\"marker\":\"o\", \"markerfacecolor\":\"white\", \"markeredgecolor\":\"black\", \"markersize\":\"8\"},\n", + " ax=axes[1]\n", + " )\n", + " axes[1].set_title(f\"Caja y Bigotes (Separación de Clases)\", fontsize=13)\n", + " axes[1].set_ylabel(col)\n", + " axes[1].set_xlabel(\"Target Class\")\n", + " \n", + " plt.figtext(0.5, -0.05, f\"Estadística Exacta (100% de datos) ➔ {texto_medias}\", ha=\"center\", fontsize=11, \n", + " bbox={\"facecolor\":\"orange\", \"alpha\":0.2, \"pad\":5})\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " logger.debug(f\"Renderizado visual del dashboard para '{col}' completado.\")\n", + " else:\n", + " logger.debug(f\"Renderizado visual omitido para '{col}' (MODO_VISUAL=False).\")\n", + " \n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 🔧 Restauramos las advertencias generales al finalizar\n", + " warnings.filterwarnings(\"default\", message=\".*Glyph.*\")\n", + "\n", + " logger.info(f\"⏱️ Análisis Geométrico completado en {time.time() - inicio_timer:.2f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Ejecutar el motor de visualización alimentándolo directamente desde el manager\n", + " radiografia_visual_numericas(X=manager.X_train, y=manager.y_train)\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la visualización: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🔠 FASE 5.2: Análisis Visual (Categóricas vs Target) ===\n", + " ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada (26,029 filas).\n", + " ⚡ Protegiendo RAM: Extrayendo muestra de 15,000 filas para gráficos de volumen...\n", + " 📊 Procesando Dashboards para 7 variables categóricas...\n", + "\n", + " 📌 Top 5 Tasas de Éxito en 'workclass': self-emp-inc: 54.8% | federal-gov: 37.8% | local-gov: 30.1% | self-emp-not-inc: 28.9% | state-gov: 26.6%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'marital_status': married-civ-spouse: 44.8% | married-af-spouse: 42.1% | divorced: 10.3% | widowed: 8.9% | married-spouse-absent: 7.6%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'occupation': exec-managerial: 48.2% | prof-specialty: 45.7% | sales: 26.7% | craft-repair: 22.6% | transport-moving: 19.9%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'relationship': wife: 47.4% | husband: 45.0% | not-in-family: 10.4% | unmarried: 5.9% | other-relative: 3.5%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'race': asian-pac-islander: 27.2% | white: 25.6% | black: 12.2% | amer-indian-eskimo: 11.2% | other: 9.6%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'sex': male: 30.6% | female: 10.9%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'native_country': india: 43.4% | canada: 33.3% | philippines: 33.3% | germany: 30.4% | united-states: 24.6%\n", + "----------------------------------------------------------------------------------------------------\n", + "⏱️ Análisis Categórico completado en 0.09s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import warnings\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radiografia_visual_categoricas(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " clase_favorable=None,\n", + " max_cats_visual=12 # Límite inteligente para no saturar la pantalla\n", + "):\n", + " \"\"\"\n", + " [FASE 2 - Paso 5.2] Motor AutoML de Visualización (Categóricas).\n", + " - Escudo RAM (NUEVO): Submuestrea datasets masivos a 15k filas solo para el Countplot visual.\n", + " - Izquierda: Frecuencia Absoluta (Volumen total segmentado por Target).\n", + " - Derecha: Target Rate (Probabilidad de éxito), ordenado de mayor a menor (Usa 100% de los datos).\n", + " - IA Visual: Agrupa colas largas (alta cardinalidad) en 'OTROS' para mantener legibilidad.\n", + " - Resiliencia: Convierte NaNs explícitamente a texto para hacerlos visibles.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices están vacías.\")\n", + " raise ValueError(\"Las matrices están vacías.\")\n", + "\n", + " logger.info(f\"=== 🔠 FASE 5.2: Análisis Visual (Categóricas vs Target) ===\")\n", + " inicio_timer = time.time()\n", + " warnings.simplefilter(\"ignore\")\n", + " \n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\", context=\"notebook\")\n", + " paleta_target = \"Set2\"\n", + "\n", + " # 1. Aislar variables categóricas (Texto, Categorías y Booleanos)\n", + " cat_cols = X.select_dtypes(include=['object', 'category', 'string', 'bool']).columns.tolist()\n", + " if not cat_cols:\n", + " logger.warning(\" ⚠️ [INFO] No se detectaron variables categóricas para visualizar.\")\n", + " return\n", + "\n", + " # Ensamblaje Seguro\n", + " df_viz = X[cat_cols].copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_viz[target_name] = y\n", + "\n", + " # 2. Determinar la Clase Favorable (para calcular probabilidades)\n", + " if clase_favorable is None:\n", + " clase_favorable = y.value_counts().index[-1]\n", + " df_viz['target_binario'] = (df_viz[target_name] == clase_favorable).astype(int)\n", + "\n", + " total_filas = len(df_viz)\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO RAM: Muestreo Único de Alta Velocidad\n", + " # ==========================================\n", + " MAX_PLOT_SAMPLES = 15000\n", + " if total_filas > MAX_PLOT_SAMPLES:\n", + " logger.warning(f\" ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada ({total_filas:,} filas).\")\n", + " logger.info(f\" ⚡ Protegiendo RAM: Extrayendo muestra de {MAX_PLOT_SAMPLES:,} filas para gráficos de volumen...\")\n", + " # Guardamos solo los índices para aplicar el filtro rápidamente dentro del bucle\n", + " indices_muestra = df_viz.sample(n=MAX_PLOT_SAMPLES, random_state=42).index\n", + " nota_muestreo = \" (Muestra 15k)\"\n", + " else:\n", + " indices_muestra = df_viz.index\n", + " nota_muestreo = \"\"\n", + "\n", + " logger.info(f\" 📊 Procesando Dashboards para {len(cat_cols)} variables categóricas...\\n\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Renderizado Iterativo\n", + " # ==========================================\n", + " for col in cat_cols:\n", + " # A. Tratamiento de Nulos y Tipos para visualización segura\n", + " df_viz[col] = df_viz[col].astype(str).replace('nan', 'MISSING_NaN')\n", + "\n", + " # B. Filtro AutoML de Alta Cardinalidad (Protección visual)\n", + " unicos = df_viz[col].nunique()\n", + " if unicos == 1:\n", + " logger.info(f\" ⏭️ Saltando '{col}': Constante absoluta.\")\n", + " continue\n", + "\n", + " if unicos > max_cats_visual:\n", + " # Mantener el Top N y agrupar el resto en 'OTROS_AGRUPADOS'\n", + " top_categorias = df_viz[col].value_counts().nlargest(max_cats_visual - 1).index\n", + " df_viz[f\"{col}_viz\"] = df_viz[col].where(df_viz[col].isin(top_categorias), 'OTROS_AGRUPADOS')\n", + " col_plot = f\"{col}_viz\"\n", + " else:\n", + " col_plot = col\n", + "\n", + " # --- CÁLCULO DE TARGET RATE (Probabilidad de Éxito) ---\n", + " # 🔧 MANTENIDO: Calculamos la media usando el 100% de los datos (df_viz) porque groupby es ultra-rápido\n", + " tasa_exito = df_viz.groupby(col_plot)['target_binario'].mean().sort_values(ascending=False).reset_index()\n", + "\n", + " # 🚀 FIX MLOps: Inyectamos el Top 5 al archivo de log para telemetría Headless\n", + " texto_tasas = \" | \".join([f\"{row[col_plot]}: {row['target_binario']:.1%}\" for _, row in tasa_exito.head(5).iterrows()])\n", + " logger.info(f\" 📌 Top 5 Tasas de Éxito en '{col}': {texto_tasas}\")\n", + "\n", + " # C. Creación del Lienzo\n", + " if MODO_VISUAL:\n", + " fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(16, 6))\n", + " fig.suptitle(f\"Radiografía de: {col} (Clase Éxito: '{clase_favorable}')\", fontsize=16, fontweight='bold', y=1.05)\n", + "\n", + " # --- PANEL IZQUIERDO: Volumen Absoluto (Countplot) ---\n", + " # 🔧 FIX: Usamos el dataframe filtrado por el escudo de RAM\n", + " df_plot = df_viz.loc[indices_muestra]\n", + " orden_volumen = df_plot[col_plot].value_counts().index\n", + "\n", + " sns.countplot(\n", + " data=df_plot, x=col_plot, hue=target_name, \n", + " order=orden_volumen, palette=paleta_target, ax=axes[0], alpha=0.9\n", + " )\n", + " axes[0].set_title(f\"Volumen de Filas por Categoría{nota_muestreo}\", fontsize=13)\n", + " axes[0].set_ylabel(\"Frecuencia (Cantidad)\")\n", + " axes[0].set_xlabel(\"\")\n", + " axes[0].tick_params(axis='x', rotation=45)\n", + "\n", + " # --- PANEL DERECHO: Target Rate (Visualización) ---\n", + " sns.barplot(\n", + " data=tasa_exito, x=col_plot, y='target_binario', \n", + " palette=\"viridis\", ax=axes[1], edgecolor=\"black\"\n", + " )\n", + " axes[1].set_title(f\"Probabilidad de ser '{clase_favorable}' (100% Datos)\", fontsize=13)\n", + " axes[1].set_ylabel(\"Tasa de Éxito (0.0 a 1.0)\")\n", + " axes[1].set_xlabel(\"\")\n", + " axes[1].tick_params(axis='x', rotation=45)\n", + "\n", + " # Inyectar porcentajes sobre las barras\n", + " for p in axes[1].patches:\n", + " axes[1].annotate(f\"{p.get_height():.1%}\", \n", + " (p.get_x() + p.get_width() / 2., p.get_height()), \n", + " ha='center', va='bottom', fontsize=10, color='black', \n", + " xytext=(0, 4), textcoords='offset points')\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " logger.debug(f\"Renderizado visual del dashboard categórico para '{col}' completado.\")\n", + " else:\n", + " logger.debug(f\"Renderizado visual omitido para '{col}' (MODO_VISUAL=False).\")\n", + " \n", + " logger.info(\"-\" * 100)\n", + "\n", + " # Limpieza de basura temporal\n", + " cols_a_limpiar = [c for c in df_viz.columns if c.endswith('_viz') or c == 'target_binario']\n", + " if cols_a_limpiar: df_viz.drop(columns=cols_a_limpiar, inplace=True)\n", + "\n", + " logger.info(f\"⏱️ Análisis Categórico completado en {time.time() - inicio_timer:.2f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Extracción Automática de la clase minoritaria desde la memoria del Manager (rutas)\n", + " clase_fav_dinamica = None\n", + " if hasattr(manager, 'rutas'):\n", + " clase_fav_dinamica = manager.rutas.get('clase_minoritaria', None)\n", + "\n", + " # Ejecutar el motor de visualización alimentándolo desde el manager\n", + " radiografia_visual_categoricas(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " clase_favorable=clase_fav_dinamica, # Se usa la detectada en el Paso 4.1\n", + " max_cats_visual=10 # Si una variable tiene 40 países, mostrará los 9 top y 1 \"Otros\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la visualización categórica: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🌌 FASE 5.3: Dispersión Cruzada Bivariada (Pairplot) ===\n", + " ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada (26,029 filas).\n", + " ⚡ Protegiendo RAM: Muestreando 2,500 filas estratificadas para renderizado fluido...\n", + " 📊 Generando Matriz de Interacción para: ['age', 'education_num', 'capital_gain', 'capital_loss', 'hours_per_week']\n", + "\n", + "⏱️ Matriz procesada en 0.01s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radiografia_dispersion_cruzada(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " max_cols=5, \n", + " max_rows_visual=2500\n", + "):\n", + " \"\"\"\n", + " [FASE 2 - Paso 5.3] Matriz de Dispersión Cruzada AutoML (Pairplot).\n", + " - Escudo Dimensional: Filtra las columnas con mayor varianza si hay demasiadas (Evita O(N^2) gráficos).\n", + " - Escudo de RAM: Muestreo estratificado inteligente si el dataset es masivo (Evita colapso por overplotting).\n", + " - Muestra cómo interactúan las numéricas en 2D coloreadas por el Target.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices están vacías.\")\n", + " raise ValueError(\"Las matrices están vacías.\")\n", + "\n", + " logger.info(f\"=== 🌌 FASE 5.3: Dispersión Cruzada Bivariada (Pairplot) ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " import warnings\n", + " warnings.simplefilter(\"ignore\")\n", + " \n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"white\", context=\"notebook\") # Fondo blanco para no saturar con mallas\n", + " paleta_target = \"Set2\"\n", + "\n", + " # 1. Extracción y Ensamblaje Seguro\n", + " num_cols = X.select_dtypes(include=[np.number]).columns.tolist()\n", + " if not num_cols:\n", + " logger.warning(\" ⚠️ [INFO] No hay variables numéricas para cruzar.\")\n", + " return\n", + "\n", + " df_viz = X[num_cols].copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_viz[target_name] = y\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO DIMENSIONAL (Protección de Columnas)\n", + " # ==========================================\n", + " if len(num_cols) > max_cols:\n", + " logger.warning(f\" ⚠️ [ALERTA DIMENSIONAL] {len(num_cols)} numéricas detectadas. El cruce generaría {len(num_cols)**2} gráficos.\")\n", + " logger.info(f\" 🛡️ Seleccionando el Top {max_cols} con mayor varianza para evitar caos visual...\")\n", + " # Ignoramos la varianza de los posibles IDs o ceros congelados, buscamos variables dinámicas\n", + " varianzas = df_viz[num_cols].var().sort_values(ascending=False)\n", + " mejores_cols = varianzas.head(max_cols).index.tolist()\n", + " df_viz = df_viz[mejores_cols + [target_name]]\n", + " else:\n", + " mejores_cols = num_cols\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO DE RAM (Protección de Filas)\n", + " # ==========================================\n", + " total_filas = len(df_viz)\n", + " if total_filas > max_rows_visual:\n", + " logger.warning(f\" ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada ({total_filas:,} filas).\")\n", + " logger.info(f\" ⚡ Protegiendo RAM: Muestreando {max_rows_visual:,} filas estratificadas para renderizado fluido...\")\n", + "\n", + " # Fracción exacta para llegar a max_rows_visual\n", + " fraccion = max_rows_visual / total_filas\n", + "\n", + " try:\n", + " # Muestreo estratificado para no perder la proporción de la clase minoritaria\n", + " df_viz = df_viz.groupby(target_name, group_keys=False).apply(lambda x: x.sample(frac=fraccion, random_state=42))\n", + " except ValueError:\n", + " # Fallback de seguridad: Si hay una clase extremadamente pequeña que rompe la fracción, usamos random simple\n", + " df_viz = df_viz.sample(n=max_rows_visual, random_state=42)\n", + "\n", + " logger.info(f\" 📊 Generando Matriz de Interacción para: {mejores_cols}\\n\")\n", + "\n", + " # ==========================================\n", + " # 4. Motor de Renderizado Pairplot\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " # Usamos alpha para transparencia (overplotting) y s para el tamaño del punto\n", + " g = sns.pairplot(\n", + " df_viz, \n", + " hue=target_name, \n", + " palette=paleta_target, \n", + " diag_kind=\"kde\", # Montañas de densidad en la diagonal principal\n", + " corner=True, # Ocultar el triángulo superior (espejo redundante para ahorrar RAM)\n", + " plot_kws={'alpha': 0.6, 's': 20, 'edgecolor': None}\n", + " )\n", + "\n", + " g.fig.suptitle(f\"Matriz de Dispersión: ¿Cómo interactúan las variables para definir '{target_name}'?\", \n", + " y=1.02, fontsize=16, fontweight='bold')\n", + "\n", + " plt.show()\n", + " logger.debug(\"Matriz de dispersión renderizada en Jupyter con éxito.\")\n", + " else:\n", + " # Si no estamos en MODO_VISUAL, simplemente evitamos la costosa computación del PairGrid\n", + " logger.debug(\"Renderizado visual omitido (MODO_VISUAL=False). Lógica de selección ejecutada con éxito.\")\n", + " \n", + " logger.info(f\"⏱️ Matriz procesada en {time.time() - inicio_timer:.2f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Ejecuta el escáner consumiendo los datos directamente del Manager.\n", + " radiografia_dispersion_cruzada(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " max_cols=5, \n", + " max_rows_visual=2500\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Pairplot: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 💥 FASE 6.1: Cacería de Colisiones Absolutas (Ruido Irreductible) ===\n", + " 🚨 Alerta de Contradicción: 1469 filas afectadas (5.64% del dataset).\n", + " 🧠 Significado: Estas 1469 filas forman perfiles idénticos pero con ingresos opuestos.\n", + " 📉 Límite Teórico: Debido a este ruido, tu modelo NUNCA podrá alcanzar el 100% de precisión.\n", + "\n", + " 🔍 TOP 5 Perfiles con mayor nivel de colisión:\n", + "\n", + "income <=50k >50k Total_Clones\n", + "Perfil_ID (Firma) \n", + "50 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 10 8 18\n", + "47 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 9 6 15\n", + "39 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 10 5 15\n", + "51 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 13 1 14\n", + "33 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 12 2 14\n", + "----------------------------------------------------------------------------------------------------\n", + " 💡 ACCIÓN SUGERIDA (Fase 3):\n", + " En datasets tabulares, solemos DEJAR ESTAS FILAS INTACTAS. Los algoritmos como XGBoost \n", + " usarán la probabilidad (ej. si hay 8 pobres y 2 ricos en el grupo, predecirá 'pobre' con 80% de certeza).\n", + "\n", + "⏱️ Escáner de colisiones completado en 0.049s\n", + "\n", + "✅ Diagnóstico finalizado. Las matrices X e y del PipelineManager siguen intactas y balanceadas.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def cazar_colisiones_absolutas_seguro(X: pd.DataFrame, y: pd.Series):\n", + " \"\"\"\n", + " [FASE 2 - Paso 6.1] Motor AutoML de Colisiones (Error de Bayes) - V2 Optimizada.\n", + " - Busca filas donde TODAS las características (X) son idénticas, pero el Target es diferente.\n", + " - PARCHE DE RAM: Utiliza lógica de conjuntos (drop_duplicates + merge) en lugar de un \n", + " groupby multidimensional para evitar la explosión de memoria (Producto Cartesiano de Pandas).\n", + " - PARCHE PIPELINE: Devuelve la matriz original INTACTA para no perder datos.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices X_train o y_train están vacías.\")\n", + " raise ValueError(\"Las matrices X_train o y_train están vacías.\")\n", + "\n", + " logger.info(f\"=== 💥 FASE 6.1: Cacería de Colisiones Absolutas (Ruido Irreductible) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Ensamblaje Seguro de la Matriz\n", + " df_analisis = X.copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_analisis[target_name] = y\n", + " features = X.columns.tolist()\n", + " total_filas = len(df_analisis)\n", + "\n", + " # ==========================================\n", + " # 2. Lógica de Conjuntos (El Truco Anti-RAM)\n", + " # ==========================================\n", + " dups_x_mask = df_analisis.duplicated(subset=features, keep=False)\n", + " df_sospechosos = df_analisis[dups_x_mask]\n", + "\n", + " if df_sospechosos.empty:\n", + " logger.info(\" ✅ [MATRIZ PERFECTA] No hay clones de características. El Error de Bayes por colisión es 0%.\")\n", + " return X # Devolvemos la matriz intacta\n", + "\n", + " df_unicos_xy = df_sospechosos.drop_duplicates(subset=features + [target_name])\n", + "\n", + " colisiones_mask = df_unicos_xy.duplicated(subset=features, keep=False)\n", + " df_colisiones_unicas = df_unicos_xy[colisiones_mask]\n", + "\n", + " if df_colisiones_unicas.empty:\n", + " logger.info(\" ✅ [SIN CONTRADICCIONES] Hay filas duplicadas, pero todas coinciden en su Target. No hay colisiones absolutas.\")\n", + " return X # Devolvemos la matriz intacta\n", + "\n", + " claves_colision = df_colisiones_unicas[features].drop_duplicates()\n", + " df_colisiones_finales = pd.merge(df_analisis, claves_colision, on=features, how='inner')\n", + "\n", + " # ==========================================\n", + " # 3. Cálculo de Impacto\n", + " # ==========================================\n", + " filas_afectadas = len(df_colisiones_finales)\n", + " porcentaje_ruido = (filas_afectadas / total_filas) * 100\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo y Diagnóstico Seguro\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🚨 Alerta de Contradicción: **{filas_afectadas} filas** afectadas ({porcentaje_ruido:.2f}% del dataset).\"))\n", + " \n", + " # 🚀 FIX MLOps: Siempre documentar la alerta en el logger (incluso en MODO_VISUAL)\n", + " logger.warning(f\" 🚨 Alerta de Contradicción: {filas_afectadas} filas afectadas ({porcentaje_ruido:.2f}% del dataset).\")\n", + " \n", + " logger.info(f\" 🧠 Significado: Estas {filas_afectadas} filas forman perfiles idénticos pero con ingresos opuestos.\")\n", + " logger.info(f\" 📉 Límite Teórico: Debido a este ruido, tu modelo NUNCA podrá alcanzar el 100% de precisión.\\n\")\n", + "\n", + " logger.info(\" 🔍 TOP 5 Perfiles con mayor nivel de colisión:\")\n", + "\n", + " df_colisiones_finales['Perfil_ID (Firma)'] = df_colisiones_finales[features].astype(str).agg(' | '.join, axis=1)\n", + "\n", + " resumen = df_colisiones_finales.groupby('Perfil_ID (Firma)')[target_name].value_counts().unstack(fill_value=0)\n", + " resumen['Total_Clones'] = resumen.sum(axis=1)\n", + " resumen = resumen.sort_values(by='Total_Clones', ascending=False).head(5)\n", + "\n", + " if MODO_VISUAL:\n", + " display(resumen)\n", + " # Logueamos de forma silenciosa la tabla para el servidor\n", + " logger.debug(\"\\n\" + resumen.to_string())\n", + " else:\n", + " logger.info(\"\\n\" + resumen.to_string())\n", + "\n", + " logger.info(\"-\" * 100)\n", + " logger.info(\" 💡 ACCIÓN SUGERIDA (Fase 3):\")\n", + " logger.info(\" En datasets tabulares, solemos DEJAR ESTAS FILAS INTACTAS. Los algoritmos como XGBoost \")\n", + " logger.info(\" usarán la probabilidad (ej. si hay 8 pobres y 2 ricos en el grupo, predecirá 'pobre' con 80% de certeza).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Escáner de colisiones completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # ==========================================\n", + " # 🚀 CORRECCIÓN CRÍTICA: Devolver la matriz completa\n", + " # ==========================================\n", + " return X \n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de datos\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta las fases previas.\")\n", + "\n", + " # Ejecutar el análisis usando las matrices completas originales del Manager.\n", + " # NO guardamos el resultado en 'X_train' para evitar desincronizaciones de filas.\n", + " # El motor solo escanea y reporta.\n", + " _ = cazar_colisiones_absolutas_seguro(X=manager.X_train, y=manager.y_train)\n", + "\n", + " logger.info(\"\\n✅ Diagnóstico finalizado. Las matrices X e y del PipelineManager siguen intactas y balanceadas.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el escáner de colisiones: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32537 non-null int8 \n", + " 1 workclass 32537 non-null category\n", + " 2 education_num 32537 non-null int8 \n", + " 3 marital_status 32537 non-null category\n", + " 4 occupation 32537 non-null category\n", + " 5 relationship 32537 non-null category\n", + " 6 race 32537 non-null category\n", + " 7 sex 32537 non-null category\n", + " 8 capital_gain 32537 non-null int32 \n", + " 9 capital_loss 32537 non-null int16 \n", + " 10 hours_per_week 32537 non-null int8 \n", + " 11 native_country 32537 non-null category\n", + "dtypes: category(7), int16(1), int32(1), int8(3)\n", + "memory usage: 511.8 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Series name: income\n", + "Non-Null Count Dtype \n", + "-------------- ----- \n", + "32537 non-null category\n", + "dtypes: category(1)\n", + "memory usage: 32.0 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🛡️ FASE 10.1 [TRAIN]: Escudo de Alta Cardinalidad (Rare Labeling al 1.0%) ===\n", + " 🔍 Escaneando 7 variables categóricas...\n", + "\n", + " 🔧 'workclass': 2 categorías colapsadas a 'Rare' (0.1% del volumen).\n", + " ↳ 🛡️ Máscaras protegidas del colapso: ['?']\n", + " 🔧 'marital_status': 1 categorías colapsadas a 'Rare' (0.1% del volumen).\n", + " 🔧 'occupation': 2 categorías colapsadas a 'Rare' (0.5% del volumen).\n", + " ↳ 🛡️ Máscaras protegidas del colapso: ['?']\n", + " 🔧 'race': 2 categorías colapsadas a 'Rare' (1.9% del volumen).\n", + " 🌎 'native_country': 39 países minoritarios colapsados en 'Rare' (6.6% del volumen).\n", + " ↳ 🛡️ Máscaras protegidas del colapso: ['?']\n", + "--------------------------------------------------------------------------------\n", + " 📦 El diccionario 'fit' de vocabulario ha sido generado exitosamente para 5 columnas.\n", + "\n", + "⏱️ Rare Labeling completado en 0.023s\n", + "\n", + ">>> 🔒 APLICANDO VOCABULARIO A TEST <<<\n", + "=== 🛡️ FASE 10.1 [TEST]: Escudo de Alta Cardinalidad (Rare Labeling al 1.0%) ===\n", + " 🔍 Escaneando 7 variables categóricas...\n", + "\n", + " 🔒 [TEST] Vocabulario estricto aplicado. 5 variables agrupadas basándose en Train.\n", + "\n", + "⏱️ Rare Labeling completado en 0.007s\n", + "\n", + "📦 [MLOps] Matrices X_train y X_test actualizadas de forma segura en el PipelineManager. Listas para continuar.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def aplicar_rare_labeling_seguro(\n", + " X: pd.DataFrame, \n", + " umbral: float = 0.01, \n", + " etiqueta_rara: str = 'Rare',\n", + " vocabulario_aprendido: Dict = None # 🚀 FIX MLOps: El puente entre Train y Test\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.1] Motor AutoML de Rare Labeling (Agrupación de Colas Largas).\n", + " - 🚀 Muro MLOps: Aprende el vocabulario oficial en Train y lo aplica ciegamente en Test.\n", + " - Escanea columnas de texto/categóricas y agrupa categorías minoritarias (< umbral).\n", + " - MLOPS SHIELD (Regex): Auto-detecta y protege explícitamente los NaNs camuflados \n", + " (textos nulos o símbolos puros) para no destruirlos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " modo = \"TRAIN\" if vocabulario_aprendido is None else \"TEST\"\n", + " logger.info(f\"=== 🛡️ FASE 10.1 [{modo}]: Escudo de Alta Cardinalidad (Rare Labeling al {umbral*100}%) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # Operamos sobre una copia para no alterar accidentalmente memorias globales\n", + " X_transformado = X.copy()\n", + "\n", + " # 1. Aislar solo las columnas que son texto o categorías\n", + " cat_cols = X_transformado.select_dtypes(include=['object', 'category', 'string']).columns.tolist()\n", + "\n", + " if not cat_cols:\n", + " logger.info(\" ⚠️ [INFO] No se detectaron variables categóricas para agrupar.\")\n", + " return X_transformado, vocabulario_aprendido or {}\n", + "\n", + " diccionario_vocabulario = vocabulario_aprendido or {}\n", + " columnas_modificadas = 0\n", + "\n", + " # MOTOR REGEX: Atrapa nulos comunes, -1 como string, o cadenas puras de símbolos ASCII\n", + " patron_mascara = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " logger.info(f\" 🔍 Escaneando {len(cat_cols)} variables categóricas...\\n\")\n", + "\n", + " # ==========================================\n", + " # 2A. MODO TRAIN (Aprender el Vocabulario)\n", + " # ==========================================\n", + " if vocabulario_aprendido is None:\n", + " for col in cat_cols:\n", + " frecuencias = X_transformado[col].value_counts(normalize=True)\n", + "\n", + " # A. Identificar el \"Club VIP\" (Categorías que superan el umbral)\n", + " categorias_validas = frecuencias[frecuencias >= umbral].index.tolist()\n", + "\n", + " # B. ESCUDO MLOPS INTELIGENTE: Usamos la Regex para cazar máscaras\n", + " mascaras_presentes = [val for val in frecuencias.index if patron_mascara.match(str(val).strip())]\n", + "\n", + " # Inyectamos las máscaras al Club VIP para que el Rare Labeling no las toque\n", + " categorias_validas.extend(mascaras_presentes)\n", + " categorias_validas = list(set(categorias_validas)) \n", + "\n", + " # Identificar a los que van a la guillotina solo para el reporte\n", + " categorias_raras = frecuencias[~frecuencias.index.isin(categorias_validas)].index.tolist()\n", + "\n", + " if categorias_raras:\n", + " columnas_modificadas += 1\n", + " # Guardamos el vocabulario oficial en el diccionario\n", + " diccionario_vocabulario[col] = categorias_validas\n", + "\n", + " # Construimos máscara booleana protegiendo NaNs reales\n", + " mascara_nulos = X_transformado[col].isna()\n", + " mascara_reemplazo = ~X_transformado[col].isin(categorias_validas) & ~mascara_nulos\n", + "\n", + " cantidad_reemplazada = mascara_reemplazo.sum()\n", + " porcentaje_reemplazado = (cantidad_reemplazada / len(X_transformado)) * 100\n", + "\n", + " if pd.api.types.is_categorical_dtype(X_transformado[col]) and etiqueta_rara not in X_transformado[col].cat.categories:\n", + " X_transformado[col] = X_transformado[col].cat.add_categories([etiqueta_rara])\n", + "\n", + " X_transformado.loc[mascara_reemplazo, col] = etiqueta_rara\n", + "\n", + " if col == 'native_country':\n", + " logger.info(f\" 🌎 '{col}': {len(categorias_raras)} países minoritarios colapsados en '{etiqueta_rara}' ({porcentaje_reemplazado:.1f}% del volumen).\")\n", + " else:\n", + " logger.info(f\" 🔧 '{col}': {len(categorias_raras)} categorías colapsadas a '{etiqueta_rara}' ({porcentaje_reemplazado:.1f}% del volumen).\")\n", + "\n", + " if mascaras_presentes:\n", + " logger.info(f\" ↳ 🛡️ Máscaras protegidas del colapso: {mascaras_presentes}\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " if columnas_modificadas == 0:\n", + " logger.info(\" ✅ [MATRIZ ROBUSTA] Ninguna categoría cayó por debajo del umbral. No se requirió agrupación.\")\n", + " else:\n", + " logger.info(f\" 📦 El diccionario 'fit' de vocabulario ha sido generado exitosamente para {columnas_modificadas} columnas.\")\n", + "\n", + " # ==========================================\n", + " # 2B. MODO TEST (Aplicar el Vocabulario)\n", + " # ==========================================\n", + " else:\n", + " for col, categorias_validas in diccionario_vocabulario.items():\n", + " if col in X_transformado.columns:\n", + " # Construimos máscara de reemplazo basada estrictamente en el diccionario de Train\n", + " mascara_nulos = X_transformado[col].isna()\n", + " mascara_reemplazo = ~X_transformado[col].isin(categorias_validas) & ~mascara_nulos\n", + "\n", + " cantidad_reemplazada = mascara_reemplazo.sum()\n", + "\n", + " if cantidad_reemplazada > 0:\n", + " if pd.api.types.is_categorical_dtype(X_transformado[col]) and etiqueta_rara not in X_transformado[col].cat.categories:\n", + " X_transformado[col] = X_transformado[col].cat.add_categories([etiqueta_rara])\n", + "\n", + " X_transformado.loc[mascara_reemplazo, col] = etiqueta_rara\n", + " columnas_modificadas += 1\n", + "\n", + " logger.info(f\" 🔒 [TEST] Vocabulario estricto aplicado. {columnas_modificadas} variables agrupadas basándose en Train.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Rare Labeling completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_transformado, diccionario_vocabulario\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta las fases de Split.\")\n", + "\n", + " # 🚀 FIX MLOps: Aplicamos primero en Train para aprender el vocabulario consumiendo el Manager\n", + " X_train_rare, vocabulario_oficial = aplicar_rare_labeling_seguro(\n", + " X=manager.X_train, \n", + " umbral=0.01, \n", + " etiqueta_rara='Rare'\n", + " )\n", + "\n", + " # 🚀 FIX MLOps: Aplicamos ciegamente en Test usando el vocabulario aprendido\n", + " logger.info(\"\\n>>> 🔒 APLICANDO VOCABULARIO A TEST <<<\")\n", + " X_test_rare, _ = aplicar_rare_labeling_seguro(\n", + " X=manager.X_test,\n", + " umbral=0.01,\n", + " etiqueta_rara='Rare',\n", + " vocabulario_aprendido=vocabulario_oficial\n", + " )\n", + "\n", + " # Guardamos los activos actualizados en el Manager\n", + " manager.X_train = X_train_rare\n", + " manager.X_test = X_test_rare\n", + "\n", + " # Aseguramos que el diccionario de modelos de preprocesamiento exista\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " manager.modelos_preprocesamiento['vocabulario_rare_labeling'] = vocabulario_oficial\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices X_train y X_test actualizadas de forma segura en el PipelineManager. Listas para continuar.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Escudo de Cardinalidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 APLICANDO FUSIÓN SEMÁNTICA LLM A TRAIN <<<\n", + "=== 🧠 FASE 7.2: Fusión Semántica con LLMs (Extracción Estructurada) ===\n", + " ✅ [BYPASS AUTOMÁTICO] No se detectaron columnas de Texto Libre (Free Text).\n", + " El dataset contiene solo categorías estructuradas. Omitiendo inferencia LLM.\n", + "\n", + "⏱️ Análisis de texto omitido en 0.002s\n", + "\n", + ">>> 🔒 APLICANDO FUSIÓN SEMÁNTICA LLM A TEST <<<\n", + "=== 🧠 FASE 7.2: Fusión Semántica con LLMs (Extracción Estructurada) ===\n", + " ✅ [BYPASS AUTOMÁTICO] No se detectaron columnas de Texto Libre (Free Text).\n", + " El dataset contiene solo categorías estructuradas. Omitiendo inferencia LLM.\n", + "\n", + "⏱️ Análisis de texto omitido en 0.002s\n", + "\n", + "📦 [MLOps] Matrices X_train y X_test enriquecidas con LLM de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# Pydantic se usa en MLOps para forzar que el LLM devuelva la estructura exacta que necesitamos\n", + "try:\n", + " from pydantic import BaseModel, Field\n", + " PYDANTIC_DISPONIBLE = True\n", + "except ImportError:\n", + " PYDANTIC_DISPONIBLE = False\n", + "\n", + "# 1. Definimos el Esquema Estricto que le exigiremos al LLM\n", + "if PYDANTIC_DISPONIBLE:\n", + " class ExtraccionLLM(BaseModel):\n", + " sentimiento: str = Field(description=\"Clasificar como: Positivo, Negativo o Neutral\")\n", + " entidad_clave: str = Field(description=\"La palabra o concepto principal del texto\")\n", + " alerta_riesgo: bool = Field(description=\"True si el texto indica peligro, fraude o riesgo alto, False de lo contrario\")\n", + "\n", + "def fusion_semantica_llm(X: pd.DataFrame, y: pd.Series = None) -> pd.DataFrame:\n", + " \"\"\"\n", + " [FASE 2 - Paso 7.2] Motor AutoML de Fusión Semántica para Texto Libre.\n", + " - Radar Inteligente: Detecta columnas que realmente son texto libre (alta longitud y cardinalidad).\n", + " - MLOps Pipeline: Maqueta la extracción estructurada (JSON) usando un LLM ligero.\n", + " - Bypass Automático: Si no hay texto libre (ej. Dataset Adult), se omite sin romper el flujo.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧠 FASE 7.2: Fusión Semántica con LLMs (Extracción Estructurada) ===\")\n", + " inicio_timer = time.time()\n", + " X_transformado = X.copy()\n", + "\n", + " # ==========================================\n", + " # 2. Radar Inteligente de Texto Libre\n", + " # ==========================================\n", + " text_cols = X_transformado.select_dtypes(include=['object', 'string']).columns.tolist()\n", + " columnas_texto_libre = []\n", + "\n", + " for col in text_cols:\n", + " s = X_transformado[col].dropna().astype(str)\n", + " if s.empty: continue\n", + "\n", + " # Heurísticas de Texto Libre: \n", + " # 1. Longitud promedio mayor a 35 caracteres (una categoría normal mide menos)\n", + " # 2. Alta cardinalidad: Al menos el 50% de las filas tienen un texto distinto\n", + " longitud_promedio = s.str.len().mean()\n", + " ratio_unicos = s.nunique() / len(s)\n", + "\n", + " if longitud_promedio > 35 and ratio_unicos > 0.5:\n", + " columnas_texto_libre.append(col)\n", + "\n", + " if not columnas_texto_libre:\n", + " logger.info(\" ✅ [BYPASS AUTOMÁTICO] No se detectaron columnas de Texto Libre (Free Text).\")\n", + " logger.info(\" El dataset contiene solo categorías estructuradas. Omitiendo inferencia LLM.\")\n", + " logger.info(f\"\\n⏱️ Análisis de texto omitido en {time.time() - inicio_timer:.3f}s\")\n", + " return X_transformado\n", + "\n", + " logger.info(f\" 📖 [TEXTO DETECTADO] Variables de texto libre a procesar: {columnas_texto_libre}\")\n", + " if not PYDANTIC_DISPONIBLE:\n", + " logger.warning(\" ⚠️ Advertencia: Pydantic no está instalado. Instálalo para garantizar la estructura del JSON.\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Inferencia LLM (Arquitectura Mockup para Producción)\n", + " # ==========================================\n", + " def invocar_llm_local(texto: str) -> dict:\n", + " \"\"\"\n", + " Aquí iría la llamada a tu LLM local (ej. Llama.cpp, Ollama, vLLM) \n", + " o a una API si está permitido. Para el template, simulamos la respuesta.\n", + " \"\"\"\n", + " # --- SIMULACIÓN PARA QUE EL CÓDIGO CORRA ---\n", + " # Si el texto estuviera vacío o fuera un NaN\n", + " if pd.isna(texto) or str(texto).strip() in ['?', '']:\n", + " return {\"sentimiento\": \"Neutral\", \"entidad_clave\": \"Ninguna\", \"alerta_riesgo\": False}\n", + "\n", + " return {\"sentimiento\": \"Neutral\", \"entidad_clave\": \"Concepto_Genérico\", \"alerta_riesgo\": False}\n", + "\n", + " # ==========================================\n", + " # 4. Procesamiento por Lotes (Batch Processing)\n", + " # ==========================================\n", + " for col in columnas_texto_libre:\n", + " logger.info(f\" 🤖 Extrayendo semántica de '{col}'...\")\n", + "\n", + " # Extraemos las respuestas (simuladas) en una lista de diccionarios\n", + " respuestas_estructuradas = X_transformado[col].apply(invocar_llm_local)\n", + "\n", + " # Expandimos el JSON en columnas nativas de Pandas\n", + " df_extraido = pd.json_normalize(respuestas_estructuradas)\n", + " df_extraido.columns = [f\"{col}_LLM_{c}\" for c in df_extraido.columns]\n", + "\n", + " # Concatenamos las nuevas características a la matriz y eliminamos el texto crudo original\n", + " X_transformado = pd.concat([X_transformado.reset_index(drop=True), df_extraido.reset_index(drop=True)], axis=1)\n", + " X_transformado.drop(columns=[col], inplace=True)\n", + "\n", + " logger.info(f\" ↳ Creadas {len(df_extraido.columns)} nuevas columnas estructuradas.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Fusión Semántica completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_transformado\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\"\\n>>> 🚂 APLICANDO FUSIÓN SEMÁNTICA LLM A TRAIN <<<\")\n", + " # Inyectamos las columnas directamente consumiendo la matriz de entrenamiento del manager\n", + " X_train_llm = fusion_semantica_llm(X=manager.X_train)\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO FUSIÓN SEMÁNTICA LLM A TEST <<<\")\n", + " # Hacemos lo mismo para test consumiendo la matriz del manager\n", + " X_test_llm = fusion_semantica_llm(X=manager.X_test)\n", + "\n", + " # Sincronizamos las matrices enriquecidas dentro del cerebro del Manager\n", + " manager.X_train = X_train_llm\n", + " manager.X_test = X_test_llm\n", + "\n", + " # (Transición) Reflejamos en globales por compatibilidad temporal\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices X_train y X_test enriquecidas con LLM de forma segura en el PipelineManager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fusión Semántica: {e}\")\n", + "\n", + "\n", + "# # FASE 3: Ingeniería Básica y Codificación (El Puente Matemático)\n", + "# Extraemos métricas directas y convertimos TODO a números para que los imputadores funcionen." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
090?9widowed?not-in-familywhitefemale0435640united-states
182private9widowedexec-managerialnot-in-familywhitefemale0435618united-states
266?10widowed?unmarriedblackfemale0435640united-states
354private4divorcedmachine-op-inspctunmarriedwhitefemale0390040united-states
441private10separatedprof-specialtyown-childwhitefemale0390040united-states
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 90 ? 9 widowed ? \n", + "1 82 private 9 widowed exec-managerial \n", + "2 66 ? 10 widowed ? \n", + "3 54 private 4 divorced machine-op-inspct \n", + "4 41 private 10 separated prof-specialty \n", + "\n", + " relationship race sex capital_gain capital_loss hours_per_week \\\n", + "0 not-in-family white female 0 4356 40 \n", + "1 not-in-family white female 0 4356 18 \n", + "2 unmarried black female 0 4356 40 \n", + "3 unmarried white female 0 3900 40 \n", + "4 own-child white female 0 3900 40 \n", + "\n", + " native_country \n", + "0 united-states \n", + "1 united-states \n", + "2 united-states \n", + "3 united-states \n", + "4 united-states " + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 Aplicando Desenmascaramiento a TRAIN <<<\n", + "=== 🧹 FASE 8.1: Desenmascaramiento de Falsos Nulos (Missingness) ===\n", + " 🔍 Escaneando 7 variables de texto con Motor Regex...\n", + " 🎭 'workclass': 1472 máscaras ['?'] destruidas y convertidas a NaN (5.66%).\n", + " 🎭 'occupation': 1478 máscaras ['?'] destruidas y convertidas a NaN (5.68%).\n", + " 🎭 'native_country': 469 máscaras ['?'] destruidas y convertidas a NaN (1.80%).\n", + " 🔢 Escaneando variables numéricas en busca de trampas conocidas...\n", + " 💣 'capital_gain': 130 valores trampa [99999] convertidos a NaN (0.50%).\n", + "--------------------------------------------------------------------------------\n", + " ✅ [PURGA EXITOSA] Se desenmascararon 3549 celdas falsas (1.14% de la matriz total).\n", + " 🧠 El modelo ahora sabe exactamente dónde hay agujeros de información reales.\n", + "\n", + "⏱️ Desenmascaramiento completado en 0.132s\n", + ">>> 🔒 Aplicando Desenmascaramiento a TEST <<<\n", + "=== 🧹 FASE 8.1: Desenmascaramiento de Falsos Nulos (Missingness) ===\n", + " 🔍 Escaneando 7 variables de texto con Motor Regex...\n", + " 🎭 'workclass': 364 máscaras ['?'] destruidas y convertidas a NaN (5.59%).\n", + " 🎭 'occupation': 365 máscaras ['?'] destruidas y convertidas a NaN (5.61%).\n", + " 🎭 'native_country': 113 máscaras ['?'] destruidas y convertidas a NaN (1.74%).\n", + " 🔢 Escaneando variables numéricas en busca de trampas conocidas...\n", + " 💣 'capital_gain': 29 valores trampa [99999] convertidos a NaN (0.45%).\n", + "--------------------------------------------------------------------------------\n", + " ✅ [PURGA EXITOSA] Se desenmascararon 871 celdas falsas (1.12% de la matriz total).\n", + " 🧠 El modelo ahora sabe exactamente dónde hay agujeros de información reales.\n", + "\n", + "⏱️ Desenmascaramiento completado en 0.044s\n", + "\n", + "📦 [MLOps] Matrices purgadas y actualizadas de forma segura en el PipelineManager. Todos los nulos/fechas falsas son ahora np.nan o pd.NaT.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import re\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def desenmascarar_falsos_nulos(\n", + " X: pd.DataFrame, \n", + " nulos_numericos_conocidos: dict = None\n", + "):\n", + " \"\"\"\n", + " [FASE 3 - Paso 8.1] Motor AutoML para Desenmascarar Falsos Nulos.\n", + " - Caza nulos categóricos usando una Regex de símbolos ASCII y palabras clave comunes.\n", + " - Caza nulos numéricos (Outliers lógicos) inyectados vía diccionario (ej. 99999.0).\n", + " - Caza Outliers Temporales (NUEVO): Detecta fechas imposibles (ej. 1900 o 2099) y las vuelve NaT.\n", + " - Convierte todo el ruido encontrado estandarizadamente a np.nan/pd.NaT y reporta los hallazgos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧹 FASE 8.1: Desenmascaramiento de Falsos Nulos (Missingness) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # Operamos sobre una copia limpia\n", + " X_transformado = X.copy()\n", + " total_filas = len(X_transformado)\n", + "\n", + " # MOTOR REGEX: \n", + " # 1. (unknown|n/?a|null|nan|missing|none|-1|nat|) -> Palabras clave ignorando mayúsculas/minúsculas.\n", + " # 2. ^[^a-zA-Z0-9]+$ -> Cualquier cadena que NO contenga letras ni números (ej. \"?\", \"-\", \"**\", \" \").\n", + " patron_mascara = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|nat|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " celdas_desenmascaradas_totales = 0\n", + "\n", + " # ==========================================\n", + " # 1. Purga de Columnas Categóricas / Texto\n", + " # ==========================================\n", + " cat_cols = X_transformado.select_dtypes(include=['object', 'category', 'string']).columns.tolist()\n", + "\n", + " logger.info(f\" 🔍 Escaneando {len(cat_cols)} variables de texto con Motor Regex...\")\n", + "\n", + " for col in cat_cols:\n", + " evaluacion_regex = X_transformado[col].astype(str).str.strip().str.match(patron_mascara)\n", + " mascara_falsos_nulos = evaluacion_regex & X_transformado[col].notna()\n", + "\n", + " hallazgos = mascara_falsos_nulos.sum()\n", + " if hallazgos > 0:\n", + " valores_encontrados = X_transformado.loc[mascara_falsos_nulos, col].unique().tolist()\n", + " porcentaje_columna = (hallazgos / total_filas) * 100\n", + "\n", + " X_transformado.loc[mascara_falsos_nulos, col] = np.nan\n", + " celdas_desenmascaradas_totales += hallazgos\n", + " logger.warning(f\" 🎭 '{col}': {hallazgos} máscaras {valores_encontrados} destruidas y convertidas a NaN ({porcentaje_columna:.2f}%).\")\n", + "\n", + " # ==========================================\n", + " # 2. Purga de Columnas Numéricas (Trampas Lógicas)\n", + " # ==========================================\n", + " if nulos_numericos_conocidos:\n", + " logger.info(f\" 🔢 Escaneando variables numéricas en busca de trampas conocidas...\")\n", + " for col, valores_trampa in nulos_numericos_conocidos.items():\n", + " if col in X_transformado.columns:\n", + " mascara_numerica = X_transformado[col].isin(valores_trampa)\n", + " hallazgos_num = mascara_numerica.sum()\n", + "\n", + " if hallazgos_num > 0:\n", + " valores_encontrados_num = X_transformado.loc[mascara_numerica, col].unique().tolist()\n", + " porcentaje_col_num = (hallazgos_num / total_filas) * 100\n", + "\n", + " X_transformado.loc[mascara_numerica, col] = np.nan\n", + " celdas_desenmascaradas_totales += hallazgos_num\n", + " logger.warning(f\" 💣 '{col}': {hallazgos_num} valores trampa {valores_encontrados_num} convertidos a NaN ({porcentaje_col_num:.2f}%).\")\n", + "\n", + " # ==========================================\n", + " # 🚀 2.5 Purga de Fechas Ilógicas (Outliers Temporales)\n", + " # ==========================================\n", + " date_cols = X_transformado.select_dtypes(include=['datetime64', 'datetimetz', 'datetime']).columns.tolist()\n", + "\n", + " if date_cols:\n", + " logger.info(f\" ⏳ Escaneando {len(date_cols)} variables temporales en busca de fechas ilógicas...\")\n", + "\n", + " anio_actual = pd.Timestamp.now().year\n", + " umbral_pasado = 1900 # Fechas anteriores a 1900 suelen ser errores/placeholders\n", + " umbral_futuro = anio_actual + 2 # Más de 2 años en el futuro suele ser un typo\n", + "\n", + " for col in date_cols:\n", + " anios_columna = X_transformado[col].dt.year\n", + "\n", + " # Máscara inteligente ignorando NaNs preexistentes\n", + " mask_pasado = anios_columna < umbral_pasado\n", + " mask_futuro = anios_columna > umbral_futuro\n", + " mask_outliers_fechas = mask_pasado | mask_futuro\n", + "\n", + " hallazgos_fechas = mask_outliers_fechas.sum()\n", + "\n", + " if hallazgos_fechas > 0:\n", + " # Extraemos muestra para el log\n", + " valores_fechas = X_transformado.loc[mask_outliers_fechas, col].dt.strftime('%Y-%m-%d').unique().tolist()\n", + " valores_muestra = valores_fechas[:3] + [\"...\"] if len(valores_fechas) > 3 else valores_fechas\n", + " porcentaje_fechas = (hallazgos_fechas / total_filas) * 100\n", + "\n", + " # Conversión estricta a Not a Time (NaT)\n", + " X_transformado.loc[mask_outliers_fechas, col] = pd.NaT\n", + " celdas_desenmascaradas_totales += hallazgos_fechas\n", + " logger.warning(f\" 🕰️ '{col}': {hallazgos_fechas} fechas imposibles {valores_muestra} convertidas a NaT ({porcentaje_fechas:.2f}%).\")\n", + "\n", + " # ==========================================\n", + " # 3. Reporte de Impacto\n", + " # ==========================================\n", + " logger.info(\"-\" * 80)\n", + " if celdas_desenmascaradas_totales > 0:\n", + " porcentaje_total = (celdas_desenmascaradas_totales / (X_transformado.shape[0] * X_transformado.shape[1])) * 100\n", + " logger.info(f\" ✅ [PURGA EXITOSA] Se desenmascararon {celdas_desenmascaradas_totales} celdas falsas ({porcentaje_total:.2f}% de la matriz total).\")\n", + " logger.info(\" 🧠 El modelo ahora sabe exactamente dónde hay agujeros de información reales.\")\n", + " else:\n", + " logger.info(\" ✅ [MATRIZ LIMPIA] No se detectaron máscaras, valores trampa, ni fechas ilógicas.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Desenmascaramiento completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_transformado\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🚂 Aplicando Desenmascaramiento a TRAIN <<<\")\n", + " X_train_purgado = desenmascarar_falsos_nulos(\n", + " X=manager.X_train,\n", + " nulos_numericos_conocidos={'capital_gain': [99999, 99999.0]}\n", + " )\n", + "\n", + " logger.info(\">>> 🔒 Aplicando Desenmascaramiento a TEST <<<\")\n", + " X_test_purgado = desenmascarar_falsos_nulos(\n", + " X=manager.X_test,\n", + " nulos_numericos_conocidos={'capital_gain': [99999, 99999.0]}\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar en la memoria del Manager de forma segura\n", + " manager.X_train = X_train_purgado\n", + " manager.X_test = X_test_purgado\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices purgadas y actualizadas de forma segura en el PipelineManager. Todos los nulos/fechas falsas son ahora np.nan o pd.NaT.\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el desenmascaramiento: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + "dtypes: category(7), float64(1), int16(1), int8(3)\n", + "memory usage: 511.8 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + "dtypes: category(7), float64(1), int16(1), int8(3)\n", + "memory usage: 130.6 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
021NaN10never-marriedNaNown-childwhitemale0.0020united-states
141private11married-civ-spousesaleshusbandwhitemale4386.0060united-states
224private9never-marriedhandlers-cleanersunmarriedblackfemale0.0040united-states
359private9widowedprof-specialtynot-in-familywhitefemale0.0018united-states
435private9married-civ-spousesaleshusbandasian-pac-islandermale0.0188750Rare
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "0 own-child white male 0.0 0 \n", + "1 husband white male 4386.0 0 \n", + "2 unmarried black female 0.0 0 \n", + "3 not-in-family white female 0.0 0 \n", + "4 husband asian-pac-islander male 0.0 1887 \n", + "\n", + " hours_per_week native_country \n", + "0 20 united-states \n", + "1 60 united-states \n", + "2 40 united-states \n", + "3 18 united-states \n", + "4 50 Rare " + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
1062private10married-civ-spouseadm-clericalwifewhitefemale0.0040united-states
1125private13never-marriedexec-managerialown-childwhitemale0.0045united-states
1229private9divorcedmachine-op-inspctunmarriedwhitefemale0.0040united-states
1365NaN13married-civ-spouseNaNhusbandwhitemale0.0237740united-states
1450state-gov13never-marriedexec-managerialnot-in-familywhitefemale0.0040united-states
1521private10never-marriedtech-supportown-childwhitefemale0.0025Rare
1627private9married-civ-spousecraft-repairhusbandwhitemale0.0040united-states
1722private10never-marriedsalesnot-in-familywhitefemale0.0017united-states
1838private13married-civ-spouseexec-managerialhusbandwhitemale0.0055united-states
1949private13married-spouse-absentother-servicenot-in-familyasian-pac-islandermale0.0040Rare
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "10 62 private 10 married-civ-spouse adm-clerical \n", + "11 25 private 13 never-married exec-managerial \n", + "12 29 private 9 divorced machine-op-inspct \n", + "13 65 NaN 13 married-civ-spouse NaN \n", + "14 50 state-gov 13 never-married exec-managerial \n", + "15 21 private 10 never-married tech-support \n", + "16 27 private 9 married-civ-spouse craft-repair \n", + "17 22 private 10 never-married sales \n", + "18 38 private 13 married-civ-spouse exec-managerial \n", + "19 49 private 13 married-spouse-absent other-service \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "10 wife white female 0.0 0 \n", + "11 own-child white male 0.0 0 \n", + "12 unmarried white female 0.0 0 \n", + "13 husband white male 0.0 2377 \n", + "14 not-in-family white female 0.0 0 \n", + "15 own-child white female 0.0 0 \n", + "16 husband white male 0.0 0 \n", + "17 not-in-family white female 0.0 0 \n", + "18 husband white male 0.0 0 \n", + "19 not-in-family asian-pac-islander male 0.0 0 \n", + "\n", + " hours_per_week native_country \n", + "10 40 united-states \n", + "11 45 united-states \n", + "12 40 united-states \n", + "13 40 united-states \n", + "14 40 united-states \n", + "15 25 Rare \n", + "16 40 united-states \n", + "17 17 united-states \n", + "18 55 united-states \n", + "19 40 Rare " + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test[10:20]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 ENTRENANDO RASTREADORES EN TRAIN <<<\n", + "=== 🚩 FASE 8.2: Rastreadores de Nulidad (Missingness Flags & Row-wise Count) ===\n", + " 🔍 Detectadas 4 variables con agujeros de información (Modo Aprendizaje).\n", + " ⚙️ Generando rastreadores...\n", + "\n", + " ↳ Creada bandera booleana: 'is_missing_workclass'\n", + " ↳ Creada bandera booleana: 'is_missing_occupation'\n", + " ↳ Creada bandera booleana: 'is_missing_capital_gain'\n", + " ↳ Creada bandera booleana: 'is_missing_native_country'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Característica Maestra 'total_nulos_en_fila' inyectada con éxito.\n", + " 👥 Impacto: 2044 individuos (7.85%) ocultaron al menos 1 dato.\n", + " ⚠️ El récord máximo de datos faltantes en una sola persona es: 3 nulos.\n", + "\n", + "⏱️ Motor de Missingness completado en 0.014s\n", + "\n", + ">>> 🔒 APLICANDO RASTREADORES A TEST <<<\n", + "=== 🚩 FASE 8.2: Rastreadores de Nulidad (Missingness Flags & Row-wise Count) ===\n", + " 🔒 Replicando 4 rastreadores aprendidos de Train (Modo Aplicación).\n", + " ⚙️ Generando rastreadores...\n", + "\n", + " ↳ Creada bandera booleana: 'is_missing_workclass'\n", + " ↳ Creada bandera booleana: 'is_missing_occupation'\n", + " ↳ Creada bandera booleana: 'is_missing_capital_gain'\n", + " ↳ Creada bandera booleana: 'is_missing_native_country'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Característica Maestra 'total_nulos_en_fila' inyectada con éxito.\n", + " 👥 Impacto: 502 individuos (7.71%) ocultaron al menos 1 dato.\n", + " ⚠️ El récord máximo de datos faltantes en una sola persona es: 3 nulos.\n", + "\n", + "⏱️ Motor de Missingness completado en 0.011s\n", + "\n", + "🛣️ Ruteo AutoML actualizado en Manager: +4 bools, +1 nums.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def aplicar_missingness_flags(\n", + " X: pd.DataFrame, \n", + " prefijo: str = 'is_missing_',\n", + " columnas_aprendidas: list = None\n", + ") -> tuple:\n", + " \"\"\"\n", + " [FASE 3 - Paso 8.2] Motor AutoML de Rastreo de Nulos (Missingness).\n", + " - Muro de Hierro MLOps: Aprende las columnas con nulos en Train, y las replica exactamente en Test.\n", + " 1. Banderas Booleanas: Crea columnas indicadoras (1/0) para variables con nulos.\n", + " 2. Row-wise NaN Count: Inyecta una característica maestra con el total de nulos por individuo.\n", + " - MLOPS SHIELD: Usa np.int8 y retorna las listas para actualizar el enrutamiento dinámicamente.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🚩 FASE 8.2: Rastreadores de Nulidad (Missingness Flags & Row-wise Count) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_transformado = X.copy()\n", + " banderas_creadas = []\n", + "\n", + " # ==========================================\n", + " # 1. MLOps: Fit vs Transform (Alineación de Matrices)\n", + " # ==========================================\n", + " if columnas_aprendidas is None:\n", + " # MODO TRAIN (.fit): Detectamos nosotros mismos dónde hay nulos\n", + " columnas_con_nulos = X_transformado.columns[X_transformado.isna().any()].tolist()\n", + " else:\n", + " # MODO TEST (.transform): Usamos estrictamente lo que nos dictó Train\n", + " columnas_con_nulos = columnas_aprendidas\n", + "\n", + " if not columnas_con_nulos:\n", + " logger.info(\" ✅ [MATRIZ PERFECTA] No hay nulos detectados. Se omite la creación de banderas.\")\n", + " # 🚀 FIX MLOps: Retornamos una lista vacía [], NO un 'None', para que Test sepa que SÍ hubo aprendizaje.\n", + " return X_transformado, [], None, [] \n", + "\n", + " if columnas_aprendidas is None:\n", + " logger.info(f\" 🔍 Detectadas {len(columnas_con_nulos)} variables con agujeros de información (Modo Aprendizaje).\")\n", + " else:\n", + " logger.info(f\" 🔒 Replicando {len(columnas_con_nulos)} rastreadores aprendidos de Train (Modo Aplicación).\")\n", + "\n", + " logger.info(\" ⚙️ Generando rastreadores...\\n\")\n", + "\n", + " # ==========================================\n", + " # 2. Fabricación de Banderas Booleanas por Columna\n", + " # ==========================================\n", + " for col in columnas_con_nulos:\n", + " nombre_bandera = f\"{prefijo}{col}\"\n", + " # astype(np.int8) convierte True/False en 1/0 pesando solo 1 byte por fila\n", + " X_transformado[nombre_bandera] = X_transformado[col].isna().astype(np.int8)\n", + " banderas_creadas.append(nombre_bandera)\n", + " logger.info(f\" ↳ Creada bandera booleana: '{nombre_bandera}'\")\n", + "\n", + " # ==========================================\n", + " # 3. Fabricación del \"Row-wise NaN Count\" (La Variable Maestra)\n", + " # ==========================================\n", + " nombre_conteo = 'total_nulos_en_fila'\n", + "\n", + " # Calculamos cuántos nulos hay en la matriz original por cada persona\n", + " conteo_nulos_por_fila = X_transformado[columnas_con_nulos].isna().sum(axis=1)\n", + "\n", + " # Inyectamos el conteo en int8\n", + " X_transformado[nombre_conteo] = conteo_nulos_por_fila.astype(np.int8)\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo\n", + " # ==========================================\n", + " max_nulos = conteo_nulos_por_fila.max()\n", + " filas_afectadas = (conteo_nulos_por_fila > 0).sum()\n", + " porcentaje_filas = (filas_afectadas / len(X_transformado)) * 100\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 📊 Característica Maestra '{nombre_conteo}' inyectada con éxito.\")\n", + " logger.info(f\" 👥 Impacto: {filas_afectadas} individuos ({porcentaje_filas:.2f}%) ocultaron al menos 1 dato.\")\n", + " logger.warning(f\" ⚠️ El récord máximo de datos faltantes en una sola persona es: {max_nulos} nulos.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Motor de Missingness completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # Retornamos las variables nuevas (y la lista de columnas base para pasársela a Test)\n", + " return X_transformado, banderas_creadas, nombre_conteo, columnas_con_nulos\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\"\\n>>> 🚂 ENTRENANDO RASTREADORES EN TRAIN <<<\")\n", + " # En Train no le pasamos 'columnas_aprendidas' para que las descubra por sí mismo\n", + " X_train_miss, flags_nulidad, var_conteo, cols_aprendidas_train = aplicar_missingness_flags(\n", + " X=manager.X_train\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO RASTREADORES A TEST <<<\")\n", + " # En Test le forzamos la lista exacta de columnas que descubrimos en Train\n", + " X_test_miss, _, _, _ = aplicar_missingness_flags(\n", + " X=manager.X_test,\n", + " columnas_aprendidas=cols_aprendidas_train\n", + " )\n", + "\n", + " # Guardamos los resultados de vuelta en el Manager de forma segura\n", + " manager.X_train = X_train_miss\n", + " manager.X_test = X_test_miss\n", + "\n", + " # 🚀 MLOPS TIP: Actualizamos nuestra lista de rutas dinámicamente en el Manager\n", + " if not hasattr(manager, 'rutas'):\n", + " raise ValueError(\"El Manager no tiene el diccionario de 'rutas' inicializado. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " if flags_nulidad:\n", + " # Usamos list comprehension para agregar solo los flags que no estén ya en la ruta\n", + " nuevos_bools = [f for f in flags_nulidad if f not in manager.rutas['bool_vars']]\n", + " manager.rutas['bool_vars'].extend(nuevos_bools)\n", + "\n", + " if var_conteo and var_conteo not in manager.rutas['num_vars']:\n", + " manager.rutas['num_vars'].append(var_conteo)\n", + "\n", + " logger.info(f\"\\n🛣️ Ruteo AutoML actualizado en Manager: +{len(nuevos_bools)} bools, +1 nums.\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el motor de missingness: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['is_missing_workclass',\n", + " 'is_missing_occupation',\n", + " 'is_missing_capital_gain',\n", + " 'is_missing_native_country']" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "manager.rutas['bool_vars']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 17 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + "dtypes: category(7), float64(1), int16(1), int8(8)\n", + "memory usage: 638.9 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 17 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + "dtypes: category(7), float64(1), int16(1), int8(8)\n", + "memory usage: 162.3 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO INGENIERÍA EN TRAIN <<<\n", + "=== 🚀 FASE 8.3: Ingeniería de Características (Escudos Automáticos y Atajos) ===\n", + " ⚙️ [TRAIN] Escaneando variables numéricas con más de 85.0% de ceros...\n", + " 🌟 [Atajo AutoML] 'capital_gain' (92.1% ceros) -> Creada bandera: 'tiene_capital_gain'\n", + " 🌟 [Atajo AutoML] 'capital_loss' (95.3% ceros) -> Creada bandera: 'tiene_capital_loss'\n", + "\n", + " ⚙️ [TRAIN] Escaneando matriz en busca de cruces matemáticos lógicos (Auto-Discovery)...\n", + " ⚖️ [Auto-Cruce Exitoso] Creada variable 'capital_neto' (capital_gain - capital_loss)\n", + "--------------------------------------------------------------------------------\n", + " ✅ [INGENIERÍA EXITOSA] Se inyectaron 3 variables dinámicas al modelo.\n", + "\n", + "⏱️ Ingeniería completada en 0.012s\n", + "\n", + ">>> 🔒 APLICANDO INGENIERÍA A TEST <<<\n", + "=== 🚀 FASE 8.3: Ingeniería de Características (Escudos Automáticos y Atajos) ===\n", + " 🔒 [TEST] Aplicando 2 banderas aprendidas de Train...\n", + "\n", + " 🔒 [TEST] Aplicando 1 cruces aprendidos de Train...\n", + "--------------------------------------------------------------------------------\n", + " ✅ [INGENIERÍA EXITOSA] Se inyectaron 3 variables dinámicas al modelo.\n", + "\n", + "⏱️ Ingeniería completada en 0.006s\n", + "\n", + "🛣️ Ruteo AutoML actualizado en Manager: +2 bools, +1 nums.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ingenieria_banderas_negocio(\n", + " X: pd.DataFrame, \n", + " umbral_ceros: float = 0.85,\n", + " rutas_actuales: dict = None,\n", + " reglas_aprendidas: dict = None\n", + ") -> tuple:\n", + " \"\"\"\n", + " [FASE 3 - Paso 8.3] Motor AutoML de Ingeniería de Características (Auto-Descubrimiento).\n", + " - Escáner de Dispersión: Detecta y escuda variables numéricas con exceso de ceros.\n", + " - MLOPS SHIELD: Ignora inteligentemente banderas previas para evitar recursividad.\n", + " - AUTO-FEATURE CROSSES: Detecta automáticamente pares lógicos y genera variables netas.\n", + " - Alineación Train/Test: Aprende las reglas en Train y las fuerza ciegamente en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " # ---------------------------------------------------------\n", + " # SHIELD: Construimos la lista negra leyendo el historial\n", + " # ---------------------------------------------------------\n", + " columnas_ignoradas = []\n", + " if rutas_actuales and 'bool_vars' in rutas_actuales:\n", + " columnas_ignoradas.extend(rutas_actuales['bool_vars'])\n", + " if 'total_nulos_en_fila' in X.columns:\n", + " columnas_ignoradas.append('total_nulos_en_fila')\n", + "\n", + " logger.info(f\"=== 🚀 FASE 8.3: Ingeniería de Características (Escudos Automáticos y Atajos) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_transformado = X.copy()\n", + " nuevas_bools = []\n", + " nuevas_nums = []\n", + " reglas_actuales = {'columnas_bandera': [], 'parejas_cruce': []} if reglas_aprendidas is None else reglas_aprendidas\n", + "\n", + " # ==========================================\n", + " # 1. Escáner Inteligente de Banderas (Auto-Sparsity Flags)\n", + " # ==========================================\n", + " cols_numericas = X_transformado.select_dtypes(include=['number']).columns.tolist()\n", + "\n", + " if reglas_aprendidas is None:\n", + " logger.info(f\" ⚙️ [TRAIN] Escaneando variables numéricas con más de {umbral_ceros*100}% de ceros...\")\n", + " for col in cols_numericas:\n", + " if col in columnas_ignoradas:\n", + " continue\n", + "\n", + " valores_unicos = set(X_transformado[col].dropna().unique())\n", + " if valores_unicos.issubset({0, 1, 0.0, 1.0}):\n", + " continue\n", + "\n", + " total_validos = X_transformado[col].notna().sum()\n", + " if total_validos == 0: continue\n", + "\n", + " ratio_ceros = (X_transformado[col] == 0).sum() / total_validos\n", + "\n", + " if ratio_ceros >= umbral_ceros:\n", + " reglas_actuales['columnas_bandera'].append(col)\n", + " nombre_bandera = f\"tiene_{col}\"\n", + " X_transformado[nombre_bandera] = (X_transformado[col].fillna(0) != 0).astype(np.int8)\n", + " nuevas_bools.append(nombre_bandera)\n", + " logger.info(f\" 🌟 [Atajo AutoML] '{col}' ({ratio_ceros*100:.1f}% ceros) -> Creada bandera: '{nombre_bandera}'\")\n", + " else:\n", + " logger.info(f\" 🔒 [TEST] Aplicando {len(reglas_actuales['columnas_bandera'])} banderas aprendidas de Train...\")\n", + " for col in reglas_actuales['columnas_bandera']:\n", + " if col in X_transformado.columns:\n", + " nombre_bandera = f\"tiene_{col}\"\n", + " X_transformado[nombre_bandera] = (X_transformado[col].fillna(0) != 0).astype(np.int8)\n", + " nuevas_bools.append(nombre_bandera)\n", + " logger.debug(f\" ↳ Replicada bandera: '{nombre_bandera}'\")\n", + "\n", + " # ==========================================\n", + " # 2. Auto-Descubrimiento de Interacciones (Feature Crosses)\n", + " # ==========================================\n", + " patrones_opuestos = [\n", + " ('_gain', '_loss'), \n", + " ('_ingreso', '_gasto'),\n", + " ('_max', '_min'),\n", + " ('positive_', 'negative_')\n", + " ]\n", + "\n", + " if reglas_aprendidas is None:\n", + " logger.info(\"\\n ⚙️ [TRAIN] Escaneando matriz en busca de cruces matemáticos lógicos (Auto-Discovery)...\")\n", + " for sufijo_a, sufijo_b in patrones_opuestos:\n", + " cols_a = [c for c in cols_numericas if c.endswith(sufijo_a) or c.startswith(sufijo_a)]\n", + " for col_a in cols_a:\n", + " base_name = col_a.replace(sufijo_a, \"\")\n", + " col_b = base_name + sufijo_b if col_a.endswith(sufijo_a) else sufijo_b + base_name\n", + "\n", + " if col_b in cols_numericas:\n", + " nuevo_nombre = f\"{base_name}_neto\" if col_a.endswith(sufijo_a) else f\"neto_{base_name}\"\n", + " reglas_actuales['parejas_cruce'].append((col_a, col_b, nuevo_nombre))\n", + "\n", + " if nuevo_nombre not in X_transformado.columns:\n", + " X_transformado[nuevo_nombre] = X_transformado[col_a].fillna(0) - X_transformado[col_b].fillna(0)\n", + " nuevas_nums.append(nuevo_nombre)\n", + " logger.info(f\" ⚖️ [Auto-Cruce Exitoso] Creada variable '{nuevo_nombre}' ({col_a} - {col_b})\")\n", + " else:\n", + " logger.info(f\"\\n 🔒 [TEST] Aplicando {len(reglas_actuales['parejas_cruce'])} cruces aprendidos de Train...\")\n", + " for col_a, col_b, nuevo_nombre in reglas_actuales['parejas_cruce']:\n", + " if col_a in X_transformado.columns and col_b in X_transformado.columns:\n", + " X_transformado[nuevo_nombre] = X_transformado[col_a].fillna(0) - X_transformado[col_b].fillna(0)\n", + " nuevas_nums.append(nuevo_nombre)\n", + " logger.debug(f\" ↳ Replicado cruce: '{nuevo_nombre}'\")\n", + "\n", + " # ==========================================\n", + " # 3. Reporte de Impacto\n", + " # ==========================================\n", + " total_nuevas = len(nuevas_bools) + len(nuevas_nums)\n", + " logger.info(\"-\" * 80)\n", + " if total_nuevas > 0:\n", + " logger.info(f\" ✅ [INGENIERÍA EXITOSA] Se inyectaron {total_nuevas} variables dinámicas al modelo.\")\n", + " else:\n", + " logger.info(\" ⚠️ [MATRIZ DENSA] No se detectó alta dispersión ni se aplicaron cruces.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Ingeniería completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_transformado, nuevas_bools, nuevas_nums, reglas_actuales\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO INGENIERÍA EN TRAIN <<<\")\n", + " # Consumimos X_train y las rutas directamente desde el manager\n", + " X_train_eng, flags_creadas, cruces_creados, reglas_ingenieria = ingenieria_banderas_negocio(\n", + " X=manager.X_train, \n", + " umbral_ceros=0.85, \n", + " rutas_actuales=manager.rutas\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO INGENIERÍA A TEST <<<\")\n", + " # Consumimos X_test y forzamos las reglas aprendidas de Train\n", + " X_test_eng, _, _, _ = ingenieria_banderas_negocio(\n", + " X=manager.X_test, \n", + " umbral_ceros=0.85, \n", + " rutas_actuales=manager.rutas,\n", + " reglas_aprendidas=reglas_ingenieria\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos en la memoria del Manager de forma segura\n", + " manager.X_train = X_train_eng\n", + " manager.X_test = X_test_eng\n", + "\n", + " # 🚀 MLOPS TIP: Actualizamos el ruteo en el Manager SOLO UNA VEZ con los descubrimientos de Train\n", + " if flags_creadas or cruces_creados:\n", + " manager.rutas['bool_vars'].extend(flags_creadas)\n", + " manager.rutas['num_vars'].extend(cruces_creados)\n", + " logger.info(f\"\\n🛣️ Ruteo AutoML actualizado en Manager: +{len(flags_creadas)} bools, +{len(cruces_creados)} nums.\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la ingeniería de características: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 893.1 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + " 17 tiene_capital_gain 6508 non-null int8 \n", + " 18 tiene_capital_loss 6508 non-null int8 \n", + " 19 capital_neto 6508 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 225.9 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Series name: income\n", + "Non-Null Count Dtype \n", + "-------------- ----- \n", + "26029 non-null category\n", + "dtypes: category(1)\n", + "memory usage: 25.7 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🔬 FASE 9.1: Diagnóstico de Topología del Dataset (AutoML) ===\n", + " ✅ [DIAGNÓSTICO] No se encontraron ejes temporales (Datetimes).\n", + " ↳ Topología deducida: TRANSVERSAL (Cross-Sectional).\n", + "\n", + ">>> 🤖 VARIABLES DE ENRUTAMIENTO GLOBAL CONFIGURADAS EN EL MANAGER <<<\n", + " ⚙️ ES_SERIE_TIEMPO_ESTRICTA = False\n", + " ⚙️ VARIABLE_TIEMPO_GLOBAL = 'None'\n", + " ⚙️ VARIABLE_ENTIDAD_GLOBAL = 'None'\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def diagnostico_topologico_automl(\n", + " X_train: pd.DataFrame, \n", + " X_test: pd.DataFrame = None\n", + ") -> Tuple[pd.DataFrame, pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 9 - Paso 9.1] Escáner de Diagnóstico de Topología de Datos (MLOps Estricto).\n", + " - FIX MLOps: Aplanamiento Total. Se liberan los IDs del Index a columnas normales\n", + " y se destruye el Index al finalizar para evitar conflictos de ambigüedad futuros.\n", + " \"\"\"\n", + " if not isinstance(X_train, pd.DataFrame) or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz X_train está vacía o es inválida.\")\n", + " raise ValueError(\"La matriz X_train está vacía o es inválida.\")\n", + "\n", + " logger.info(\"=== 🔬 FASE 9.1: Diagnóstico de Topología del Dataset (AutoML) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_tr_analisis = X_train.copy()\n", + " X_te_analisis = X_test.copy() if X_test is not None else None\n", + "\n", + " # 1. Liberación temporal de IDs del Index para poder analizarlos (y dejarlos como columnas)\n", + " nombres_originales = [n for n in X_tr_analisis.index.names if n is not None]\n", + " if nombres_originales:\n", + " logger.info(f\" 🔓 Liberando temporalmente IDs del Index hacia columnas: {nombres_originales}\")\n", + " X_tr_analisis = X_tr_analisis.reset_index()\n", + " if X_te_analisis is not None:\n", + " X_te_analisis = X_te_analisis.reset_index()\n", + "\n", + " reporte = {\n", + " 'topologia': 'Transversal',\n", + " 'columna_tiempo': None,\n", + " 'columna_entidad': None,\n", + " 'es_serie_tiempo_estricta': False\n", + " }\n", + "\n", + " # ==========================================\n", + " # Búsqueda de Relojes y Varianza\n", + " # ==========================================\n", + " cols_tiempo = X_tr_analisis.select_dtypes(include=['datetime64', 'datetimetz']).columns.tolist()\n", + "\n", + " if not cols_tiempo:\n", + " logger.info(\" ✅ [DIAGNÓSTICO] No se encontraron ejes temporales (Datetimes).\")\n", + " logger.info(\" ↳ Topología deducida: TRANSVERSAL (Cross-Sectional).\")\n", + " # 🚀 FIX: Aplanamiento absoluto. El index no debe existir.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + " col_tiempo = X_tr_analisis[cols_tiempo].nunique().idxmax() if len(cols_tiempo) > 1 else cols_tiempo[0]\n", + " reporte['columna_tiempo'] = col_tiempo\n", + "\n", + " total_filas = len(X_tr_analisis)\n", + " filas_validas = total_filas - X_tr_analisis[col_tiempo].isna().sum()\n", + " unicos_tiempo = X_tr_analisis[col_tiempo].nunique()\n", + "\n", + " if unicos_tiempo <= 1:\n", + " logger.info(f\" ✅ [DIAGNÓSTICO] El Reloj '{col_tiempo}' está congelado en Train (Varianza Cero).\")\n", + " logger.info(\" ↳ Topología deducida: TRANSVERSAL (Cross-Sectional Snapshot).\")\n", + " # 🚀 FIX: Aplanamiento absoluto.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + " ratio_unicidad = unicos_tiempo / filas_validas if filas_validas > 0 else 0\n", + "\n", + " if ratio_unicidad >= 0.95:\n", + " logger.info(f\" ✅ [DIAGNÓSTICO] El tiempo fluye perfectamente (Unicidad: {ratio_unicidad:.1%}).\")\n", + " logger.info(f\" ↳ Topología deducida: SERIE DE TIEMPO PURA.\")\n", + " reporte['topologia'] = 'Serie de Tiempo Pura'\n", + " reporte['es_serie_tiempo_estricta'] = True\n", + " # 🚀 FIX: Aplanamiento absoluto.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + " # ==========================================\n", + " # Búsqueda de Entidades (Datos de Panel)\n", + " # ==========================================\n", + " logger.warning(f\" ⚠️ [ANÁLISIS PROFUNDO] Detectados múltiples eventos en la misma marca de tiempo (Unicidad: {ratio_unicidad:.1%}).\")\n", + " logger.info(\" ↳ Buscando una variable Categórica/ID que actúe como Llave Separadora (Entidad)...\")\n", + "\n", + " posibles_entidades = X_tr_analisis.select_dtypes(include=['category', 'object', 'string', 'int8', 'int16', 'int32', 'int64', 'float32', 'float64']).columns.tolist()\n", + " mejor_entidad = None\n", + " mejor_score_separacion = 0\n", + "\n", + " for col in posibles_entidades:\n", + " if col == col_tiempo: continue\n", + "\n", + " unicos_col = X_tr_analisis[col].nunique()\n", + " if 1 < unicos_col < (filas_validas * 0.9): \n", + " duplicados_promedio = X_tr_analisis.groupby([col, col_tiempo]).size().mean()\n", + " score_separacion = 1 / duplicados_promedio\n", + "\n", + " if score_separacion > mejor_score_separacion:\n", + " mejor_score_separacion = score_separacion\n", + " mejor_entidad = col\n", + "\n", + " if duplicados_promedio == 1.0:\n", + " break \n", + "\n", + " if mejor_entidad and mejor_score_separacion >= 0.66: \n", + " logger.info(f\" ✅ [DIAGNÓSTICO] Llave de Entidad encontrada: '{mejor_entidad}'.\")\n", + " logger.info(f\" ↳ Topología deducida: DATOS DE PANEL (Longitudinal).\")\n", + " reporte['topologia'] = 'Datos de Panel'\n", + " reporte['columna_entidad'] = mejor_entidad\n", + " reporte['es_serie_tiempo_estricta'] = True\n", + "\n", + " # 🚀 FIX MLOps: Los IDs se quedan como columnas puras. El Index se destruye.\n", + " indices_a_proteger = nombres_originales.copy()\n", + " if mejor_entidad not in indices_a_proteger:\n", + " indices_a_proteger.append(mejor_entidad)\n", + "\n", + " logger.info(f\" 🛡️ Preservando {indices_a_proteger} como columnas estándar para Fases futuras.\")\n", + "\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None:\n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + "\n", + " else:\n", + " logger.warning(\" ⚠️ [DIAGNÓSTICO] No se encontró un ID claro que separe perfectamente los eventos.\")\n", + " logger.info(\" ↳ Topología deducida: TRANSVERSAL (Tratar como eventos independientes).\")\n", + " reporte['topologia'] = 'Transversal'\n", + " reporte['es_serie_tiempo_estricta'] = False \n", + "\n", + " # 🚀 FIX: Aplanamiento absoluto.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + "\n", + " logger.info(f\"⏱️ Diagnóstico completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or manager.rutas is None:\n", + " manager.rutas = {}\n", + "\n", + " # Ejecutamos el diagnóstico utilizando el manager\n", + " X_train_top, X_test_top, reporte_topologia = diagnostico_topologico_automl(\n", + " X_train=manager.X_train, \n", + " X_test=manager.X_test\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los resultados de vuelta en el Manager de forma centralizada\n", + " manager.X_train = X_train_top\n", + " manager.X_test = X_test_top\n", + " manager.rutas['reporte_topologia'] = reporte_topologia # Guardamos el reporte en rutas\n", + "\n", + " # ==========================================\n", + " # 🔗 AUTOWIRING MLOPS: Conexión Automática a Fases Futuras\n", + " # ==========================================\n", + " ES_SERIE_TIEMPO_ESTRICTA = reporte_topologia['es_serie_tiempo_estricta']\n", + " VARIABLE_TIEMPO_GLOBAL = reporte_topologia['columna_tiempo']\n", + " VARIABLE_ENTIDAD_GLOBAL = reporte_topologia['columna_entidad']\n", + "\n", + " # Guardamos variables de enrutamiento globales directamente en el manager\n", + " manager.rutas['es_serie_tiempo_estricta'] = ES_SERIE_TIEMPO_ESTRICTA\n", + " manager.rutas['variable_tiempo_global'] = VARIABLE_TIEMPO_GLOBAL\n", + " manager.rutas['variable_entidad_global'] = VARIABLE_ENTIDAD_GLOBAL\n", + "\n", + " logger.info(\"\\n>>> 🤖 VARIABLES DE ENRUTAMIENTO GLOBAL CONFIGURADAS EN EL MANAGER <<<\")\n", + " logger.info(f\" ⚙️ ES_SERIE_TIEMPO_ESTRICTA = {manager.rutas['es_serie_tiempo_estricta']}\")\n", + " logger.info(f\" ⚙️ VARIABLE_TIEMPO_GLOBAL = '{manager.rutas['variable_tiempo_global']}'\")\n", + " logger.info(f\" ⚙️ VARIABLE_ENTIDAD_GLOBAL = '{manager.rutas['variable_entidad_global']}'\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Diagnóstico Topológico: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_countryis_missing_workclassis_missing_occupationis_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_neto
021NaN10never-marriedNaNown-childwhitemale0.0020united-states11002000.0
141private11married-civ-spousesaleshusbandwhitemale4386.0060united-states00000104386.0
224private9never-marriedhandlers-cleanersunmarriedblackfemale0.0040united-states00000000.0
359private9widowedprof-specialtynot-in-familywhitefemale0.0018united-states00000000.0
435private9married-civ-spousesaleshusbandasian-pac-islandermale0.0188750Rare0000001-1887.0
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "0 own-child white male 0.0 0 \n", + "1 husband white male 4386.0 0 \n", + "2 unmarried black female 0.0 0 \n", + "3 not-in-family white female 0.0 0 \n", + "4 husband asian-pac-islander male 0.0 1887 \n", + "\n", + " hours_per_week native_country is_missing_workclass is_missing_occupation \\\n", + "0 20 united-states 1 1 \n", + "1 60 united-states 0 0 \n", + "2 40 united-states 0 0 \n", + "3 18 united-states 0 0 \n", + "4 50 Rare 0 0 \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto \n", + "0 0 0 0.0 \n", + "1 1 0 4386.0 \n", + "2 0 0 0.0 \n", + "3 0 0 0.0 \n", + "4 0 1 -1887.0 " + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 893.1 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 ENTRENANDO INGENIERÍA TEMPORAL EN TRAIN <<<\n", + "=== ⏱️ FASE 9.2: Ingeniería Temporal y Trigonometría AutoML ===\n", + " ✅ [BYPASS] No se detectaron variables temporales para procesar.\n", + " ⏩ La matriz permanece intacta. Avanzando al siguiente paso...\n", + "\n", + ">>> 🔒 APLICANDO INGENIERÍA TEMPORAL A TEST <<<\n", + "=== ⏱️ FASE 9.2: Ingeniería Temporal y Trigonometría AutoML ===\n", + " ✅ [BYPASS] No se detectaron variables temporales para procesar.\n", + " ⏩ La matriz permanece intacta. Avanzando al siguiente paso...\n", + "\n", + "📦 [MLOps] Matrices y rutas temporales actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import copy\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ingenieria_temporal_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict,\n", + " fechas_ancla_aprendidas: Dict = None,\n", + " topologia_dataset: str = 'Transversal' # 🔧 NUEVO: El Enrutador Topológico Maestro\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 9.2] Motor AutoML de Ingeniería Temporal y Cíclica.\n", + " - Sincronización MLOps: Protege el diccionario de rutas para Train y Test.\n", + " - Transformación Circular: Usa np.sin y np.cos para codificar variables cíclicas.\n", + " - Inteligencia Topológica (NUEVO): \n", + " Si es 'Transversal' -> Destruye la fecha original tras procesarla.\n", + " Si es 'Serie de Tiempo Pura' o 'Datos de Panel' -> Preserva la fecha original para la Fase de Rezagos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⏱️ FASE 9.2: Ingeniería Temporal y Trigonometría AutoML ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + "\n", + " # Usamos deepcopy para no alterar el diccionario original inadvertidamente\n", + " rutas_actualizadas = copy.deepcopy(rutas)\n", + "\n", + " # 🧠 INTELIGENCIA DE MEMORIA: En Train leemos las rutas, en Test leemos la memoria del Train\n", + " if fechas_ancla_aprendidas is None:\n", + " fechas_detectadas = rutas_actualizadas.get('date_vars', [])\n", + " else:\n", + " fechas_detectadas = list(fechas_ancla_aprendidas.keys())\n", + "\n", + " anclas_actuales = {} if fechas_ancla_aprendidas is None else fechas_ancla_aprendidas\n", + "\n", + " # 1. Bypass Inteligente (Escudo MLOps)\n", + " if not fechas_detectadas:\n", + " logger.info(\" ✅ [BYPASS] No se detectaron variables temporales para procesar.\")\n", + " logger.info(\" ⏩ La matriz permanece intacta. Avanzando al siguiente paso...\")\n", + " return X_trans, rutas_actualizadas, anclas_actuales\n", + "\n", + " # 🚀 DECISIÓN ESTRATÉGICA: ¿Destruir o Preservar?\n", + " preservar_fecha = topologia_dataset in ['Serie de Tiempo Pura', 'Datos de Panel']\n", + "\n", + " if fechas_ancla_aprendidas is None:\n", + " modo_str = f\"{topologia_dataset.upper()} (Preservando Fecha)\" if preservar_fecha else f\"{topologia_dataset.upper()} (Destruyendo Fecha)\"\n", + " logger.info(f\" 🚂 [TRAIN] Procesando {len(fechas_detectadas)} variables temporales. Modo: {modo_str}\")\n", + " else:\n", + " logger.info(f\" 🔒 [TEST] Aplicando transformaciones temporales (Sincronización exacta con Train)...\")\n", + "\n", + " nuevas_numericas = []\n", + "\n", + " # 2. Motor de Extracción y Transformación\n", + " for col in fechas_detectadas:\n", + " if col not in X_trans.columns:\n", + " logger.error(f\"🛑 [Desincronización Crítica] La columna '{col}' procesada en Train no existe en Test.\")\n", + " raise KeyError(f\"La columna '{col}' procesada en Train no existe en Test.\")\n", + "\n", + " X_trans[col] = pd.to_datetime(X_trans[col], errors='coerce')\n", + "\n", + " # A. Distancia Lineal MLOps (Antigüedad / Tendencia)\n", + " if fechas_ancla_aprendidas is None:\n", + " fecha_ancla = X_trans[col].max()\n", + " anclas_actuales[col] = fecha_ancla\n", + " else:\n", + " fecha_ancla = fechas_ancla_aprendidas[col]\n", + "\n", + " nombre_lineal = f\"{col}_antiguedad_dias\"\n", + " X_trans[nombre_lineal] = (fecha_ancla - X_trans[col]).dt.days\n", + " nuevas_numericas.append(nombre_lineal)\n", + "\n", + " # B. Extracción de Componentes\n", + " meses = X_trans[col].dt.month\n", + " dias_semana = X_trans[col].dt.dayofweek\n", + "\n", + " # C. Transformación Cíclica (Seno y Coseno)\n", + " nombre_mes_sin, nombre_mes_cos = f\"{col}_mes_sin\", f\"{col}_mes_cos\"\n", + " X_trans[nombre_mes_sin] = np.sin(2 * np.pi * meses / 12.0)\n", + " X_trans[nombre_mes_cos] = np.cos(2 * np.pi * meses / 12.0)\n", + "\n", + " nombre_dia_sin, nombre_dia_cos = f\"{col}_dia_semana_sin\", f\"{col}_dia_semana_cos\"\n", + " X_trans[nombre_dia_sin] = np.sin(2 * np.pi * dias_semana / 7.0)\n", + " X_trans[nombre_dia_cos] = np.cos(2 * np.pi * dias_semana / 7.0)\n", + "\n", + " nuevas_numericas.extend([nombre_mes_sin, nombre_mes_cos, nombre_dia_sin, nombre_dia_cos])\n", + "\n", + " # D. Inteligencia de Guillotina basada en la Topología\n", + " if not preservar_fecha:\n", + " X_trans.drop(columns=[col], inplace=True)\n", + " if fechas_ancla_aprendidas is None:\n", + " logger.info(f\" ⚙️ '{col}' descompuesta en 5 vectores matemáticos y ELIMINADA.\")\n", + " else:\n", + " if fechas_ancla_aprendidas is None:\n", + " logger.info(f\" ⚙️ '{col}' descompuesta en 5 vectores matemáticos y PRESERVADA intacta.\")\n", + "\n", + " # 3. Actualización Dinámica del Enrutamiento\n", + " if fechas_ancla_aprendidas is None:\n", + " if not preservar_fecha:\n", + " # Solo vaciamos la ruta de fechas si realmente la destruimos\n", + " rutas_actualizadas['date_vars'] = [] \n", + " rutas_actualizadas['num_vars'].extend(nuevas_numericas)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " estado_col = \"mantenidas vivas\" if preservar_fecha else \"eliminadas\"\n", + " logger.info(f\" 📊 Reporte: {len(fechas_detectadas)} columnas temporales procesadas y {estado_col}.\")\n", + " logger.info(f\" 📈 Inyectadas {len(nuevas_numericas)} nuevas variables puramente matemáticas.\")\n", + " logger.info(f\"\\n⏱️ Ingeniería Temporal completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas_actualizadas, anclas_actuales\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # ---------------------------------------------------------\n", + " # 🔗 AUTOWIRING MLOPS: Heredando Topología del Manager\n", + " # ---------------------------------------------------------\n", + " # Si la topología se calculó y guardó en rutas, la extraemos de ahí. Si no, asume Transversal.\n", + " TOPOLOGIA_GLOBAL = manager.rutas.get('reporte_topologia', {}).get('topologia', 'Transversal')\n", + "\n", + " logger.info(\"\\n>>> 🚂 ENTRENANDO INGENIERÍA TEMPORAL EN TRAIN <<<\")\n", + " X_train_temp, rutas_actualizadas, anclas_temporales = ingenieria_temporal_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL # <- Alimentación dinámica desde el Manager\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO INGENIERÍA TEMPORAL A TEST <<<\")\n", + " X_test_temp, _, _ = ingenieria_temporal_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " fechas_ancla_aprendidas=anclas_temporales,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL # <- Alimentación dinámica desde el Manager\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar en la memoria del Manager de forma segura\n", + " manager.X_train = X_train_temp\n", + " manager.X_test = X_test_temp\n", + " manager.rutas = rutas_actualizadas # MLOps Tip: El enrutador ya se actualizó por dentro de la función Train\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('anclas_temporales', anclas_temporales)\n", + " else:\n", + " # Fallback en caso de que la API del manager difiera\n", + " if not hasattr(manager, 'artefactos') or manager.artefactos is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['anclas_temporales'] = anclas_temporales\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas temporales actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + " num_vars = manager.rutas['num_vars']\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Ingeniería Temporal: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 893.1 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + " 17 tiene_capital_gain 6508 non-null int8 \n", + " 18 tiene_capital_loss 6508 non-null int8 \n", + " 19 capital_neto 6508 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 225.9 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO MOTOR DE RATIOS EN TRAIN <<<\n", + "=== ➗ FASE 9.3: Generación de Ratios Matemáticos (Auto-Discovery Universal) ===\n", + " 🚂 [TRAIN] Escaneando topología para Auto-Descubrimiento de Ratios...\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_gain' / 'age'\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_gain' / 'hours_per_week'\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_loss' / 'age'\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_loss' / 'hours_per_week'\n", + "\n", + " ⚙️ Ejecutando divisiones matemáticas con protección contra ceros...\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_hours_per_week'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_hours_per_week'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 4 ratios inyectados | 0 omitidos.\n", + " 🛡️ ESTATUS: Gradientes protegidos. 0% de valores infinitos garantizado.\n", + "\n", + "⏱️ Ingeniería de Ratios completada en 0.052s\n", + "\n", + ">>> 🔒 APLICANDO RECETA DE RATIOS A TEST <<<\n", + "=== ➗ FASE 9.3: Generación de Ratios Matemáticos (Auto-Discovery Universal) ===\n", + " 🔒 [TEST] Aplicando receta de ratios matemáticos estricta aprendida en Train...\n", + "\n", + " ⚙️ Ejecutando divisiones matemáticas con protección contra ceros...\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_hours_per_week'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_hours_per_week'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 4 ratios inyectados | 0 omitidos.\n", + " 🛡️ ESTATUS: Gradientes protegidos. 0% de valores infinitos garantizado.\n", + "\n", + "⏱️ Ingeniería de Ratios completada en 0.012s\n", + "\n", + "📦 [MLOps] Matrices y rutas de ratios actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import re\n", + "from typing import Dict, List, Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def generar_ratios_negocio_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " operaciones_ratio_manuales: List[Tuple[str, str, str]] = None,\n", + " auto_discovery: bool = True,\n", + " receta_aprendida: List[Tuple[str, str, str]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, List[Tuple[str, str, str]]]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 9.3] Motor AutoML de Ratios Matemáticos (Universal Multi-Dominio).\n", + " - Auto-Discovery NLP: Escanea nombres buscando magnitudes y divisores lógicos (Solo en Train).\n", + " - Muro MLOps: Test usa estrictamente la 'receta_aprendida' de Train para garantizar alineación de columnas.\n", + " - BLINDAJE LÉXICO: Ignora meta-variables (nulos, missing, etc.) y usa Regex para evitar falsos positivos.\n", + " - Blindaje Anti-Infinito: Detecta divisiones por cero y neutraliza.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ➗ FASE 9.3: Generación de Ratios Matemáticos (Auto-Discovery Universal) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + "\n", + " # 1. MLOps: Fit vs Transform (Alineación de Matrices)\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando receta de ratios matemáticos estricta aprendida en Train...\")\n", + " operaciones_finales = receta_aprendida\n", + " else:\n", + " logger.info(\" 🚂 [TRAIN] Escaneando topología para Auto-Descubrimiento de Ratios...\")\n", + " operaciones_finales = operaciones_ratio_manuales or []\n", + "\n", + " if auto_discovery:\n", + " cols_numericas = rutas.get('num_vars', X_trans.select_dtypes(include=['number']).columns.tolist())\n", + "\n", + " # ==========================================\n", + " # 🌐 EL CEREBRO LÉXICO UNIVERSAL MULTI-DOMINIO\n", + " # ==========================================\n", + " def construir_patron(palabra):\n", + " \"\"\"Crea un patrón Regex para capturar palabras exactas en snake_case o camelCase\"\"\"\n", + " return fr'(^{palabra}$|^{palabra}_|_{palabra}$|_{palabra}_|[a-z]{palabra.capitalize()})'\n", + "\n", + " # --- DICCIONARIO EXPANDIDO DE MAGNITUDES (NUMERADORES) ---\n", + " kw_numerador = [\n", + " # Finanzas y Ventas (Inglés/Español)\n", + " 'gain', 'ganancia', 'loss', 'perdida', 'pérdida', 'income', 'ingreso', 'ingresos', \n", + " 'revenue', 'cost', 'costo', 'amount', 'monto', 'cantidad', 'total', 'price', 'precio', \n", + " 'balance', 'saldo', 'sales', 'ventas', 'profit', 'beneficio', 'margin', 'margen', \n", + " 'debt', 'deuda', 'tax', 'impuesto', 'discount', 'descuento', 'budget', 'presupuesto', 'expense', 'gasto',\n", + " # Telemetría y Sistemas (Inglés/Español)\n", + " 'bytes', 'packets', 'paquetes', 'requests', 'peticiones', 'solicitudes', \n", + " 'errors', 'errores', 'traffic', 'trafico', 'tráfico', 'payload', 'carga',\n", + " # Salud y Biometría (Inglés/Español)\n", + " 'dosage', 'dosis', 'calories', 'calorias', 'calorías', 'cholesterol', 'colesterol', \n", + " 'glucose', 'glucosa', 'heart_rate', 'frecuencia_cardiaca', 'blood_pressure', 'presion_arterial',\n", + " # Física y Producción (Inglés/Español)\n", + " 'distance', 'distancia', 'weight', 'peso', 'production', 'produccion', 'producción', \n", + " 'volume', 'volumen', 'length', 'longitud', 'height', 'altura', 'mass', 'masa', \n", + " 'energy', 'energia', 'energía', 'power', 'potencia', 'yield', 'rendimiento', 'inventory', 'inventario'\n", + " ]\n", + "\n", + " # --- DICCIONARIO EXPANDIDO DE DIVISORES (DENOMINADORES) ---\n", + " kw_denominador = [\n", + " # Tiempo y Duración (Inglés/Español)\n", + " 'hour', 'hora', 'day', 'dia', 'día', 'month', 'mes', 'year', 'año', 'ano', \n", + " 'duration', 'duracion', 'duración', 'time', 'tiempo', 'seconds', 'segundos', \n", + " 'minutes', 'minutos', 'age', 'edad', 'week', 'semana', 'quarter', 'trimestre',\n", + " # Conteo y Capacidades (Inglés/Español)\n", + " 'qty', 'quantity', 'count', 'conteo', 'limit', 'limite', 'límite', \n", + " 'capacity', 'capacidad', 'size', 'tamaño', 'tamano',\n", + " # Entidades Per Cápita / Tasas (Inglés/Español)\n", + " 'users', 'usuarios', 'employees', 'empleados', 'visitors', 'visitantes', \n", + " 'sessions', 'sesiones', 'clicks', 'clics', 'customers', 'clientes', \n", + " 'accounts', 'cuentas', 'views', 'vistas', 'impressions', 'impresiones', \n", + " 'transactions', 'transacciones', 'members', 'miembros', 'population', 'poblacion', 'población', \n", + " 'area', 'área', 'capita'\n", + " ]\n", + "\n", + " # Compilación de Regex de alto rendimiento\n", + " patrones_numerador = [construir_patron(kw) for kw in kw_numerador]\n", + " patron_num_regex = re.compile('|'.join(patrones_numerador), re.IGNORECASE)\n", + "\n", + " patrones_denominador = [construir_patron(kw) for kw in kw_denominador]\n", + " patron_den_regex = re.compile('|'.join(patrones_denominador), re.IGNORECASE)\n", + "\n", + " kw_prohibidos = ['nulo', 'null', 'missing', 'tiene_']\n", + " cols_limpias = [c for c in cols_numericas if not any(prohibido in c.lower() for prohibido in kw_prohibidos)]\n", + "\n", + " # 🚀 APLICACIÓN DEL ESCUDO LÉXICO\n", + " nums_detectados = [c for c in cols_limpias if patron_num_regex.search(c)]\n", + " dens_detectados = [c for c in cols_limpias if patron_den_regex.search(c)]\n", + "\n", + " for num_col in nums_detectados:\n", + " for den_col in dens_detectados:\n", + " if num_col != den_col:\n", + " nuevo_nombre = f\"{num_col}_por_{den_col}\"\n", + " if not any(nuevo_nombre == t[0] for t in operaciones_finales):\n", + " operaciones_finales.append((nuevo_nombre, num_col, den_col))\n", + " logger.info(f\" ✨ [Auto-Discovery] Pareja detectada: '{num_col}' / '{den_col}'\")\n", + "\n", + " if not operaciones_finales:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron parejas lógicas ni ratios manuales. Avanzando...\")\n", + " return X_trans, rutas, []\n", + "\n", + " # ==========================================\n", + " # 2. Ejecución Matemática Protegida\n", + " # ==========================================\n", + " nuevas_numericas = []\n", + " ratios_creados = 0\n", + " ratios_fallidos = 0\n", + "\n", + " logger.info(\"\\n ⚙️ Ejecutando divisiones matemáticas con protección contra ceros...\")\n", + "\n", + " for nuevo_nombre, col_numerador, col_denominador in operaciones_finales:\n", + " if col_numerador not in X_trans.columns or col_denominador not in X_trans.columns:\n", + " ratios_fallidos += 1\n", + " continue\n", + "\n", + " numerador = X_trans[col_numerador].astype(float)\n", + " denominador = X_trans[col_denominador].astype(float)\n", + "\n", + " # Blindaje anti-infinito: Si el denominador es 0, el resultado es 0. \n", + " # Si no, se divide normal. Reemplazamos 0 por nan temporalmente para evitar el warning de Pandas\n", + " X_trans[nuevo_nombre] = np.where(\n", + " denominador == 0, \n", + " 0.0, \n", + " numerador / denominador.replace(0, np.nan)\n", + " )\n", + "\n", + " # Limpieza extra de seguridad\n", + " X_trans[nuevo_nombre] = X_trans[nuevo_nombre].replace([np.inf, -np.inf], 0.0)\n", + " nuevas_numericas.append(nuevo_nombre)\n", + " ratios_creados += 1\n", + " logger.info(f\" ⚖️ [Ratio Exitoso] Creada variable purgada: '{nuevo_nombre}'\")\n", + "\n", + " # MLOPS TIP: Actualizamos las rutas SOLO en la ejecución de Train (la primera vez)\n", + " if receta_aprendida is None and nuevas_numericas:\n", + " rutas['num_vars'].extend(nuevas_numericas)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 📊 Reporte: {ratios_creados} ratios inyectados | {ratios_fallidos} omitidos.\")\n", + " if ratios_creados > 0:\n", + " logger.info(\" 🛡️ ESTATUS: Gradientes protegidos. 0% de valores infinitos garantizado.\")\n", + " logger.info(f\"\\n⏱️ Ingeniería de Ratios completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, operaciones_finales\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO MOTOR DE RATIOS EN TRAIN <<<\")\n", + " X_train_ratio, rutas_actualizadas, receta_ratios_train = generar_ratios_negocio_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " auto_discovery=True\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO RECETA DE RATIOS A TEST <<<\")\n", + " X_test_ratio, _, _ = generar_ratios_negocio_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " auto_discovery=False, # Bloqueamos el cerebro léxico en Test\n", + " receta_aprendida=receta_ratios_train # Forzamos la receta de Train\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos en la memoria del Manager\n", + " manager.X_train = X_train_ratio\n", + " manager.X_test = X_test_ratio\n", + " manager.rutas = rutas_actualizadas # La función Train ya inyectó las nuevas num_vars en las rutas\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_ratios_train', receta_ratios_train)\n", + " else:\n", + " # Fallback en caso de que la API del manager difiera\n", + " if not hasattr(manager, 'artefactos') or manager.artefactos is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_ratios_train'] = receta_ratios_train\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas de ratios actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + " num_vars = manager.rutas['num_vars']\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Ingeniería de Ratios: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 25899 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 25899 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + "dtypes: category(7), float64(6), int16(1), int8(10)\n", + "memory usage: 1.7 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + " 17 tiene_capital_gain 6508 non-null int8 \n", + " 18 tiene_capital_loss 6508 non-null int8 \n", + " 19 capital_neto 6508 non-null float64 \n", + " 20 capital_gain_por_age 6479 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 6479 non-null float64 \n", + " 22 capital_loss_por_age 6508 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64 \n", + "dtypes: category(7), float64(6), int16(1), int8(10)\n", + "memory usage: 429.3 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO MAPEO BINARIO EN TRAIN <<<\n", + "=== 🎭 FASE 10.1: Mapeo Binario Estricto (Traductor AutoML) ===\n", + " 🚂 [TRAIN] Escaneando matriz en busca de variables estrictamente binarias...\n", + " 🔄 [Codificado] 'sex': female ➔ 0 | male ➔ 1\n", + "\n", + " 🎯 [TRAIN Target] 'income': <=50k ➔ 0 | >50k ➔ 1\n", + "--------------------------------------------------------------------------------\n", + " ✅ [ESTADO SALVADO] 1 características y el Target fueron binarizados.\n", + "\n", + "⏱️ Codificación Binaria completada en 0.016s\n", + "\n", + ">>> 🔒 APLICANDO MAPEO BINARIO A TEST <<<\n", + "=== 🎭 FASE 10.1: Mapeo Binario Estricto (Traductor AutoML) ===\n", + " 🔒 [TEST] Aplicando mapeos binarios aprendidos de Train...\n", + "\n", + " 🎯 [TEST Target] 'income' transformado usando: {'<=50k': 0, '>50k': 1}\n", + "--------------------------------------------------------------------------------\n", + " ✅ [ESTADO SALVADO] 1 características y el Target fueron binarizados.\n", + "\n", + "⏱️ Codificación Binaria completada en 0.006s\n", + "\n", + "📦 [MLOps] Matrices, vector objetivo y rutas binarias actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def mapeo_binario_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " mapeos_aprendidos: Dict = None\n", + ") -> Tuple[pd.DataFrame, pd.Series, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.1] Motor AutoML de Codificación Binaria Estricta.\n", + " - Muro MLOps: Aprende los mapeos en Train (.fit) y los aplica ciegamente en Test (.transform).\n", + " - Escáner de Cardinalidad: Detecta automáticamente columnas con exactamente 2 valores únicos.\n", + " - Forzado Booleano (NUEVO): Si es de tipo bool/boolean, la transforma a 0 y 1 sí o sí.\n", + " - Escudo Missing (NUEVO): Ignora por completo las columnas generadas 'is_missing'.\n", + " - Preservación de Nulos: Transforma a 0 y 1 dejando los NaNs intactos para la imputación posterior.\n", + " - Downcasting Inteligente: Fuerza la conversión a int8/Int8 para optimización absoluta de RAM.\n", + " - Integración del Target: Evalúa y codifica la variable objetivo (y) de forma estricta.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🎭 FASE 10.1: Mapeo Binario Estricto (Traductor AutoML) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " y_trans = y.copy() if y is not None else None\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " diccionario_mapeos = {} if mapeos_aprendidos is None else mapeos_aprendidos\n", + " columnas_transformadas = 0\n", + "\n", + " # ==========================================\n", + " # 1. Escáner y Traducción de Características (X)\n", + " # ==========================================\n", + " if mapeos_aprendidos is None:\n", + " logger.info(\" 🚂 [TRAIN] Escaneando matriz en busca de variables estrictamente binarias...\")\n", + " for col in X_trans.columns:\n", + "\n", + " # 🛡️ Escudo Missing: Ignorar columnas creadas por el imputador\n", + " if 'is_missing' in col:\n", + " continue\n", + "\n", + " es_booleano = pd.api.types.is_bool_dtype(X_trans[col])\n", + " valores_unicos = X_trans[col].dropna().unique()\n", + "\n", + " # Si es numérica y ya está codificada en 0 y 1, la saltamos (a menos que sea booleano nativo)\n", + " if not es_booleano and pd.api.types.is_numeric_dtype(X_trans[col]) and set(valores_unicos).issubset({0, 1, 0.0, 1.0}):\n", + " continue\n", + "\n", + " # Regla del Arquitecto: Si son 2 valores exactos, o si es un booleano nativo, se transforma.\n", + " if len(valores_unicos) == 2 or es_booleano:\n", + "\n", + " # Definición del mapa según el tipo\n", + " if es_booleano:\n", + " mapa = {False: 0, True: 1}\n", + " mensaje_log = \"False ➔ 0 | True ➔ 1\"\n", + " else:\n", + " valores_ordenados = sorted(list(valores_unicos))\n", + " mapa = {valores_ordenados[0]: 0, valores_ordenados[1]: 1}\n", + " mensaje_log = f\"{valores_ordenados[0]} ➔ 0 | {valores_ordenados[1]} ➔ 1\"\n", + "\n", + " X_trans[col] = X_trans[col].map(mapa).astype('Int8')\n", + " diccionario_mapeos[col] = mapa\n", + " columnas_transformadas += 1\n", + "\n", + " if col in rutas.get('cat_vars', []):\n", + " rutas['cat_vars'].remove(col)\n", + " if col not in rutas.get('bool_vars', []):\n", + " rutas['bool_vars'].append(col)\n", + "\n", + " logger.info(f\" 🔄 [Codificado] '{col}': {mensaje_log}\")\n", + " else:\n", + " logger.info(\" 🔒 [TEST] Aplicando mapeos binarios aprendidos de Train...\")\n", + " for col, mapa in diccionario_mapeos.items():\n", + " if not col.startswith('TARGET_') and col in X_trans.columns:\n", + " X_trans[col] = X_trans[col].map(mapa).astype('Int8')\n", + " columnas_transformadas += 1\n", + " logger.debug(f\" ↳ Replicado en '{col}': {mapa}\")\n", + "\n", + " # ==========================================\n", + " # 2. Escáner y Traducción del Target (y)\n", + " # ==========================================\n", + " if y_trans is not None:\n", + " if mapeos_aprendidos is None:\n", + " valores_unicos_y = y_trans.unique()\n", + " if len(valores_unicos_y) == 2 and not pd.api.types.is_numeric_dtype(y_trans):\n", + " valores_ordenados_y = sorted(list(valores_unicos_y))\n", + " mapa_y = {valores_ordenados_y[0]: 0, valores_ordenados_y[1]: 1}\n", + "\n", + " y_trans = y_trans.map(mapa_y).astype(np.int8)\n", + " diccionario_mapeos['TARGET_' + y_trans.name] = mapa_y\n", + " logger.info(f\"\\n 🎯 [TRAIN Target] '{y_trans.name}': {valores_ordenados_y[0]} ➔ 0 | {valores_ordenados_y[1]} ➔ 1\")\n", + " else:\n", + " clave_target = 'TARGET_' + y_trans.name\n", + " if clave_target in diccionario_mapeos:\n", + " mapa_y = diccionario_mapeos[clave_target]\n", + " y_trans = y_trans.map(mapa_y).astype(np.int8)\n", + " logger.info(f\"\\n 🎯 [TEST Target] '{y_trans.name}' transformado usando: {mapa_y}\")\n", + "\n", + " # ==========================================\n", + " # 3. Reporte Ejecutivo MLOps\n", + " # ==========================================\n", + " logger.info(\"-\" * 80)\n", + " if columnas_transformadas > 0 or (y_trans is not None and 'TARGET_' + y_trans.name in diccionario_mapeos):\n", + " logger.info(f\" ✅ [ESTADO SALVADO] {columnas_transformadas} características y el Target fueron binarizados.\")\n", + " else:\n", + " logger.info(\" ⚠️ [MATRIZ LIMPIA] No se detectaron nuevas variables binarias para codificar.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Codificación Binaria completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, y_trans, rutas, diccionario_mapeos\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas todas las matrices Train/Test completas. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO MAPEO BINARIO EN TRAIN <<<\")\n", + " X_train_bin, y_train_bin, rutas_actualizadas, reglas_binarias = mapeo_binario_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO MAPEO BINARIO A TEST <<<\")\n", + " X_test_bin, y_test_bin, _, _ = mapeo_binario_automl(\n", + " X=manager.X_test, \n", + " y=manager.y_test, \n", + " rutas=manager.rutas,\n", + " mapeos_aprendidos=reglas_binarias # El puente de memoria MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.X_train = X_train_bin\n", + " manager.y_train = y_train_bin\n", + " manager.X_test = X_test_bin\n", + " manager.y_test = y_test_bin\n", + " manager.rutas = rutas_actualizadas\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('reglas_binarias', reglas_binarias)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['reglas_binarias'] = reglas_binarias\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, vector objetivo y rutas binarias actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " y_test = manager.y_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Codificación Binaria: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN10never-marriedNaNown-childwhite10.00...002000.00.000000.00.0000000.00
141private11married-civ-spousesaleshusbandwhite14386.00...000104386.0106.9756173.10.0000000.00
224private9never-marriedhandlers-cleanersunmarriedblack00.00...000000.00.000000.00.0000000.00
359private9widowedprof-specialtynot-in-familywhite00.00...000000.00.000000.00.0000000.00
435private9married-civ-spousesaleshusbandasian-pac-islander10.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss ... \\\n", + "0 own-child white 1 0.0 0 ... \n", + "1 husband white 1 4386.0 0 ... \n", + "2 unmarried black 0 0.0 0 ... \n", + "3 not-in-family white 0 0.0 0 ... \n", + "4 husband asian-pac-islander 1 0.0 1887 ... \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0 0.0 0.00000 \n", + "1 1 0 4386.0 106.97561 \n", + "2 0 0 0.0 0.00000 \n", + "3 0 0 0.0 0.00000 \n", + "4 0 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
039self-emp-inc10divorcedcraft-repairnot-in-familywhite10.00...000000.00.00.00.00.0
135private13married-civ-spouseadm-clericalhusbandwhite10.00...000000.00.00.00.00.0
231private13married-civ-spouseprof-specialtyhusbandwhite10.00...000000.00.00.00.00.0
367self-emp-inc13widowedother-serviceunmarriedwhite00.00...000000.00.00.00.00.0
456self-emp-not-inc9married-spouse-absentexec-managerialnot-in-familywhite10.00...000000.00.00.00.00.0
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status \\\n", + "0 39 self-emp-inc 10 divorced \n", + "1 35 private 13 married-civ-spouse \n", + "2 31 private 13 married-civ-spouse \n", + "3 67 self-emp-inc 13 widowed \n", + "4 56 self-emp-not-inc 9 married-spouse-absent \n", + "\n", + " occupation relationship race sex capital_gain capital_loss \\\n", + "0 craft-repair not-in-family white 1 0.0 0 \n", + "1 adm-clerical husband white 1 0.0 0 \n", + "2 prof-specialty husband white 1 0.0 0 \n", + "3 other-service unmarried white 0 0.0 0 \n", + "4 exec-managerial not-in-family white 1 0.0 0 \n", + "\n", + " ... is_missing_capital_gain is_missing_native_country \\\n", + "0 ... 0 0 \n", + "1 ... 0 0 \n", + "2 ... 0 0 \n", + "3 ... 0 0 \n", + "4 ... 0 0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 0 0 0 0.0 \n", + "1 0 0 0 0.0 \n", + "2 0 0 0 0.0 \n", + "3 0 0 0 0.0 \n", + "4 0 0 0 0.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week \n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 ENTRENANDO TARGET MULTICLASE <<<\n", + "=== 🎯 FASE 10.2: Codificador de Target [TRAIN] ===\n", + " ✅ [BYPASS] El Target ya es numérico. No requiere codificación.\n", + "\n", + ">>> 🔒 APLICANDO A TEST <<<\n", + "=== 🎯 FASE 10.2: Codificador de Target [TEST] ===\n", + " ✅ [BYPASS TEST] Diccionario vacío heredado. El Target se mantiene intacto.\n", + "\n", + "📦 [MLOps] Vectores objetivo (y_train, y_test) codificados y actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, List\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def codificador_target_multiclase(\n", + " y: pd.Series, \n", + " modo: str = 'train',\n", + " mapa_aprendido: Dict = None,\n", + " jerarquia_ordinal: List[str] = None\n", + ") -> Tuple[pd.Series, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.2] Motor AutoML de Codificación de Target Multiclase y Binario.\n", + " - Inteligencia: Procesa perfectamente tanto targets Binarios (2 clases) como Multiclase (>2).\n", + " - Modalidad Nominal: Asigna 0, 1, 2... alfabéticamente si no hay orden.\n", + " - Modalidad Ordinal: Respeta una lista estricta proporcionada por el Arquitecto.\n", + " - Muro MLOps: Aprende en 'train' y aplica de forma estricta en 'test'.\n", + " \"\"\"\n", + " if y is None or y.empty:\n", + " logger.error(\"🛑 Error Crítico: El vector objetivo (y) está vacío.\")\n", + " raise ValueError(\"El vector objetivo (y) está vacío.\")\n", + "\n", + " logger.info(f\"=== 🎯 FASE 10.2: Codificador de Target [{modo.upper()}] ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " y_trans = y.copy()\n", + "\n", + " # Bypass Inteligente: Si el target ya es numérico, no lo tocamos.\n", + " if pd.api.types.is_numeric_dtype(y_trans):\n", + " if modo == 'train':\n", + " logger.info(\" ✅ [BYPASS] El Target ya es numérico. No requiere codificación.\")\n", + " return y_trans.astype(np.int8), {}\n", + " elif modo == 'test' and not mapa_aprendido:\n", + " logger.info(\" ✅ [BYPASS TEST] Diccionario vacío heredado. El Target se mantiene intacto.\")\n", + " return y_trans.astype(np.int8), {}\n", + "\n", + " # ==========================================\n", + " # 1. MODO TRAIN (Aprendizaje de la Receta)\n", + " # ==========================================\n", + " if modo == 'train':\n", + " valores_unicos = y_trans.dropna().unique()\n", + "\n", + " # 🚀 FIX MLOps: Manejo universal Binario/Multiclase\n", + " if len(valores_unicos) <= 2:\n", + " logger.info(f\" 💡 [INFO] Target BINARIO detectado ({len(valores_unicos)} clases). Codificando a 0 y 1.\")\n", + " else:\n", + " logger.info(f\" 💡 [INFO] Target MULTICLASE detectado ({len(valores_unicos)} clases).\")\n", + "\n", + " # Opción A: El Arquitecto definió un orden (Ordinal)\n", + " if jerarquia_ordinal:\n", + " logger.info(\" 🧠 [MODO ORDINAL] Aplicando jerarquía estricta del Arquitecto...\")\n", + " # Validar que todos los valores del dataset existan en la lista del Arquitecto\n", + " faltantes = set(valores_unicos) - set(jerarquia_ordinal)\n", + " if faltantes:\n", + " logger.error(f\"🛑 Error: La jerarquía no incluye estas clases encontradas en los datos: {faltantes}\")\n", + " raise ValueError(f\"La jerarquía no incluye estas clases encontradas en los datos: {faltantes}\")\n", + "\n", + " mapa_target = {clase: idx for idx, clase in enumerate(jerarquia_ordinal)}\n", + "\n", + " # Opción B: Automático Alfabético (Nominal)\n", + " else:\n", + " logger.info(\" 🤖 [MODO NOMINAL] Generando mapeo alfabético automático...\")\n", + " valores_ordenados = sorted(list(valores_unicos))\n", + " mapa_target = {clase: idx for idx, clase in enumerate(valores_ordenados)}\n", + "\n", + " # Aplicamos la transformación\n", + " y_trans = y_trans.map(mapa_target).astype(np.int8)\n", + " logger.info(f\" 💾 Diccionario de Mapeo Creado: {mapa_target}\")\n", + " logger.info(f\"⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return y_trans, mapa_target\n", + "\n", + " # ==========================================\n", + " # 2. MODO TEST (Aplicación Estricta)\n", + " # ==========================================\n", + " elif modo == 'test':\n", + " if mapa_aprendido is None:\n", + " logger.error(\"🛑 Error: En modo 'test' debes proporcionar el 'mapa_aprendido' de la fase Train.\")\n", + " raise ValueError(\"En modo 'test' debes proporcionar el 'mapa_aprendido' de la fase Train.\")\n", + "\n", + " if mapa_aprendido == {}:\n", + " logger.info(\" ✅ [BYPASS TEST] Diccionario vacío heredado. El Target se mantiene intacto.\")\n", + " return y_trans, {}\n", + "\n", + " # Verificación de clases fantasma en Test (clases que no existían en Train)\n", + " clases_test = set(y_trans.dropna().unique())\n", + " clases_train = set(mapa_aprendido.keys())\n", + " clases_fantasma = clases_test - clases_train\n", + "\n", + " if clases_fantasma:\n", + " logger.warning(f\" 🚨 [ALERTA MLOPS] Se detectaron clases en TEST que no existían en TRAIN: {clases_fantasma}\")\n", + " logger.warning(\" ↳ Se asignará el valor especial -1 a estas clases desconocidas.\")\n", + "\n", + " # Agregamos los fantasmas al mapa con valor -1 para que no se rompa el código\n", + " for fantasma in clases_fantasma:\n", + " mapa_aprendido[fantasma] = -1\n", + "\n", + " y_trans = y_trans.map(mapa_aprendido).astype(np.int8)\n", + " logger.info(f\" 🔒 Replicando diccionario de Train en Test: {mapa_aprendido}\")\n", + " logger.info(f\"⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return y_trans, mapa_aprendido\n", + "\n", + " else:\n", + " logger.error(\"🛑 El modo debe ser 'train' o 'test'.\")\n", + " raise ValueError(\"El modo debe ser 'train' o 'test'.\")\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'y_train', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargados los vectores 'y_train' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # 🛑 SWITCH DEL ARQUITECTO\n", + " # Si tu target tiene un orden lógico (ej. 'Bajo', 'Medio', 'Alto'), escríbelo aquí en orden.\n", + " # Si no tiene orden (ej. 'Perro', 'Gato', 'Pájaro'), déjalo como None.\n", + " MI_JERARQUIA_TARGET = None \n", + " # Ejemplo de uso: MI_JERARQUIA_TARGET = ['Riesgo Bajo', 'Riesgo Medio', 'Riesgo Alto']\n", + "\n", + " logger.info(\"\\n>>> 🚂 ENTRENANDO TARGET MULTICLASE <<<\")\n", + " y_train_mc, diccionario_target_maestro = codificador_target_multiclase(\n", + " y=manager.y_train, \n", + " modo='train',\n", + " jerarquia_ordinal=MI_JERARQUIA_TARGET\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO A TEST <<<\")\n", + " y_test_mc, _ = codificador_target_multiclase(\n", + " y=manager.y_test, \n", + " modo='test',\n", + " mapa_aprendido=diccionario_target_maestro\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.y_train = y_train_mc\n", + " manager.y_test = y_test_mc\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('diccionario_target_maestro', diccionario_target_maestro)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['diccionario_target_maestro'] = diccionario_target_maestro\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Vectores objetivo (y_train, y_test) codificados y actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " y_train = manager.y_train\n", + " y_test = manager.y_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el codificador de Target: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 1\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 0\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN10never-marriedNaNown-childwhite10.00...002000.00.000000.00.0000000.00
141private11married-civ-spousesaleshusbandwhite14386.00...000104386.0106.9756173.10.0000000.00
224private9never-marriedhandlers-cleanersunmarriedblack00.00...000000.00.000000.00.0000000.00
359private9widowedprof-specialtynot-in-familywhite00.00...000000.00.000000.00.0000000.00
435private9married-civ-spousesaleshusbandasian-pac-islander10.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss ... \\\n", + "0 own-child white 1 0.0 0 ... \n", + "1 husband white 1 4386.0 0 ... \n", + "2 unmarried black 0 0.0 0 ... \n", + "3 not-in-family white 0 0.0 0 ... \n", + "4 husband asian-pac-islander 1 0.0 1887 ... \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0 0.0 0.00000 \n", + "1 1 0 4386.0 106.97561 \n", + "2 0 0 0.0 0.00000 \n", + "3 0 0 0.0 0.00000 \n", + "4 0 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO MOTOR ORDINAL EN TRAIN <<<\n", + "=== 📶 FASE 10.3: Codificación Ordinal Jerárquica (Motor Híbrido) ===\n", + " 🚂 [TRAIN] Buscando jerarquías de negocio y fusionando manuales...\n", + "\n", + " ⚙️ Aplicando mapeo explícito de enteros...\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 0 características transformadas exitosamente.\n", + "\n", + "⏱️ Codificación Ordinal completada en 0.054s\n", + "\n", + ">>> 🔒 APLICANDO RECETA ORDINAL A TEST <<<\n", + "=== 📶 FASE 10.3: Codificación Ordinal Jerárquica (Motor Híbrido) ===\n", + " 🔒 [TEST] Aplicando jerarquías estrictas aprendidas en Train...\n", + "\n", + " ⚙️ Aplicando mapeo explícito de enteros...\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 0 características transformadas exitosamente.\n", + "\n", + "⏱️ Codificación Ordinal completada en 0.004s\n", + "\n", + "📦 [MLOps] Matrices, rutas y diccionario ordinal actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def codificacion_ordinal_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " diccionarios_manuales: Dict[str, Dict[str, int]] = None,\n", + " receta_aprendida: Dict[str, Dict[str, int]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.3] Motor AutoML de Codificación Ordinal.\n", + " - Híbrido MLOps: En Train combina manual + auto-discovery. En Test solo aplica receta.\n", + " - Preservación de Nulos: Usa .map() puro, garantizando que los NaNs sigan siendo NaNs.\n", + " - MLOps State: Retorna el artefacto de traducción para el despliegue en Producción.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 📶 FASE 10.3: Codificación Ordinal Jerárquica (Motor Híbrido) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': []}\n", + " columnas_transformadas = 0\n", + "\n", + " # ==========================================\n", + " # 1. El Cerebro NLP y Mapeo MLOps (Fit vs Transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando jerarquías estrictas aprendidas en Train...\")\n", + " diccionarios_finales = receta_aprendida\n", + " else:\n", + " logger.info(\" 🚂 [TRAIN] Buscando jerarquías de negocio y fusionando manuales...\")\n", + " diccionarios_finales = diccionarios_manuales or {}\n", + "\n", + " columnas_texto = [col for col in X_trans.columns if col in rutas.get('cat_vars', X_trans.select_dtypes(include=['object', 'category']).columns)]\n", + "\n", + " jerarquias_universales = {\n", + " 'niveles_basicos': {'low': 1, 'medium': 2, 'high': 3},\n", + " 'tallas_ropa': {'s': 1, 'm': 2, 'l': 3, 'xl': 4, 'xxl': 5},\n", + " 'calidad': {'bad': 1, 'poor': 2, 'fair': 3, 'good': 4, 'excellent': 5}\n", + " }\n", + "\n", + " for col in columnas_texto:\n", + " if col in diccionarios_finales:\n", + " continue\n", + "\n", + " valores_unicos = set(X_trans[col].dropna().astype(str).str.lower())\n", + "\n", + " for nombre_jerarquia, diccionario_nlp in jerarquias_universales.items():\n", + " claves_nlp = set(diccionario_nlp.keys())\n", + " interseccion = valores_unicos.intersection(claves_nlp)\n", + "\n", + " if len(valores_unicos) > 0 and len(interseccion) / len(valores_unicos) >= 0.8:\n", + " mapa_auto = {}\n", + " for val_real in X_trans[col].dropna().unique():\n", + " val_lower = str(val_real).lower()\n", + " if val_lower in diccionario_nlp:\n", + " mapa_auto[val_real] = diccionario_nlp[val_lower]\n", + "\n", + " diccionarios_finales[col] = mapa_auto\n", + " logger.info(f\" ✨ [Auto-Discovery] Detectada jerarquía '{nombre_jerarquia}' en '{col}'.\")\n", + " break\n", + "\n", + " # ==========================================\n", + " # 2. Motor de Traducción Blindada\n", + " # ==========================================\n", + " if not diccionarios_finales:\n", + " logger.info(\" ✅ [BYPASS] No se definieron jerarquías manuales ni se auto-detectaron patrones universales.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(\"\\n ⚙️ Aplicando mapeo explícito de enteros...\")\n", + "\n", + " for col, mapa in diccionarios_finales.items():\n", + " if col in X_trans.columns:\n", + " # .map() reemplaza por NaN todo lo que no esté en el diccionario\n", + " X_trans[col] = X_trans[col].map(mapa)\n", + "\n", + " # Casteamos a float temporalmente para soportar los NaNs en Pandas\n", + " X_trans[col] = X_trans[col].astype(float)\n", + "\n", + " columnas_transformadas += 1\n", + " logger.info(f\" 🔄 [Codificado] '{col}' convertida a enteros secuenciales.\")\n", + "\n", + " # Actualizamos rutas SOLO la primera vez (en Train)\n", + " if receta_aprendida is None:\n", + " if col in rutas.get('cat_vars', []):\n", + " rutas['cat_vars'].remove(col)\n", + " if col not in rutas.get('num_vars', []):\n", + " rutas['num_vars'].append(col)\n", + "\n", + " # ==========================================\n", + " # 3. Reporte Ejecutivo MLOps\n", + " # ==========================================\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 📊 Reporte: {columnas_transformadas} características transformadas exitosamente.\")\n", + " logger.info(f\"\\n⏱️ Codificación Ordinal completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, diccionarios_finales\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 💡 Lógica de Negocio (Domain Knowledge) inyectada por el Arquitecto\n", + " mis_jerarquias = {\n", + " 'recsupervisionleveltext': {\n", + " 'Low': 1, 'Medium': 2, 'High': 3, 'Very High': 4\n", + " }\n", + " }\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO MOTOR ORDINAL EN TRAIN <<<\")\n", + " X_train_ord, rutas_actualizadas, receta_ordinal = codificacion_ordinal_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " diccionarios_manuales=mis_jerarquias\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO RECETA ORDINAL A TEST <<<\")\n", + " X_test_ord, _, _ = codificacion_ordinal_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_ordinal # El puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_ord\n", + " manager.X_test = X_test_ord\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_ordinal', receta_ordinal)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_ordinal'] = receta_ordinal\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y diccionario ordinal actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Codificación Ordinal: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN10never-marriedNaNown-childwhite10.00...002000.00.000000.00.0000000.00
141private11married-civ-spousesaleshusbandwhite14386.00...000104386.0106.9756173.10.0000000.00
224private9never-marriedhandlers-cleanersunmarriedblack00.00...000000.00.000000.00.0000000.00
359private9widowedprof-specialtynot-in-familywhite00.00...000000.00.000000.00.0000000.00
435private9married-civ-spousesaleshusbandasian-pac-islander10.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss ... \\\n", + "0 own-child white 1 0.0 0 ... \n", + "1 husband white 1 4386.0 0 ... \n", + "2 unmarried black 0 0.0 0 ... \n", + "3 not-in-family white 0 0.0 0 ... \n", + "4 husband asian-pac-islander 1 0.0 1887 ... \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0 0.0 0.00000 \n", + "1 1 0 4386.0 106.97561 \n", + "2 0 0 0.0 0.00000 \n", + "3 0 0 0.0 0.00000 \n", + "4 0 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🎯 MODO SELECCIONADO: TARGET ENCODING <<<\n", + ">>> 🚂 ENTRENANDO TARGET ENCODER EN TRAIN <<<\n", + "=== 🎯 FASE 10.4: Target Encoding Universal (OOF + Bayesiano) ===\n", + " 🧠 [AUTO-DETECCIÓN] Target Binario Numérico detectado.\n", + "\n", + " 🚂 [TRAIN] Procesando 6 variables con alta cardinalidad: ['workclass', 'marital_status', 'occupation', 'relationship', 'race', 'native_country']...\n", + " 🔄 [Encoded] 'workclass' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'marital_status' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'occupation' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'relationship' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'race' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'native_country' (Media global: 0.2409)\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Prevención de Fuga de Datos (OOF) aplicada exitosamente.\n", + "\n", + "⏱️ Target Encoding completado en 0.207s\n", + "\n", + ">>> 🔒 APLICANDO TARGET ENCODER A TEST <<<\n", + "=== 🎯 FASE 10.4: Target Encoding Universal (OOF + Bayesiano) ===\n", + " 🔒 [TEST] Aplicando probabilidades Bayesianas aprendidas de Train...\n", + "\n", + "⏱️ Target Encoding completado en 0.009s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura. Artefacto 'receta_target_encoding' guardado en PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "from sklearn.model_selection import KFold\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR 1: TARGET ENCODING\n", + "# ==========================================\n", + "def target_encoding_oof_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None, \n", + " m_suavizado: float = 10.0,\n", + " n_splits: int = 5,\n", + " receta_aprendida: Dict = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.4] Motor AutoML de Target Encoding (Universal Multi-Clase + OOF).\n", + " - Auto-Detección: Soporta Target Binario (1 prob/col) o Multiclase (N probs/col).\n", + " - Muro MLOps: En Train calcula medias y guarda receta. En Test solo aplica receta.\n", + " - FIX MLOps: Ignora el Index temporalmente para evadir el error de \"duplicate labels\".\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🎯 FASE 10.4: Target Encoding Universal (OOF + Bayesiano) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 🚀 FIX PANDAS: Guardamos el Index original y lo ignoramos (reset_index) para la matemática\n", + " original_index = X_trans.index\n", + " X_trans = X_trans.reset_index(drop=True)\n", + " if y is not None:\n", + " y = y.reset_index(drop=True)\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando probabilidades Bayesianas aprendidas de Train...\")\n", + "\n", + " for col_original, config_encoding in receta_aprendida.items():\n", + " if col_original not in X_trans.columns: continue\n", + "\n", + " for nombre_clase, diccionario_mapeo in config_encoding.items():\n", + " \n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Inmutabilidad (Clean Code)\n", + " # Reemplazamos .pop() por .get() para no destruir la RAM.\n", + " # Creamos un mapa puro al vuelo sin ifs anidados.\n", + " # ==========================================\n", + " media_global_train = diccionario_mapeo.get('__GLOBAL_MEAN__', 0.0)\n", + " mapa_puro = {k: v for k, v in diccionario_mapeo.items() if k != '__GLOBAL_MEAN__'}\n", + " \n", + " nueva_col_nombre = col_original if len(config_encoding) == 1 else f\"{col_original}_prob_{nombre_clase}\"\n", + "\n", + " mask_nan = X_trans[col_original].isna()\n", + " # Aplicamos map() exclusivamente usando el mapa puro\n", + " X_trans[nueva_col_nombre] = X_trans[col_original].astype(object).map(mapa_puro).fillna(media_global_train)\n", + " X_trans.loc[mask_nan, nueva_col_nombre] = np.nan\n", + "\n", + " if len(config_encoding) > 1:\n", + " X_trans.drop(columns=[col_original], inplace=True)\n", + "\n", + " logger.info(f\"\\n⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None: \n", + " logger.error(\"🛑 Error: Train requiere la variable objetivo 'y'.\")\n", + " raise ValueError(\"Train requiere la variable objetivo 'y'.\")\n", + "\n", + " # --- AUTO-DETECCIÓN DEL TIPO DE TARGET ---\n", + " valores_target = y.dropna().unique()\n", + " es_multiclase = len(valores_target) > 2 or not pd.api.types.is_numeric_dtype(y)\n", + "\n", + " targets_a_procesar = {}\n", + " if es_multiclase:\n", + " logger.info(f\" 🧠 [AUTO-DETECCIÓN] Target Multiclase detectado ({len(valores_target)} categorías).\")\n", + " for clase in valores_target:\n", + " targets_a_procesar[clase] = (y == clase).astype(float)\n", + " else:\n", + " logger.info(f\" 🧠 [AUTO-DETECCIÓN] Target Binario Numérico detectado.\")\n", + " targets_a_procesar['Target_Directo'] = y.copy().astype(float)\n", + "\n", + " diccionario_produccion = {}\n", + "\n", + " cols_a_codificar = []\n", + "\n", + " # --- FILTRO SILENCIOSO DE VARIABLES ---\n", + " for c in X_trans.columns:\n", + " if c.startswith('TARGET_'): continue\n", + "\n", + " n_unicos = X_trans[c].dropna().nunique()\n", + " es_numerica = pd.api.types.is_numeric_dtype(X_trans[c])\n", + " es_categoria_pura = c in rutas.get('cat_vars', []) or pd.api.types.is_object_dtype(X_trans[c]) or pd.api.types.is_categorical_dtype(X_trans[c])\n", + "\n", + " # Solo pasa el filtro si es categórica pura, no es numérica y tiene más de 2 categorías\n", + " if es_categoria_pura and n_unicos > 2 and not es_numerica:\n", + " cols_a_codificar.append(c)\n", + "\n", + " if not cols_a_codificar:\n", + " logger.info(\"\\n ✅ [BYPASS] No hay variables categóricas de alta cardinalidad para Target Encoding.\")\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\"\\n 🚂 [TRAIN] Procesando {len(cols_a_codificar)} variables con alta cardinalidad: {cols_a_codificar}...\")\n", + " kf = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + "\n", + " for col in cols_a_codificar:\n", + " diccionario_produccion[col] = {}\n", + " X_trans[col] = X_trans[col].astype(object)\n", + "\n", + " for nombre_clase, y_clase in targets_a_procesar.items():\n", + " media_global = y_clase.mean()\n", + " nueva_col = np.full(len(X_trans), np.nan)\n", + "\n", + " stats_globales = pd.DataFrame({'Target': y_clase, 'Categoria': X_trans[col]}).groupby('Categoria')['Target'].agg(['count', 'mean'])\n", + " n_global = stats_globales['count']\n", + " suavizado_global = (n_global * stats_globales['mean'] + m_suavizado * media_global) / (n_global + m_suavizado)\n", + "\n", + " diccionario_produccion[col][nombre_clase] = suavizado_global.to_dict()\n", + " diccionario_produccion[col][nombre_clase]['__GLOBAL_MEAN__'] = media_global \n", + "\n", + " for train_idx, val_idx in kf.split(X_trans):\n", + " X_tr_fold, X_val_fold = X_trans.iloc[train_idx], X_trans.iloc[val_idx]\n", + " y_tr_fold = y_clase.iloc[train_idx]\n", + "\n", + " stats_fold = pd.DataFrame({'Target': y_tr_fold, 'Categoria': X_tr_fold[col]}).groupby('Categoria')['Target'].agg(['count', 'mean'])\n", + " n = stats_fold['count']\n", + " suavizado_fold = (n * stats_fold['mean'] + m_suavizado * media_global) / (n + m_suavizado)\n", + "\n", + " nueva_col[val_idx] = X_val_fold[col].map(suavizado_fold).astype(float).fillna(media_global)\n", + "\n", + " mask_nan = X_trans[col].isna()\n", + " nueva_col_nombre = col if not es_multiclase else f\"{col}_prob_{nombre_clase}\"\n", + " X_trans[nueva_col_nombre] = nueva_col\n", + " X_trans.loc[mask_nan, nueva_col_nombre] = np.nan\n", + "\n", + " logger.info(f\" 🔄 [Encoded] '{nueva_col_nombre}' (Media global: {media_global:.4f})\")\n", + "\n", + " if nueva_col_nombre not in rutas['num_vars']:\n", + " rutas['num_vars'].append(nueva_col_nombre)\n", + "\n", + " if es_multiclase:\n", + " X_trans.drop(columns=[col], inplace=True)\n", + " if col in rutas['cat_vars']: rutas['cat_vars'].remove(col)\n", + " elif col in rutas['cat_vars']:\n", + " rutas['cat_vars'].remove(col) \n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Prevención de Fuga de Datos (OOF) aplicada exitosamente.\")\n", + " logger.info(f\"\\n⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "\n", + "# ==========================================\n", + "# MOTOR 2: WEIGHT OF EVIDENCE (WoE)\n", + "# ==========================================\n", + "def woe_encoding_oof_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None, \n", + " n_splits: int = 5,\n", + " epsilon: float = 0.001,\n", + " receta_aprendida: Dict = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.4] Motor AutoML de Weight of Evidence (WoE + OOF).\n", + " - Muro MLOps: En Train (.fit) calcula WoE OOF y guarda la receta. En Test (.transform) solo aplica la receta.\n", + " - Matemática Segura (Epsilon): Evita divisiones por cero y logaritmos infinitos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 10.4: Weight of Evidence - WoE (OOF + Escudo Epsilon) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 🚀 FIX PANDAS: Guardamos el Index original y lo ignoramos (reset_index) para la matemática\n", + " original_index = X_trans.index\n", + " X_trans = X_trans.reset_index(drop=True)\n", + " if y is not None:\n", + " y = y.reset_index(drop=True)\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando logaritmos WoE fijos aprendidos de Train...\")\n", + " columnas_a_transformar = list(receta_aprendida.keys())\n", + "\n", + " for col in columnas_a_transformar:\n", + " if col in X_trans.columns:\n", + " diccionario_columna = receta_aprendida[col]\n", + " \n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Inmutabilidad (Clean Code)\n", + " # Reemplazamos .pop() por .get() y construimos un mapa limpio.\n", + " # ==========================================\n", + " valor_neutral_train = diccionario_columna.get('__GLOBAL_NEUTRAL__', 0.0)\n", + " mapa_puro = {k: v for k, v in diccionario_columna.items() if k != '__GLOBAL_NEUTRAL__'}\n", + "\n", + " X_trans[col] = X_trans[col].astype(object)\n", + "\n", + " mask_nan = X_trans[col].isna()\n", + " # Aplicamos el map usando el mapa_puro que no contiene la llave neutral\n", + " X_trans[col] = X_trans[col].map(mapa_puro).fillna(valor_neutral_train)\n", + " X_trans.loc[mask_nan, col] = np.nan\n", + "\n", + " logger.debug(f\" ↳ Replicado en '{col}' (Categorías nuevas llenadas con WoE Neutral: 0.0)\")\n", + "\n", + " logger.info(f\"\\n⏱️ WoE completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.error(\"🛑 Error: En modo Train (sin receta aprendida) debes proporcionar 'y'.\")\n", + " raise ValueError(\"En modo Train (sin receta aprendida) debes proporcionar 'y'.\")\n", + "\n", + " y_trans = y.copy().astype(float) \n", + " diccionario_produccion = {}\n", + "\n", + " cols_a_codificar = []\n", + "\n", + " # --- FILTRO SILENCIOSO DE VARIABLES ---\n", + " for c in X_trans.columns:\n", + " if c.startswith('TARGET_'): continue\n", + "\n", + " n_unicos = X_trans[c].dropna().nunique()\n", + " es_numerica = pd.api.types.is_numeric_dtype(X_trans[c])\n", + " es_categoria_pura = c in rutas.get('cat_vars', []) or pd.api.types.is_object_dtype(X_trans[c]) or pd.api.types.is_categorical_dtype(X_trans[c])\n", + "\n", + " if es_categoria_pura and n_unicos > 2 and not es_numerica:\n", + " cols_a_codificar.append(c)\n", + "\n", + " if not cols_a_codificar:\n", + " logger.info(\"\\n ✅ [BYPASS] No hay variables categóricas candidatas restantes para WoE.\")\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\"\\n 🚂 [TRAIN] Procesando {len(cols_a_codificar)} variables con alta cardinalidad: {cols_a_codificar}\")\n", + "\n", + " kf = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + "\n", + " global_pos = y_trans.sum()\n", + " global_neg = len(y_trans) - global_pos\n", + "\n", + " for col in cols_a_codificar:\n", + " X_trans[col] = X_trans[col].astype(object)\n", + " nueva_col = np.zeros(len(X_trans))\n", + " nueva_col[:] = np.nan\n", + "\n", + " stats_globales = pd.DataFrame({'Target': y_trans, 'Categoria': X_trans[col]}).groupby('Categoria')['Target'].agg(['sum', 'count'])\n", + " cat_pos = stats_globales['sum']\n", + " cat_neg = stats_globales['count'] - cat_pos\n", + "\n", + " prop_pos_global = (cat_pos + epsilon) / (global_pos + epsilon * 2)\n", + " prop_neg_global = (cat_neg + epsilon) / (global_neg + epsilon * 2)\n", + "\n", + " woe_global = np.log(prop_pos_global / prop_neg_global)\n", + "\n", + " diccionario_produccion[col] = woe_global.to_dict()\n", + " diccionario_produccion[col]['__GLOBAL_NEUTRAL__'] = 0.0 \n", + "\n", + " for train_idx, val_idx in kf.split(X_trans):\n", + " X_tr_fold, X_val_fold = X_trans.iloc[train_idx], X_trans.iloc[val_idx]\n", + " y_tr_fold = y_trans.iloc[train_idx]\n", + "\n", + " fold_pos = y_tr_fold.sum()\n", + " fold_neg = len(y_tr_fold) - fold_pos\n", + "\n", + " stats_fold = pd.DataFrame({'Target': y_tr_fold, 'Categoria': X_tr_fold[col]}).groupby('Categoria')['Target'].agg(['sum', 'count'])\n", + " f_cat_pos = stats_fold['sum']\n", + " f_cat_neg = stats_fold['count'] - f_cat_pos\n", + "\n", + " f_prop_pos = (f_cat_pos + epsilon) / (fold_pos + epsilon * 2)\n", + " f_prop_neg = (f_cat_neg + epsilon) / (fold_neg + epsilon * 2)\n", + "\n", + " woe_fold = np.log(f_prop_pos / f_prop_neg)\n", + "\n", + " mapeo_val = X_val_fold[col].map(woe_fold).astype(float)\n", + " mapeo_val = mapeo_val.fillna(0.0) \n", + "\n", + " nueva_col[val_idx] = mapeo_val\n", + "\n", + " mask_nan = X_trans[col].isna()\n", + " X_trans[col] = nueva_col \n", + " X_trans.loc[mask_nan, col] = np.nan \n", + "\n", + " logger.info(f\" 🔄 [WoE Encoded] '{col}' transformada a Weight of Evidence (OOF).\")\n", + "\n", + " if col in rutas['cat_vars']:\n", + " rutas['cat_vars'].remove(col)\n", + " if col not in rutas['num_vars']:\n", + " rutas['num_vars'].append(col)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: WoE calculado con blindaje OOF y Epsilon Anti-Infinitos.\")\n", + " logger.info(\" 💾 Diccionario de mapeo guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ WoE completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Unificada en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 🛑 SWITCH MAESTRO DE CODIFICACIÓN (El Enrutador del Arquitecto)\n", + " # True = Usa Target Encoding (Para Regresión, Árboles o Casos Generales)\n", + " # False = Usa Weight of Evidence (Para Riesgo Crediticio / Regresión Logística Binaria)\n", + " USAR_TARGET_ENCODING = True \n", + "\n", + " if USAR_TARGET_ENCODING:\n", + " logger.info(\">>> 🎯 MODO SELECCIONADO: TARGET ENCODING <<<\")\n", + " logger.info(\">>> 🚂 ENTRENANDO TARGET ENCODER EN TRAIN <<<\")\n", + " X_train_enc, rutas_actualizadas, receta_codificacion = target_encoding_oof_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " m_suavizado=10.0,\n", + " n_splits=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO TARGET ENCODER A TEST <<<\")\n", + " X_test_enc, _, _ = target_encoding_oof_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_codificacion\n", + " )\n", + " else:\n", + " logger.info(\">>> ⚖️ MODO SELECCIONADO: WEIGHT OF EVIDENCE (WoE) <<<\")\n", + " logger.info(\">>> 🚂 ENTRENANDO WoE EN TRAIN <<<\")\n", + " X_train_enc, rutas_actualizadas, receta_codificacion = woe_encoding_oof_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " n_splits=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO WoE A TEST <<<\")\n", + " X_test_enc, _, _ = woe_encoding_oof_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_codificacion\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_enc\n", + " manager.X_test = X_test_enc\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " nombre_artefacto = 'receta_target_encoding' if USAR_TARGET_ENCODING else 'receta_woe_encoding'\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto(nombre_artefacto, receta_codificacion)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos[nombre_artefacto] = receta_codificacion\n", + "\n", + " logger.info(f\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura. Artefacto '{nombre_artefacto}' guardado en PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Codificación Supervisada: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN100.047554NaN0.0112200.25830810.00...002000.00.000000.00.0000000.00
1410.218684110.4447410.2637420.4481490.25412114386.00...000104386.0106.9756173.10.0000000.00
2240.21868490.0449660.0628220.0647310.12111300.00...000000.00.000000.00.0000000.00
3590.22002490.0917080.4579890.1072670.25830800.00...000000.00.000000.00.0000000.00
4350.21864290.4490630.2687300.4514030.26444510.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21 NaN 10 0.047554 NaN 0.011220 \n", + "1 41 0.218684 11 0.444741 0.263742 0.448149 \n", + "2 24 0.218684 9 0.044966 0.062822 0.064731 \n", + "3 59 0.220024 9 0.091708 0.457989 0.107267 \n", + "4 35 0.218642 9 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.258308 1 0.0 0 ... 0 \n", + "1 0.254121 1 4386.0 0 ... 0 \n", + "2 0.121113 0 0.0 0 ... 0 \n", + "3 0.258308 0 0.0 0 ... 0 \n", + "4 0.264445 1 0.0 1887 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0 2 0 \n", + "1 0 0 1 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0.0 0.00000 \n", + "1 0 4386.0 106.97561 \n", + "2 0 0.0 0.00000 \n", + "3 0 0.0 0.00000 \n", + "4 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
0390.544899100.1031060.2255580.1042160.25604810.00...000000.00.00.00.00.0
1350.218800130.4475940.1358270.4497980.25604810.00...000000.00.00.00.00.0
2310.218800130.4475940.4563640.4497980.25604810.00...000000.00.00.00.00.0
3670.544899130.0906210.0392740.0601270.25604800.00...000000.00.00.00.00.0
4560.28910390.0807620.4816760.1042160.25604810.00...000000.00.00.00.00.0
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 39 0.544899 10 0.103106 0.225558 0.104216 \n", + "1 35 0.218800 13 0.447594 0.135827 0.449798 \n", + "2 31 0.218800 13 0.447594 0.456364 0.449798 \n", + "3 67 0.544899 13 0.090621 0.039274 0.060127 \n", + "4 56 0.289103 9 0.080762 0.481676 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.256048 1 0.0 0 ... 0 \n", + "1 0.256048 1 0.0 0 ... 0 \n", + "2 0.256048 1 0.0 0 ... 0 \n", + "3 0.256048 0 0.0 0 ... 0 \n", + "4 0.256048 1 0.0 0 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0.0 0.0 \n", + "1 0 0.0 0.0 \n", + "2 0 0.0 0.0 \n", + "3 0 0.0 0.0 \n", + "4 0 0.0 0.0 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 1\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 0\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO TIPADO NATIVO EN TRAIN <<<\n", + "=== 🏷️ FASE 10.5: Native Categoricals (CatBoost/LightGBM Ready) ===\n", + " ✅ [BYPASS] No quedan variables de texto libres. Todas fueron numéricamente codificadas.\n", + "\n", + ">>> 🔒 APLICANDO TIPADO NATIVO A TEST <<<\n", + "=== 🏷️ FASE 10.5: Native Categoricals (CatBoost/LightGBM Ready) ===\n", + " 🔒 [TEST] Aplicando moldes categóricos estrictos aprendidos de Train...\n", + "\n", + "⏱️ Tipado Nativo completado en 0.002s\n", + "\n", + "📦 [MLOps] Matrices, rutas y receta de tipado nativo actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def codificacion_nativa_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " receta_aprendida: Dict = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.5] Motor AutoML de Categorías Nativas.\n", + " - Especial para CatBoost / LightGBM.\n", + " - Muro MLOps: Aprende el universo en Train y lo guarda en la receta. Test solo obedece la receta.\n", + " - Blindaje Test/Producción: Si llega una categoría nueva, la neutraliza a NaN sin caerse.\n", + " - Reducción de Memoria: El tipo 'category' usa punteros enteros (hiper-ligero).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🏷️ FASE 10.5: Native Categoricals (CatBoost/LightGBM Ready) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + " columnas_transformadas = 0\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando moldes categóricos estrictos aprendidos de Train...\")\n", + "\n", + " for col, categorias_conocidas in receta_aprendida.items():\n", + " if col in X_trans.columns:\n", + " molde_categorico = pd.CategoricalDtype(categories=categorias_conocidas, ordered=False)\n", + "\n", + " # Protegemos NaNs reales, convertimos a string y aplicamos el molde de Train\n", + " X_trans[col] = X_trans[col].astype(str).replace('nan', np.nan)\n", + " X_trans[col] = X_trans[col].astype(molde_categorico)\n", + "\n", + " # MAGIA MLOPS: Si X_test tenía una ciudad \"Quito\" que no estaba en Train, \n", + " # Pandas automáticamente la convierte en NaN sin lanzar error.\n", + "\n", + " columnas_transformadas += 1\n", + " logger.debug(f\" ↳ Replicado en '{col}' (Categorías desconocidas neutralizadas a NaN).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Tipado Nativo completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " diccionario_produccion = {}\n", + "\n", + " # Filtro Inteligente: Solo tocamos lo que \"sobrevivió\" a las codificaciones anteriores\n", + " cols_a_codificar = rutas.get('cat_vars', [])\n", + "\n", + " if not cols_a_codificar:\n", + " logger.info(\" ✅ [BYPASS] No quedan variables de texto libres. Todas fueron numéricamente codificadas.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\" 🚂 [TRAIN] Detectadas {len(cols_a_codificar)} variables residuales para tipado nativo: {cols_a_codificar}\")\n", + "\n", + " # Motor de Tipado MLOps\n", + " for col in cols_a_codificar:\n", + " if col not in X_trans.columns:\n", + " continue\n", + "\n", + " # A. Extracción del Universo Conocido\n", + " categorias_conocidas = X_trans[col].dropna().astype(str).unique()\n", + "\n", + " # B. Creación del \"Molde Estricto\"\n", + " molde_categorico = pd.CategoricalDtype(categories=categorias_conocidas, ordered=False)\n", + " diccionario_produccion[col] = list(categorias_conocidas)\n", + "\n", + " # C. Aplicación a Train\n", + " X_trans[col] = X_trans[col].astype(str).replace('nan', np.nan) \n", + " X_trans[col] = X_trans[col].astype(molde_categorico)\n", + "\n", + " columnas_transformadas += 1\n", + " logger.info(f\" 🔄 [Tipado Nativo] '{col}' convertida a 'category' (Memoria Optimizada).\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: {columnas_transformadas} características blindadas con molde categórico estricto.\")\n", + " logger.info(\" 💾 Diccionario de universos permitidos guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Tipado Nativo completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO TIPADO NATIVO EN TRAIN <<<\")\n", + " X_train_nat, rutas_actualizadas, receta_categorias = codificacion_nativa_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO TIPADO NATIVO A TEST <<<\")\n", + " X_test_nat, _, _ = codificacion_nativa_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_categorias # Puente de Producción\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_nat\n", + " manager.X_test = X_test_nat\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Asegurar inicialización del diccionario de artefactos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_categorias_nativas', receta_categorias)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_categorias_nativas'] = receta_categorias\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y receta de tipado nativo actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Tipado Nativo: {e}\")\n", + "\n", + "\n", + "# # FASE 4: Imputación, Outliers y Escalamiento\n", + "# Ahora que todo es numérico, reparamos la topología del espacio vectorial." + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN100.047554NaN0.0112200.25830810.00...002000.00.000000.00.0000000.00
1410.218684110.4447410.2637420.4481490.25412114386.00...000104386.0106.9756173.10.0000000.00
2240.21868490.0449660.0628220.0647310.12111300.00...000000.00.000000.00.0000000.00
3590.22002490.0917080.4579890.1072670.25830800.00...000000.00.000000.00.0000000.00
4350.21864290.4490630.2687300.4514030.26444510.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21 NaN 10 0.047554 NaN 0.011220 \n", + "1 41 0.218684 11 0.444741 0.263742 0.448149 \n", + "2 24 0.218684 9 0.044966 0.062822 0.064731 \n", + "3 59 0.220024 9 0.091708 0.457989 0.107267 \n", + "4 35 0.218642 9 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.258308 1 0.0 0 ... 0 \n", + "1 0.254121 1 4386.0 0 ... 0 \n", + "2 0.121113 0 0.0 0 ... 0 \n", + "3 0.258308 0 0.0 0 ... 0 \n", + "4 0.264445 1 0.0 1887 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0 2 0 \n", + "1 0 0 1 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0.0 0.00000 \n", + "1 0 4386.0 106.97561 \n", + "2 0 0.0 0.00000 \n", + "3 0 0.0 0.00000 \n", + "4 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 80, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
10620.218800100.4475940.1358270.4723720.25604800.00...000000.00.00.00.0000000.000
11250.218800130.0458510.4816760.0118820.25604810.00...000000.00.00.00.0000000.000
12290.21880090.1031060.1218420.0601270.25604800.00...000000.00.00.00.0000000.000
1365NaN130.447594NaN0.4497980.25604810.02377...00201-2377.00.00.036.56923159.425
14500.265583130.0458510.4816760.1042160.25604800.00...000000.00.00.00.0000000.000
15210.218800100.0458510.2989650.0118820.25604800.00...000000.00.00.00.0000000.000
16270.21880090.4475940.2255580.4497980.25604810.00...000000.00.00.00.0000000.000
17220.218800100.0458510.2671510.1042160.25604800.00...000000.00.00.00.0000000.000
18380.218800130.4475940.4816760.4497980.25604810.00...000000.00.00.00.0000000.000
19490.218800130.0807620.0392740.1042160.27138910.00...000000.00.00.00.0000000.000
\n", + "

10 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "10 62 0.218800 10 0.447594 0.135827 0.472372 \n", + "11 25 0.218800 13 0.045851 0.481676 0.011882 \n", + "12 29 0.218800 9 0.103106 0.121842 0.060127 \n", + "13 65 NaN 13 0.447594 NaN 0.449798 \n", + "14 50 0.265583 13 0.045851 0.481676 0.104216 \n", + "15 21 0.218800 10 0.045851 0.298965 0.011882 \n", + "16 27 0.218800 9 0.447594 0.225558 0.449798 \n", + "17 22 0.218800 10 0.045851 0.267151 0.104216 \n", + "18 38 0.218800 13 0.447594 0.481676 0.449798 \n", + "19 49 0.218800 13 0.080762 0.039274 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "10 0.256048 0 0.0 0 ... 0 \n", + "11 0.256048 1 0.0 0 ... 0 \n", + "12 0.256048 0 0.0 0 ... 0 \n", + "13 0.256048 1 0.0 2377 ... 0 \n", + "14 0.256048 0 0.0 0 ... 0 \n", + "15 0.256048 0 0.0 0 ... 0 \n", + "16 0.256048 1 0.0 0 ... 0 \n", + "17 0.256048 0 0.0 0 ... 0 \n", + "18 0.256048 1 0.0 0 ... 0 \n", + "19 0.271389 1 0.0 0 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "10 0 0 0 \n", + "11 0 0 0 \n", + "12 0 0 0 \n", + "13 0 2 0 \n", + "14 0 0 0 \n", + "15 0 0 0 \n", + "16 0 0 0 \n", + "17 0 0 0 \n", + "18 0 0 0 \n", + "19 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "10 0 0.0 0.0 \n", + "11 0 0.0 0.0 \n", + "12 0 0.0 0.0 \n", + "13 1 -2377.0 0.0 \n", + "14 0 0.0 0.0 \n", + "15 0 0.0 0.0 \n", + "16 0 0.0 0.0 \n", + "17 0 0.0 0.0 \n", + "18 0 0.0 0.0 \n", + "19 0 0.0 0.0 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "10 0.0 0.000000 \n", + "11 0.0 0.000000 \n", + "12 0.0 0.000000 \n", + "13 0.0 36.569231 \n", + "14 0.0 0.000000 \n", + "15 0.0 0.000000 \n", + "16 0.0 0.000000 \n", + "17 0.0 0.000000 \n", + "18 0.0 0.000000 \n", + "19 0.0 0.000000 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "10 0.000 \n", + "11 0.000 \n", + "12 0.000 \n", + "13 59.425 \n", + "14 0.000 \n", + "15 0.000 \n", + "16 0.000 \n", + "17 0.000 \n", + "18 0.000 \n", + "19 0.000 \n", + "\n", + "[10 rows x 24 columns]" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test[10:20]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null float64\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 24551 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null Int8 \n", + " 8 capital_gain 25899 non-null float64\n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null float64\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 25899 non-null float64\n", + " 21 capital_gain_por_hours_per_week 25899 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + "dtypes: Int8(1), float64(12), int16(1), int8(10)\n", + "memory usage: 2.7 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " 🚂 [TRAIN] Detectados 3,809 huecos numéricos. Protegiendo RAM...\n", + " ↳ Dataset masivo detectado. Creando 'Donor Pool' aleatorio de 15,000 filas...\n", + " ↳ Construyendo topología matemática (fit)...\n", + " ↳ Rellenando huecos en matriz completa por lotes de 10,000 filas (transform)...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Cirugía completada con Arquitectura Big Data.\n", + " 📊 Huecos numéricos restantes en Train: 0\n", + " 💾 Modelo Imputador guardado para la API de Producción.\n", + "\n", + "⏱️ Imputación KNN completada en 2.028s\n", + "\n", + ">>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " 🔒 [TEST] Imputando valores usando la geometría espacial de Train...\n", + " 🔒 [TEST] Rellenando 929 huecos (Chunking)...\n", + " 📊 Huecos numéricos restantes en Test: 0\n", + "\n", + "⏱️ Imputación KNN completada en 0.488s\n", + "\n", + "📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional, Union\n", + "from sklearn.impute import KNNImputer\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def imputacion_knn_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " n_vecinos: int = 5,\n", + " imputador_entrenado: Optional[Union[KNNImputer, str]] = None # 🚀 FIX: Acepta str para el sello\n", + ") -> Tuple[pd.DataFrame, Dict, Optional[Union[KNNImputer, str]]]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 11.1] Motor AutoML de Restauración Espacial (KNN Imputer Escalable).\n", + " - Escudo Autónomo Temporal (Clean Code): Protege fechas nativas y las de `rutas['date_vars']` sin parámetros manuales.\n", + " - Cazador de Anomalías: Solo busca y destruye NaTs infiltrados en variables NO temporales.\n", + " - Arquitectura Big Data: Donor Pool (max 15k) y Chunking (10k) para proteger la RAM.\n", + " - 🚀 Muro MLOps: Sello 'BYPASS_KNN' para evitar fits accidentales en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - {n_vecinos} Vecinos) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " idx = X_trans.index\n", + " total_filas = len(X_trans)\n", + "\n", + " # 🚀 INTELIGENCIA AUTO-ML: Recuperar fechas protegidas desde la memoria global\n", + " columnas_fecha_intactas = rutas.get('date_vars', [])\n", + " fechas_protegidas_encontradas = []\n", + "\n", + " # ==========================================\n", + " # 🚀 PRE-PROCESO: Traducción NaT -> NaN (Exclusivo para No-Fechas)\n", + " # ==========================================\n", + " for col in X_trans.columns:\n", + " # 1. 🛡️ ESCUDO AUTOMÁTICO: Si es fecha (por tipo o por ruta), la ignoramos por completo\n", + " if pd.api.types.is_datetime64_any_dtype(X_trans[col]) or col in columnas_fecha_intactas:\n", + " fechas_protegidas_encontradas.append(col)\n", + " continue\n", + "\n", + " # 2. 🧠 BÚSQUEDA INTELIGENTE: Solo revisamos variables de texto/objeto que tengan nulos\n", + " if X_trans[col].hasnans and X_trans[col].dtype == 'object':\n", + " # Evaluamos silenciosamente si hay NaTs infiltrados (anomalía de Pandas)\n", + " mascara_nat = X_trans[col].apply(lambda x: x is pd.NaT)\n", + " hallazgos_nat = mascara_nat.sum()\n", + "\n", + " if hallazgos_nat > 0:\n", + " logger.warning(f\" ⚙️ [PURIFICACIÓN] Aniquilando {hallazgos_nat} NaTs infiltrados en la variable no-temporal '{col}' -> NaN.\")\n", + " X_trans.loc[mascara_nat, col] = np.nan\n", + "\n", + " # 📊 Telemetría del Escudo Temporal\n", + " if fechas_protegidas_encontradas:\n", + " logger.info(f\" 🛡️ [ESCUDO ACTIVO] Se protegieron {len(fechas_protegidas_encontradas)} columnas de tipo fecha: {fechas_protegidas_encontradas}\")\n", + "\n", + " # ==========================================\n", + " # 🛡️ AISLAMIENTO QUIRÚRGICO: Solo pasamos números al KNN\n", + " # (Las fechas protegidas quedan fuera automáticamente)\n", + " # ==========================================\n", + " cols_numericas = X_trans.select_dtypes(include=[np.number]).columns.tolist()\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No se detectaron variables numéricas. Imputación omitida.\")\n", + " return X_trans, rutas, imputador_entrenado or KNNImputer()\n", + "\n", + " nulos_numericos = X_trans[cols_numericas].isna().sum().sum()\n", + "\n", + " # ==========================================\n", + " # ⚙️ Parámetros de Escalabilidad (Big Data)\n", + " # ==========================================\n", + " MAX_FIT_SAMPLES = 15000 \n", + " CHUNK_SIZE = 10000 \n", + "\n", + " def transformar_por_lotes(imputador, df_a_imputar):\n", + " matrices_limpias = []\n", + " for i in range(0, len(df_a_imputar), CHUNK_SIZE):\n", + " chunk = df_a_imputar.iloc[i:i+CHUNK_SIZE].astype(float)\n", + " chunk_imputado = imputador.transform(chunk)\n", + " matrices_limpias.append(chunk_imputado)\n", + " return np.vstack(matrices_limpias)\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if imputador_entrenado is not None:\n", + " # 🚀 FIX MLOps: Si Train no necesitó imputador, Test hereda la orden de no hacer nada.\n", + " if imputador_entrenado == 'BYPASS_KNN':\n", + " logger.info(\" 🔒 [TEST] Bypass heredado de Train (Matriz perfecta). Omitiendo KNN.\")\n", + " return X_trans, rutas, imputador_entrenado\n", + "\n", + " if nulos_numericos == 0:\n", + " logger.info(\" ✅ [BYPASS] Test no tiene valores NaN en numéricas. Matriz intacta.\")\n", + " else:\n", + " logger.info(f\" 🔒 [TEST] Imputando valores usando la geometría espacial de Train...\")\n", + " logger.info(f\" 🔒 [TEST] Rellenando {nulos_numericos:,} huecos (Chunking)...\")\n", + " matriz_imputada = transformar_por_lotes(imputador_entrenado, X_trans[cols_numericas])\n", + " df_imputado = pd.DataFrame(matriz_imputada, columns=cols_numericas, index=idx)\n", + " X_trans[cols_numericas] = df_imputado\n", + " logger.info(f\" 📊 Huecos numéricos restantes en Test: {X_trans[cols_numericas].isna().sum().sum()}\")\n", + "\n", + " logger.info(f\"\\n⏱️ Imputación KNN completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, imputador_entrenado\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if nulos_numericos == 0:\n", + " logger.info(\" ✅ [MATRIZ PERFECTA] No hay nulos numéricos. Entrenamiento KNN omitido.\")\n", + " # 🚀 FIX MLOps: Devolvemos el sello en lugar de None\n", + " return X_trans, rutas, 'BYPASS_KNN' \n", + " else:\n", + " logger.info(f\" 🚂 [TRAIN] Detectados {nulos_numericos:,} huecos numéricos. Protegiendo RAM...\")\n", + "\n", + " X_num_trans = X_trans[cols_numericas]\n", + " if total_filas > MAX_FIT_SAMPLES:\n", + " logger.info(f\" ↳ Dataset masivo detectado. Creando 'Donor Pool' aleatorio de {MAX_FIT_SAMPLES:,} filas...\")\n", + " X_fit = X_num_trans.sample(n=MAX_FIT_SAMPLES, random_state=42)\n", + " else:\n", + " X_fit = X_num_trans\n", + "\n", + " imputador = KNNImputer(n_neighbors=n_vecinos, weights='distance')\n", + " logger.info(f\" ↳ Construyendo topología matemática (fit)...\")\n", + " imputador.fit(X_fit.astype(float))\n", + "\n", + " logger.info(f\" ↳ Rellenando huecos en matriz completa por lotes de {CHUNK_SIZE:,} filas (transform)...\")\n", + " matriz_imputada = transformar_por_lotes(imputador, X_num_trans)\n", + " df_imputado = pd.DataFrame(matriz_imputada, columns=cols_numericas, index=idx)\n", + "\n", + " X_trans[cols_numericas] = df_imputado\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Cirugía completada con Arquitectura Big Data.\")\n", + " logger.info(f\" 📊 Huecos numéricos restantes en Train: {X_trans[cols_numericas].isna().sum().sum()}\")\n", + " logger.info(\" 💾 Modelo Imputador guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Imputación KNN completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, imputador\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or manager.rutas is None:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 🚀 Clean Code Absoluto: Función 100% Autónoma, lee la memoria sola.\n", + " logger.info(\">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\")\n", + " X_train_knn, rutas_actualizadas, modelo_knn = imputacion_knn_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\")\n", + " X_test_knn, _, _ = imputacion_knn_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5,\n", + " imputador_entrenado=modelo_knn \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_knn\n", + " manager.X_test = X_test_knn\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('imputador_knn', modelo_knn)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['imputador_knn'] = modelo_knn\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Imputación KNN: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021.00.21979310.00.0475540.1219920.0112200.2583081.00.00.0...0.00.02.00.00.00.00.000000.00.0000000.00
141.00.21868411.00.4447410.2637420.4481490.2541211.04386.00.0...0.00.00.01.00.04386.0106.9756173.10.0000000.00
224.00.2186849.00.0449660.0628220.0647310.1211130.00.00.0...0.00.00.00.00.00.00.000000.00.0000000.00
359.00.2200249.00.0917080.4579890.1072670.2583080.00.00.0...0.00.00.00.00.00.00.000000.00.0000000.00
435.00.2186429.00.4490630.2687300.4514030.2644451.00.01887.0...0.00.00.00.01.0-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21.0 0.219793 10.0 0.047554 0.121992 0.011220 \n", + "1 41.0 0.218684 11.0 0.444741 0.263742 0.448149 \n", + "2 24.0 0.218684 9.0 0.044966 0.062822 0.064731 \n", + "3 59.0 0.220024 9.0 0.091708 0.457989 0.107267 \n", + "4 35.0 0.218642 9.0 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.258308 1.0 0.0 0.0 ... 0.0 \n", + "1 0.254121 1.0 4386.0 0.0 ... 0.0 \n", + "2 0.121113 0.0 0.0 0.0 ... 0.0 \n", + "3 0.258308 0.0 0.0 0.0 ... 0.0 \n", + "4 0.264445 1.0 0.0 1887.0 ... 0.0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0.0 2.0 0.0 \n", + "1 0.0 0.0 1.0 \n", + "2 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0.0 0.0 0.00000 \n", + "1 0.0 4386.0 106.97561 \n", + "2 0.0 0.0 0.00000 \n", + "3 0.0 0.0 0.00000 \n", + "4 1.0 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
1062.00.21880010.00.4475940.1358270.4723720.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1125.00.21880013.00.0458510.4816760.0118820.2560481.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1229.00.2188009.00.1031060.1218420.0601270.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1365.00.34571113.00.4475940.4247250.4497980.2560481.00.02377.0...0.00.02.00.01.0-2377.00.00.036.56923159.425
1450.00.26558313.00.0458510.4816760.1042160.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1521.00.21880010.00.0458510.2989650.0118820.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1627.00.2188009.00.4475940.2255580.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1722.00.21880010.00.0458510.2671510.1042160.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1838.00.21880013.00.4475940.4816760.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1949.00.21880013.00.0807620.0392740.1042160.2713891.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
\n", + "

10 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "10 62.0 0.218800 10.0 0.447594 0.135827 0.472372 \n", + "11 25.0 0.218800 13.0 0.045851 0.481676 0.011882 \n", + "12 29.0 0.218800 9.0 0.103106 0.121842 0.060127 \n", + "13 65.0 0.345711 13.0 0.447594 0.424725 0.449798 \n", + "14 50.0 0.265583 13.0 0.045851 0.481676 0.104216 \n", + "15 21.0 0.218800 10.0 0.045851 0.298965 0.011882 \n", + "16 27.0 0.218800 9.0 0.447594 0.225558 0.449798 \n", + "17 22.0 0.218800 10.0 0.045851 0.267151 0.104216 \n", + "18 38.0 0.218800 13.0 0.447594 0.481676 0.449798 \n", + "19 49.0 0.218800 13.0 0.080762 0.039274 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "10 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "11 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "12 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "13 0.256048 1.0 0.0 2377.0 ... 0.0 \n", + "14 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "15 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "16 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "17 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "18 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "19 0.271389 1.0 0.0 0.0 ... 0.0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "10 0.0 0.0 0.0 \n", + "11 0.0 0.0 0.0 \n", + "12 0.0 0.0 0.0 \n", + "13 0.0 2.0 0.0 \n", + "14 0.0 0.0 0.0 \n", + "15 0.0 0.0 0.0 \n", + "16 0.0 0.0 0.0 \n", + "17 0.0 0.0 0.0 \n", + "18 0.0 0.0 0.0 \n", + "19 0.0 0.0 0.0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "10 0.0 0.0 0.0 \n", + "11 0.0 0.0 0.0 \n", + "12 0.0 0.0 0.0 \n", + "13 1.0 -2377.0 0.0 \n", + "14 0.0 0.0 0.0 \n", + "15 0.0 0.0 0.0 \n", + "16 0.0 0.0 0.0 \n", + "17 0.0 0.0 0.0 \n", + "18 0.0 0.0 0.0 \n", + "19 0.0 0.0 0.0 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "10 0.0 0.000000 \n", + "11 0.0 0.000000 \n", + "12 0.0 0.000000 \n", + "13 0.0 36.569231 \n", + "14 0.0 0.000000 \n", + "15 0.0 0.000000 \n", + "16 0.0 0.000000 \n", + "17 0.0 0.000000 \n", + "18 0.0 0.000000 \n", + "19 0.0 0.000000 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "10 0.000 \n", + "11 0.000 \n", + "12 0.000 \n", + "13 59.425 \n", + "14 0.000 \n", + "15 0.000 \n", + "16 0.000 \n", + "17 0.000 \n", + "18 0.000 \n", + "19 0.000 \n", + "\n", + "[10 rows x 24 columns]" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test[10:20]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO DETECTOR MULTIVARIADO EN TRAIN <<<\n", + "=== 🛸 FASE 12.1: Detección Multivariada Asimétrica (Isolation Forest) ===\n", + " 🚂 [TRAIN] Entrenando Bosque de Aislamiento sobre 24 dimensiones...\n", + " ↳ Detectadas 4249 anomalías multivariadas (16.32% de la matriz).\n", + " 🚩 [ASIMETRÍA MLOPS] Conservando filas. La inteligencia del árbol usará la bandera de anomalía.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Bosque de Aislamiento desplegado. Outliers bajo control estricto.\n", + " 💾 Artefacto IsolationForest guardado para la API de Producción.\n", + "\n", + "⏱️ Detección de Outliers completada en 0.332s\n", + "\n", + ">>> 🔒 APLICANDO DETECTOR MULTIVARIADO A TEST <<<\n", + "=== 🛸 FASE 12.1: Detección Multivariada Asimétrica (Isolation Forest) ===\n", + " 🔒 [TEST] Escaneando Producción en busca de anomalías usando el Bosque de Train...\n", + " ↳ Detectados 1013 extraterrestres en Test (Marcados, NUNCA eliminados).\n", + "\n", + "⏱️ Escáner completado en 0.038s\n", + "\n", + "📦 [MLOps] Matrices, rutas y modelo Isolation Forest actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional\n", + "from sklearn.ensemble import IsolationForest\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def deteccion_outliers_aislamiento(\n", + " X_train: pd.DataFrame, \n", + " rutas: Dict, \n", + " y_train: Optional[pd.Series] = None,\n", + " X_test: Optional[pd.DataFrame] = None,\n", + " contamination: float = 'auto',\n", + " eliminar_en_train: bool = False,\n", + " modelo_entrenado: Optional[IsolationForest] = None\n", + ") -> Tuple[pd.DataFrame, Optional[pd.DataFrame], Optional[pd.Series], Dict, IsolationForest]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 12.1] Motor AutoML de Detección Multivariada (Isolation Forest).\n", + " - Tratamiento Asimétrico MLOps: Test NUNCA elimina filas, solo hereda la bandera de anomalía.\n", + " - Filtro de Tipos: Solo escanea variables numéricas/booleanas para evitar colisiones con tipado nativo.\n", + " - Feature Engineering: Crea la bandera 'is_anomaly_isoforest' (1 = Outlier, 0 = Inlier).\n", + " - Purga Opcional: Si eliminar_en_train=True, destruye los outliers de X_train y y_train.\n", + " \"\"\"\n", + " if X_train is None or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X_train) está vacía.\")\n", + " raise ValueError(\"La matriz (X_train) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🛸 FASE 12.1: Detección Multivariada Asimétrica (Isolation Forest) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_tr_trans = X_train.copy()\n", + " X_te_trans = X_test.copy() if X_test is not None else None\n", + " y_tr_trans = y_train.copy() if y_train is not None else None\n", + "\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + " nombre_bandera = 'is_anomaly_isoforest'\n", + "\n", + " # 1. Escudo de Tipos (Solo usamos las rutas numéricas para la matemática del bosque)\n", + " cols_matematicas = rutas.get('num_vars', []) + rutas.get('bool_vars', [])\n", + "\n", + " # 🛑 FIX QUIRÚRGICO: Evitamos que busque la propia bandera como si fuera variable predictora\n", + " cols_validas = [c for c in cols_matematicas if c in X_tr_trans.columns and c != nombre_bandera]\n", + "\n", + " if not cols_validas:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron columnas numéricas válidas para Isolation Forest.\")\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, modelo_entrenado\n", + "\n", + " # ==========================================\n", + " # 2. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if modelo_entrenado is not None:\n", + " if X_te_trans is None:\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, modelo_entrenado\n", + "\n", + " logger.info(\" 🔒 [TEST] Escaneando Producción en busca de anomalías usando el Bosque de Train...\")\n", + " # Isolation Forest devuelve -1 para outliers y 1 para inliers. Lo mapeamos a 1 y 0 (int8).\n", + " preds_test = modelo_entrenado.predict(X_te_trans[cols_validas].fillna(0)) # IF no soporta NaNs, si quedara alguno, fallback a 0\n", + " X_te_trans[nombre_bandera] = np.where(preds_test == -1, 1, 0).astype(np.int8)\n", + "\n", + " outliers_test = X_te_trans[nombre_bandera].sum()\n", + " logger.warning(f\" ↳ Detectados {outliers_test} extraterrestres en Test (Marcados, NUNCA eliminados).\")\n", + " logger.info(f\"\\n⏱️ Escáner completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, modelo_entrenado\n", + "\n", + " # ==========================================\n", + " # 3. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando Bosque de Aislamiento sobre {len(cols_validas)} dimensiones...\")\n", + "\n", + " # n_jobs=-1 usa todos los núcleos del procesador para velocidad extrema\n", + " bosque = IsolationForest(contamination=contamination, random_state=42, n_jobs=-1)\n", + "\n", + " # Entrenamos y predecimos sobre Train\n", + " preds_train = bosque.fit_predict(X_tr_trans[cols_validas].fillna(0))\n", + " X_tr_trans[nombre_bandera] = np.where(preds_train == -1, 1, 0).astype(np.int8)\n", + "\n", + " outliers_train = X_tr_trans[nombre_bandera].sum()\n", + " porcentaje = (outliers_train / len(X_tr_trans)) * 100\n", + "\n", + " logger.warning(f\" ↳ Detectadas {outliers_train} anomalías multivariadas ({porcentaje:.2f}% de la matriz).\")\n", + "\n", + " # Actualización de Rutas\n", + " if nombre_bandera not in rutas.get('bool_vars', []):\n", + " rutas['bool_vars'].append(nombre_bandera)\n", + "\n", + " # 4. Guillotina Opcional (Tratamiento Asimétrico)\n", + " if eliminar_en_train and outliers_train > 0:\n", + " logger.warning(f\" 🔪 [ASIMETRÍA MLOPS] Eliminando {outliers_train} filas anómalas SOLO del set de Entrenamiento...\")\n", + " mascara_inliers = X_tr_trans[nombre_bandera] == 0\n", + "\n", + " X_tr_trans = X_tr_trans[mascara_inliers].reset_index(drop=True)\n", + " if y_tr_trans is not None:\n", + " y_tr_trans = y_tr_trans[mascara_inliers].reset_index(drop=True)\n", + "\n", + " logger.info(\" ↳ Purga completada. La matriz predictora y el target siguen perfectamente alineados.\")\n", + " else:\n", + " logger.info(\" 🚩 [ASIMETRÍA MLOPS] Conservando filas. La inteligencia del árbol usará la bandera de anomalía.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Bosque de Aislamiento desplegado. Outliers bajo control estricto.\")\n", + " logger.info(\" 💾 Artefacto IsolationForest guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Detección de Outliers completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, bosque\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargado el vector 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO DETECTOR MULTIVARIADO EN TRAIN <<<\")\n", + " X_train_out, _, y_train_out, rutas_actualizadas, modelo_iforest = deteccion_outliers_aislamiento(\n", + " X_train=manager.X_train, \n", + " y_train=manager.y_train, \n", + " rutas=manager.rutas,\n", + " contamination='auto',\n", + " eliminar_en_train=False # 🛑 Arquitecto: Cambia a True si quieres purgar las filas anómalas en Train\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO DETECTOR MULTIVARIADO A TEST <<<\")\n", + " _, X_test_out, _, _, _ = deteccion_outliers_aislamiento(\n", + " X_train=manager.X_train, # Dummy requerido por la firma original para compatibilidad\n", + " X_test=manager.X_test, \n", + " rutas=manager.rutas,\n", + " modelo_entrenado=modelo_iforest # El Puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_out\n", + " manager.X_test = X_test_out\n", + " manager.y_train = y_train_out\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Asegurar inicialización de la caja fuerte de modelos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('detector_outliers_iforest', modelo_iforest)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['detector_outliers_iforest'] = modelo_iforest\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y modelo Isolation Forest actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Detección de Outliers: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 4.8 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO WINSORIZADOR EN TRAIN <<<\n", + "=== 🗜️ FASE 12.2: Tratamiento de Outliers (Winsorización al 0.1% - 99.9%) ===\n", + " 🚂 [TRAIN] Calculando percentiles para 17 variables continuas...\n", + " 🔄 'capital_gain': 7 valores anómalos comprimidos a [0.00, 27828.00]\n", + " 🔄 'capital_loss': 24 valores anómalos comprimidos a [0.00, 2559.00]\n", + " 🔄 'hours_per_week': 11 valores anómalos comprimidos a [2.00, 99.00]\n", + " 🔄 'total_nulos_en_fila': 27 valores anómalos comprimidos a [0.00, 2.97]\n", + " 🔄 'capital_neto': 31 valores anómalos comprimidos a [-2559.00, 27828.00]\n", + " 🔄 'capital_gain_por_age': 27 valores anómalos comprimidos a [0.00, 597.51]\n", + " 🔄 'capital_gain_por_hours_per_week': 26 valores anómalos comprimidos a [0.00, 802.04]\n", + " 🔄 'capital_loss_por_age': 27 valores anómalos comprimidos a [0.00, 93.51]\n", + " 🔄 'capital_loss_por_hours_per_week': 27 valores anómalos comprimidos a [0.00, 141.16]\n", + " 🔄 'workclass': 26 valores anómalos comprimidos a [0.22, 0.57]\n", + " 🔄 'occupation': 22 valores anómalos comprimidos a [0.03, 0.49]\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Topología estabilizada. 17 procesadas | 0 ignoradas (Varianza Cero).\n", + " 💾 Diccionario de percentiles guardado para la API de Producción.\n", + "\n", + "⏱️ Winsorización completada en 0.056s\n", + "\n", + ">>> 🔒 APLICANDO WINSORIZADOR A TEST <<<\n", + "=== 🗜️ FASE 12.2: Tratamiento de Outliers (Winsorización al 0.1% - 99.9%) ===\n", + " 🔒 [TEST] Aplicando techos y pisos aprendidos de Train...\n", + " ↳ Replicado en 17 variables (Picos extremos recortados a ciegas).\n", + "\n", + "⏱️ Winsorización completada en 0.016s\n", + "\n", + "📦 [MLOps] Matrices, rutas y receta de winsorización actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def winsorizacion_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " limites: Tuple[float, float] = (0.001, 0.999),\n", + " receta_aprendida: Dict[str, Tuple[float, float]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 12.2] Motor AutoML de Winsorización (Capping).\n", + " - Muro MLOps: Calcula los percentiles matemáticos SOLO en Train y los hereda a Test.\n", + " - Filtro de Tipos: Solo opera sobre variables estrictamente numéricas (ignora booleanos y categorías).\n", + " - Tolerancia a NaNs: El cálculo de percentiles y el recorte (.clip) ignoran los valores nulos.\n", + " - Prevención de Colapso: Evita comprimir variables con varianza cero (ej. 99% de ceros).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🗜️ FASE 12.2: Tratamiento de Outliers (Winsorización al {limites[0]*100}% - {limites[1]*100}%) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 1. Escudo de Tipos: Solo queremos comprimir métricas reales, no banderas 0/1\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron variables numéricas continuas para comprimir.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " # ==========================================\n", + " # 2. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando techos y pisos aprendidos de Train...\")\n", + " columnas_comprimidas = 0\n", + "\n", + " for col, (limite_inf, limite_sup) in receta_aprendida.items():\n", + " if col in X_trans.columns:\n", + " # .clip() recorta los extremos y deja los NaNs intactos\n", + " X_trans[col] = X_trans[col].clip(lower=limite_inf, upper=limite_sup)\n", + " columnas_comprimidas += 1\n", + "\n", + " logger.info(f\" ↳ Replicado en {columnas_comprimidas} variables (Picos extremos recortados a ciegas).\")\n", + " logger.info(f\"\\n⏱️ Winsorización completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 3. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN] Calculando percentiles para {len(cols_numericas)} variables continuas...\")\n", + " diccionario_produccion = {}\n", + " columnas_comprimidas = 0\n", + " columnas_ignoradas = 0\n", + "\n", + " for col in cols_numericas:\n", + " # Extraemos la serie ignorando los NaNs\n", + " serie_limpia = X_trans[col].dropna()\n", + "\n", + " if len(serie_limpia) == 0:\n", + " continue # Si la columna es puro NaN, la ignoramos\n", + "\n", + " # Calculamos los límites matemáticos (Piso y Techo)\n", + " limite_inf = serie_limpia.quantile(limites[0])\n", + " limite_sup = serie_limpia.quantile(limites[1])\n", + "\n", + " # Guardamos la receta si los límites son lógicos (evita comprimir variables que son un solo número)\n", + " if limite_inf < limite_sup:\n", + " diccionario_produccion[col] = (limite_inf, limite_sup)\n", + "\n", + " # Aplicamos la compresión\n", + " valores_extremos_antes = ((X_trans[col] < limite_inf) | (X_trans[col] > limite_sup)).sum()\n", + " X_trans[col] = X_trans[col].clip(lower=limite_inf, upper=limite_sup)\n", + "\n", + " columnas_comprimidas += 1\n", + " if valores_extremos_antes > 0:\n", + " logger.info(f\" 🔄 '{col}': {valores_extremos_antes} valores anómalos comprimidos a [{limite_inf:.2f}, {limite_sup:.2f}]\")\n", + " else:\n", + " # 🚀 FIX MLOps: Avisamos que la variable fue ignorada por falta de varianza\n", + " columnas_ignoradas += 1\n", + " logger.info(f\" ⏭️ [BYPASS] '{col}': Ignorada (Varianza Cero en los extremos. Percentiles {limites[0]*100}% y {limites[1]*100}% son idénticos).\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Topología estabilizada. {columnas_comprimidas} procesadas | {columnas_ignoradas} ignoradas (Varianza Cero).\")\n", + " logger.info(\" 💾 Diccionario de percentiles guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Winsorización completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # Configuramos los límites: Cortamos el 0.1% inferior y el 0.1% superior (El 99.8% de la data queda intacta)\n", + " limites_elegidos = (0.001, 0.999)\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO WINSORIZADOR EN TRAIN <<<\")\n", + " X_train_win, rutas_actualizadas, receta_winsor = winsorizacion_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " limites=limites_elegidos\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO WINSORIZADOR A TEST <<<\")\n", + " X_test_win, _, _ = winsorizacion_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_winsor # El Puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma centralizada en el Manager\n", + " manager.X_train = X_train_win\n", + " manager.X_test = X_test_win\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_winsorizacion', receta_winsor)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_winsorizacion'] = receta_winsor\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y receta de winsorización actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Winsorización: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO ESCALADOR EN TRAIN <<<\n", + "=== ⚖️ FASE 13.1: Escalamiento Dinámico (MINMAX) ===\n", + " ✅ [BYPASS] Escalamiento omitido. La matriz está optimizada para algoritmos basados en Árboles (Scale-Invariant).\n", + "\n", + ">>> 🔒 APLICANDO ESCALADOR A TEST <<<\n", + "=== ⚖️ FASE 13.1: Escalamiento Dinámico (MINMAX) ===\n", + " ✅ [BYPASS] Escalamiento omitido. La matriz está optimizada para algoritmos basados en Árboles (Scale-Invariant).\n", + "\n", + "📦 [MLOps] Matrices y modelo escalador actualizados de forma segura en el PipelineManager.\n", + "\n", + ">>> ⏪ PRUEBA DE LA MÁQUINA DEL TIEMPO (REVERSO) <<<\n", + " ⏭️ Bypass activo o escalador no entrenado. Traducción inversa omitida.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional\n", + "from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def escalamiento_dinamico_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " requiere_escalamiento: bool = True,\n", + " metodo: str = 'minmax',\n", + " escalador_entrenado: Optional[object] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Optional[object]]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 13.1] Motor AutoML de Escalamiento Dinámico.\n", + " - Switch Inteligente: Si requiere_escalamiento=False, hace bypass (ideal para ecosistemas 100% Árboles).\n", + " - Muro MLOps: Aprende los rangos máximos/mínimos SOLO en Train. Aplica ciegamente en Test.\n", + " - Preservación Topológica: Solo escala variables continuas (num_vars), dejando booleanas y \n", + " categorías nativas intactas. Retorna un DataFrame de Pandas, no un array de Numpy.\n", + " - 🚀 Optimización de Memoria (NUEVO): Convierte el resultado float64 nativo de Sklearn a float32.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 13.1: Escalamiento Dinámico ({metodo.upper()}) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 1. El Interruptor AutoML (Regla lrl1)\n", + " if not requiere_escalamiento:\n", + " logger.info(\" ✅ [BYPASS] Escalamiento omitido. La matriz está optimizada para algoritmos basados en Árboles (Scale-Invariant).\")\n", + " return X_trans, rutas, escalador_entrenado\n", + "\n", + " # 2. Escudo de Tipos: Seleccionamos SOLO las numéricas continuas\n", + " # Las booleanas ya son 0 y 1. Las categóricas nativas son intocables.\n", + " cols_a_escalar = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_a_escalar:\n", + " logger.info(\" ✅ [BYPASS] No hay variables numéricas continuas para escalar.\")\n", + " return X_trans, rutas, escalador_entrenado\n", + "\n", + " # Extraemos índices y columnas para reconstruir el DataFrame post-Sklearn\n", + " indices = X_trans.index\n", + "\n", + " # ==========================================\n", + " # 3. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if escalador_entrenado is not None:\n", + " logger.info(f\" 🔒 [TEST] Comprimiendo {len(cols_a_escalar)} dimensiones usando la escala memorizada de Train...\")\n", + "\n", + " # Transformamos y reinyectamos en el DataFrame\n", + " matriz_escalada = escalador_entrenado.transform(X_trans[cols_a_escalar])\n", + "\n", + " # 🚀 DOWNCASTING AUTOMÁTICO: Forzamos float32 para evitar el sobrepeso de float64 de sklearn\n", + " X_trans.loc[:, cols_a_escalar] = matriz_escalada.astype(np.float32)\n", + "\n", + " logger.info(f\"\\n⏱️ Escalamiento completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, escalador_entrenado\n", + "\n", + " # ==========================================\n", + " # 4. Modo TRAIN (.fit_transform)\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando escalador '{metodo}' sobre {len(cols_a_escalar)} variables continuas...\")\n", + "\n", + " # Selección del Motor Matemático\n", + " if metodo == 'minmax':\n", + " escalador = MinMaxScaler() # Comprime estrictamente entre 0 y 1\n", + " elif metodo == 'standard':\n", + " escalador = StandardScaler() # Media 0, Varianza 1\n", + " elif metodo == 'robust':\n", + " escalador = RobustScaler() # Usa la mediana y el IQR (inmune a outliers extremos que sobrevivieron)\n", + " else:\n", + " logger.error(f\"🛑 Método '{metodo}' no soportado. Usa 'minmax', 'standard' o 'robust'.\")\n", + " raise ValueError(f\"Método '{metodo}' no soportado. Usa 'minmax', 'standard' o 'robust'.\")\n", + "\n", + " # Aprendemos los rangos matemáticos (fit) y comprimimos la matriz (transform)\n", + " matriz_escalada = escalador.fit_transform(X_trans[cols_a_escalar])\n", + "\n", + " # 🚀 DOWNCASTING AUTOMÁTICO: Forzamos float32 para evitar el sobrepeso de float64 de sklearn\n", + " X_trans.loc[:, cols_a_escalar] = matriz_escalada.astype(np.float32)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Espacio vectorial estandarizado. Listo para Deep Learning y Meta-Modelos.\")\n", + " logger.info(\" 💾 Artefacto Escalador guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Escalamiento completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, escalador\n", + "\n", + "\n", + "# ==========================================\n", + "# 🔧 NUEVO: Herramienta de Traducción Inversa\n", + "# ==========================================\n", + "def traductor_inverso_escalamiento(\n", + " X_escalado: pd.DataFrame, \n", + " escalador_entrenado: object\n", + ") -> pd.DataFrame:\n", + " \"\"\"\n", + " [Herramienta MLOps] Traductor de Escalamiento Inverso (Máquina del Tiempo).\n", + " - Toma una matriz escalada (con 0s y 1s) y utiliza la memoria fotográfica del \n", + " escalador para devolverle sus valores lógicos del mundo real (Dólares, Años, Horas).\n", + " \"\"\"\n", + " if escalador_entrenado is None:\n", + " return X_escalado.copy()\n", + "\n", + " X_traducido = X_escalado.copy()\n", + "\n", + " # Scikit-learn (versiones modernas) guarda las columnas que aprendió en .feature_names_in_\n", + " if hasattr(escalador_entrenado, 'feature_names_in_'):\n", + " cols_memorizadas = escalador_entrenado.feature_names_in_\n", + " else:\n", + " logger.error(\"🛑 El escalador no tiene memoria de las columnas. Requiere Scikit-Learn reciente.\")\n", + " raise ValueError(\"El escalador no tiene memoria de las columnas. Requiere Scikit-Learn reciente.\")\n", + "\n", + " # Filtramos para asegurarnos de que solo intentamos traducir las columnas que existen\n", + " cols_validas = [c for c in cols_memorizadas if c in X_traducido.columns]\n", + "\n", + " if cols_validas:\n", + " # La magia matemática ocurre aquí (.inverse_transform)\n", + " matriz_original = escalador_entrenado.inverse_transform(X_traducido[cols_validas])\n", + " X_traducido.loc[:, cols_validas] = matriz_original\n", + "\n", + " return X_traducido\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # DECISIÓN DEL ARQUITECTO: ¿Usaremos Redes Neuronales / Regresión Logística después?\n", + " VAMOS_A_USAR_DEEP_LEARNING = False \n", + " METODO_ESCALAMIENTO = 'minmax' \n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO ESCALADOR EN TRAIN <<<\")\n", + " X_train_esc, rutas_actualizadas, modelo_escalador = escalamiento_dinamico_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " requiere_escalamiento=VAMOS_A_USAR_DEEP_LEARNING,\n", + " metodo=METODO_ESCALAMIENTO\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO ESCALADOR A TEST <<<\")\n", + " X_test_esc, _, _ = escalamiento_dinamico_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " requiere_escalamiento=VAMOS_A_USAR_DEEP_LEARNING,\n", + " escalador_entrenado=modelo_escalador # El Puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_esc\n", + " manager.X_test = X_test_esc\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('escalador_numerico', modelo_escalador)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['escalador_numerico'] = modelo_escalador\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y modelo escalador actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " # --- DEMOSTRACIÓN DEL TRADUCTOR INVERSO ---\n", + " logger.info(\"\\n>>> ⏪ PRUEBA DE LA MÁQUINA DEL TIEMPO (REVERSO) <<<\")\n", + " if VAMOS_A_USAR_DEEP_LEARNING and modelo_escalador is not None:\n", + " # Tomamos el primer paciente/registro de Test (que ahora es un conjunto de decimales) desde el manager\n", + " paciente_ejemplo = manager.X_test.head(1).copy()\n", + "\n", + " # 🔧 FIX BLINDADO: Obligamos al código a agarrar una variable puramente NUMÉRICA que fue escalada\n", + " cols_escaladas = getattr(modelo_escalador, 'feature_names_in_', [])\n", + " if len(cols_escaladas) > 0:\n", + " variable_prueba = cols_escaladas[0] # Tomamos la primera variable numérica segura\n", + "\n", + " valor_escalado = paciente_ejemplo[variable_prueba].values[0]\n", + " logger.info(f\"🤖 Visión Máquina (Escalado): {variable_prueba} = {valor_escalado:.4f}\")\n", + "\n", + " # Lo pasamos por el Traductor\n", + " paciente_traducido = traductor_inverso_escalamiento(paciente_ejemplo, modelo_escalador)\n", + " valor_original = paciente_traducido[variable_prueba].values[0]\n", + "\n", + " # Usamos formateo dinámico: si el original es entero, no mostramos decimales\n", + " if float(valor_original).is_integer():\n", + " logger.info(f\"👤 Visión Humana (Original): {variable_prueba} = {int(valor_original):,}\")\n", + " else:\n", + " logger.info(f\"👤 Visión Humana (Original): {variable_prueba} = {valor_original:,.2f}\")\n", + " else:\n", + " logger.warning(\"⚠️ No hay variables numéricas escaladas para la demostración.\")\n", + " else:\n", + " logger.info(\" ⏭️ Bypass activo o escalador no entrenado. Traducción inversa omitida.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Escalamiento Dinámico o Traductor: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_weekis_anomaly_isoforest
021.00.21979310.00.0475540.1219920.0112200.2583081.00.00.0...0.02.00.00.00.00.000000.00.0000000.001
141.00.21868411.00.4447410.2637420.4481490.2541211.04386.00.0...0.00.01.00.04386.0106.9756173.10.0000000.000
224.00.2186849.00.0449660.0628220.0647310.1211130.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
359.00.2200249.00.0917080.4579890.1072670.2583080.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
435.00.2186429.00.4490630.2687300.4514030.2644451.00.01887.0...0.00.00.01.0-1887.00.000000.053.91428637.741
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21.0 0.219793 10.0 0.047554 0.121992 0.011220 \n", + "1 41.0 0.218684 11.0 0.444741 0.263742 0.448149 \n", + "2 24.0 0.218684 9.0 0.044966 0.062822 0.064731 \n", + "3 59.0 0.220024 9.0 0.091708 0.457989 0.107267 \n", + "4 35.0 0.218642 9.0 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_native_country \\\n", + "0 0.258308 1.0 0.0 0.0 ... 0.0 \n", + "1 0.254121 1.0 4386.0 0.0 ... 0.0 \n", + "2 0.121113 0.0 0.0 0.0 ... 0.0 \n", + "3 0.258308 0.0 0.0 0.0 ... 0.0 \n", + "4 0.264445 1.0 0.0 1887.0 ... 0.0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 2.0 0.0 0.0 0.0 \n", + "1 0.0 1.0 0.0 4386.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 1.0 -1887.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.00000 0.0 \n", + "1 106.97561 73.1 \n", + "2 0.00000 0.0 \n", + "3 0.00000 0.0 \n", + "4 0.00000 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week is_anomaly_isoforest \n", + "0 0.000000 0.00 1 \n", + "1 0.000000 0.00 0 \n", + "2 0.000000 0.00 0 \n", + "3 0.000000 0.00 0 \n", + "4 53.914286 37.74 1 \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 90, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_weekis_anomaly_isoforest
039.00.54489910.00.1031060.2255580.1042160.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
135.00.21880013.00.4475940.1358270.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
231.00.21880013.00.4475940.4563640.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
367.00.54489913.00.0906210.0392740.0601270.2560480.00.00.0...0.00.00.00.00.00.00.00.00.00
456.00.2891039.00.0807620.4816760.1042160.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 39.0 0.544899 10.0 0.103106 0.225558 0.104216 \n", + "1 35.0 0.218800 13.0 0.447594 0.135827 0.449798 \n", + "2 31.0 0.218800 13.0 0.447594 0.456364 0.449798 \n", + "3 67.0 0.544899 13.0 0.090621 0.039274 0.060127 \n", + "4 56.0 0.289103 9.0 0.080762 0.481676 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_native_country \\\n", + "0 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "1 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "2 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "3 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "4 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week is_anomaly_isoforest \n", + "0 0.0 0.0 0 \n", + "1 0.0 0.0 0 \n", + "2 0.0 0.0 0 \n", + "3 0.0 0.0 0 \n", + "4 0.0 0.0 0 \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 4.8 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n", + "\n", + "\n", + "# # FASE 5: Ingeniería Profunda y Aumento de Datos (La Vanguardia)\n", + "# Con una matriz limpia y numérica, desplegamos IA generativa y análisis causal.\n", + "# \n", + "# " + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 EVALUANDO REZAGOS EN TRAIN <<<\n", + "=== 🕰️ FASE 14.1: Ingeniería de Rezagos Temporales (Lag Features) ===\n", + " ✅ [BYPASS INTELIGENTE] Topología detectada como 'Transversal'.\n", + " ↳ Operación abortada para prevenir mezcla caótica de registros independientes.\n", + "\n", + ">>> 🔒 EVALUANDO REZAGOS EN TEST <<<\n", + "=== 🕰️ FASE 14.1: Ingeniería de Rezagos Temporales (Lag Features) ===\n", + " ✅ [BYPASS INTELIGENTE] Topología detectada como 'Transversal'.\n", + " ↳ Operación abortada para prevenir mezcla caótica de registros independientes.\n", + "\n", + "📦 [MLOps] Matrices y rutas de rezagos actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, List, Optional\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ingenieria_rezagos_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " topologia_dataset: str = 'Transversal', # 🔧 NUEVO: Enrutador Topológico Maestro\n", + " columnas_a_rezagar: List[str] = None,\n", + " periodos: List[int] = [1, 2, 3],\n", + " variable_entidad_id: Optional[str] = None\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 14.1] Motor AutoML de Variables de Rezago (Lag Features).\n", + " - Auto-Descubrimiento Temporal: Busca columnas datetime para usarlas como ancla.\n", + " - Inteligencia Topológica: Bypass si es 'Transversal'. Actúa si es 'Serie de Tiempo Pura' o 'Datos de Panel'.\n", + " - Exterminio del ID (NUEVO): Destruye la entidad y el index tras rezagar para evitar Leakage.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🕰️ FASE 14.1: Ingeniería de Rezagos Temporales (Lag Features) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. Auditoría de Seguridad AutoML (El Bypass Inteligente)\n", + " # ==========================================\n", + " if topologia_dataset == 'Transversal':\n", + " logger.info(f\" ✅ [BYPASS INTELIGENTE] Topología detectada como '{topologia_dataset}'.\")\n", + " logger.info(\" ↳ Operación abortada para prevenir mezcla caótica de registros independientes.\")\n", + " return X_trans, rutas\n", + "\n", + " # 🚀 NUEVA INTELIGENCIA: Escáner de Topología Temporal\n", + " columnas_fecha = X_trans.select_dtypes(include=['datetime64', 'datetime', 'datetimetz']).columns.tolist()\n", + "\n", + " if not columnas_fecha:\n", + " logger.warning(f\" ⚠️ [ADVERTENCIA] Topología es '{topologia_dataset}', pero NO hay columnas tipo 'datetime' vivas.\")\n", + " logger.info(\" ↳ Bypass activado por seguridad.\")\n", + " return X_trans, rutas\n", + "\n", + " variable_tiempo = columnas_fecha[0]\n", + " logger.info(f\" 🧭 [AUTO-DETECCIÓN TEMPORAL] Ancla cronológica encontrada: '{variable_tiempo}'.\")\n", + "\n", + " # --- AUTO-DETECCIÓN DE VARIABLES NUMÉRICAS ---\n", + " if not columnas_a_rezagar:\n", + " columnas_a_rezagar = [c for c in rutas.get('num_vars', []) if c in X_trans.columns and c != variable_tiempo]\n", + " if not columnas_a_rezagar:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron variables numéricas en el enrutador para rezagar.\")\n", + " return X_trans, rutas\n", + " else:\n", + " logger.info(f\" 🧠 [AUTO-DETECCIÓN VARIABLES] Se detectaron {len(columnas_a_rezagar)} variables numéricas para analizar.\")\n", + "\n", + " # ==========================================\n", + " # 2. Ordenamiento y Topología Temporal\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN/TEST] Generando memoria histórica de {len(periodos)} periodos para {len(columnas_a_rezagar)} variables...\")\n", + "\n", + " nombres_idx_originales = X_trans.index.names\n", + " entidad_rescatada = False\n", + "\n", + " if topologia_dataset == 'Datos de Panel' and variable_entidad_id:\n", + " # Rescate si estaba en el Index\n", + " if variable_entidad_id not in X_trans.columns and variable_entidad_id in nombres_idx_originales:\n", + " X_trans = X_trans.reset_index()\n", + " entidad_rescatada = True\n", + " logger.info(f\" 🔓 [RESCATE] Entidad '{variable_entidad_id}' recuperada del Index para agrupar.\")\n", + "\n", + " if variable_entidad_id in X_trans.columns:\n", + " X_trans = X_trans.sort_values(by=[variable_entidad_id, variable_tiempo])\n", + " motor_shift = X_trans.groupby(variable_entidad_id)\n", + " logger.info(f\" ↳ Blindaje de Identidad activo (Datos de Panel): Agrupando por '{variable_entidad_id}'.\")\n", + " else:\n", + " logger.error(f\" ⚠️ [CRÍTICO] La entidad '{variable_entidad_id}' no se encontró.\")\n", + " X_trans = X_trans.sort_values(by=[variable_tiempo])\n", + " motor_shift = X_trans\n", + " logger.warning(f\" ↳ FALLBACK: Serie de tiempo global activa (Serie Pura).\")\n", + " else:\n", + " X_trans = X_trans.sort_values(by=[variable_tiempo])\n", + " motor_shift = X_trans\n", + " logger.info(f\" ↳ Serie de tiempo global activa (Serie Pura): Ordenando cronológicamente por '{variable_tiempo}'.\")\n", + "\n", + " # ==========================================\n", + " # 3. Creación de Multi-Universos (Lags)\n", + " # ==========================================\n", + " columnas_creadas = 0\n", + " nombre_lag = None \n", + "\n", + " for col in columnas_a_rezagar:\n", + " if col not in X_trans.columns: continue\n", + "\n", + " for p in periodos:\n", + " nombre_lag = f\"{col}_lag_{p}\"\n", + " X_trans[nombre_lag] = motor_shift[col].shift(p)\n", + " columnas_creadas += 1\n", + "\n", + " if nombre_lag not in rutas['num_vars']:\n", + " rutas['num_vars'].append(nombre_lag)\n", + "\n", + " huecos_generados = X_trans[nombre_lag].isna().sum() if (columnas_creadas > 0 and nombre_lag) else 0\n", + "\n", + " # ==========================================\n", + " # 🚀 PROTOCOLO DE EXTERMINIO: Index y Columna ID\n", + " # ==========================================\n", + " logger.info(f\" 🧹 Ejecutando Protocolo de Limpieza Final...\")\n", + " X_trans = X_trans.reset_index(drop=True) # Destruye cualquier index personalizado\n", + "\n", + " if topologia_dataset == 'Datos de Panel' and variable_entidad_id and variable_entidad_id in X_trans.columns:\n", + " X_trans = X_trans.drop(columns=[variable_entidad_id])\n", + " if variable_entidad_id in rutas.get('cat_vars', []):\n", + " rutas['cat_vars'].remove(variable_entidad_id)\n", + " logger.info(f\" ↳ Entidad '{variable_entidad_id}' eliminada de las columnas para evitar Data Leakage.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Máquina del tiempo completada. {columnas_creadas} dimensiones históricas inyectadas.\")\n", + " if huecos_generados > 0:\n", + " logger.warning(f\" ⚠️ NOTA: Se generaron {huecos_generados} NaNs naturales por falta de pasado en los primeros registros.\")\n", + " logger.info(\" 💡 CONSEJO MLOps: Deberás pasar el Imputador (Paso 11.1) nuevamente sobre estos NaNs antes de entrenar.\")\n", + " logger.info(f\"\\n⏱️ Rezagos generados en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # ---------------------------------------------------------\n", + " # 🔗 AUTOWIRING MLOPS: Extracción Segura desde el Manager\n", + " # ---------------------------------------------------------\n", + " # 1. Buscamos la Topología directamente en la memoria del Manager (rutas)\n", + " TOPOLOGIA_GLOBAL = manager.rutas.get('reporte_topologia', {}).get('topologia', 'Transversal')\n", + "\n", + " # 2. Buscamos la Entidad directamente en la memoria del Manager (rutas)\n", + " ENTIDAD_GLOBAL = manager.rutas.get('variable_entidad_global', None)\n", + "\n", + " logger.info(\">>> 🚂 EVALUANDO REZAGOS EN TRAIN <<<\")\n", + " X_train_lag, rutas_actualizadas = ingenieria_rezagos_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL, \n", + " columnas_a_rezagar=None, \n", + " periodos=[1, 2],\n", + " variable_entidad_id=ENTIDAD_GLOBAL\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 EVALUANDO REZAGOS EN TEST <<<\")\n", + " X_test_lag, _ = ingenieria_rezagos_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL, \n", + " columnas_a_rezagar=None, \n", + " periodos=[1, 2],\n", + " variable_entidad_id=ENTIDAD_GLOBAL \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_lag\n", + " manager.X_test = X_test_lag\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas de rezagos actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la creación de Rezagos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_weekis_anomaly_isoforest
021.00.21979310.00.0475540.1219920.0112200.2583081.00.00.0...0.02.00.00.00.00.000000.00.0000000.001
141.00.21868411.00.4447410.2637420.4481490.2541211.04386.00.0...0.00.01.00.04386.0106.9756173.10.0000000.000
224.00.2186849.00.0449660.0628220.0647310.1211130.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
359.00.2200249.00.0917080.4579890.1072670.2583080.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
435.00.2186429.00.4490630.2687300.4514030.2644451.00.01887.0...0.00.00.01.0-1887.00.000000.053.91428637.741
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21.0 0.219793 10.0 0.047554 0.121992 0.011220 \n", + "1 41.0 0.218684 11.0 0.444741 0.263742 0.448149 \n", + "2 24.0 0.218684 9.0 0.044966 0.062822 0.064731 \n", + "3 59.0 0.220024 9.0 0.091708 0.457989 0.107267 \n", + "4 35.0 0.218642 9.0 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_native_country \\\n", + "0 0.258308 1.0 0.0 0.0 ... 0.0 \n", + "1 0.254121 1.0 4386.0 0.0 ... 0.0 \n", + "2 0.121113 0.0 0.0 0.0 ... 0.0 \n", + "3 0.258308 0.0 0.0 0.0 ... 0.0 \n", + "4 0.264445 1.0 0.0 1887.0 ... 0.0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 2.0 0.0 0.0 0.0 \n", + "1 0.0 1.0 0.0 4386.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 1.0 -1887.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.00000 0.0 \n", + "1 106.97561 73.1 \n", + "2 0.00000 0.0 \n", + "3 0.00000 0.0 \n", + "4 0.00000 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week is_anomaly_isoforest \n", + "0 0.000000 0.00 1 \n", + "1 0.000000 0.00 0 \n", + "2 0.000000 0.00 0 \n", + "3 0.000000 0.00 0 \n", + "4 53.914286 37.74 1 \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 94, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 4.8 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64\n", + " 1 workclass 6508 non-null float64\n", + " 2 education_num 6508 non-null float64\n", + " 3 marital_status 6508 non-null float64\n", + " 4 occupation 6508 non-null float64\n", + " 5 relationship 6508 non-null float64\n", + " 6 race 6508 non-null float64\n", + " 7 sex 6508 non-null float64\n", + " 8 capital_gain 6508 non-null float64\n", + " 9 capital_loss 6508 non-null float64\n", + " 10 hours_per_week 6508 non-null float64\n", + " 11 native_country 6508 non-null float64\n", + " 12 is_missing_workclass 6508 non-null float64\n", + " 13 is_missing_occupation 6508 non-null float64\n", + " 14 is_missing_capital_gain 6508 non-null float64\n", + " 15 is_missing_native_country 6508 non-null float64\n", + " 16 total_nulos_en_fila 6508 non-null float64\n", + " 17 tiene_capital_gain 6508 non-null float64\n", + " 18 tiene_capital_loss 6508 non-null float64\n", + " 19 capital_neto 6508 non-null float64\n", + " 20 capital_gain_por_age 6508 non-null float64\n", + " 21 capital_gain_por_hours_per_week 6508 non-null float64\n", + " 22 capital_loss_por_age 6508 non-null float64\n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64\n", + " 24 is_anomaly_isoforest 6508 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 1.2 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "26029 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 25.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "6508 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 6.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TRAIN ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.006s\n", + "\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TEST ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.003s\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import re\n", + "import time\n", + "from typing import Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radar_nulos_profundos_automl(df: pd.DataFrame, nombre_matriz: str = \"Matriz\") -> Dict[str, int]:\n", + " \"\"\"\n", + " [HERRAMIENTA MLOps] Escáner de Nulos Ocultos (Anomalías Léxicas).\n", + " - Inteligencia: Solo ataca columnas de texto/categorías para ahorrar CPU.\n", + " - Desglose de Nativos (NUEVO): Clasifica inteligentemente entre NaN (Numéricos) y NaT (Fechas).\n", + " - Motor Regex: Detecta falsos nulos ('N/A', 'unknown', '?', '-', espacios vacíos).\n", + " - Vectorización: Usa .str.match() nativo de Pandas en C++ (Cero bucles for).\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(f\"🛑 Error: La matriz '{nombre_matriz}' está vacía o no es válida.\")\n", + " return {}\n", + "\n", + " logger.info(f\"=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: {nombre_matriz} ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " reporte_ocultos = {}\n", + "\n", + " # 🚀 NUEVO: Desglose inteligente de nulos nativos por Tipo de Dato\n", + " nulos_por_columna = df.isna().sum()\n", + " cols_con_nulos = nulos_por_columna[nulos_por_columna > 0]\n", + "\n", + " desglose_nativos = {\"NaN\": 0, \"NaT\": 0}\n", + "\n", + " for col, cantidad in cols_con_nulos.items():\n", + " if pd.api.types.is_datetime64_any_dtype(df[col]):\n", + " desglose_nativos[\"NaT\"] += cantidad\n", + " else:\n", + " desglose_nativos[\"NaN\"] += cantidad\n", + "\n", + " nulos_nativos_totales = sum(desglose_nativos.values())\n", + "\n", + " # 1. El Súper-Regex del Arquitecto\n", + " # (?i) = Case insensitive. \\s* = Ignora espacios al inicio/fin. \n", + " patron_falsos_nulos = re.compile(r'(?i)^\\s*(unknown|n/?a|null|nan|missing|none|-1|\\?|-|)\\s*$')\n", + "\n", + " # 2. Escudo de Tipos: Solo escaneamos textos, la matemática pura no tiene letras\n", + " cols_texto = df.select_dtypes(include=['object', 'string', 'category']).columns.tolist()\n", + "\n", + " nulos_ocultos_totales = 0\n", + "\n", + " if cols_texto:\n", + " for col in cols_texto:\n", + " # Aislamos solo los valores que NO son nulos nativos (para no contar doble)\n", + " serie_viva = df[col].dropna().astype(str)\n", + "\n", + " if not serie_viva.empty:\n", + " # Aplicamos el motor Regex vectorizado\n", + " detecciones = serie_viva.str.match(patron_falsos_nulos).sum()\n", + "\n", + " if detecciones > 0:\n", + " reporte_ocultos[col] = detecciones\n", + " nulos_ocultos_totales += detecciones\n", + "\n", + " # 3. Reporte de Inteligencia\n", + " logger.info(\"-\" * 60)\n", + " if nulos_nativos_totales == 0 and nulos_ocultos_totales == 0:\n", + " logger.info(\" ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\")\n", + " else:\n", + " logger.warning(f\" ⚠️ ALERTAS ENCONTRADAS:\")\n", + " logger.warning(f\" ↳ Nulos Nativos Totales: {nulos_nativos_totales:,}\")\n", + "\n", + " # Desglose específico\n", + " if desglose_nativos['NaN'] > 0:\n", + " logger.info(f\" - Tipo NaN (Flotantes/Texto) : {desglose_nativos['NaN']:,}\")\n", + " if desglose_nativos['NaT'] > 0:\n", + " logger.info(f\" - Tipo NaT (Fechas/Tiempos) : {desglose_nativos['NaT']:,}\")\n", + "\n", + " logger.warning(f\" ↳ Nulos Ocultos (Regex) : {nulos_ocultos_totales:,}\")\n", + "\n", + " if nulos_ocultos_totales > 0:\n", + " logger.warning(\" 🦠 Desglose de columnas infectadas con Nulos Léxicos:\")\n", + " for col, cantidad in reporte_ocultos.items():\n", + " logger.info(f\" - '{col}': {cantidad:,} registros basura\")\n", + "\n", + " logger.info(f\"\\n⏱️ Escaneo completado en {time.time() - inicio_timer:.3f}s\\n\")\n", + "\n", + " return reporte_ocultos\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\")\n", + "\n", + " # Escaneamos Train usando el manager\n", + " infecciones_train = radar_nulos_profundos_automl(manager.X_train, nombre_matriz=\"X_TRAIN\")\n", + "\n", + " # Escaneamos Test usando el manager\n", + " infecciones_test = radar_nulos_profundos_automl(manager.X_test, nombre_matriz=\"X_TEST\")\n", + "\n", + " # Lógica de reacción automática (Opcional)\n", + " if infecciones_train or infecciones_test:\n", + " logger.warning(\"💡 CONSEJO MLOps: Se detectó basura léxica. \")\n", + " logger.info(\" Recomendación: En tu código del Imputador KNN (Fase 11.1) o en la Guillotina, \")\n", + " logger.info(\" deberías reemplazar estos textos por np.nan usando df.replace(regex) para que el Imputador los cure.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Radar de Nulos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " ✅ [MATRIZ PERFECTA] No hay nulos numéricos. Entrenamiento KNN omitido.\n", + "\n", + ">>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " 🔒 [TEST] Bypass heredado de Train (Matriz perfecta). Omitiendo KNN.\n", + "\n", + "📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or manager.rutas is None:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 🚀 Clean Code Absoluto: Función 100% Autónoma, lee la memoria sola.\n", + " logger.info(\">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\")\n", + " X_train_knn, rutas_actualizadas, modelo_knn = imputacion_knn_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\")\n", + " X_test_knn, _, _ = imputacion_knn_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5,\n", + " imputador_entrenado=modelo_knn \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_knn\n", + " manager.X_test = X_test_knn\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('imputador_knn', modelo_knn)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['imputador_knn'] = modelo_knn\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Imputación KNN: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TRAIN ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.003s\n", + "\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TEST ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.002s\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\")\n", + "\n", + " # Escaneamos Train usando el manager\n", + " infecciones_train = radar_nulos_profundos_automl(manager.X_train, nombre_matriz=\"X_TRAIN\")\n", + "\n", + " # Escaneamos Test usando el manager\n", + " infecciones_test = radar_nulos_profundos_automl(manager.X_test, nombre_matriz=\"X_TEST\")\n", + "\n", + " # Lógica de reacción automática (Opcional)\n", + " if infecciones_train or infecciones_test:\n", + " logger.warning(\"💡 CONSEJO MLOps: Se detectó basura léxica. \")\n", + " logger.info(\" Recomendación: En tu código del Imputador KNN (Fase 11.1) o en la Guillotina, \")\n", + " logger.info(\" deberías reemplazar estos textos por np.nan usando df.replace(regex) para que el Imputador los cure.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Radar de Nulos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO AGENTE LLM-FE EN TRAIN <<<\n", + "=== 🧬 FASE 14.2: LLM-FE ReAct y Evaluación Bayesiana ===\n", + " 🚂 [TRAIN] Inicializando Tribunal Bayesiano y Agente Generador...\n", + " ↳ Dataset masivo. Creando 'Submuestra de Tribunal' de 5,000 filas para proteger RAM...\n", + " ⚖️ Score Base (Red Bayesiana en Submuestra): 0.7864\n", + " 🧠 Agente formulando hipótesis combinatorias...\n", + " 🧑‍⚖️ Juez evaluando 135 propuestas del Agente...\n", + " 🌟 ¡Aprobada! [llm_age_*_education_num] aportó mejora (+0.0014)\n", + " 🌟 ¡Aprobada! [llm_capital_gain_*_capital_neto] aportó mejora (+0.0024)\n", + " 🧬 Inyectando 2 características evolutivas en la matriz principal...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Ingeniería LLM-FE completada con Arquitectura Big Data. Score final: 0.7902\n", + "\n", + "⏱️ Evolución terminada en 18.524s\n", + "\n", + ">>> 🔒 APLICANDO FÓRMULAS LLM-FE A TEST <<<\n", + "=== 🧬 FASE 14.2: LLM-FE ReAct y Evaluación Bayesiana ===\n", + " 🔒 [TEST] Inyectando 2 Súper-Características aprendidas de Train...\n", + "\n", + "⏱️ Inyección completada en 0.002s\n", + "\n", + "📦 [MLOps] Matrices, rutas y fórmulas LLM-FE actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import warnings\n", + "import gc # 🚀 NUEVO: Garbage Collector para RAM\n", + "from typing import Tuple, Dict, Optional\n", + "from sklearn.linear_model import BayesianRidge\n", + "from sklearn.naive_bayes import GaussianNB\n", + "from sklearn.model_selection import cross_val_score\n", + "import itertools\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def generacion_guiada_llm_fe(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " es_regresion: bool = True,\n", + " max_features_nuevas: int = 5,\n", + " receta_formulas: Optional[Dict[str, str]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 14.2] Generador ReAct (LLM-FE) + Juez Bayesiano.\n", + " - Sandbox Matemático: Ejecuta expresiones de forma segura.\n", + " - Arquitectura Big Data (NUEVO): Submuestreo estricto para el Juez Bayesiano y GC para la RAM.\n", + " - Muro MLOps: En Train descubre y aprueba fórmulas. En Test aplica estrictamente.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧬 FASE 14.2: LLM-FE ReAct y Evaluación Bayesiana ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + " entorno_seguro = {\"np\": np, \"X\": X_trans}\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (Aplicador Ciego)\n", + " # ==========================================\n", + " if receta_formulas is not None:\n", + " if not receta_formulas:\n", + " logger.info(\" ✅ [BYPASS] No hay Súper-Características aprendidas de Train para inyectar.\")\n", + " return X_trans, rutas, receta_formulas\n", + "\n", + " logger.info(f\" 🔒 [TEST] Inyectando {len(receta_formulas)} Súper-Características aprendidas de Train...\")\n", + " for nombre_feature, formula in receta_formulas.items():\n", + " try:\n", + " X_trans[nombre_feature] = eval(formula, {\"__builtins__\": {}}, entorno_seguro)\n", + " except Exception as e:\n", + " logger.error(f\" ⚠️ Error inyectando '{nombre_feature}': {e}. Llenando con 0.\")\n", + " X_trans[nombre_feature] = 0.0\n", + "\n", + " logger.info(f\"\\n⏱️ Inyección completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_formulas\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (El Laboratorio del Agente ReAct)\n", + " # ==========================================\n", + " if y is None or not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' y variables numéricas para el Juez Bayesiano.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\" 🚂 [TRAIN] Inicializando Tribunal Bayesiano y Agente Generador...\")\n", + "\n", + " # --- A. Entrenar Modelo Base (Juez) con Arquitectura Big Data ---\n", + " MAX_EVAL_SAMPLES = 5000 # 🚀 Blindaje RAM: Máximo de filas para evaluar combinaciones\n", + "\n", + " juez = BayesianRidge() if es_regresion else GaussianNB()\n", + "\n", + " if len(X_trans) > MAX_EVAL_SAMPLES:\n", + " logger.info(f\" ↳ Dataset masivo. Creando 'Submuestra de Tribunal' de {MAX_EVAL_SAMPLES:,} filas para proteger RAM...\")\n", + " # Tomamos una muestra estratificada/aleatoria rápida (usamos head para no romper series de tiempo)\n", + " X_juez = X_trans[cols_numericas].head(MAX_EVAL_SAMPLES).fillna(0)\n", + " y_juez = y.head(MAX_EVAL_SAMPLES)\n", + " else:\n", + " X_juez = X_trans[cols_numericas].fillna(0)\n", + " y_juez = y\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " scoring_metric = 'r2' if es_regresion else 'accuracy'\n", + " score_base = np.mean(cross_val_score(juez, X_juez, y_juez, cv=3, scoring=scoring_metric))\n", + "\n", + " logger.info(f\" ⚖️ Score Base (Red Bayesiana en Submuestra): {score_base:.4f}\")\n", + "\n", + " # --- B. El Agente ReAct ---\n", + " top_cols = cols_numericas[:10] \n", + " operadores = ['+', '-', '*'] \n", + "\n", + " formulas_propuestas = {}\n", + " logger.info(f\" 🧠 Agente formulando hipótesis combinatorias...\")\n", + "\n", + " for col_A, col_B in itertools.combinations(top_cols, 2):\n", + " for op in operadores:\n", + " nombre = f\"llm_{col_A}_{op}_{col_B}\".replace('.','').replace('-','_')\n", + " formula = f\"X['{col_A}'] {op} X['{col_B}']\"\n", + " formulas_propuestas[nombre] = formula\n", + "\n", + " # --- C. Tribunal de Evaluación Bayesiana ---\n", + " receta_ganadoras = {}\n", + " mejor_score_actual = score_base\n", + "\n", + " logger.info(f\" 🧑‍⚖️ Juez evaluando {len(formulas_propuestas)} propuestas del Agente...\")\n", + "\n", + " # 🚀 Entorno seguro especial para el Juez (operando solo sobre la submuestra)\n", + " entorno_juez = {\"np\": np, \"X\": X_juez}\n", + "\n", + " for nombre_feature, formula in formulas_propuestas.items():\n", + " if len(receta_ganadoras) >= max_features_nuevas:\n", + " break \n", + "\n", + " try:\n", + " # 🚀 Blindaje RAM: X_temp se crea y se destruye en cada iteración\n", + " X_temp = X_juez.copy()\n", + " nueva_col_array = eval(formula, {\"__builtins__\": {}}, entorno_juez)\n", + " X_temp[nombre_feature] = nueva_col_array.fillna(0)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " score_nuevo = np.mean(cross_val_score(juez, X_temp, y_juez, cv=3, scoring=scoring_metric))\n", + "\n", + " margen_mejora = score_nuevo - mejor_score_actual\n", + " if margen_mejora > 0.001: \n", + " logger.info(f\" 🌟 ¡Aprobada! [{nombre_feature}] aportó mejora (+{margen_mejora:.4f})\")\n", + " receta_ganadoras[nombre_feature] = formula\n", + " mejor_score_actual = score_nuevo\n", + "\n", + " # 🚀 Garbage Collector: Liberar RAM explícitamente después del juicio\n", + " del X_temp\n", + " del nueva_col_array\n", + " gc.collect()\n", + "\n", + " except Exception as e:\n", + " continue\n", + "\n", + " # --- D. Inyección Definitiva en Train (Matriz Completa) ---\n", + " if receta_ganadoras:\n", + " logger.info(f\" 🧬 Inyectando {len(receta_ganadoras)} características evolutivas en la matriz principal...\")\n", + " for nombre, formula in receta_ganadoras.items():\n", + " # Aquí sí inyectamos a toda la matriz X_trans original\n", + " X_trans[nombre] = eval(formula, {\"__builtins__\": {}}, entorno_seguro)\n", + " rutas['num_vars'].append(nombre)\n", + " else:\n", + " logger.info(\" ❌ El Juez Bayesiano rechazó todas las propuestas. Ninguna aportó valor real.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Ingeniería LLM-FE completada con Arquitectura Big Data. Score final: {mejor_score_actual:.4f}\")\n", + " logger.info(f\"\\n⏱️ Evolución terminada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, receta_ganadoras\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " TARGET_ES_REGRESION = pd.api.types.is_float_dtype(manager.y_train) or manager.y_train.nunique() > 10\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO AGENTE LLM-FE EN TRAIN <<<\")\n", + " X_train_llm, rutas_actualizadas, diccionario_formulas = generacion_guiada_llm_fe(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " es_regresion=TARGET_ES_REGRESION,\n", + " max_features_nuevas=5 \n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO FÓRMULAS LLM-FE A TEST <<<\")\n", + " X_test_llm, _, _ = generacion_guiada_llm_fe(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_formulas=diccionario_formulas # El puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_llm\n", + " manager.X_test = X_test_llm\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos inicialización de modelos de preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_llm_fe', diccionario_formulas)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_llm_fe'] = diccionario_formulas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y fórmulas LLM-FE actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fase LLM-FE: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 27 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64\n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64\n", + "dtypes: float64(26), int8(1)\n", + "memory usage: 5.2 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO EMBEDDINGS GGPL EN TRAIN <<<\n", + "=== 🌳 FASE 15.1: Embeddings GGPL (Proyección GBDT Ligero) ===\n", + " 🚂 [TRAIN] Dataset masivo. Entrenando GBDT en submuestra de 5000 filas...\n", + " ↳ Entrenando red de 15 árboles (Profundidad: 3)...\n", + " ↳ Extrayendo hiper-coordenadas (Leaf Indices) de toda la matriz...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Discretización GGPL Exitosa. 15 variables categóricas de alta densidad creadas.\n", + " 🧠 Las variables continuas ahora tienen un gemelo no lineal.\n", + "\n", + "⏱️ Proyección GGPL completada en 0.209s\n", + "\n", + ">>> 🔒 PROYECTANDO EMBEDDINGS GGPL EN TEST <<<\n", + "=== 🌳 FASE 15.1: Embeddings GGPL (Proyección GBDT Ligero) ===\n", + " 🔒 [TEST] Pasando matriz por el GBDT aprendido para extraer coordenadas de hojas...\n", + " ↳ 15 nuevas coordenadas proyectadas y casteadas a 'category'.\n", + "\n", + "⏱️ Proyección GGPL completada en 0.138s\n", + "\n", + "📦 [MLOps] Matrices, rutas y modelo GBDT-Embedder actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import warnings\n", + "import gc # 🚀 NUEVO: Garbage Collector para RAM\n", + "from typing import Tuple, Dict\n", + "from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def embeddings_ggpl_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " n_arboles: int = 15,\n", + " profundidad: int = 3,\n", + " modelo_gbdt_aprendido = None\n", + ") -> Tuple[pd.DataFrame, Dict, any]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 15.1] Motor AutoML de Embeddings GGPL (GBDT Leaf Encoding).\n", + " - Proyección Dimensional: Usa un GBDT ligero para discretizar continuas.\n", + " - Inteligencia de Tarea: Detecta si 'y' es continua o categórica.\n", + " - 🚀 FIX MLOps: Tipado estricto 'category' para evitar colapsos en LightGBM.\n", + " - Protección RAM: Submuestreo para el entrenamiento del GBDT y GC explícito.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🌳 FASE 15.1: Embeddings GGPL (Proyección GBDT Ligero) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # Escudo de Tipos: El GBDT solo necesita las variables numéricas\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No hay variables numéricas para proyectar.\")\n", + " return X_trans, rutas, modelo_gbdt_aprendido\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.apply)\n", + " # ==========================================\n", + " if modelo_gbdt_aprendido is not None:\n", + " logger.info(f\" 🔒 [TEST] Pasando matriz por el GBDT aprendido para extraer coordenadas de hojas...\")\n", + "\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + " hojas = modelo_gbdt_aprendido.apply(X_num_sana)\n", + "\n", + " hojas_planas = hojas.reshape(hojas.shape[0], -1)\n", + "\n", + " n_features_nuevas = hojas_planas.shape[1]\n", + " nombres_nuevas = [f\"gbdt_emb_{i}\" for i in range(n_features_nuevas)]\n", + "\n", + " # 🚀 FIX MLOps: Asignación e inyección categórica\n", + " X_trans[nombres_nuevas] = hojas_planas\n", + " for col in nombres_nuevas:\n", + " X_trans[col] = X_trans[col].astype('category')\n", + "\n", + " # 🧹 Limpieza\n", + " del X_num_sana\n", + " del hojas\n", + " del hojas_planas\n", + " gc.collect()\n", + "\n", + " logger.info(f\" ↳ {n_features_nuevas} nuevas coordenadas proyectadas y casteadas a 'category'.\")\n", + " logger.info(f\"\\n⏱️ Proyección GGPL completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, modelo_gbdt_aprendido\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' para entrenar el GBDT Supervisor.\")\n", + " return X_trans, rutas, None\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) or y.nunique() > 10\n", + "\n", + " # ⚙️ Parámetros de Escalabilidad RAM\n", + " MAX_GBDT_SAMPLES = 5000 \n", + "\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + "\n", + " # --- PROTECCIÓN RAM: Submuestreo solo para el fit ---\n", + " if len(X_num_sana) > MAX_GBDT_SAMPLES:\n", + " logger.info(f\" 🚂 [TRAIN] Dataset masivo. Entrenando GBDT en submuestra de {MAX_GBDT_SAMPLES} filas...\")\n", + " X_fit = X_num_sana.sample(n=MAX_GBDT_SAMPLES, random_state=42)\n", + " y_fit = y.loc[X_fit.index]\n", + " else:\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando GBDT en dataset completo...\")\n", + " X_fit = X_num_sana\n", + " y_fit = y\n", + "\n", + " if es_regresion:\n", + " gbdt = GradientBoostingRegressor(n_estimators=n_arboles, max_depth=profundidad, random_state=42)\n", + " else:\n", + " gbdt = GradientBoostingClassifier(n_estimators=n_arboles, max_depth=profundidad, random_state=42)\n", + "\n", + " logger.info(f\" ↳ Entrenando red de {n_arboles} árboles (Profundidad: {profundidad})...\")\n", + " gbdt.fit(X_fit, y_fit)\n", + "\n", + " # El apply() se hace a toda la matriz X_num_sana para no perder registros\n", + " logger.info(f\" ↳ Extrayendo hiper-coordenadas (Leaf Indices) de toda la matriz...\")\n", + " hojas = gbdt.apply(X_num_sana)\n", + " hojas_planas = hojas.reshape(hojas.shape[0], -1)\n", + "\n", + " n_features_nuevas = hojas_planas.shape[1]\n", + " nombres_nuevas = [f\"gbdt_emb_{i}\" for i in range(n_features_nuevas)]\n", + "\n", + " # 🚀 FIX MLOps: Asignación e inyección categórica\n", + " X_trans[nombres_nuevas] = hojas_planas\n", + " for col in nombres_nuevas:\n", + " X_trans[col] = X_trans[col].astype('category')\n", + "\n", + " rutas['cat_vars'].extend(nombres_nuevas)\n", + "\n", + " # 🧹 Limpieza agresiva de memoria\n", + " del X_num_sana\n", + " del X_fit\n", + " del y_fit\n", + " del hojas\n", + " del hojas_planas\n", + " gc.collect()\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Discretización GGPL Exitosa. {n_features_nuevas} variables categóricas de alta densidad creadas.\")\n", + " logger.info(\" 🧠 Las variables continuas ahora tienen un gemelo no lineal.\")\n", + " logger.info(f\"\\n⏱️ Proyección GGPL completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, gbdt\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO EMBEDDINGS GGPL EN TRAIN <<<\")\n", + " X_train_emb, rutas_actualizadas, modelo_gbdt_embedder = embeddings_ggpl_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " n_arboles=15, \n", + " profundidad=3\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 PROYECTANDO EMBEDDINGS GGPL EN TEST <<<\")\n", + " X_test_emb, _, _ = embeddings_ggpl_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " modelo_gbdt_aprendido=modelo_gbdt_embedder \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_emb\n", + " manager.X_test = X_test_emb\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos inicialización de la caja fuerte de modelos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('embedder_gbdt', modelo_gbdt_embedder)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['embedder_gbdt'] = modelo_gbdt_embedder\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y modelo GBDT-Embedder actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fase de Embeddings GGPL: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 42 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_occupation 26029 non-null float64 \n", + " 14 is_missing_capital_gain 26029 non-null float64 \n", + " 15 is_missing_native_country 26029 non-null float64 \n", + " 16 total_nulos_en_fila 26029 non-null float64 \n", + " 17 tiene_capital_gain 26029 non-null float64 \n", + " 18 tiene_capital_loss 26029 non-null float64 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 26029 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64 \n", + " 27 gbdt_emb_0 26029 non-null category\n", + " 28 gbdt_emb_1 26029 non-null category\n", + " 29 gbdt_emb_2 26029 non-null category\n", + " 30 gbdt_emb_3 26029 non-null category\n", + " 31 gbdt_emb_4 26029 non-null category\n", + " 32 gbdt_emb_5 26029 non-null category\n", + " 33 gbdt_emb_6 26029 non-null category\n", + " 34 gbdt_emb_7 26029 non-null category\n", + " 35 gbdt_emb_8 26029 non-null category\n", + " 36 gbdt_emb_9 26029 non-null category\n", + " 37 gbdt_emb_10 26029 non-null category\n", + " 38 gbdt_emb_11 26029 non-null category\n", + " 39 gbdt_emb_12 26029 non-null category\n", + " 40 gbdt_emb_13 26029 non-null category\n", + " 41 gbdt_emb_14 26029 non-null category\n", + "dtypes: category(15), float64(26), int8(1)\n", + "memory usage: 5.6 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 CALCULANDO SHAP 2D Y KNOCKOFFS EN TRAIN <<<\n", + "=== 💎 FASE 15.2: Sinergias Causales (SHAP 2D + Diamond FDR Framework) ===\n", + " 🕵️‍♂️ Entrenando modelo de reconocimiento rápido (LGBM) - Límite: 5000 filas...\n", + " 🌌 Calculando Hiperespacio SHAP 2D para el Top 10 de variables...\n", + " ⚖️ Iniciando Tribunal Diamond (Control de FDR) para 10 candidatos...\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × occupation) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (age × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × marital_status) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (education_num × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (relationship × marital_status) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (occupation × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (age × occupation) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (age × marital_status) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × age) no superó a sombra.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Descubrimiento Causal completado. 0 sinergias inyectadas.\n", + "\n", + "⏱️ Fase SHAP+Diamond terminada en 21.806s\n", + "\n", + ">>> 🔒 APLICANDO SINERGIAS EXACTAS EN TEST <<<\n", + "=== 💎 FASE 15.2: Sinergias Causales (SHAP 2D + Diamond FDR Framework) ===\n", + " ✅ [BYPASS] Train no descubrió sinergias significativas. Matriz intacta.\n", + "\n", + "📦 [MLOps] Matrices, rutas y sinergias SHAP actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import warnings\n", + "import gc\n", + "from typing import Tuple, Dict, List, Optional\n", + "try:\n", + " import shap\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: Las librerías 'shap' y 'lightgbm' son requeridas para esta fase.\")\n", + " logger.error(\" Ejecuta: !pip install shap lightgbm\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def sinergias_shap_diamond_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " max_sinergias: int = 5,\n", + " receta_sinergias: Optional[List[Tuple[str, str]]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Optional[List[Tuple[str, str]]]]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 15.2] Motor AutoML de Sinergias (SHAP Interaction 2D + Diamond FDR).\n", + " - Optimización O(M^2): Filtra el Top 10 de variables antes de calcular la matriz SHAP.\n", + " - Framework Diamond (Knockoffs): Crea variables \"sombra\" para controlar el False Discovery Rate (FDR).\n", + " - Protección RAM Estricta: Límite estricto de 5k filas para SHAP y liberación explícita de memoria (GC).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 💎 FASE 15.2: Sinergias Causales (SHAP 2D + Diamond FDR Framework) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if len(cols_numericas) < 2:\n", + " logger.info(\" ✅ [BYPASS] Se necesitan al menos 2 variables numéricas para buscar sinergias.\")\n", + " return X_trans, rutas, receta_sinergias\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if receta_sinergias is not None:\n", + " if not receta_sinergias:\n", + " logger.info(\" ✅ [BYPASS] Train no descubrió sinergias significativas. Matriz intacta.\")\n", + " return X_trans, rutas, receta_sinergias\n", + "\n", + " logger.info(f\" 🔒 [TEST] Inyectando {len(receta_sinergias)} sinergias exactas descubiertas en Train...\")\n", + " for col_A, col_B in receta_sinergias:\n", + " if col_A in X_trans.columns and col_B in X_trans.columns:\n", + " nombre_sinergia = f\"sinergia_{col_A}_X_{col_B}\"\n", + " X_trans[nombre_sinergia] = X_trans[col_A].astype(float) * X_trans[col_B].astype(float)\n", + "\n", + " logger.info(f\"\\n⏱️ Inyección de sinergias completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_sinergias\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' para calcular SHAP Interactions.\")\n", + " return X_trans, rutas, None\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) or y.nunique() > 10\n", + "\n", + " # ⚙️ Parámetros de Escalabilidad RAM (SHAP 2D es hiper-pesado)\n", + " MAX_SHAP_SAMPLES = 5000 \n", + "\n", + " # --- PASO A: Filtro de Élite (Prevención de Explosión de RAM) ---\n", + " logger.info(f\" 🕵️‍♂️ Entrenando modelo de reconocimiento rápido (LGBM) - Límite: {MAX_SHAP_SAMPLES} filas...\")\n", + " X_num = X_trans[cols_numericas].fillna(0)\n", + "\n", + " # Submuestreo estricto para proteger RAM durante cálculos matemáticos complejos\n", + " if len(X_num) > MAX_SHAP_SAMPLES:\n", + " X_sample = X_num.sample(n=MAX_SHAP_SAMPLES, random_state=42)\n", + " else:\n", + " X_sample = X_num\n", + "\n", + " y_sample = y.loc[X_sample.index]\n", + "\n", + " if es_regresion:\n", + " modelo_base = lgb.LGBMRegressor(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + " else:\n", + " modelo_base = lgb.LGBMClassifier(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + "\n", + " modelo_base.fit(X_sample, y_sample)\n", + "\n", + " # Extraemos el Top 10 para no hacer un SHAP cruzado gigante\n", + " importancias = pd.Series(modelo_base.feature_importances_, index=cols_numericas)\n", + " top_10_cols = importancias.nlargest(10).index.tolist()\n", + "\n", + " # 🧹 Limpieza de memoria intermedia\n", + " del modelo_base\n", + " gc.collect()\n", + "\n", + " if len(top_10_cols) < 2:\n", + " return X_trans, rutas, []\n", + "\n", + " # --- PASO B: SHAP Interaction Values (2D) ---\n", + " logger.info(f\" 🌌 Calculando Hiperespacio SHAP 2D para el Top {len(top_10_cols)} de variables...\")\n", + " X_top = X_sample[top_10_cols]\n", + "\n", + " # Volvemos a entrenar solo con el Top 10 para el Explainer\n", + " modelo_shap = lgb.LGBMRegressor(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1) if es_regresion else lgb.LGBMClassifier(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + " modelo_shap.fit(X_top, y_sample)\n", + "\n", + " explainer = shap.TreeExplainer(modelo_shap)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " # interaction_values shape: (n_samples, n_features, n_features)\n", + " shap_interactions = explainer.shap_interaction_values(X_top)\n", + "\n", + " # 🧹 Limpieza de modelos pesados\n", + " del modelo_shap\n", + " del explainer\n", + " gc.collect()\n", + "\n", + " # 🚀 FIX: Manejo robusto del array de interacciones SHAP\n", + " # Si es una lista (suele pasar en clasificación multiclase con versiones viejas de SHAP)\n", + " if isinstance(shap_interactions, list):\n", + " # Tomamos la clase positiva (índice 1) si es binario, o la primera si hay más\n", + " idx_clase = 1 if len(shap_interactions) > 1 else 0\n", + " matriz_base = shap_interactions[idx_clase]\n", + " # Si es un numpy array, validamos sus dimensiones\n", + " elif isinstance(shap_interactions, np.ndarray):\n", + " if len(shap_interactions.shape) == 4:\n", + " # Shape (n_samples, n_features, n_features, n_classes) -> Promediamos las clases o tomamos la clase 1\n", + " matriz_base = shap_interactions[:, :, :, 1] if shap_interactions.shape[3] > 1 else shap_interactions[:, :, :, 0]\n", + " else:\n", + " # Shape estándar (n_samples, n_features, n_features)\n", + " matriz_base = shap_interactions\n", + " else:\n", + " # Fallback de seguridad\n", + " matriz_base = np.array(shap_interactions)\n", + "\n", + " # Matriz simétrica de importancia absoluta media\n", + " interaccion_media = np.abs(matriz_base).mean(axis=0)\n", + "\n", + " # Extraemos los pares con mayor interacción (ignorando la diagonal que son los efectos principales)\n", + " candidatos = []\n", + " for i in range(len(top_10_cols)):\n", + " for j in range(i + 1, len(top_10_cols)):\n", + " candidatos.append((interaccion_media[i, j], top_10_cols[i], top_10_cols[j]))\n", + "\n", + " candidatos.sort(reverse=True, key=lambda x: x[0]) \n", + " top_candidatos = candidatos[:max_sinergias * 2] \n", + "\n", + " # --- PASO C: El Tribunal Diamond (Knockoffs / Control FDR) ---\n", + " logger.info(f\" ⚖️ Iniciando Tribunal Diamond (Control de FDR) para {len(top_candidatos)} candidatos...\")\n", + "\n", + " sinergias_aprobadas = []\n", + "\n", + " for fuerza_shap, col_A, col_B in top_candidatos:\n", + " if len(sinergias_aprobadas) >= max_sinergias: break\n", + "\n", + " sombra_B = X_sample[col_B].sample(frac=1, random_state=42).values\n", + "\n", + " interaccion_real = X_sample[col_A] * X_sample[col_B]\n", + " interaccion_sombra = X_sample[col_A] * sombra_B\n", + "\n", + " df_torneo = pd.DataFrame({'Real': interaccion_real, 'Sombra': interaccion_sombra})\n", + " modelo_juez = lgb.LGBMRegressor(n_estimators=20, random_state=42, verbose=-1) if es_regresion else lgb.LGBMClassifier(n_estimators=20, random_state=42, verbose=-1)\n", + " modelo_juez.fit(df_torneo, y_sample)\n", + "\n", + " importancia_real = modelo_juez.feature_importances_[0]\n", + " importancia_sombra = modelo_juez.feature_importances_[1]\n", + "\n", + " if importancia_real > (importancia_sombra * 1.5): \n", + " logger.info(f\" 🌟 [FDR Pass] Sinergia real: ({col_A} × {col_B}) > Ruido Sombra.\")\n", + " sinergias_aprobadas.append((col_A, col_B))\n", + "\n", + " nombre_sinergia = f\"sinergia_{col_A}_X_{col_B}\"\n", + " X_trans[nombre_sinergia] = X_trans[col_A].astype(float) * X_trans[col_B].astype(float)\n", + " rutas['num_vars'].append(nombre_sinergia)\n", + " else:\n", + " logger.warning(f\" ❌ [FDR Drop] Falso Descubrimiento detectado: ({col_A} × {col_B}) no superó a sombra.\")\n", + "\n", + " # 🧹 Limpieza por cada ciclo del torneo\n", + " del df_torneo\n", + " del modelo_juez\n", + " gc.collect()\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Descubrimiento Causal completado. {len(sinergias_aprobadas)} sinergias inyectadas.\")\n", + " logger.info(f\"\\n⏱️ Fase SHAP+Diamond terminada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, sinergias_aprobadas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 CALCULANDO SHAP 2D Y KNOCKOFFS EN TRAIN <<<\")\n", + " X_train_shap, rutas_actualizadas, receta_interacciones = sinergias_shap_diamond_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " max_sinergias=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO SINERGIAS EXACTAS EN TEST <<<\")\n", + " X_test_shap, _, _ = sinergias_shap_diamond_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_sinergias=receta_interacciones \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.X_train = X_train_shap\n", + " manager.X_test = X_test_shap\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización del almacén de artefactos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " # Utilizamos la función nativa del manager si existe, o asignamos al diccionario\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_sinergias_shap', receta_interacciones)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_sinergias_shap'] = receta_interacciones\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y sinergias SHAP actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Sinergias SHAP/Diamond: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 MIDIENDO DISTANCIAS CONTRAFACTUALES EN TRAIN <<<\n", + "=== 🧲 FASE 15.3: Contrafactuales de Sensibilidad (Distancia a la Frontera) ===\n", + " 🚂 [TRAIN] Dataset masivo. Entrenando Oráculo en submuestra de 20000 filas...\n", + " ↳ Mapeando distancias a la frontera de decisión para toda la matriz...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Inyección Contrafactual completada. La matriz ahora conoce su propia vulnerabilidad.\n", + " 🌟 Nuevas variables creadas: ['cf_distancia_frontera', 'cf_fuerza_logit']\n", + "\n", + "⏱️ Sensibilidad calculada en 0.231s\n", + "\n", + ">>> 🔒 PROYECTANDO DISTANCIAS CONTRAFACTUALES EN TEST <<<\n", + "=== 🧲 FASE 15.3: Contrafactuales de Sensibilidad (Distancia a la Frontera) ===\n", + " 🔒 [TEST] Consultando al Oráculo para medir sensibilidad de nuevos registros...\n", + " ↳ Coordenadas inyectadas: ['cf_distancia_frontera', 'cf_fuerza_logit']\n", + "\n", + "⏱️ Sensibilidad calculada en 0.162s\n", + "\n", + "📦 [MLOps] Matrices, rutas y modelo Oráculo actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "try:\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: La librería 'lightgbm' es requerida para esta fase.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def contrafactuales_sensibilidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " modelo_oraculo = None\n", + ") -> Tuple[pd.DataFrame, Dict, any]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 15.3] Motor AutoML de Contrafactuales de Sensibilidad.\n", + " - Proxy Causal: Usa un Oráculo (LGBM) para medir la distancia a la frontera de decisión.\n", + " - Clean Code: Extrae 'Margen de Frontera' y 'Fuerza Logit' sin intervención manual.\n", + " - Inteligencia de Tarea: Adaptable a Clasificación (Binaria/Multiclase) y Regresión.\n", + " - Protección RAM: Submuestreo estricto para el Oráculo y Garbage Collection.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧲 FASE 15.3: Contrafactuales de Sensibilidad (Distancia a la Frontera) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # 🛡️ Solo pasamos variables numéricas al Oráculo para evitar crashes categóricos\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No hay variables numéricas para calcular sensibilidad espacial.\")\n", + " return X_trans, rutas, modelo_oraculo\n", + "\n", + " # Función interna para calcular las métricas espaciales\n", + " def inyectar_distancias(df: pd.DataFrame, predicciones: np.ndarray, es_regresion: bool) -> Tuple[pd.DataFrame, list]:\n", + " df_out = df.copy()\n", + " nuevas_cols = []\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " if es_regresion:\n", + " # En regresión, la \"distancia\" es qué tan lejos está de la mediana global del Oráculo\n", + " mediana_global = np.median(predicciones)\n", + " df_out['cf_distancia_mediana'] = np.abs(predicciones - mediana_global)\n", + " df_out['cf_desviacion_relativa'] = (predicciones - mediana_global) / (np.abs(mediana_global) + 1e-6)\n", + " nuevas_cols = ['cf_distancia_mediana', 'cf_desviacion_relativa']\n", + " rutas['num_vars'].extend(nuevas_cols)\n", + " else:\n", + " # En clasificación binaria o multiclase\n", + " if len(predicciones.shape) == 1 or predicciones.shape[1] == 1: # Binario\n", + " prob_positiva = predicciones if len(predicciones.shape) == 1 else predicciones[:, 0]\n", + " # Distancia absoluta a la duda (0.5)\n", + " df_out['cf_distancia_frontera'] = np.abs(prob_positiva - 0.5)\n", + " # Log-Odds (Fuerza de empuje) con clip para evitar log(0)\n", + " p_clip = np.clip(prob_positiva, 1e-5, 1 - 1e-5)\n", + " df_out['cf_fuerza_logit'] = np.log(p_clip / (1 - p_clip))\n", + " nuevas_cols = ['cf_distancia_frontera', 'cf_fuerza_logit']\n", + " rutas['num_vars'].extend(nuevas_cols)\n", + " else: # Multiclase\n", + " # Distancia entre la clase más probable y la segunda más probable (Margen de Confianza)\n", + " prob_ordenada = np.sort(predicciones, axis=1)\n", + " df_out['cf_margen_multiclase'] = prob_ordenada[:, -1] - prob_ordenada[:, -2]\n", + " df_out['cf_entropia_decision'] = -np.sum(predicciones * np.log(np.clip(predicciones, 1e-5, 1)), axis=1)\n", + " nuevas_cols = ['cf_margen_multiclase', 'cf_entropia_decision']\n", + " rutas['num_vars'].extend(nuevas_cols)\n", + " return df_out, nuevas_cols\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if modelo_oraculo is not None:\n", + " logger.info(f\" 🔒 [TEST] Consultando al Oráculo para medir sensibilidad de nuevos registros...\")\n", + "\n", + " # 🚀 FIX MLOps: Evaluar directamente la clase del estimador interno en LightGBM\n", + " es_regresion = isinstance(modelo_oraculo, lgb.LGBMRegressor)\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + "\n", + " # El oráculo predice probabilidades (clasificación) o valores (regresión)\n", + " if es_regresion:\n", + " predicciones = modelo_oraculo.predict(X_num_sana)\n", + " else:\n", + " predicciones = modelo_oraculo.predict_proba(X_num_sana)\n", + " if predicciones.shape[1] == 2: predicciones = predicciones[:, 1] # Binario\n", + "\n", + " X_trans, columnas_creadas = inyectar_distancias(X_trans, predicciones, es_regresion)\n", + "\n", + " # 🧹 Limpieza\n", + " del X_num_sana\n", + " gc.collect()\n", + "\n", + " logger.info(f\" ↳ Coordenadas inyectadas: {columnas_creadas}\")\n", + " logger.info(f\"\\n⏱️ Sensibilidad calculada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, modelo_oraculo\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' para entrenar el Oráculo.\")\n", + " return X_trans, rutas, None\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) or y.nunique() > 10\n", + "\n", + " # ⚙️ Parámetros de Escalabilidad RAM (El Oráculo no necesita todos los datos para entender el espacio)\n", + " MAX_ORACLE_SAMPLES = 20000 \n", + "\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + "\n", + " if len(X_num_sana) > MAX_ORACLE_SAMPLES:\n", + " logger.info(f\" 🚂 [TRAIN] Dataset masivo. Entrenando Oráculo en submuestra de {MAX_ORACLE_SAMPLES} filas...\")\n", + " X_fit = X_num_sana.sample(n=MAX_ORACLE_SAMPLES, random_state=42)\n", + " y_fit = y.loc[X_fit.index]\n", + " else:\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando Oráculo Espacial...\")\n", + " X_fit = X_num_sana\n", + " y_fit = y\n", + "\n", + " # Entrenamos el Oráculo\n", + " if es_regresion:\n", + " oraculo = lgb.LGBMRegressor(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + " else:\n", + " oraculo = lgb.LGBMClassifier(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + "\n", + " oraculo.fit(X_fit, y_fit)\n", + "\n", + " logger.info(f\" ↳ Mapeando distancias a la frontera de decisión para toda la matriz...\")\n", + " if es_regresion:\n", + " predicciones = oraculo.predict(X_num_sana)\n", + " else:\n", + " predicciones = oraculo.predict_proba(X_num_sana)\n", + " if predicciones.shape[1] == 2: predicciones = predicciones[:, 1]\n", + "\n", + " X_trans, columnas_creadas = inyectar_distancias(X_trans, predicciones, es_regresion)\n", + "\n", + " # 🧹 Purificación de RAM\n", + " rutas['num_vars'] = list(set(rutas['num_vars'])) # Eliminar duplicados en las rutas\n", + " del X_num_sana\n", + " del X_fit\n", + " del y_fit\n", + " gc.collect()\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Inyección Contrafactual completada. La matriz ahora conoce su propia vulnerabilidad.\")\n", + " logger.info(f\" 🌟 Nuevas variables creadas: {columnas_creadas}\")\n", + " logger.info(f\"\\n⏱️ Sensibilidad calculada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, oraculo\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 MIDIENDO DISTANCIAS CONTRAFACTUALES EN TRAIN <<<\")\n", + " X_train_cf, rutas_actualizadas, modelo_oraculo = contrafactuales_sensibilidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 PROYECTANDO DISTANCIAS CONTRAFACTUALES EN TEST <<<\")\n", + " X_test_cf, _, _ = contrafactuales_sensibilidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " modelo_oraculo=modelo_oraculo \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_cf\n", + " manager.X_test = X_test_cf\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización del almacén de modelos preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_contrafactual', modelo_oraculo)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['oraculo_contrafactual'] = modelo_oraculo\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y modelo Oráculo actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Contrafactuales de Sensibilidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 CALCULANDO ESTRATEGIA UNIVERSAL DE EQUIDAD EN TRAIN (VÍA MANAGER) <<<\n", + "=== ⚖️ FASE 16.1: Radar Universal de Equidad MLOps ===\n", + " 📊 Diagnóstico de Equidad Binaria: Ratio Minoritaria/Mayoritaria = 0.317 (Umbral: 0.8)\n", + " ↳ Distribución original: \n", + "income\n", + "0 19758\n", + "1 6271\n", + " 🧬 [TRAIN] Desbalance severo detectado. Trazando plano para Asymmetric Bagging Puro...\n", + " 🛡️ ESTATUS: Estrategia de Asymmetric Bagging calculada con éxito. La matriz se mantiene intacta.\n", + " ↳ Configuración inyectada en 'rutas' para la Fase 18: {'pos_bagging_fraction': 1.0, 'neg_bagging_fraction': np.float64(0.3809), 'bagging_freq': 1, 'bagging_seed': 42}\n", + "\n", + "⏱️ Radar Universal completado en 0.004s\n", + "\n", + ">>> 🔒 PASANDO TEST POR EL ESCUDO DE EQUIDAD <<<\n", + "=== ⚖️ FASE 16.1: Radar Universal de Equidad MLOps ===\n", + " ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\n", + "\n", + "📦 [MLOps] Matrices y configuración de equidad actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def configuracion_equidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_desbalance: float = 0.8\n", + ") -> Tuple[pd.DataFrame, Optional[pd.Series], Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 16.1] Radar AutoML: Diagnóstico Universal de Equidad.\n", + " - RAM Shield: NO clona ni inventa filas (Bye SMOTE). Deja la matriz intacta.\n", + " - Inteligencia Dual: \n", + " ↳ Binario -> Calcula Asymmetric Bagging Puro y Optimizado.\n", + " ↳ Multiclase -> Calcula Pesos Suavizados anti-sobreconfianza.\n", + " - Escudo de Producción: Si es modo TEST (y=None), pasa en milisegundos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 16.1: Radar Universal de Equidad MLOps ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. ESCUDOS MLOPS (Producción)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\")\n", + " return X.copy(), None, rutas\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (Diagnóstico de Tarea)\n", + " # ==========================================\n", + " es_regresion = pd.api.types.is_float_dtype(y) and y.nunique() > 20\n", + "\n", + " if es_regresion:\n", + " logger.info(\" ✅ [BYPASS] Tarea de Regresión detectada. Las técnicas de equidad de clases se omiten.\")\n", + " return X.copy(), y.copy(), rutas\n", + "\n", + " # ==========================================\n", + " # 3. Radar de Desbalance (El Cerebro Matemático)\n", + " # ==========================================\n", + " conteo_clases = y.value_counts()\n", + " es_multiclase = len(conteo_clases) > 2\n", + "\n", + " # ----------------------------------------------------\n", + " # MOTOR A: MULTICLASE (Pesos Suavizados Anti-Mentiras)\n", + " # ----------------------------------------------------\n", + " if es_multiclase:\n", + " clase_mayor = conteo_clases.max()\n", + " clase_menor = conteo_clases.min()\n", + " ratio_peor = clase_menor / clase_mayor\n", + "\n", + " logger.info(f\" 📊 Diagnóstico de Equidad Multiclase: Ratio Minoritaria/Mayoritaria = {ratio_peor:.3f} (Umbral: {umbral_desbalance})\")\n", + " logger.info(f\" ↳ Distribución original: \\n{conteo_clases.to_string()}\")\n", + "\n", + " if ratio_peor >= umbral_desbalance:\n", + " logger.info(\" ✅ [BYPASS] Las clases están suficientemente equilibradas. Sin intervención requerida.\")\n", + " rutas['asymmetric_bagging'] = {}\n", + " else:\n", + " logger.info(f\" 🧬 [TRAIN] Desbalance severo detectado. Trazando plano para Cost-Sensitive Learning (Pesos Suavizados)...\")\n", + "\n", + " # 🚀 FIX MLOps: Cálculo de pesos suavizados por raíz cuadrada\n", + " pesos_suavizados = {}\n", + " for clase, count in conteo_clases.items():\n", + " peso = np.sqrt(clase_mayor / count)\n", + " pesos_suavizados[clase] = round(peso, 4)\n", + "\n", + " config_equidad = {'class_weight': pesos_suavizados}\n", + " rutas['asymmetric_bagging'] = config_equidad\n", + "\n", + " logger.info(\" 🛡️ ESTATUS: Estrategia de Cost-Sensitive Learning calculada con éxito. La matriz se mantiene intacta.\")\n", + " logger.info(f\" ↳ Configuración inyectada en 'rutas' para la Fase 18: {config_equidad}\")\n", + "\n", + " # ----------------------------------------------------\n", + " # 🚀 MOTOR B: BINARIO (Asymmetric Bagging Puro y Optimizado)\n", + " # ----------------------------------------------------\n", + " else:\n", + " # Identificación dinámica de la jerarquía de clases\n", + " clase_minoritaria = conteo_clases.index[-1]\n", + " clase_mayoritaria = conteo_clases.index[0]\n", + "\n", + " count_minoritaria = conteo_clases.iloc[-1]\n", + " count_mayoritaria = conteo_clases.iloc[0]\n", + "\n", + " ratio_desbalance = count_minoritaria / count_mayoritaria\n", + "\n", + " logger.info(f\" 📊 Diagnóstico de Equidad Binaria: Ratio Minoritaria/Mayoritaria = {ratio_desbalance:.3f} (Umbral: {umbral_desbalance})\")\n", + " logger.info(f\" ↳ Distribución original: \\n{conteo_clases.to_string()}\")\n", + "\n", + " if ratio_desbalance >= umbral_desbalance:\n", + " logger.info(\" ✅ [BYPASS] Las clases están suficientemente equilibradas. Sin intervención requerida.\")\n", + " rutas['asymmetric_bagging'] = {}\n", + " else:\n", + " logger.info(f\" 🧬 [TRAIN] Desbalance severo detectado. Trazando plano para Asymmetric Bagging Puro...\")\n", + "\n", + " # 🚀 MAGIA MLOPS: Calculamos la fracción de la mayoría con un piso del 10% (0.1) \n", + " # para evitar la inanición de datos (Feature Starvation) en los árboles.\n", + " fraccion_mayoritaria_optima = max(min(ratio_desbalance * 1.2, 1.0), 0.1)\n", + "\n", + " # Mapeo dinámico: LightGBM aplica 'pos' a la clase 1 y 'neg' a la clase 0.\n", + " if clase_minoritaria == 1:\n", + " pos_frac = 1.0\n", + " neg_frac = round(fraccion_mayoritaria_optima, 4)\n", + " else:\n", + " pos_frac = round(fraccion_mayoritaria_optima, 4)\n", + " neg_frac = 1.0\n", + "\n", + " config_equidad = {\n", + " 'pos_bagging_fraction': pos_frac,\n", + " 'neg_bagging_fraction': neg_frac,\n", + " 'bagging_freq': 1, \n", + " 'bagging_seed': 42\n", + " }\n", + "\n", + " rutas['asymmetric_bagging'] = config_equidad\n", + " logger.info(\" 🛡️ ESTATUS: Estrategia de Asymmetric Bagging calculada con éxito. La matriz se mantiene intacta.\")\n", + " logger.info(f\" ↳ Configuración inyectada en 'rutas' para la Fase 18: {config_equidad}\")\n", + "\n", + " logger.info(f\"\\n⏱️ Radar Universal completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X.copy(), y.copy(), rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 CALCULANDO ESTRATEGIA UNIVERSAL DE EQUIDAD EN TRAIN (VÍA MANAGER) <<<\")\n", + "\n", + " # Ejecutamos consumiendo los datos directamente del manager\n", + " X_train_limpio, y_train_limpio, rutas_actualizadas = configuracion_equidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # Guardamos los resultados\n", + " manager.X_train = X_train_limpio\n", + " manager.y_train = y_train_limpio\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n>>> 🔒 PASANDO TEST POR EL ESCUDO DE EQUIDAD <<<\")\n", + " X_test_limpio, _, _ = configuracion_equidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + " manager.X_test = X_test_limpio \n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y configuración de equidad actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # Variables globales de transición\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Pipeline (Fase de Equidad): {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 EJECUTANDO PSEUDO-LABELING EN TRAIN <<<\n", + "=== 🏷️ FASE 16.2: Pseudo-Labeling y Enriquecimiento Semi-Supervisado ===\n", + " ✅ [BYPASS] No se proporcionó matriz de datos sin etiquetar (X_unlabeled). Operación omitida.\n", + "\n", + ">>> 🔒 PASANDO TEST POR EL ESCUDO DE PSEUDO-LABELING <<<\n", + "=== 🏷️ FASE 16.2: Pseudo-Labeling y Enriquecimiento Semi-Supervisado ===\n", + " ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Fase Semi-Supervisada completada).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "from typing import Tuple, Dict, Optional\n", + "\n", + "try:\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: La librería 'lightgbm' es requerida para el Oráculo Preliminar.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def pseudo_labeling_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " X_unlabeled: Optional[pd.DataFrame] = None,\n", + " rutas: Dict = None,\n", + " umbral_confianza: float = 0.99\n", + ") -> Tuple[pd.DataFrame, Optional[pd.Series], Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 16.2] Motor AutoML de Pseudo-Labeling (>99% Confianza).\n", + " - Candado de Ejecución Única: Evita que el usuario corra la celda dos veces y contamine los Folds.\n", + " - Muro MLOps Absoluto: Si es modo TEST (y=None), pasa la matriz intacta. NUNCA se contamina Test.\n", + " - Semi-Supervisado: Aprovecha datos sin etiqueta (X_unlabeled) para enriquecer Train.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz base (X) está vacía.\")\n", + " raise ValueError(\"La matriz base (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🏷️ FASE 16.2: Pseudo-Labeling y Enriquecimiento Semi-Supervisado ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. ESCUDOS MLOPS (Producción y Doble Ejecución)\n", + " # ==========================================\n", + " # Escudo 1: Protección de Producción / Test\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\")\n", + " return X.copy(), None, rutas\n", + "\n", + " # Escudo 2: Candado de Ejecución Única\n", + " if rutas.get('pseudo_labeling_ejecutado', False):\n", + " logger.info(\" ✅ [ESCUDO ACTIVO] Pseudo-Labeling ya fue ejecutado previamente. Bloqueando doble ejecución.\")\n", + " return X.copy(), y.copy(), rutas\n", + "\n", + " X_trans = X.copy()\n", + "\n", + " # ==========================================\n", + " # 2. Diagnóstico de Viabilidad\n", + " # ==========================================\n", + " y_trans = y.copy()\n", + " es_regresion = pd.api.types.is_float_dtype(y_trans) and y_trans.nunique() > 20\n", + "\n", + " if es_regresion:\n", + " logger.info(\" ✅ [BYPASS] Tarea de Regresión detectada. Pseudo-Labeling requiere probabilidades de clase.\")\n", + " return X_trans, y_trans, rutas\n", + "\n", + " if X_unlabeled is None or X_unlabeled.empty:\n", + " logger.info(\" ✅ [BYPASS] No se proporcionó matriz de datos sin etiquetar (X_unlabeled). Operación omitida.\")\n", + " return X_trans, y_trans, rutas\n", + "\n", + " # ==========================================\n", + " # 3. Entrenamiento del Oráculo Preliminar Fuerte\n", + " # ==========================================\n", + " logger.info(f\" 🧠 [TRAIN] Entrenando Oráculo Preliminar para evaluar {len(X_unlabeled):,} registros oscuros...\")\n", + "\n", + " # 🛡️ Filtramos solo las variables numéricas que existen en ambas matrices\n", + " cols_numericas = [col for col in X_trans.select_dtypes(include=[np.number]).columns \n", + " if col in X_unlabeled.columns]\n", + "\n", + " X_num = X_trans[cols_numericas].fillna(0)\n", + " X_unl_num = X_unlabeled[cols_numericas].fillna(0)\n", + "\n", + " oraculo = lgb.LGBMClassifier(n_estimators=100, random_state=42, n_jobs=-1, verbose=-1)\n", + " oraculo.fit(X_num, y_trans)\n", + "\n", + " # ==========================================\n", + " # 4. Inquisición de Confianza (>99%)\n", + " # ==========================================\n", + " logger.info(f\" 🔍 Escaneando probabilidades en la matriz sin etiqueta (Umbral: {umbral_confianza*100}%)...\")\n", + " probabilidades = oraculo.predict_proba(X_unl_num)\n", + "\n", + " # Obtenemos la confianza máxima para cada registro y la clase a la que pertenece\n", + " max_probs = np.max(probabilidades, axis=1)\n", + " clases_predichas = np.argmax(probabilidades, axis=1)\n", + "\n", + " # 🛡️ EL ESCUDO ANTI-VENENO: Solo los que superan el 99%\n", + " mascara_elite = max_probs >= umbral_confianza\n", + " candidatos_aprobados = np.sum(mascara_elite)\n", + "\n", + " if candidatos_aprobados == 0:\n", + " logger.info(f\" ❌ [RECHAZO] Ningún registro oscuro alcanzó el {umbral_confianza*100}% de certeza. Matriz protegida.\")\n", + " else:\n", + " logger.info(f\" 🌟 [APROBADO] Se encontraron {candidatos_aprobados:,} registros con certeza absoluta. Inyectando...\")\n", + "\n", + " # Extraemos los registros de élite de la matriz original sin etiquetar (con todas sus columnas)\n", + " X_elite = X_unlabeled[mascara_elite].copy()\n", + "\n", + " # Extraemos las clases predichas de élite (mapeando de vuelta si las clases no son 0, 1, 2...)\n", + " clases_reales = oraculo.classes_\n", + " y_elite = pd.Series(clases_reales[clases_predichas[mascara_elite]], index=X_elite.index)\n", + "\n", + " # Fusionamos con la matriz principal de Train\n", + " X_trans = pd.concat([X_trans, X_elite], axis=0, ignore_index=True)\n", + " y_trans = pd.concat([y_trans, y_elite], axis=0, ignore_index=True)\n", + "\n", + " # 🧹 Purga de RAM\n", + " del X_num\n", + " del X_unl_num\n", + " del oraculo\n", + " del probabilidades\n", + " gc.collect()\n", + "\n", + " # 🔒 Activamos el Candado para el futuro\n", + " rutas['pseudo_labeling_ejecutado'] = True\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Pseudo-Labeling finalizado. Tamaño actual de Train: {len(X_trans):,} registros.\")\n", + " logger.info(f\"\\n⏱️ Operación completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, y_trans, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # Simulación: Si tienes un dataset aparte sin etiquetas, lo pasas aquí.\n", + " # X_datos_sin_etiqueta = pd.read_csv('datos_oscuros.csv')\n", + " X_datos_sin_etiqueta = None\n", + "\n", + " logger.info(\">>> 🚂 EJECUTANDO PSEUDO-LABELING EN TRAIN <<<\")\n", + " # Limpio, automático y blindado por el Arquitecto\n", + " X_train_semi, y_train_semi, rutas_actualizadas = pseudo_labeling_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " X_unlabeled=X_datos_sin_etiqueta, \n", + " rutas=manager.rutas,\n", + " umbral_confianza=0.99\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 PASANDO TEST POR EL ESCUDO DE PSEUDO-LABELING <<<\")\n", + " X_test_semi, _, _ = pseudo_labeling_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_semi\n", + " manager.y_train = y_train_semi\n", + " manager.X_test = X_test_semi\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Fase Semi-Supervisada completada).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Pseudo-Labeling: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 EJECUTANDO PIPELINE UNIFICADO DE EQUIDAD EN TRAIN <<<\n", + "=== ⚖️ FASE 16.3: Reweighing Directo (DDO) y Auditoría Ponderada ===\n", + " ⚙️ Ejecutando Motor DDO (Direct Optimization) para forzar cumplimiento legal...\n", + " ⚡ Convergencia matemática DDO lograda en la Época 2.\n", + " 🚨 ESTATUS: Matriz curada con DDO. Se forzó la equidad en 5 variables.\n", + "\n", + " 📊 GENERANDO REPORTE DE VALIDACIÓN DE EQUIDAD PONDERADA...\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `age`\n", + " 👑 Base de Nivelación: '(16.999, 28.0]' (Tasa ponderada: 70.6%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(37.0, 47.0]': DIR = 0.94 (66.3%) | ✅ [JUSTO] '(28.0, 37.0]': DIR = 0.88 (62.4%)\n", + " ✅ [JUSTO] '(47.0, 90.0]': DIR = 0.94 (66.1%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `workclass`\n", + " 👑 Base de Nivelación: '(0.256, 0.565]' (Tasa ponderada: 69.0%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.219, 0.22]': DIR = 0.96 (66.3%) | ✅ [JUSTO] '(0.215, 0.219]': DIR = 0.94 (64.6%)\n", + " ✅ [JUSTO] '(0.22, 0.256]': DIR = 0.95 (65.6%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `education_num`\n", + " 👑 Base de Nivelación: '(12.0, 16.0]' (Tasa ponderada: 75.1%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(9.0, 10.0]': DIR = 0.85 (64.1%) | ✅ [JUSTO] '(0.999, 9.0]': DIR = 0.82 (61.8%)\n", + " ✅ [JUSTO] '(10.0, 12.0]': DIR = 0.85 (64.0%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `marital_status`\n", + " 👑 Base de Nivelación: '(0.449, 0.45]' (Tasa ponderada: 70.9%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.105, 0.449]': DIR = 1.00 (70.7%) | ✅ [JUSTO] '(0.0417, 0.0474]': DIR = 0.83 (59.0%)\n", + " ✅ [JUSTO] '(0.0474, 0.105]': DIR = 0.84 (59.4%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `race`\n", + " 👑 Base de Nivelación: '(0.252, 0.257]' (Tasa ponderada: 68.9%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.257, 0.258]': DIR = 0.97 (66.9%) | ✅ [JUSTO] '(0.258, 0.288]': DIR = 0.91 (62.7%)\n", + " ✅ [JUSTO] '(0.10099999999999999, 0.252]': DIR = 0.96 (65.9%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `sex`\n", + " 👑 Base de Nivelación: '1.0' (Tasa ponderada: 69.5%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '0.0': DIR = 0.82 (57.0%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `native_country`\n", + " 👑 Base de Nivelación: '(0.2424, 0.2469]' (Tasa ponderada: 68.7%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.046669999999999996, 0.2424]': DIR = 0.98 (67.2%) | ✅ [JUSTO] '(0.2472, 0.2476]': DIR = 0.89 (61.0%)\n", + " ✅ [JUSTO] '(0.2469, 0.2472]': DIR = 0.96 (66.2%) | \n", + " =====================================================================================\n", + "\n", + "⏱️ Pipeline unificado completado en 0.712s\n", + "\n", + ">>> 🔒 GENERANDO PESOS PARA TEST (ESCUDO MLOPS) <<<\n", + " 🔒 [TEST] Bypass activado. Retornando pesos neutrales (1.0) sin alterar ni graficar.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# ==========================================\n", + "# MOTOR UNIFICADO: DDO REWEIGHING + AUDITORÍA VISUAL\n", + "# ==========================================\n", + "def aplicar_y_auditar_equidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_dir: float = 0.80 \n", + ") -> Tuple[pd.DataFrame, pd.Series]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 16.3] Motor AutoML Unificado de Justicia Algorítmica.\n", + " - Detección Inteligente: Diccionario Exhaustivo + Regex estricto.\n", + " - Curación (DDO): Direct Disparate Impact Optimization. Reemplaza al IPF.\n", + " Fuerza matemáticamente el cumplimiento del DIR resolviendo los pesos exactos.\n", + " - Validación: Graficador automático post-tratamiento de TODAS las variables sensibles.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " inicio_timer = time.time()\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + " pesos_instancia = pd.Series(1.0, index=X_trans.index, name=\"sample_weight\")\n", + "\n", + " # ==========================================\n", + " # 1. ESCUDOS Y BYPASS DE MLOPS\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" 🔒 [TEST] Bypass activado. Retornando pesos neutrales (1.0) sin alterar ni graficar.\")\n", + " return X_trans, pesos_instancia\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) and y.nunique() > 20\n", + " if es_regresion:\n", + " logger.info(\" ✅ [BYPASS] Tarea de Regresión Continua. Reweighing omitido.\")\n", + " return X_trans, pesos_instancia\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 16.3: Reweighing Directo (DDO) y Auditoría Ponderada ===\")\n", + "\n", + " conteo_clases = y.value_counts(normalize=True)\n", + " clase_favorable = conteo_clases.index[-1]\n", + "\n", + " # ==========================================\n", + " # 2. RADAR DE DETECCIÓN (EL ESCUDO DEL ARQUITECTO)\n", + " # ==========================================\n", + " def construir_patron(palabra):\n", + " return fr'(^{palabra}$|^{palabra}_|_{palabra}$|_{palabra}_|[a-z]{palabra.capitalize()})'\n", + "\n", + " terminos_legales = [\n", + " # 1. EDAD Y NACIMIENTO (Age & Birth)\n", + " 'age', 'edad', 'dob', 'dateofbirth', 'birth', 'birthdate', 'birthyear', 'nacimiento', \n", + " 'fechanacimiento', 'anonacimiento', 'year', 'año', 'ano', 'generation', 'generacion',\n", + " # 2. SEXO, GÉNERO Y ORIENTACIÓN (Sex, Gender & Orientation)\n", + " 'sex', 'sexo', 'gender', 'genero', 'female', 'femenino', 'male', 'masculino', \n", + " 'mujer', 'hombre', 'orientation', 'orientacion', 'sexuality', 'sexualidad', \n", + " 'sexualorientation', 'orientacionsexual', 'lgbt', 'lgbtq', 'trans', 'transgender', \n", + " 'transgenero', 'nonbinary', 'nobinario', 'intersex', 'intersexual',\n", + " # 3. RAZA, ETNIA Y ORIGEN (Race, Ethnicity & Origins)\n", + " 'race', 'raza', 'ethnic', 'etnia', 'ethnicity', 'ethniccode', 'codigoetnico',\n", + " 'color', 'origin', 'origen', 'ancestry', 'ascendencia', 'minority', 'minoria', \n", + " 'indigenous', 'indigena', 'tribe', 'tribu', 'hispanic', 'hispano', 'latino', \n", + " 'afro', 'afroamerican', 'black', 'negro', 'white', 'blanco', 'asian', 'asiatico', \n", + " 'caucasian', 'caucasico',\n", + " # 4. RELIGIÓN Y CREENCIAS (Religion & Beliefs)\n", + " 'religion', 'belief', 'creencia', 'faith', 'fe', 'creed', 'credo', 'worship', 'culto',\n", + " 'muslim', 'musulman', 'jewish', 'judio', 'christian', 'cristiano', 'catholic', \n", + " 'catolico', 'islam', 'judaismo', 'cristianismo',\n", + " # 5. NACIONALIDAD E INMIGRACIÓN (Nationality & Immigration)\n", + " 'national', 'nacional', 'nationality', 'nacionalidad', 'nation', 'nacion', \n", + " 'country', 'pais', 'citizen', 'ciudadano', 'citizenship', 'ciudadania', \n", + " 'immigrant', 'inmigrante', 'immigration', 'inmigracion', 'migrant', 'migrante', \n", + " 'refugee', 'refugiado', 'asylum', 'asilo', 'alien', 'extranjero', 'native', 'nativo',\n", + " # 6. SALUD, DISCAPACIDAD Y GENÉTICA (Health, Disability & Genetics)\n", + " 'health', 'salud', 'medical', 'medico', 'disability', 'discapacidad', 'handicap', \n", + " 'minusvalia', 'disabled', 'discapacitado', 'disease', 'enfermedad', 'illness', \n", + " 'condition', 'condicion', 'genetic', 'genetico', 'pregnant', 'embarazada', \n", + " 'pregnancy', 'embarazo', 'maternity', 'maternidad', 'paternity', 'paternidad',\n", + " # 7. ESTADO CIVIL Y FAMILIA (Marital Status & Family)\n", + " 'marital', 'conyugal', 'maritalstatus', 'estadocivil', 'civilstatus', 'civil', \n", + " 'marriage', 'matrimonio', 'wedding', 'spouse', 'esposo', 'esposa', 'conyuge', \n", + " 'widow', 'viudo', 'viuda', 'divorced', 'divorciado', 'single', 'soltero', \n", + " 'family', 'familia', 'children', 'hijos', 'dependent', 'dependents', \n", + " 'dependiente', 'dependientes',\n", + " # 8. SOCIOECONÓMICO Y EDUCACIÓN (Socioeconomic & Education)\n", + " 'income', 'ingreso', 'ingresos', 'salary', 'salario', 'wage', 'sueldo', 'wealth', \n", + " 'riqueza', 'poverty', 'pobreza', 'class', 'clase', 'estrato', 'socioeconomic', \n", + " 'socioeconomico', 'education', 'educacion', 'degree', 'grado', 'school', 'escuela', \n", + " 'university', 'universidad', 'illiterate', 'analfabeto',\n", + " # 9. SISTEMA PENAL Y CUSTODIA (Legal & Custody Status)\n", + " 'legalstatus', 'estadolegal', 'custodystatus', 'estadocustodia', 'custody', 'custodia', \n", + " 'felon', 'felony', 'conviction', 'condena', 'antecedente', 'parole', 'probation',\n", + " # 10. IDIOMA Y POLÍTICA (Language, Politics & Unions)\n", + " 'language', 'idioma', 'lenguaje', 'tongue', 'lengua', 'dialect', 'dialecto',\n", + " 'politics', 'politica', 'political', 'politico', 'union', 'tradeunion', 'sindicato', 'gremio'\n", + " ]\n", + "\n", + " patrones_completos = [construir_patron(t) for t in terminos_legales]\n", + " patron_sensible = re.compile('|'.join(patrones_completos), re.IGNORECASE)\n", + "\n", + " columnas_sensibles = []\n", + " for col in X_trans.columns:\n", + " if patron_sensible.search(col):\n", + " col_lower = col.lower()\n", + " if 'is_missing_' in col_lower or 'missing_' in col_lower: continue\n", + " if col_lower.startswith(('cf_', 'llm_', 'sinergia_', 'capital_', 'screening_')): continue \n", + " if pd.api.types.is_datetime64_any_dtype(X_trans[col]) or col in rutas.get('date_vars', []): continue\n", + " if re.search(r'(_sin$|_cos$)', col_lower): continue\n", + " columnas_sensibles.append(col)\n", + "\n", + " if not columnas_sensibles:\n", + " logger.info(\" ✅ [INFO] No se detectaron columnas protegidas útiles.\")\n", + " return X_trans, pesos_instancia\n", + "\n", + " # ==========================================\n", + " # 3. MOTOR DDO (Direct Disparate Impact Optimization)\n", + " # ==========================================\n", + " df_calc = pd.DataFrame({'Target_Binario': (y == clase_favorable).astype(int)})\n", + "\n", + " for col in columnas_sensibles:\n", + " if pd.api.types.is_numeric_dtype(X_trans[col]) and X_trans[col].nunique() > 10:\n", + " df_calc[f'S_{col}'] = pd.qcut(X_trans[col], q=4, duplicates='drop').astype(str)\n", + " else:\n", + " df_calc[f'S_{col}'] = X_trans[col].astype(str)\n", + "\n", + " cols_a_corregir = []\n", + " for col in columnas_sensibles:\n", + " tasas = df_calc.groupby(f'S_{col}')['Target_Binario'].mean()\n", + " if tasas.max() > 0 and (tasas / tasas.max()).min() < umbral_dir:\n", + " cols_a_corregir.append(col)\n", + "\n", + " if cols_a_corregir:\n", + " # 🚀 REEMPLAZO ABSOLUTO: Algoritmo DDO Algebraico\n", + " EPOCHS = 15 # DDO converge rapidísimo porque fuerza la solución matemáticamente\n", + " margen_seguridad = umbral_dir + 0.02 # Buscamos un 82% para asegurar pasar el umbral del 80%\n", + "\n", + " logger.info(f\" ⚙️ Ejecutando Motor DDO (Direct Optimization) para forzar cumplimiento legal...\")\n", + "\n", + " for epoch in range(EPOCHS):\n", + " modificaciones = 0\n", + "\n", + " for col in cols_a_corregir:\n", + " s_col = f'S_{col}'\n", + " df_calc['peso'] = pesos_instancia\n", + "\n", + " # Extraemos las estadísticas exactas de peso de cada subgrupo\n", + " stats = df_calc.groupby(s_col).apply(lambda g: pd.Series({\n", + " 'W_Total': g['peso'].sum(),\n", + " 'W_Pos': g[g['Target_Binario'] == 1]['peso'].sum(),\n", + " 'W_Neg': g[g['Target_Binario'] == 0]['peso'].sum()\n", + " }))\n", + "\n", + " # Tasa ponderada actual\n", + " stats['Rate'] = stats['W_Pos'] / stats['W_Total'].replace(0, 1e-9)\n", + " max_rate = stats['Rate'].max()\n", + "\n", + " if max_rate == 0: continue\n", + "\n", + " target_rate = max_rate * margen_seguridad\n", + "\n", + " for s_val, row in stats.iterrows():\n", + " # Si el grupo viola la ley, lo arreglamos directamente\n", + " if row['Rate'] < (max_rate * umbral_dir):\n", + " W = row['W_Total']\n", + " W1_act = row['W_Pos']\n", + " W0_act = row['W_Neg']\n", + "\n", + " # Pesos exactos que necesitamos que tenga este grupo para dar la tasa objetivo\n", + " W1_ideal = W * target_rate\n", + " W0_ideal = W * (1 - target_rate)\n", + "\n", + " # Calculamos los multiplicadores\n", + " mult_1 = W1_ideal / W1_act if W1_act > 0 else 1.0\n", + " mult_0 = W0_ideal / W0_act if W0_act > 0 else 1.0\n", + "\n", + " # Blindaje contra Gradientes Explosivos\n", + " mult_1 = min(mult_1, 50.0) \n", + " mult_0 = max(mult_0, 0.01)\n", + "\n", + " # Aplicamos la cura\n", + " mask_1 = (df_calc[s_col] == s_val) & (df_calc['Target_Binario'] == 1)\n", + " mask_0 = (df_calc[s_col] == s_val) & (df_calc['Target_Binario'] == 0)\n", + "\n", + " pesos_instancia.loc[mask_1] *= mult_1\n", + " pesos_instancia.loc[mask_0] *= mult_0\n", + " modificaciones += 1\n", + "\n", + " # Renormalizamos para mantener estable la escala de pesos\n", + " pesos_instancia = pesos_instancia * (len(pesos_instancia) / pesos_instancia.sum())\n", + "\n", + " # Si en esta iteración ninguna variable necesitó arreglo, terminamos.\n", + " if modificaciones == 0:\n", + " logger.info(f\" ⚡ Convergencia matemática DDO lograda en la Época {epoch+1}.\")\n", + " break\n", + "\n", + " logger.info(f\" 🚨 ESTATUS: Matriz curada con DDO. Se forzó la equidad en {len(cols_a_corregir)} variables.\")\n", + " else:\n", + " logger.info(\" ✅ ESTATUS: Ninguna variable requirió intervención de equidad.\")\n", + "\n", + " # ==========================================\n", + " # 4. AUDITORÍA VISUAL POST-TRATAMIENTO\n", + " # ==========================================\n", + " logger.info(\"\\n 📊 GENERANDO REPORTE DE VALIDACIÓN DE EQUIDAD PONDERADA...\")\n", + " df_calc['peso_instancia'] = pesos_instancia\n", + " sns.set_theme(style=\"whitegrid\")\n", + "\n", + " for col in columnas_sensibles: \n", + " col_analisis = f'S_{col}'\n", + " \n", + " # 🛡️ Protección UX MLOps\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🔍 Verificación Post-Tratamiento en: `{col}`\"))\n", + " else:\n", + " logger.info(f\"\\n🔍 Verificación Post-Tratamiento en: `{col}`\")\n", + "\n", + " def calc_weighted_metrics(g):\n", + " peso_total_grupo = g['peso_instancia'].sum()\n", + " exitos_ponderados = (g['Target_Binario'] * g['peso_instancia']).sum()\n", + " tasa = exitos_ponderados / peso_total_grupo if peso_total_grupo > 0 else 0\n", + " return pd.Series({'Tasa_Exito': tasa, 'Muestra_Total': len(g)})\n", + "\n", + " tabla_tasas = df_calc.groupby(col_analisis).apply(calc_weighted_metrics).reset_index()\n", + " tabla_tasas.sort_values(by='Tasa_Exito', ascending=False, inplace=True)\n", + "\n", + " if tabla_tasas.empty: continue\n", + "\n", + " grupo_privilegiado = tabla_tasas.iloc[0][col_analisis]\n", + " tasa_maxima = tabla_tasas.iloc[0]['Tasa_Exito']\n", + "\n", + " if tasa_maxima == 0:\n", + " tabla_tasas['DIR'] = 1.0\n", + " else:\n", + " tabla_tasas['DIR'] = tabla_tasas['Tasa_Exito'] / tasa_maxima\n", + "\n", + " fig, ax = plt.subplots(figsize=(10, 4))\n", + " sns.barplot(data=tabla_tasas, x=col_analisis, y='Tasa_Exito', palette='crest', ax=ax)\n", + " ax.axhline(tasa_maxima * 0.8, color='red', linestyle='--', label='Límite Legal (80%)')\n", + " ax.set_title(f\"Tasa EQUILIBRADA de obtención de '{clase_favorable}' por {col}\", fontsize=14)\n", + " ax.set_ylabel(\"Probabilidad de Éxito (Ponderada)\")\n", + " ax.set_ylim(0, max(0.5, tasa_maxima + 0.1))\n", + " ax.tick_params(axis='x', rotation=15) \n", + " ax.legend()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig) # Cerramos la figura explícitamente en el loop\n", + "\n", + " logger.info(f\" 👑 Base de Nivelación: '{grupo_privilegiado}' (Tasa ponderada: {tasa_maxima*100:.1f}%)\")\n", + " logger.info(\" \" + \"=\"*85)\n", + "\n", + " mensajes = [] \n", + " for _, row in tabla_tasas.iterrows():\n", + " grupo_actual = row[col_analisis]\n", + " dir_actual = row['DIR']\n", + " if grupo_actual == grupo_privilegiado: continue\n", + "\n", + " if dir_actual < 0.80:\n", + " mensajes.append(f\"🚨 [ALERTA] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + " else:\n", + " mensajes.append(f\"✅ [JUSTO] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + "\n", + " lote_size = 20\n", + " for i in range(0, len(mensajes), lote_size):\n", + " lote = mensajes[i:i + lote_size]\n", + " mitad = (len(lote) + 1) // 2 \n", + " for j in range(mitad):\n", + " col1 = lote[j]\n", + " col2 = lote[j + mitad] if (j + mitad) < len(lote) else \"\"\n", + " logger.info(f\" {col1:<40} | {col2}\")\n", + " if (i + lote_size) < len(mensajes): logger.info(\" \" + \"-\"*85)\n", + "\n", + " logger.info(\" \" + \"=\"*85 + \"\\n\")\n", + "\n", + " logger.info(f\"⏱️ Pipeline unificado completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, pesos_instancia\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta las fases previas.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'.\")\n", + "\n", + " logger.info(\">>> 🚂 EJECUTANDO PIPELINE UNIFICADO DE EQUIDAD EN TRAIN <<<\")\n", + " # Calcula pesos Y grafica al mismo tiempo usando DDO\n", + " X_train_ipf, pesos_train = aplicar_y_auditar_equidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " umbral_dir=0.80 \n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 GENERANDO PESOS PARA TEST (ESCUDO MLOPS) <<<\")\n", + " # Genera los pesos 1.0 y silencia las gráficas\n", + " X_test_ipf, pesos_test = aplicar_y_auditar_equidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # Guardamos los activos en el Manager\n", + " manager.X_train = X_train_ipf\n", + " manager.X_test = X_test_ipf\n", + " manager.pesos_train = pesos_train\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Pipeline de Equidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_occupation 26029 non-null float64 \n", + " 14 is_missing_capital_gain 26029 non-null float64 \n", + " 15 is_missing_native_country 26029 non-null float64 \n", + " 16 total_nulos_en_fila 26029 non-null float64 \n", + " 17 tiene_capital_gain 26029 non-null float64 \n", + " 18 tiene_capital_loss 26029 non-null float64 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 26029 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64 \n", + " 27 gbdt_emb_0 26029 non-null category\n", + " 28 gbdt_emb_1 26029 non-null category\n", + " 29 gbdt_emb_2 26029 non-null category\n", + " 30 gbdt_emb_3 26029 non-null category\n", + " 31 gbdt_emb_4 26029 non-null category\n", + " 32 gbdt_emb_5 26029 non-null category\n", + " 33 gbdt_emb_6 26029 non-null category\n", + " 34 gbdt_emb_7 26029 non-null category\n", + " 35 gbdt_emb_8 26029 non-null category\n", + " 36 gbdt_emb_9 26029 non-null category\n", + " 37 gbdt_emb_10 26029 non-null category\n", + " 38 gbdt_emb_11 26029 non-null category\n", + " 39 gbdt_emb_12 26029 non-null category\n", + " 40 gbdt_emb_13 26029 non-null category\n", + " 41 gbdt_emb_14 26029 non-null category\n", + " 42 cf_distancia_frontera 26029 non-null float64 \n", + " 43 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 6.0 MB\n" + ] + } + ], + "source": [ + "X_train.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64 \n", + " 1 workclass 6508 non-null float64 \n", + " 2 education_num 6508 non-null float64 \n", + " 3 marital_status 6508 non-null float64 \n", + " 4 occupation 6508 non-null float64 \n", + " 5 relationship 6508 non-null float64 \n", + " 6 race 6508 non-null float64 \n", + " 7 sex 6508 non-null float64 \n", + " 8 capital_gain 6508 non-null float64 \n", + " 9 capital_loss 6508 non-null float64 \n", + " 10 hours_per_week 6508 non-null float64 \n", + " 11 native_country 6508 non-null float64 \n", + " 12 is_missing_workclass 6508 non-null float64 \n", + " 13 is_missing_occupation 6508 non-null float64 \n", + " 14 is_missing_capital_gain 6508 non-null float64 \n", + " 15 is_missing_native_country 6508 non-null float64 \n", + " 16 total_nulos_en_fila 6508 non-null float64 \n", + " 17 tiene_capital_gain 6508 non-null float64 \n", + " 18 tiene_capital_loss 6508 non-null float64 \n", + " 19 capital_neto 6508 non-null float64 \n", + " 20 capital_gain_por_age 6508 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 6508 non-null float64 \n", + " 22 capital_loss_por_age 6508 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64 \n", + " 24 is_anomaly_isoforest 6508 non-null int8 \n", + " 25 llm_age_*_education_num 6508 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 6508 non-null float64 \n", + " 27 gbdt_emb_0 6508 non-null category\n", + " 28 gbdt_emb_1 6508 non-null category\n", + " 29 gbdt_emb_2 6508 non-null category\n", + " 30 gbdt_emb_3 6508 non-null category\n", + " 31 gbdt_emb_4 6508 non-null category\n", + " 32 gbdt_emb_5 6508 non-null category\n", + " 33 gbdt_emb_6 6508 non-null category\n", + " 34 gbdt_emb_7 6508 non-null category\n", + " 35 gbdt_emb_8 6508 non-null category\n", + " 36 gbdt_emb_9 6508 non-null category\n", + " 37 gbdt_emb_10 6508 non-null category\n", + " 38 gbdt_emb_11 6508 non-null category\n", + " 39 gbdt_emb_12 6508 non-null category\n", + " 40 gbdt_emb_13 6508 non-null category\n", + " 41 gbdt_emb_14 6508 non-null category\n", + " 42 cf_distancia_frontera 6508 non-null float64 \n", + " 43 cf_fuerza_logit 6508 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 1.5 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "26029 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 25.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "6508 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 6.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_test.info()\n", + "\n", + "\n", + "# # FASE 6: Selección de Variables (El Tribunal Supremo)\n", + "# Destruyendo la redundancia creada en la Fase 5." + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 PURGANDO FECHAS Y FUGAS EN TRAIN <<<\n", + "=== ⚖️ FASE 17.1: El Tribunal Supremo (Target Leakage & Date Purge) ===\n", + " ✅ Purga de Fechas: No se encontraron variables base tipo Date en la matriz.\n", + " 🔍 Escaneando matriz en busca de Fugas del Futuro (Correlación > 98.0%)...\n", + " ✅ Escudo Anti-Fugas: No se detectaron variables tramposas.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Purificación completada. Total columnas actuales: 44 (-0 eliminadas).\n", + "\n", + "⏱️ Operación completada en 0.020s\n", + "\n", + ">>> 🔒 APLICANDO GUILLOTINA HEREDADA EN TEST <<<\n", + "=== ⚖️ FASE 17.1: El Tribunal Supremo (Target Leakage & Date Purge) ===\n", + " ✅ Purga de Fechas: No se encontraron variables base tipo Date en la matriz.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Purificación completada. Total columnas actuales: 44 (-0 eliminadas).\n", + "\n", + "⏱️ Operación completada en 0.004s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Purga completada).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def filtro_fugas_y_fechas_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_fuga: float = 0.98 # Correlación > 98% = Guillotina inmediata\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.1] Tribunal Supremo: Purga de Fechas y Fugas del Futuro.\n", + " - Purga Temporal: Elimina variables listadas en 'date_vars' Y auto-detecta columnas datetime.\n", + " - Escáner de Fugas: Calcula la correlación de Pearson con el Target para detectar trampas.\n", + " - Muro MLOps: Registra las fugas en Train y ejecuta la misma guillotina exacta en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 17.1: El Tribunal Supremo (Target Leakage & Date Purge) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + " columnas_eliminadas = []\n", + "\n", + " # ==========================================\n", + " # 1. PURGA DE FECHAS (Diccionario + Auto-Detección)\n", + " # ==========================================\n", + " # 🚀 NUEVO: Leemos el diccionario y escaneamos activamente la matriz\n", + " fechas_registradas = rutas.get('date_vars', [])\n", + " fechas_detectadas = X_clean.select_dtypes(include=['datetime64', 'datetime', 'datetimetz']).columns.tolist()\n", + "\n", + " # Unificamos ambas listas (sin duplicados)\n", + " todas_las_fechas = list(set(fechas_registradas + fechas_detectadas))\n", + " fechas_presentes = [col for col in todas_las_fechas if col in X_clean.columns]\n", + "\n", + " if fechas_presentes:\n", + " X_clean.drop(columns=fechas_presentes, inplace=True)\n", + " columnas_eliminadas.extend(fechas_presentes)\n", + "\n", + " # 💡 Actualizamos el diccionario para que el Manager (y Test) no las olvide\n", + " rutas['date_vars'] = todas_las_fechas\n", + "\n", + " logger.info(f\" 📅 Purga de Fechas: Decapitadas {len(fechas_presentes)} variables temporales.\")\n", + " logger.info(f\" ↳ {fechas_presentes}\")\n", + " else:\n", + " logger.info(\" ✅ Purga de Fechas: No se encontraron variables base tipo Date en la matriz.\")\n", + "\n", + " # ==========================================\n", + " # 2. MODO TRAIN: Detección de Target Leakage\n", + " # ==========================================\n", + " if y is not None:\n", + " logger.info(f\" 🔍 Escaneando matriz en busca de Fugas del Futuro (Correlación > {umbral_fuga*100}%)...\")\n", + "\n", + " # Solo verificamos variables numéricas para el Leakage\n", + " cols_numericas = X_clean.select_dtypes(include=[np.number]).columns\n", + "\n", + " if len(cols_numericas) > 0:\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " # Calculamos correlación lineal absoluta contra el Target\n", + " correlaciones = X_clean[cols_numericas].corrwith(y).abs()\n", + "\n", + " fugas_detectadas = correlaciones[correlaciones >= umbral_fuga].index.tolist()\n", + "\n", + " if fugas_detectadas:\n", + " logger.warning(f\" 🚨 [ALERTA DE FUGA] Se detectaron {len(fugas_detectadas)} variables sospechosamente perfectas:\")\n", + " logger.warning(f\" ↳ {fugas_detectadas}\")\n", + " X_clean.drop(columns=fugas_detectadas, inplace=True)\n", + " columnas_eliminadas.extend(fugas_detectadas)\n", + "\n", + " # 💡 GUARDADO ESTRATÉGICO: Inyectamos la sentencia en el diccionario de rutas\n", + " rutas['fugas_del_futuro'] = fugas_detectadas\n", + " else:\n", + " logger.info(\" ✅ Escudo Anti-Fugas: No se detectaron variables tramposas.\")\n", + " rutas['fugas_del_futuro'] = []\n", + "\n", + " # ==========================================\n", + " # 3. MODO TEST: Ejecución de Sentencias\n", + " # ==========================================\n", + " else:\n", + " fugas_heredadas = rutas.get('fugas_del_futuro', [])\n", + " fugas_presentes = [col for col in fugas_heredadas if col in X_clean.columns]\n", + "\n", + " if fugas_presentes:\n", + " X_clean.drop(columns=fugas_presentes, inplace=True)\n", + " columnas_eliminadas.extend(fugas_presentes)\n", + " logger.info(f\" 🔒 [TEST] Aplicando guillotina heredada de Train: {len(fugas_presentes)} fugas eliminadas.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Purificación completada. Total columnas actuales: {X_clean.shape[1]} (-{len(columnas_eliminadas)} eliminadas).\")\n", + " logger.info(f\"\\n⏱️ Operación completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🧹 Purga estricta de RAM\n", + " gc.collect()\n", + "\n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 PURGANDO FECHAS Y FUGAS EN TRAIN <<<\")\n", + " X_train_clean, rutas_actualizadas = filtro_fugas_y_fechas_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " umbral_fuga=0.98\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO GUILLOTINA HEREDADA EN TEST <<<\")\n", + " X_test_clean, _ = filtro_fugas_y_fechas_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_clean\n", + " manager.X_test = X_test_clean\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Purga completada).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Filtro de Fugas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TRAIN ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.215s\n", + "\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TEST ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.059s\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\")\n", + "\n", + " # Escaneamos Train usando el manager\n", + " infecciones_train = radar_nulos_profundos_automl(manager.X_train, nombre_matriz=\"X_TRAIN\")\n", + "\n", + " # Escaneamos Test usando el manager\n", + " infecciones_test = radar_nulos_profundos_automl(manager.X_test, nombre_matriz=\"X_TEST\")\n", + "\n", + " # Lógica de reacción automática (Opcional)\n", + " if infecciones_train or infecciones_test:\n", + " logger.warning(\"💡 CONSEJO MLOps: Se detectó basura léxica. \")\n", + " logger.info(\" Recomendación: En tu código del Imputador KNN (Fase 11.1) o en la Guillotina, \")\n", + " logger.info(\" deberías reemplazar estos textos por np.nan usando df.replace(regex) para que el Imputador los cure.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Radar de Nulos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_occupation 26029 non-null float64 \n", + " 14 is_missing_capital_gain 26029 non-null float64 \n", + " 15 is_missing_native_country 26029 non-null float64 \n", + " 16 total_nulos_en_fila 26029 non-null float64 \n", + " 17 tiene_capital_gain 26029 non-null float64 \n", + " 18 tiene_capital_loss 26029 non-null float64 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 26029 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64 \n", + " 27 gbdt_emb_0 26029 non-null category\n", + " 28 gbdt_emb_1 26029 non-null category\n", + " 29 gbdt_emb_2 26029 non-null category\n", + " 30 gbdt_emb_3 26029 non-null category\n", + " 31 gbdt_emb_4 26029 non-null category\n", + " 32 gbdt_emb_5 26029 non-null category\n", + " 33 gbdt_emb_6 26029 non-null category\n", + " 34 gbdt_emb_7 26029 non-null category\n", + " 35 gbdt_emb_8 26029 non-null category\n", + " 36 gbdt_emb_9 26029 non-null category\n", + " 37 gbdt_emb_10 26029 non-null category\n", + " 38 gbdt_emb_11 26029 non-null category\n", + " 39 gbdt_emb_12 26029 non-null category\n", + " 40 gbdt_emb_13 26029 non-null category\n", + " 41 gbdt_emb_14 26029 non-null category\n", + " 42 cf_distancia_frontera 26029 non-null float64 \n", + " 43 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 6.0 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64 \n", + " 1 workclass 6508 non-null float64 \n", + " 2 education_num 6508 non-null float64 \n", + " 3 marital_status 6508 non-null float64 \n", + " 4 occupation 6508 non-null float64 \n", + " 5 relationship 6508 non-null float64 \n", + " 6 race 6508 non-null float64 \n", + " 7 sex 6508 non-null float64 \n", + " 8 capital_gain 6508 non-null float64 \n", + " 9 capital_loss 6508 non-null float64 \n", + " 10 hours_per_week 6508 non-null float64 \n", + " 11 native_country 6508 non-null float64 \n", + " 12 is_missing_workclass 6508 non-null float64 \n", + " 13 is_missing_occupation 6508 non-null float64 \n", + " 14 is_missing_capital_gain 6508 non-null float64 \n", + " 15 is_missing_native_country 6508 non-null float64 \n", + " 16 total_nulos_en_fila 6508 non-null float64 \n", + " 17 tiene_capital_gain 6508 non-null float64 \n", + " 18 tiene_capital_loss 6508 non-null float64 \n", + " 19 capital_neto 6508 non-null float64 \n", + " 20 capital_gain_por_age 6508 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 6508 non-null float64 \n", + " 22 capital_loss_por_age 6508 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64 \n", + " 24 is_anomaly_isoforest 6508 non-null int8 \n", + " 25 llm_age_*_education_num 6508 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 6508 non-null float64 \n", + " 27 gbdt_emb_0 6508 non-null category\n", + " 28 gbdt_emb_1 6508 non-null category\n", + " 29 gbdt_emb_2 6508 non-null category\n", + " 30 gbdt_emb_3 6508 non-null category\n", + " 31 gbdt_emb_4 6508 non-null category\n", + " 32 gbdt_emb_5 6508 non-null category\n", + " 33 gbdt_emb_6 6508 non-null category\n", + " 34 gbdt_emb_7 6508 non-null category\n", + " 35 gbdt_emb_8 6508 non-null category\n", + " 36 gbdt_emb_9 6508 non-null category\n", + " 37 gbdt_emb_10 6508 non-null category\n", + " 38 gbdt_emb_11 6508 non-null category\n", + " 39 gbdt_emb_12 6508 non-null category\n", + " 40 gbdt_emb_13 6508 non-null category\n", + " 41 gbdt_emb_14 6508 non-null category\n", + " 42 cf_distancia_frontera 6508 non-null float64 \n", + " 43 cf_fuerza_logit 6508 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 1.5 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 💾 [BACKUP MLOps] Clonando matriz original a 'manager.X_train_backup' para la Autopsia Visual...\n", + ">>> 🚂 CAZANDO CLONES MATEMÁTICOS EN TRAIN <<<\n", + "=== ⚖️ FASE 17.2: Guillotina de Colinealidad (Spearman > 98.0%) ===\n", + " 🔍 Escaneando redundancia matemática profunda en 44 columnas...\n", + " ↳ Construyendo matriz de correlación de Spearman (Esto puede tomar unos segundos)...\n", + " 🚨 [SENTENCIA] Se detectaron 8 variables clonadas/redundantes.\n", + " 🪓 Ejecutando decapitaciones:\n", + " ❌ Eliminada: 'is_missing_occupation', 'tiene_capital_gain', 'tiene_capital_loss', 'capital_gain_por_age', 'capital_gain_por_hours_per_week', 'capital_loss_por_age', 'capital_loss_por_hours_per_week', 'llm_capital_gain_*_capital_neto'\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz libre de redundancia extrema. Columnas finales: 36\n", + "\n", + "⏱️ Operación completada en 0.191s\n", + "\n", + ">>> 🔒 DECAPITANDO CLONES EN TEST <<<\n", + "=== ⚖️ FASE 17.2: Guillotina de Colinealidad (Spearman > 98.0%) ===\n", + " 🔒 [TEST] Guillotina aplicada. 8 clones decapitados según reglas de Train.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz libre de redundancia extrema. Columnas finales: 36\n", + "\n", + "⏱️ Operación completada en 0.004s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Colinealidad purgada).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def guillotina_colinealidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_corr: float = 0.98 # Guillotina para correlaciones > 98%\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.2] Tribunal Supremo: Guillotina de Colinealidad (Spearman).\n", + " - Caza de Gemelos: Usa Spearman para detectar redundancia no lineal perfecta.\n", + " - RAM Shield: Procesamiento optimizado de la matriz triangular superior.\n", + " - Muro MLOps: Evalúa y condena en Train. Ejecuta la misma sentencia en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 17.2: Guillotina de Colinealidad (Spearman > {umbral_corr*100}%) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. MODO TRAIN: El Juicio (Cálculo de Matriz)\n", + " # ==========================================\n", + " if y is not None:\n", + " logger.info(f\" 🔍 Escaneando redundancia matemática profunda en {X_clean.shape[1]} columnas...\")\n", + "\n", + " # Spearman solo opera sobre números. Aislamos las numéricas en silencio.\n", + " cols_numericas = X_clean.select_dtypes(include=[np.number]).columns.tolist()\n", + "\n", + " if len(cols_numericas) > 1:\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # 1.1 Cálculo de la matriz de correlación absoluta\n", + " logger.info(\" ↳ Construyendo matriz de correlación de Spearman (Esto puede tomar unos segundos)...\")\n", + " matriz_corr = X_clean[cols_numericas].corr(method='spearman').abs()\n", + "\n", + " # 1.2 Extracción de la diagonal superior (Evita comparar A con A, o A con B y B con A)\n", + " upper_tri = matriz_corr.where(np.triu(np.ones(matriz_corr.shape), k=1).astype(bool))\n", + "\n", + " # 1.3 Identificación de los clones condenados\n", + " columnas_a_eliminar = [col for col in upper_tri.columns if any(upper_tri[col] > umbral_corr)]\n", + "\n", + " # 🧹 Purga inmediata de RAM\n", + " del matriz_corr\n", + " del upper_tri\n", + " gc.collect()\n", + "\n", + " if columnas_a_eliminar:\n", + " logger.warning(f\" 🚨 [SENTENCIA] Se detectaron {len(columnas_a_eliminar)} variables clonadas/redundantes.\")\n", + " logger.info(\" 🪓 Ejecutando decapitaciones:\")\n", + " # 🚀 FIX Visual: Mostrar las columnas eliminadas en una sola fila horizontal\n", + " columnas_str = \", \".join([f\"'{col}'\" for col in columnas_a_eliminar])\n", + " logger.warning(f\" ❌ Eliminada: {columnas_str}\")\n", + "\n", + " X_clean.drop(columns=columnas_a_eliminar, inplace=True)\n", + "\n", + " # 💡 GUARDADO ESTRATÉGICO: Anotamos la sentencia en el registro\n", + " rutas['gemelos_colineales'] = columnas_a_eliminar\n", + " else:\n", + " logger.info(\" ✅ [JUSTO] La matriz es matemáticamente pura. No hay colinealidad extrema.\")\n", + " rutas['gemelos_colineales'] = []\n", + " else:\n", + " logger.info(\" ⚠️ Insuficientes variables numéricas para calcular colinealidad.\")\n", + " rutas['gemelos_colineales'] = []\n", + "\n", + " # ==========================================\n", + " # 2. MODO TEST: La Ejecución (Bypass)\n", + " # ==========================================\n", + " else:\n", + " clones_heredados = rutas.get('gemelos_colineales', [])\n", + " clones_presentes = [col for col in clones_heredados if col in X_clean.columns]\n", + "\n", + " if clones_presentes:\n", + " X_clean.drop(columns=clones_presentes, inplace=True)\n", + " logger.info(f\" 🔒 [TEST] Guillotina aplicada. {len(clones_presentes)} clones decapitados según reglas de Train.\")\n", + " else:\n", + " logger.info(\" ✅ [TEST] Matriz validada. Sin clones que eliminar.\")\n", + "\n", + " # ==========================================\n", + " # 🚀 FIX MLOPS: Sincronización del Enrutador\n", + " # ==========================================\n", + " # Purga de Variables Fantasma del diccionario de rutas\n", + " for key in ['num_vars', 'cat_vars', 'bool_vars', 'date_vars']:\n", + " if key in rutas:\n", + " rutas[key] = [c for c in rutas[key] if c in X_clean.columns]\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Matriz libre de redundancia extrema. Columnas finales: {X_clean.shape[1]}\")\n", + " logger.info(f\"\\n⏱️ Operación completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # ==========================================\n", + " # 💡 TRUCO MLOps: Backup Pre-Guillotina\n", + " # ==========================================\n", + " logger.info(\" 💾 [BACKUP MLOps] Clonando matriz original a 'manager.X_train_backup' para la Autopsia Visual...\")\n", + " manager.X_train_backup = manager.X_train.copy()\n", + "\n", + " logger.info(\">>> 🚂 CAZANDO CLONES MATEMÁTICOS EN TRAIN <<<\")\n", + " X_train_clean, rutas_actualizadas = guillotina_colinealidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " umbral_corr=0.98 # ⚖️ Tolerancia máxima de similitud\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 DECAPITANDO CLONES EN TEST <<<\")\n", + " X_test_clean, _ = guillotina_colinealidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.X_train = X_train_clean\n", + " manager.X_test = X_test_clean\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Colinealidad purgada).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " gc.collect()\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Guillotina de Colinealidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['is_missing_occupation',\n", + " 'tiene_capital_gain',\n", + " 'tiene_capital_loss',\n", + " 'capital_gain_por_age',\n", + " 'capital_gain_por_hours_per_week',\n", + " 'capital_loss_por_age',\n", + " 'capital_loss_por_hours_per_week',\n", + " 'llm_capital_gain_*_capital_neto']" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['gemelos_colineales']" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔬 INICIANDO AUTOPSIA VISUAL DE COLINEALIDAD <<<\n", + " 📸 [XAI] Matriz 'backup' detectada. Generando radiografía de la escena del crimen original...\n", + "=== 👁️ FASE 17.2.5: Autopsia Visual de Colinealidad y Explicabilidad ===\n", + " 🔍 Procesando radar de correlación de Spearman...\n", + "\n", + " 🚨 ALERTA VISUAL: Se detectaron 17 colisiones críticas (> 98.0%).\n", + " 📸 Generando Zoom-In del Mapa de Calor sobre las variables afectadas...\n", + "\n", + "\n", + "================================================================================\n", + " 🧠 REPORTE FORENSE MLOps: ¿POR QUÉ LA GUILLOTINA CORTÓ ESTAS VARIABLES?\n", + "================================================================================\n", + "\n", + " 📋 LISTA DE COLISIONES MATEMÁTICAS:\n", + " ⚔️ 'is_missing_workclass' vs 'is_missing_occupation' (Similitud: 99.78%)\n", + " ⚔️ 'capital_gain' vs 'tiene_capital_gain' (Similitud: 99.89%)\n", + " ⚔️ 'capital_loss' vs 'tiene_capital_loss' (Similitud: 99.96%)\n", + " ⚔️ 'capital_gain' vs 'capital_gain_por_age' (Similitud: 99.98%)\n", + " ⚔️ 'tiene_capital_gain' vs 'capital_gain_por_age' (Similitud: 99.89%)\n", + " ⚔️ 'capital_gain' vs 'capital_gain_por_hours_per_week' (Similitud: 99.98%)\n", + " ⚔️ 'tiene_capital_gain' vs 'capital_gain_por_hours_per_week' (Similitud: 99.89%)\n", + " ⚔️ 'capital_gain_por_age' vs 'capital_gain_por_hours_per_week' (Similitud: 99.96%)\n", + " ⚔️ 'capital_loss' vs 'capital_loss_por_age' (Similitud: 99.94%)\n", + " ⚔️ 'tiene_capital_loss' vs 'capital_loss_por_age' (Similitud: 99.96%)\n", + " ⚔️ 'capital_loss' vs 'capital_loss_por_hours_per_week' (Similitud: 99.96%)\n", + " ⚔️ 'tiene_capital_loss' vs 'capital_loss_por_hours_per_week' (Similitud: 99.96%)\n", + " ⚔️ 'capital_loss_por_age' vs 'capital_loss_por_hours_per_week' (Similitud: 99.94%)\n", + " ⚔️ 'capital_gain' vs 'llm_capital_gain_*_capital_neto' (Similitud: 100.00%)\n", + " ⚔️ 'tiene_capital_gain' vs 'llm_capital_gain_*_capital_neto' (Similitud: 99.89%)\n", + " ⚔️ 'capital_gain_por_age' vs 'llm_capital_gain_*_capital_neto' (Similitud: 99.98%)\n", + " ⚔️ 'capital_gain_por_hours_per_week' vs 'llm_capital_gain_*_capital_neto' (Similitud: 99.98%)\n", + "\n", + " ⚖️ DIAGNÓSTICO Y SENTENCIA UNIVERSAL:\n", + " Los pares listados arriba son virtualmente clones; contienen exactamente la misma señal\n", + " predictiva bajo distintos nombres. Mantenerlos vivos representa un doble riesgo para el modelo:\n", + " 1) 📉 Dilución de Importancia: El modelo (ej. LightGBM) no sabrá a cuál darle el crédito,\n", + " partiendo su importancia a la mitad de forma artificial e injusta.\n", + " 2) 💾 Fuga de RAM y Latencia: Obligamos a la CPU a calcular cortes en dimensiones redundantes.\n", + "\n", + " 🪓 EJECUCIÓN: Para proteger la matriz, la Guillotina retuvo a las variables representantes\n", + " (lado izquierdo) y DECAPITÓ a sus clones matemáticos (lado derecho).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias Visuales y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "from typing import Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def autopsia_visual_colinealidad_automl(\n", + " X_diagnostico: pd.DataFrame, \n", + " rutas: Dict = None,\n", + " umbral_corr: float = 0.98\n", + ") -> None:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.2.5] Autopsia Visual y Explicabilidad (XAI).\n", + " - Escáner de Calor con Zoom: Aísla y grafica ÚNICAMENTE las variables involucradas en colisiones.\n", + " - Traductor Matemático: Explica en lenguaje natural el POR QUÉ de la eliminación (Unificado).\n", + " - Anotación Numérica: Imprime los coeficientes exactos de Spearman dentro de cada celda.\n", + " \"\"\"\n", + " if X_diagnostico is None or X_diagnostico.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz de diagnóstico está vacía.\")\n", + " return\n", + "\n", + " logger.info(f\"=== 👁️ FASE 17.2.5: Autopsia Visual de Colinealidad y Explicabilidad ===\")\n", + "\n", + " # 1. Aislamos solo variables numéricas\n", + " cols_num = X_diagnostico.select_dtypes(include=[np.number]).columns.tolist()\n", + " if len(cols_num) < 2:\n", + " logger.warning(\" ⚠️ No hay suficientes variables numéricas para generar un mapa de calor.\")\n", + " return\n", + "\n", + " # 2. Calculamos la matriz matemática de correlación absoluta\n", + " logger.info(\" 🔍 Procesando radar de correlación de Spearman...\")\n", + " matriz_corr = X_diagnostico[cols_num].corr(method='spearman').abs()\n", + "\n", + " # 3. Inteligencia MLOps: Encontrar las colisiones (Triángulo superior)\n", + " upper_tri = matriz_corr.where(np.triu(np.ones(matriz_corr.shape), k=1).astype(bool))\n", + "\n", + " pares_colision = []\n", + " columnas_implicadas = set()\n", + "\n", + " for col in upper_tri.columns:\n", + " # Buscamos las filas (variables) que colisionan matemáticamente con esta columna\n", + " colisiones = upper_tri.index[upper_tri[col] > umbral_corr].tolist()\n", + " for fila in colisiones:\n", + " val = upper_tri.loc[fila, col]\n", + " pares_colision.append((fila, col, val))\n", + " columnas_implicadas.update([fila, col])\n", + "\n", + " # ==========================================\n", + " # 4. Renderizado del Mapa de Calor Inteligente (Zoom-In)\n", + " # ==========================================\n", + " if columnas_implicadas:\n", + " logger.warning(f\"\\n 🚨 ALERTA VISUAL: Se detectaron {len(pares_colision)} colisiones críticas (> {umbral_corr*100}%).\")\n", + " logger.info(\" 📸 Generando Zoom-In del Mapa de Calor sobre las variables afectadas...\\n\")\n", + "\n", + " # Filtramos la matriz para mostrar SOLO las variables que están compitiendo\n", + " matriz_zoom = matriz_corr.loc[list(columnas_implicadas), list(columnas_implicadas)]\n", + "\n", + " # Configuramos el lienzo de Matplotlib\n", + " fig = plt.figure(figsize=(10, 8))\n", + "\n", + " # Generamos el Heatmap con Seaborn\n", + " sns.heatmap(\n", + " matriz_zoom, \n", + " annot=True, # 🔢 Activa los números adentro de los cuadros\n", + " fmt=\".3f\", # Formato a 3 decimales para precisión técnica\n", + " cmap=\"coolwarm\", # Escala de Azul (Seguro) a Rojo (Peligro/Colinealidad)\n", + " vmin=0, vmax=1, \n", + " linewidths=1,\n", + " linecolor='white',\n", + " mask=np.triu(np.ones_like(matriz_zoom, dtype=bool)), # Máscara para ocultar la diagonal superior redundante\n", + " annot_kws={\"size\": 12, \"weight\": \"bold\"}\n", + " )\n", + "\n", + " plt.title(f\"🔥 Radar de Colinealidad Extrema (Zoom a Correlaciones > {umbral_corr*100}%)\", fontsize=14, pad=20)\n", + " plt.xticks(rotation=45, ha='right', fontsize=11)\n", + " plt.yticks(rotation=0, fontsize=11)\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig) # Cerramos la figura explícitamente en producción para no agotar la RAM\n", + "\n", + " # ==========================================\n", + " # 5. El Cerebro XAI (Explicabilidad GLOBAL)\n", + " # ==========================================\n", + " logger.info(\"\\n\" + \"=\"*80)\n", + " logger.info(\" 🧠 REPORTE FORENSE MLOps: ¿POR QUÉ LA GUILLOTINA CORTÓ ESTAS VARIABLES?\")\n", + " logger.info(\"=\"*80)\n", + "\n", + " logger.info(\"\\n 📋 LISTA DE COLISIONES MATEMÁTICAS:\")\n", + " for var1, var2, corr_val in pares_colision:\n", + " logger.info(f\" ⚔️ '{var1}' vs '{var2}' (Similitud: {corr_val*100:.2f}%)\")\n", + "\n", + " logger.info(\"\\n ⚖️ DIAGNÓSTICO Y SENTENCIA UNIVERSAL:\")\n", + " logger.info(\" Los pares listados arriba son virtualmente clones; contienen exactamente la misma señal\")\n", + " logger.info(\" predictiva bajo distintos nombres. Mantenerlos vivos representa un doble riesgo para el modelo:\")\n", + " logger.info(\" 1) 📉 Dilución de Importancia: El modelo (ej. LightGBM) no sabrá a cuál darle el crédito,\")\n", + " logger.info(\" partiendo su importancia a la mitad de forma artificial e injusta.\")\n", + " logger.info(\" 2) 💾 Fuga de RAM y Latencia: Obligamos a la CPU a calcular cortes en dimensiones redundantes.\")\n", + " logger.info(\"\\n 🪓 EJECUCIÓN: Para proteger la matriz, la Guillotina retuvo a las variables representantes\")\n", + " logger.info(\" (lado izquierdo) y DECAPITÓ a sus clones matemáticos (lado derecho).\")\n", + "\n", + " else:\n", + " logger.info(\"\\n ✅ EL MAPA ESTÁ LIMPIO: No se detectaron colisiones que superen el umbral de guillotina.\")\n", + " logger.info(\" 🧠 EXPLICACIÓN: Todas las variables de esta matriz aportan información única, ortogonal\")\n", + " logger.info(\" y matemáticamente independiente. El modelo puede respirar tranquilo.\")\n", + "\n", + " # Opcional: Revisar si la guillotina ya actuó previamente mirando las rutas\n", + " if rutas and 'gemelos_colineales' in rutas and len(rutas['gemelos_colineales']) > 0:\n", + " logger.info(f\"\\n 💡 NOTA FORENSE: El mapa actual está limpio porque la Guillotina (Fase 17.2) ya hizo su trabajo.\")\n", + " logger.info(f\" Las siguientes columnas ya fueron eliminadas del dataset para protegerlo: {rutas['gemelos_colineales']}\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " logger.info(\">>> 🔬 INICIANDO AUTOPSIA VISUAL DE COLINEALIDAD <<<\")\n", + "\n", + " # 💡 TRUCO MLOps APLICADO: Detección Dinámica del Backup\n", + " if hasattr(manager, 'X_train_backup') and manager.X_train_backup is not None:\n", + " matriz_forense = manager.X_train_backup\n", + " logger.info(\" 📸 [XAI] Matriz 'backup' detectada. Generando radiografía de la escena del crimen original...\")\n", + " elif hasattr(manager, 'X_train') and manager.X_train is not None:\n", + " matriz_forense = manager.X_train\n", + " logger.warning(\" ⚠️ [XAI] No se detectó 'X_train_backup'. Analizando la matriz post-guillotina (probablemente limpia).\")\n", + " else:\n", + " raise ValueError(\"El Manager no tiene cargada la matriz 'X_train' ni su backup. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " autopsia_visual_colinealidad_automl(\n", + " X_diagnostico=matriz_forense, \n", + " rutas=getattr(manager, 'rutas', {}),\n", + " umbral_corr=0.98\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Autopsia Visual: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_capital_gain 26029 non-null float64 \n", + " 14 is_missing_native_country 26029 non-null float64 \n", + " 15 total_nulos_en_fila 26029 non-null float64 \n", + " 16 capital_neto 26029 non-null float64 \n", + " 17 is_anomaly_isoforest 26029 non-null int8 \n", + " 18 llm_age_*_education_num 26029 non-null float64 \n", + " 19 gbdt_emb_0 26029 non-null category\n", + " 20 gbdt_emb_1 26029 non-null category\n", + " 21 gbdt_emb_2 26029 non-null category\n", + " 22 gbdt_emb_3 26029 non-null category\n", + " 23 gbdt_emb_4 26029 non-null category\n", + " 24 gbdt_emb_5 26029 non-null category\n", + " 25 gbdt_emb_6 26029 non-null category\n", + " 26 gbdt_emb_7 26029 non-null category\n", + " 27 gbdt_emb_8 26029 non-null category\n", + " 28 gbdt_emb_9 26029 non-null category\n", + " 29 gbdt_emb_10 26029 non-null category\n", + " 30 gbdt_emb_11 26029 non-null category\n", + " 31 gbdt_emb_12 26029 non-null category\n", + " 32 gbdt_emb_13 26029 non-null category\n", + " 33 gbdt_emb_14 26029 non-null category\n", + " 34 cf_distancia_frontera 26029 non-null float64 \n", + " 35 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(20), int8(1)\n", + "memory usage: 4.4 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64 \n", + " 1 workclass 6508 non-null float64 \n", + " 2 education_num 6508 non-null float64 \n", + " 3 marital_status 6508 non-null float64 \n", + " 4 occupation 6508 non-null float64 \n", + " 5 relationship 6508 non-null float64 \n", + " 6 race 6508 non-null float64 \n", + " 7 sex 6508 non-null float64 \n", + " 8 capital_gain 6508 non-null float64 \n", + " 9 capital_loss 6508 non-null float64 \n", + " 10 hours_per_week 6508 non-null float64 \n", + " 11 native_country 6508 non-null float64 \n", + " 12 is_missing_workclass 6508 non-null float64 \n", + " 13 is_missing_capital_gain 6508 non-null float64 \n", + " 14 is_missing_native_country 6508 non-null float64 \n", + " 15 total_nulos_en_fila 6508 non-null float64 \n", + " 16 capital_neto 6508 non-null float64 \n", + " 17 is_anomaly_isoforest 6508 non-null int8 \n", + " 18 llm_age_*_education_num 6508 non-null float64 \n", + " 19 gbdt_emb_0 6508 non-null category\n", + " 20 gbdt_emb_1 6508 non-null category\n", + " 21 gbdt_emb_2 6508 non-null category\n", + " 22 gbdt_emb_3 6508 non-null category\n", + " 23 gbdt_emb_4 6508 non-null category\n", + " 24 gbdt_emb_5 6508 non-null category\n", + " 25 gbdt_emb_6 6508 non-null category\n", + " 26 gbdt_emb_7 6508 non-null category\n", + " 27 gbdt_emb_8 6508 non-null category\n", + " 28 gbdt_emb_9 6508 non-null category\n", + " 29 gbdt_emb_10 6508 non-null category\n", + " 30 gbdt_emb_11 6508 non-null category\n", + " 31 gbdt_emb_12 6508 non-null category\n", + " 32 gbdt_emb_13 6508 non-null category\n", + " 33 gbdt_emb_14 6508 non-null category\n", + " 34 cf_distancia_frontera 6508 non-null float64 \n", + " 35 cf_fuerza_logit 6508 non-null float64 \n", + "dtypes: category(15), float64(20), int8(1)\n", + "memory usage: 1.1 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Explorador de Entropía desactivado. Retornando semilla por defecto (42).\n", + "\n", + ">>> 🚂 EJECUTANDO GUILLOTINA OFICIAL CON SEMILLA 42 <<<\n", + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Boruta-SHAP desactivado. Matriz devuelta intacta.\n", + "\n", + ">>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\n", + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Boruta-SHAP desactivado. Matriz devuelta intacta.\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os # 🛡️ Añadido para interactuar con el hardware\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import re\n", + "import copy\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_PRODUCCION = False # True = Ejecuta la Fase / False = Desactiva la función (Bypass rápido)\n", + "\n", + "try:\n", + " import lightgbm as lgb\n", + " import shap\n", + " from sklearn.metrics import average_precision_score, f1_score # 🚀 FIX: Importación de f1_score\n", + " from sklearn.model_selection import StratifiedKFold\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: Faltan librerías requeridas para el Tribunal Final.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm shap scikit-learn\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# 1. NUEVO MOTOR: EXPLORADOR DE ENTROPÍA (BUSCADOR DE SEMILLA MAESTRA)\n", + "# ==========================================\n", + "def explorador_entropia_guillotina(\n", + " X_train: pd.DataFrame, \n", + " y_train: pd.Series, \n", + " rutas: Dict,\n", + " max_semillas_a_probar: int = 10, \n", + " percentil_ruido: int = 85,\n", + " modo_produccion: bool = True\n", + ") -> int:\n", + " \"\"\"\n", + " [NUEVO] Explorador de Entropía MLOps (FULL POWER + HARDWARE SHIELD).\n", + " - Evalúa la guillotina con semillas dinámicas usando Validación Cruzada RIGUROSA.\n", + " - 🚀 FIX MLOps: Inyecta Asymmetric Bagging o Pesos Suavizados en la evaluación cruzada.\n", + " - Retorna la 'Semilla Maestra' para fijarla estáticamente en producción.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Explorador de Entropía desactivado. Retornando semilla por defecto (42).\")\n", + " return 42\n", + "\n", + " logger.info(f\"=== 🎲 MOTOR DE ENTROPÍA: Buscando la Semilla Maestra de Selección ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " mejor_semilla = 42\n", + " mejor_score = -1.0\n", + " \n", + " np.random.seed(42)\n", + " arsenal_semillas = [42] + list(np.random.randint(1, 99999, size=max_semillas_a_probar - 1))\n", + " total_semillas = len(arsenal_semillas)\n", + " \n", + " logger.info(f\" 🔍 Probando {total_semillas} realidades estocásticas diferentes (Evaluación Full Power)...\")\n", + " \n", + " # 🛡️ PROTECCIÓN CPU: Calculamos núcleos dejando 1 libre para el sistema operativo\n", + " nucleos_disponibles = max(1, os.cpu_count() - 1) if os.cpu_count() else -1\n", + "\n", + " # 🚀 Extracción de Estrategia de Equidad Universal\n", + " config_equidad = rutas.get('asymmetric_bagging', {}).copy()\n", + " \n", + " es_multiclase = False\n", + " if y_train.nunique() > 2:\n", + " es_multiclase = True\n", + "\n", + " # 📊 FIX MLOps Telemetría: Reportar progreso sin saturar el log\n", + " for idx, semilla in enumerate(arsenal_semillas, 1):\n", + " rutas_simulacion = copy.deepcopy(rutas)\n", + " \n", + " X_simulado, _ = tribunal_boruta_shap_automl(\n", + " X=X_train, \n", + " y=y_train, \n", + " rutas=rutas_simulacion, \n", + " percentil_ruido=percentil_ruido, \n", + " random_state=semilla,\n", + " verbose=False,\n", + " modo_produccion=True # Forzamos ejecución interna para la simulación\n", + " )\n", + " \n", + " skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=semilla)\n", + " scores_cv = []\n", + " \n", + " # 🚀 FIX: Construimos los parámetros base del evaluador e inyectamos la equidad\n", + " param_evaluador = {\n", + " 'n_estimators': 500, \n", + " 'random_state': semilla, \n", + " 'n_jobs': nucleos_disponibles,\n", + " 'verbosity': -1\n", + " }\n", + " \n", + " if config_equidad:\n", + " if es_multiclase:\n", + " for k in ['pos_bagging_fraction', 'neg_bagging_fraction', 'bagging_freq', 'bagging_seed', 'scale_pos_weight']:\n", + " config_equidad.pop(k, None)\n", + " if not es_multiclase:\n", + " config_equidad.pop('class_weight', None)\n", + " config_equidad.pop('scale_pos_weight', None)\n", + " param_evaluador.update(config_equidad)\n", + " \n", + " clf = lgb.LGBMClassifier(**param_evaluador)\n", + " \n", + " for train_idx, val_idx in skf.split(X_simulado, y_train):\n", + " X_tr, X_va = X_simulado.iloc[train_idx], X_simulado.iloc[val_idx]\n", + " y_tr, y_va = y_train.iloc[train_idx], y_train.iloc[val_idx]\n", + " \n", + " clf.fit(\n", + " X_tr, y_tr, \n", + " eval_set=[(X_va, y_va)], \n", + " callbacks=[lgb.early_stopping(30, verbose=False)]\n", + " )\n", + " \n", + " # 🚀 FIX: Soporte estricto Binario/Multiclase (Solo if)\n", + " if es_multiclase:\n", + " preds = clf.predict(X_va)\n", + " scores_cv.append(f1_score(y_va, preds, average='weighted'))\n", + " \n", + " if not es_multiclase:\n", + " preds = clf.predict_proba(X_va)[:, 1]\n", + " scores_cv.append(average_precision_score(y_va, preds))\n", + " \n", + " score_promedio = float(np.mean(scores_cv))\n", + " \n", + " if score_promedio > mejor_score:\n", + " mejor_score = score_promedio\n", + " mejor_semilla = int(semilla)\n", + " logger.info(f\" ↳ [NUEVA MEJOR SEMILLA] Progreso: {idx}/{total_semillas}. Semilla [{semilla}] -> Max Score: {mejor_score:.4f}\")\n", + " \n", + " # Reportar progreso cada 10 iteraciones para no inundar el log de Producción\n", + " elif idx % 10 == 0:\n", + " logger.debug(f\" ↳ Progreso: {idx}/{total_semillas}. Semilla actual [{semilla}] (No superó máximo).\")\n", + "\n", + " # 🛡️ PROTECCIÓN RAM: Limpieza profunda y agresiva\n", + " del X_simulado, clf, skf, X_tr, X_va, y_tr, y_va\n", + " gc.collect()\n", + " \n", + " # 🛡️ PROTECCIÓN TÉRMICA: Micro-pausa para permitir disipación de calor del procesador\n", + " time.sleep(1.5)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 👑 SEMILLA MAESTRA ENCONTRADA: {mejor_semilla} (Potencial Score: {mejor_score:.4f})\")\n", + " logger.info(f\"\\n⏱️ Búsqueda de Entropía completada en {time.time() - inicio_timer:.3f}s\")\n", + " \n", + " return mejor_semilla\n", + "\n", + "# ==========================================\n", + "# 2. LA GUILLOTINA MEJORADA (Con Modo Silencioso y Soporte Categórico)\n", + "# ==========================================\n", + "def tribunal_boruta_shap_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " muestras_shap: int = 5000, \n", + " percentil_ruido: int = 75, \n", + " random_state: int = 42,\n", + " verbose: bool = True,\n", + " modo_produccion: bool = True \n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.3] El Juez Final: Boruta-SHAP & Null Importance.\n", + " - 🚀 FIX MLOps: Ahora escanea Números, Categorías (GGPL) y Booleanos simultáneamente.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " if verbose: logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Boruta-SHAP desactivado. Matriz devuelta intacta.\")\n", + " return X.copy(), (rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []})\n", + "\n", + " if X is None or X.empty:\n", + " if verbose: logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + " \n", + " if verbose: logger.info(f\"=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " if y is not None:\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " meta_features = [col for col in X_clean.columns if patron_troya.search(col)]\n", + " \n", + " if meta_features:\n", + " if verbose: logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(meta_features)} 'Caballos de Troya'...\")\n", + " X_clean.drop(columns=meta_features, inplace=True)\n", + " rutas['meta_features_purgadas'] = meta_features\n", + " \n", + " if not meta_features:\n", + " rutas['meta_features_purgadas'] = []\n", + "\n", + " if verbose: logger.info(f\" 🧠 Preparando el Torneo Predictivo para las variables reales...\")\n", + " \n", + " # 🚀 FIX: Mapeo de Numeros, Categorías y Booleanos.\n", + " cols_a_evaluar = X_clean.select_dtypes(include=[np.number, 'category', 'bool']).columns.tolist()\n", + " if len(cols_a_evaluar) == 0:\n", + " if verbose: logger.info(\" ✅ [BYPASS] No hay variables evaluables. Operación omitida.\")\n", + " rutas['basura_boruta'] = []\n", + " return X_clean, rutas\n", + "\n", + " np.random.seed(random_state)\n", + "\n", + " n_muestras = min(len(X_clean), muestras_shap)\n", + " idx_sample = np.random.choice(X_clean.index, n_muestras, replace=False)\n", + " \n", + " # 🚀 FIX: NO usamos fillna(0) para proteger el dtype 'category'\n", + " X_sample = X_clean.loc[idx_sample, cols_a_evaluar]\n", + " y_sample = y.loc[idx_sample]\n", + "\n", + " if verbose: logger.info(\" ↳ Generando Clones de Sombra (Ruido Aleatorio Determinista)...\")\n", + " \n", + " # 🚀 FIX: Creación de matriz sombra respetando dtypes\n", + " X_shadow = pd.DataFrame({col: np.random.permutation(X_sample[col].values) for col in X_sample.columns}, index=X_sample.index)\n", + " for col in X_sample.columns:\n", + " X_shadow[col] = X_shadow[col].astype(X_sample[col].dtype)\n", + " \n", + " shadow_cols = [f\"shadow_{c}\" for c in X_sample.columns]\n", + " X_shadow.columns = shadow_cols\n", + " \n", + " X_torneo = pd.concat([X_sample, X_shadow], axis=1)\n", + "\n", + " if verbose: logger.info(\" ↳ Entrenando Oráculo Juez (FULL POWER)...\")\n", + " \n", + " es_regresion = False\n", + " if pd.api.types.is_float_dtype(y_sample) and y_sample.nunique() > 20:\n", + " es_regresion = True\n", + " \n", + " es_multiclase = False\n", + " if y_sample.nunique() > 2:\n", + " es_multiclase = True\n", + " \n", + " config_bagging = rutas.get('asymmetric_bagging', {}).copy()\n", + " nucleos_juez = max(1, os.cpu_count() - 1) if os.cpu_count() else -1\n", + "\n", + " param_juez = {\n", + " 'n_estimators': 500, \n", + " 'random_state': random_state, \n", + " 'n_jobs': nucleos_juez, \n", + " 'verbose': -1\n", + " }\n", + " \n", + " if config_bagging:\n", + " if es_multiclase:\n", + " for k in ['pos_bagging_fraction', 'neg_bagging_fraction', 'bagging_freq', 'bagging_seed', 'scale_pos_weight']:\n", + " config_bagging.pop(k, None)\n", + " if not es_multiclase:\n", + " config_bagging.pop('class_weight', None)\n", + " config_bagging.pop('scale_pos_weight', None)\n", + " \n", + " param_juez.update(config_bagging)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " if es_regresion:\n", + " juez = lgb.LGBMRegressor(**param_juez)\n", + " if not es_regresion:\n", + " juez = lgb.LGBMClassifier(**param_juez)\n", + " \n", + " juez.fit(X_torneo, y_sample)\n", + "\n", + " if verbose: logger.info(\" ↳ Calculando Magnitudes SHAP para emitir sentencias...\")\n", + " explainer = shap.TreeExplainer(juez)\n", + " shap_values = explainer.shap_values(X_torneo)\n", + " \n", + " if isinstance(shap_values, list):\n", + " shap_imp = np.zeros(X_torneo.shape[1])\n", + " for class_vals in shap_values:\n", + " shap_imp += np.abs(class_vals).mean(axis=0)\n", + " \n", + " if not isinstance(shap_values, list):\n", + " if len(shap_values.shape) == 3:\n", + " shap_imp = np.abs(shap_values).mean(axis=0).sum(axis=1)\n", + " if len(shap_values.shape) != 3:\n", + " shap_imp = np.abs(shap_values).mean(axis=0)\n", + "\n", + " imp_reales = pd.Series(shap_imp[:len(cols_a_evaluar)], index=cols_a_evaluar)\n", + " imp_sombras = pd.Series(shap_imp[len(cols_a_evaluar):], index=shadow_cols)\n", + "\n", + " umbral_basura = np.percentile(imp_sombras, percentil_ruido)\n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + "\n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5 or len(columnas_a_eliminar) > len(cols_a_evaluar) * 0.8:\n", + " if verbose: logger.warning(f\" ⚠️ [ALERTA AutoML] Juez demasiado estricto. Dejó solo {len(cols_a_evaluar) - len(columnas_a_eliminar)} variables vivas. Riesgo de Feature Starvation.\")\n", + " if verbose: logger.info(\" ↳ Activando Protocolo de Indulto: Bajando exigencia a la Mediana del Ruido...\")\n", + " \n", + " umbral_basura = np.median(imp_sombras) \n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + " \n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5:\n", + " if verbose: logger.warning(\" ↳ 🚨 [INDULTO TOTAL] La señal es muy débil. Se anula la guillotina para proteger el poder predictivo.\")\n", + " columnas_a_eliminar = []\n", + "\n", + " del X_sample, X_shadow, X_torneo, juez, explainer, shap_values\n", + " gc.collect()\n", + "\n", + " if columnas_a_eliminar:\n", + " if verbose: logger.warning(f\" 🚨 [SENTENCIA] A la Guillotina: {len(columnas_a_eliminar)} variables reales aportaban menos que el ruido puro.\")\n", + " X_clean.drop(columns=columnas_a_eliminar, inplace=True)\n", + " rutas['basura_boruta'] = columnas_a_eliminar\n", + " \n", + " if not columnas_a_eliminar:\n", + " if verbose: logger.info(\" ✅ [JUSTO] Todas las variables sobrevivieron al protocolo. Son estadísticamente útiles.\")\n", + " rutas['basura_boruta'] = []\n", + "\n", + " if y is None:\n", + " meta_heredadas = rutas.get('meta_features_purgadas', [])\n", + " meta_presentes = [col for col in meta_heredadas if col in X_clean.columns]\n", + " \n", + " if meta_presentes:\n", + " X_clean.drop(columns=meta_presentes, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Cirugía aplicada. {len(meta_presentes)} 'Caballos de Troya' eliminados.\")\n", + "\n", + " basura_heredada = rutas.get('basura_boruta', [])\n", + " basura_presente = [col for col in basura_heredada if col in X_clean.columns]\n", + " \n", + " if basura_presente:\n", + " X_clean.drop(columns=basura_presente, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Guillotina aplicada. {len(basura_presente)} variables decapitadas.\")\n", + " \n", + " if not basura_presente:\n", + " if verbose: logger.info(\" ✅ [TEST] Matriz evaluada. Sin variables inútiles que purgar.\")\n", + "\n", + " for key in ['num_vars', 'cat_vars', 'bool_vars', 'date_vars']:\n", + " if key in rutas:\n", + " rutas[key] = [c for c in rutas[key] if c in X_clean.columns]\n", + "\n", + " if verbose:\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): {X_clean.shape[1]}\")\n", + " logger.info(f\"\\n⏱️ Tribunal Boruta-SHAP completado en {time.time() - inicio_timer:.3f}s\")\n", + " \n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # Definimos nuestro punto de exigencia (85 o 90)\n", + " EXIGENCIA = 90\n", + "\n", + " # 1. 🎲 ENCONTRAR LA SEMILLA MAESTRA (Bucle Full Power Dinámico)\n", + " semilla_ganadora = explorador_entropia_guillotina(\n", + " X_train=manager.X_train, \n", + " y_train=manager.y_train, \n", + " rutas=manager.rutas,\n", + " max_semillas_a_probar=100, # <-- Ajusta este valor. 50 es un buen balance para empezar.\n", + " percentil_ruido=EXIGENCIA,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + " \n", + " # 2. ⚖️ EJECUTAR EL JUICIO OFICIAL EN TRAIN CON LA MEJOR SEMILLA\n", + " logger.info(f\"\\n>>> 🚂 EJECUTANDO GUILLOTINA OFICIAL CON SEMILLA {semilla_ganadora} <<<\")\n", + " X_train_elite, rutas_actualizadas = tribunal_boruta_shap_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " percentil_ruido=EXIGENCIA,\n", + " random_state=semilla_ganadora,\n", + " verbose=True,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + " \n", + " # 3. 🔒 REPLICAR EN TEST\n", + " logger.info(\"\\n>>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\")\n", + " X_test_elite, _ = tribunal_boruta_shap_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " verbose=True,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos finales en el Manager\n", + " manager.X_train = X_train_elite\n", + " manager.X_test = X_test_elite\n", + " manager.rutas = rutas_actualizadas\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " gc.collect()\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Tribunal Boruta-SHAP: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_capital_gain 26029 non-null float64 \n", + " 14 is_missing_native_country 26029 non-null float64 \n", + " 15 total_nulos_en_fila 26029 non-null float64 \n", + " 16 capital_neto 26029 non-null float64 \n", + " 17 is_anomaly_isoforest 26029 non-null int8 \n", + " 18 llm_age_*_education_num 26029 non-null float64 \n", + " 19 gbdt_emb_0 26029 non-null category\n", + " 20 gbdt_emb_1 26029 non-null category\n", + " 21 gbdt_emb_2 26029 non-null category\n", + " 22 gbdt_emb_3 26029 non-null category\n", + " 23 gbdt_emb_4 26029 non-null category\n", + " 24 gbdt_emb_5 26029 non-null category\n", + " 25 gbdt_emb_6 26029 non-null category\n", + " 26 gbdt_emb_7 26029 non-null category\n", + " 27 gbdt_emb_8 26029 non-null category\n", + " 28 gbdt_emb_9 26029 non-null category\n", + " 29 gbdt_emb_10 26029 non-null category\n", + " 30 gbdt_emb_11 26029 non-null category\n", + " 31 gbdt_emb_12 26029 non-null category\n", + " 32 gbdt_emb_13 26029 non-null category\n", + " 33 gbdt_emb_14 26029 non-null category\n", + " 34 cf_distancia_frontera 26029 non-null float64 \n", + " 35 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(20), int8(1)\n", + "memory usage: 4.4 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 JUZGANDO VARIABLES CONTRA EL RUIDO EN TRAIN (BORUTA-SHAP) <<<\n", + "=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\n", + " 🔪 [CIRUGÍA] Extirpando 17 'Caballos de Troya'...\n", + " 🧠 Preparando el Torneo Predictivo para las variables reales...\n", + " 🧠 Tribunal conformado por 19 variables (Numéricas y Categóricas)...\n", + " ↳ Generando Clones de Sombra (Ruido Aleatorio Determinista)...\n", + " ↳ Entrenando Oráculo Juez (Con Asymmetric Bagging PURO y FULL POWER)...\n", + " ↳ Calculando Magnitudes SHAP para emitir sentencias...\n", + " 🚨 [SENTENCIA] A la Guillotina: 8 variables reales aportaban menos que el ruido puro.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): 11\n", + "\n", + "⏱️ Tribunal Boruta-SHAP completado en 3.496s\n", + "\n", + ">>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\n", + "=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\n", + " 🔒 [TEST] Cirugía aplicada. 17 'Caballos de Troya' eliminados.\n", + " 🔒 [TEST] Guillotina aplicada. 8 variables decapitadas.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): 11\n", + "\n", + "⏱️ Tribunal Boruta-SHAP completado en 0.004s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Boruta-SHAP Manual aplicado).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import re\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "try:\n", + " import lightgbm as lgb\n", + " import shap\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: Las librerías 'lightgbm' y 'shap' son requeridas para el Tribunal Final.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm shap\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# 1. LA GUILLOTINA MLOPS (FULL POWER)\n", + "# ==========================================\n", + "def tribunal_boruta_shap_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " muestras_shap: int = 5000, \n", + " percentil_ruido: int = 75, \n", + " random_state: int = 42,\n", + " verbose: bool = True \n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.3] El Juez Final: Boruta-SHAP & Null Importance.\n", + " - 🚀 FIX MLOps: Ahora escanea Números, Categorías (GGPL) y Booleanos simultáneamente.\n", + " - El Juez interno usa 500 estimadores para máxima precisión.\n", + " - Inyecta Asymmetric Bagging o Pesos Suavizados dinámicamente según el Target.\n", + " - Elimina 'Caballos de Troya' (Target Leakage).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + " \n", + " if verbose: logger.info(f\"=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # MODO TRAIN: El Torneo contra las Sombras\n", + " # ==========================================\n", + " if y is not None:\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " meta_features = [col for col in X_clean.columns if patron_troya.search(col)]\n", + " \n", + " if meta_features:\n", + " if verbose: logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(meta_features)} 'Caballos de Troya'...\")\n", + " X_clean.drop(columns=meta_features, inplace=True)\n", + " rutas['meta_features_purgadas'] = meta_features\n", + " else:\n", + " rutas['meta_features_purgadas'] = []\n", + "\n", + " if verbose: logger.info(f\" 🧠 Preparando el Torneo Predictivo para las variables reales...\")\n", + " \n", + " # 🚀 FIX: Ampliamos el radar para incluir categorías (Embeddings GGPL) y booleanos\n", + " cols_a_evaluar = X_clean.select_dtypes(include=[np.number, 'category', 'bool']).columns.tolist()\n", + " \n", + " if len(cols_a_evaluar) == 0:\n", + " if verbose: logger.info(\" ✅ [BYPASS] No hay variables evaluables. Operación omitida.\")\n", + " rutas['basura_boruta'] = []\n", + " return X_clean, rutas\n", + "\n", + " if verbose: logger.info(f\" 🧠 Tribunal conformado por {len(cols_a_evaluar)} variables (Numéricas y Categóricas)...\")\n", + "\n", + " np.random.seed(random_state)\n", + "\n", + " n_muestras = min(len(X_clean), muestras_shap)\n", + " idx_sample = np.random.choice(X_clean.index, n_muestras, replace=False)\n", + " \n", + " # 🚀 FIX: Extraemos la muestra. NO usamos fillna(0) porque destruiría el dtype 'category'\n", + " # LightGBM maneja los NaNs de forma nativa.\n", + " X_sample = X_clean.loc[idx_sample, cols_a_evaluar]\n", + " y_sample = y.loc[idx_sample]\n", + "\n", + " if verbose: logger.info(\" ↳ Generando Clones de Sombra (Ruido Aleatorio Determinista)...\")\n", + " \n", + " # 🚀 FIX MLOps: Creación segura de sombras respetando el dtype 'category'\n", + " X_shadow = pd.DataFrame({col: np.random.permutation(X_sample[col].values) for col in X_sample.columns}, index=X_sample.index)\n", + " for col in X_sample.columns:\n", + " X_shadow[col] = X_shadow[col].astype(X_sample[col].dtype) # Restaura la naturaleza exacta (category/float)\n", + " \n", + " shadow_cols = [f\"shadow_{c}\" for c in X_sample.columns]\n", + " X_shadow.columns = shadow_cols\n", + " \n", + " X_torneo = pd.concat([X_sample, X_shadow], axis=1)\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y_sample) and y_sample.nunique() > 20\n", + " es_multiclase = y_sample.nunique() > 2\n", + " \n", + " if verbose: \n", + " if es_multiclase:\n", + " logger.info(\" ↳ Entrenando Oráculo Juez (Con Pesos Suavizados Multiclase y FULL POWER)...\")\n", + " elif es_regresion:\n", + " logger.info(\" ↳ Entrenando Oráculo Juez Regresor (FULL POWER)...\")\n", + " else:\n", + " logger.info(\" ↳ Entrenando Oráculo Juez (Con Asymmetric Bagging PURO y FULL POWER)...\")\n", + " \n", + " config_bagging = rutas.get('asymmetric_bagging', {}).copy()\n", + " \n", + " param_juez = {\n", + " 'n_estimators': 500, \n", + " 'random_state': random_state, \n", + " 'n_jobs': -1,\n", + " 'verbose': -1\n", + " }\n", + " \n", + " if config_bagging:\n", + " if es_multiclase:\n", + " for k in ['pos_bagging_fraction', 'neg_bagging_fraction', 'bagging_freq', 'bagging_seed', 'scale_pos_weight']:\n", + " config_bagging.pop(k, None)\n", + " else:\n", + " for k in ['class_weight', 'scale_pos_weight']:\n", + " config_bagging.pop(k, None)\n", + " \n", + " param_juez.update(config_bagging)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " if es_regresion:\n", + " juez = lgb.LGBMRegressor(**param_juez)\n", + " else:\n", + " juez = lgb.LGBMClassifier(**param_juez)\n", + " \n", + " # LightGBM detecta automáticamente los dtypes 'category' al hacer .fit()\n", + " juez.fit(X_torneo, y_sample)\n", + "\n", + " if verbose: logger.info(\" ↳ Calculando Magnitudes SHAP para emitir sentencias...\")\n", + " explainer = shap.TreeExplainer(juez)\n", + " shap_values = explainer.shap_values(X_torneo)\n", + " \n", + " if isinstance(shap_values, list):\n", + " shap_imp = np.zeros(X_torneo.shape[1])\n", + " for class_vals in shap_values:\n", + " shap_imp += np.abs(class_vals).mean(axis=0)\n", + " else:\n", + " if len(shap_values.shape) == 3:\n", + " shap_imp = np.abs(shap_values).mean(axis=0).sum(axis=1)\n", + " else:\n", + " shap_imp = np.abs(shap_values).mean(axis=0)\n", + "\n", + " imp_reales = pd.Series(shap_imp[:len(cols_a_evaluar)], index=cols_a_evaluar)\n", + " imp_sombras = pd.Series(shap_imp[len(cols_a_evaluar):], index=shadow_cols)\n", + "\n", + " umbral_basura = np.percentile(imp_sombras, percentil_ruido)\n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + "\n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5 or len(columnas_a_eliminar) > len(cols_a_evaluar) * 0.8:\n", + " if verbose: logger.warning(f\" ⚠️ [ALERTA AutoML] Juez demasiado estricto. Dejó solo {len(cols_a_evaluar) - len(columnas_a_eliminar)} variables vivas. Riesgo de Feature Starvation.\")\n", + " if verbose: logger.info(\" ↳ Activando Protocolo de Indulto: Bajando exigencia a la Mediana del Ruido...\")\n", + " \n", + " umbral_basura = np.median(imp_sombras) \n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + " \n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5:\n", + " if verbose: logger.warning(\" ↳ 🚨 [INDULTO TOTAL] La señal es muy débil. Se anula la guillotina para proteger el poder predictivo.\")\n", + " columnas_a_eliminar = []\n", + "\n", + " del X_sample, X_shadow, X_torneo, juez, explainer, shap_values\n", + " gc.collect()\n", + "\n", + " if columnas_a_eliminar:\n", + " if verbose: logger.warning(f\" 🚨 [SENTENCIA] A la Guillotina: {len(columnas_a_eliminar)} variables reales aportaban menos que el ruido puro.\")\n", + " X_clean.drop(columns=columnas_a_eliminar, inplace=True)\n", + " rutas['basura_boruta'] = columnas_a_eliminar\n", + " else:\n", + " if verbose: logger.info(\" ✅ [JUSTO] Todas las variables sobrevivieron al protocolo. Son estadísticamente útiles.\")\n", + " rutas['basura_boruta'] = []\n", + "\n", + " # ==========================================\n", + " # MODO TEST: La Ejecución Silenciosa\n", + " # ==========================================\n", + " else:\n", + " meta_heredadas = rutas.get('meta_features_purgadas', [])\n", + " meta_presentes = [col for col in meta_heredadas if col in X_clean.columns]\n", + " \n", + " if meta_presentes:\n", + " X_clean.drop(columns=meta_presentes, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Cirugía aplicada. {len(meta_presentes)} 'Caballos de Troya' eliminados.\")\n", + "\n", + " basura_heredada = rutas.get('basura_boruta', [])\n", + " basura_presente = [col for col in basura_heredada if col in X_clean.columns]\n", + " \n", + " if basura_presente:\n", + " X_clean.drop(columns=basura_presente, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Guillotina aplicada. {len(basura_presente)} variables decapitadas.\")\n", + " else:\n", + " if verbose: logger.info(\" ✅ [TEST] Matriz evaluada. Sin variables inútiles que purgar.\")\n", + "\n", + " for key in ['num_vars', 'cat_vars', 'bool_vars', 'date_vars']:\n", + " if key in rutas:\n", + " rutas[key] = [c for c in rutas[key] if c in X_clean.columns]\n", + "\n", + " if verbose:\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): {X_clean.shape[1]}\")\n", + " logger.info(f\"\\n⏱️ Tribunal Boruta-SHAP completado en {time.time() - inicio_timer:.3f}s\")\n", + " \n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 JUZGANDO VARIABLES CONTRA EL RUIDO EN TRAIN (BORUTA-SHAP) <<<\")\n", + " # ⚙️ MLOps: Inicializamos con percentil 90 para dar margen de maniobra y Random State fijo\n", + " X_train_elite, rutas_actualizadas = tribunal_boruta_shap_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " percentil_ruido=90,\n", + " random_state=9693 , # <-- Garantiza que siempre decapite las mismas variables (Semilla Manual)\n", + " verbose=True\n", + " )\n", + " \n", + " logger.info(\"\\n>>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\")\n", + " X_test_elite, _ = tribunal_boruta_shap_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " verbose=True\n", + " )\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos finales en el Manager\n", + " manager.X_train = X_train_elite\n", + " manager.X_test = X_test_elite\n", + " manager.rutas = rutas_actualizadas\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Boruta-SHAP Manual aplicado).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " gc.collect()\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Tribunal Boruta-SHAP: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 sex 26029 non-null float64\n", + " 7 capital_gain 26029 non-null float64\n", + " 8 capital_loss 26029 non-null float64\n", + " 9 hours_per_week 26029 non-null float64\n", + " 10 llm_age_*_education_num 26029 non-null float64\n", + "dtypes: float64(11)\n", + "memory usage: 2.2 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64\n", + " 1 workclass 6508 non-null float64\n", + " 2 education_num 6508 non-null float64\n", + " 3 marital_status 6508 non-null float64\n", + " 4 occupation 6508 non-null float64\n", + " 5 relationship 6508 non-null float64\n", + " 6 sex 6508 non-null float64\n", + " 7 capital_gain 6508 non-null float64\n", + " 8 capital_loss 6508 non-null float64\n", + " 9 hours_per_week 6508 non-null float64\n", + " 10 llm_age_*_education_num 6508 non-null float64\n", + "dtypes: float64(11)\n", + "memory usage: 559.4 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n", + "\n", + "\n", + "# # FASE 7: MLOps: Exportación y Calibración\n", + "# El modelo sale del laboratorio al mundo real." + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 💾 FASE 18.1: Exportación Binaria Integral (PyArrow v23.0.1) ===\n", + " ✅ Matrices X e y exportadas exitosamente a Parquet.\n", + " ⚖️ Escudo de Equidad (Pesos) blindado en Parquet.\n", + " 🧠 Detectados 1 artefactos de preprocesamiento. Serializando...\n", + " 📦 Todos los cerebros de preprocesamiento han sido congelados criogénicamente (Joblib).\n", + " 🗺️ Metadata de Rutas exportada a JSON de forma segura.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Activos 100% blindados (Datos + Modelos Previos). Listo para Producción y Optuna.\n", + "\n", + "⏱️ I/O completado en 0.116s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import json\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import joblib\n", + "from typing import Dict, Optional, Any\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "try:\n", + " import pyarrow as pa\n", + " MOTOR_PARQUET = f\"PyArrow v{pa.__version__}\"\n", + "except ImportError:\n", + " MOTOR_PARQUET = \"Motor No Detectado\"\n", + " # Este print se mantiene como warning crítico pre-ejecución si el entorno no tiene la librería\n", + " logger.warning(\"🛑 MLOps Warning: El motor binario 'pyarrow' es requerido para escribir archivos Parquet.\")\n", + "\n", + "# ==========================================\n", + "# 🔧 NUEVO: Traductor Universal de Tipos Numpy -> JSON\n", + "# ==========================================\n", + "class NumpyEncoder(json.JSONEncoder):\n", + " \"\"\" Escudo de Serialización: Convierte tipos Numpy/Pandas a Python nativo \"\"\"\n", + " def default(self, obj):\n", + " if isinstance(obj, np.integer):\n", + " return int(obj)\n", + " if isinstance(obj, np.floating):\n", + " return float(obj)\n", + " if isinstance(obj, np.ndarray):\n", + " return obj.tolist()\n", + " if isinstance(obj, np.bool_):\n", + " return bool(obj)\n", + " if pd.isna(obj): # 🚀 FIX MLOps: Tolerancia a NaNs o NaTs huérfanos\n", + " return None\n", + " return super(NumpyEncoder, self).default(obj)\n", + "\n", + "def exportar_activos_mlops_integral(\n", + " X_train: pd.DataFrame, \n", + " y_train: pd.Series, \n", + " X_test: pd.DataFrame, \n", + " y_test: Optional[pd.Series], \n", + " rutas: Dict,\n", + " modelos_preprocesamiento: Optional[Dict[str, Any]] = None, # 🚀 FIX MLOps: Ahora es opcional y seguro\n", + " pesos_equidad: Optional[pd.Series] = None, \n", + " grupos_validacion: Optional[np.ndarray] = None, \n", + " directorio_salida: str = \"mlops_activos\"\n", + ") -> None:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.1] Exportación Serializada Integral.\n", + " - Guarda X, y, Metadatos.\n", + " - Serializa los pesos de justicia algorítmica (sample_weights).\n", + " - Serializa el mapa topológico de Folds (grupos_cv).\n", + " - 🧠 NUEVO: Serializa TODOS los cerebros de preprocesamiento (KNN, Escala, GBDT, etc.) con Joblib.\n", + " \"\"\"\n", + " logger.info(f\"=== 💾 FASE 18.1: Exportación Binaria Integral ({MOTOR_PARQUET}) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if not os.path.exists(directorio_salida):\n", + " os.makedirs(directorio_salida)\n", + "\n", + " dir_artefactos = os.path.join(directorio_salida, \"artefactos_preprocesamiento\")\n", + " if not os.path.exists(dir_artefactos):\n", + " os.makedirs(dir_artefactos)\n", + "\n", + " try:\n", + " # 1. Matrices y Vectores Base\n", + " X_train.to_parquet(os.path.join(directorio_salida, \"X_train_opt.parquet\"), engine='pyarrow', index=False)\n", + " X_test.to_parquet(os.path.join(directorio_salida, \"X_test_opt.parquet\"), engine='pyarrow', index=False)\n", + " y_train.to_frame(name='Target').to_parquet(os.path.join(directorio_salida, \"y_train_opt.parquet\"), engine='pyarrow', index=False)\n", + " logger.info(\" ✅ Matrices X e y exportadas exitosamente a Parquet.\")\n", + "\n", + " if y_test is not None:\n", + " y_test.to_frame(name='Target').to_parquet(os.path.join(directorio_salida, \"y_test_opt.parquet\"), engine='pyarrow', index=False)\n", + "\n", + " # 2. Escudo de Equidad Algorítmica (Pesos)\n", + " if pesos_equidad is not None:\n", + " df_pesos = pd.DataFrame({'sample_weight': pesos_equidad}).reset_index(drop=True)\n", + " df_pesos.to_parquet(os.path.join(directorio_salida, \"pesos_train.parquet\"), engine='pyarrow', index=False)\n", + " logger.info(\" ⚖️ Escudo de Equidad (Pesos) blindado en Parquet.\")\n", + "\n", + " # 3. Mapa de Validación Cruzada (Grupos)\n", + " if grupos_validacion is not None:\n", + " df_grupos = pd.DataFrame({'grupos_cv': grupos_validacion}).reset_index(drop=True)\n", + " df_grupos.to_parquet(os.path.join(directorio_salida, \"grupos_cv.parquet\"), engine='pyarrow', index=False)\n", + " logger.info(\" 🗺️ Mapa de Validación Cruzada blindado en Parquet.\")\n", + "\n", + " # 4. 🧠 Serialización de Cerebros (Imputadores, Escaladores, Encoders)\n", + " if modelos_preprocesamiento:\n", + " logger.info(f\" 🧠 Detectados {len(modelos_preprocesamiento)} artefactos de preprocesamiento. Serializando...\")\n", + " for nombre_artefacto, objeto_artefacto in modelos_preprocesamiento.items():\n", + " if objeto_artefacto is not None:\n", + " ruta_artefacto = os.path.join(dir_artefactos, f\"{nombre_artefacto}.joblib\")\n", + " joblib.dump(objeto_artefacto, ruta_artefacto)\n", + " logger.info(\" 📦 Todos los cerebros de preprocesamiento han sido congelados criogénicamente (Joblib).\")\n", + "\n", + " # 5. Diccionario de Rutas (JSON con NumpyEncoder)\n", + " with open(os.path.join(directorio_salida, \"pipeline_metadata.json\"), 'w', encoding='utf-8') as f:\n", + " # 🚀 FIX: Usamos cls=NumpyEncoder para que no explote con los int8 o booleanos de numpy\n", + " json.dump(rutas, f, indent=4, ensure_ascii=False, cls=NumpyEncoder)\n", + " logger.info(\" 🗺️ Metadata de Rutas exportada a JSON de forma segura.\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\"🛑 Error crítico en I/O: {e}\")\n", + " raise RuntimeError(f\"Error crítico en I/O: {e}\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Activos 100% blindados (Datos + Modelos Previos). Listo para Producción y Optuna.\")\n", + " logger.info(f\"\\n⏱️ I/O completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de entrenamiento. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # 🚀 FIX MLOps: Se implementa 'getattr' para extraer los artefactos de manera ultra-segura\n", + " exportar_activos_mlops_integral(\n", + " X_train=manager.X_train, \n", + " y_train=manager.y_train, \n", + " X_test=manager.X_test, \n", + " y_test=getattr(manager, 'y_test', None), \n", + " rutas=getattr(manager, 'rutas', {}),\n", + " modelos_preprocesamiento=getattr(manager, 'modelos_preprocesamiento', {}),\n", + " pesos_equidad=getattr(manager, 'pesos_train', None),\n", + " grupos_validacion=getattr(manager, 'grupos_cv', None),\n", + " directorio_salida=\"mlops_activos\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fase de Exportación: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 INICIANDO EL TORNEO RELÁMPAGO DE MODELOS <<<\n", + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Torneo Relámpago desactivado.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import logging\n", + "import warnings\n", + "import gc # 🚀 Añadido para protección de RAM\n", + "import pandas as pd\n", + "import numpy as np\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_PRODUCCION = False # True = Ejecuta la Fase / False = Desactiva la función (Bypass rápido)\n", + "\n", + "# Librerías Core de Scikit-Learn (Familias Clásicas y Extendidas)\n", + "from sklearn.model_selection import cross_validate, StratifiedKFold\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.impute import SimpleImputer\n", + "from sklearn.preprocessing import StandardScaler, MinMaxScaler, LabelEncoder\n", + "from sklearn.linear_model import LogisticRegression, RidgeClassifier, SGDClassifier\n", + "from sklearn.ensemble import (\n", + " RandomForestClassifier, ExtraTreesClassifier, HistGradientBoostingClassifier, \n", + " AdaBoostClassifier, GradientBoostingClassifier\n", + ")\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.naive_bayes import GaussianNB\n", + "from sklearn.svm import LinearSVC\n", + "from sklearn.neural_network import MLPClassifier\n", + "\n", + "# Librerías de Boosting Avanzado (La Nueva Guardia)\n", + "try:\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " lgb = None\n", + "\n", + "try:\n", + " import xgboost as xgb\n", + "except ImportError:\n", + " xgb = None\n", + "\n", + "try:\n", + " import catboost as cb\n", + "except ImportError:\n", + " cb = None\n", + "\n", + "\n", + "# ==========================================\n", + "# 1. FASE 18.1: EL TORNEO RELÁMPAGO (BASELINE EXPANDIDO)\n", + "# ==========================================\n", + "def torneo_relampago_automl(\n", + " X_train: pd.DataFrame, \n", + " y_train: pd.Series, \n", + " n_splits: int = 5,\n", + " seed: int = 42,\n", + " modo_produccion: bool = True\n", + ") -> pd.DataFrame:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.1] Torneo Relámpago Extendido (14 Gladiadores).\n", + " - Escanea todas las familias matemáticas no obsoletas (Lineales, Árboles, Distancia, Redes, Boosting).\n", + " - 🛡️ RAM SHIELD V2: Downcasting automático (Compresión de bits) para evaluar el 100% de los datos sin saturar RAM.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Torneo Relámpago desactivado.\")\n", + " # Retornamos un DataFrame dummy para no romper la cadena del PipelineManager\n", + " df_dummy = pd.DataFrame([{\n", + " \"Algoritmo\": \"BYPASS_MODE\", \"F1-Score\": 0.0, \"F1 Std (±)\": 0.0, \"Exactitud\": 0.0, \"Tiempo (s)\": 0.0\n", + " }])\n", + " return df_dummy\n", + "\n", + " if X_train is None or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía. No hay datos para el torneo.\")\n", + " raise ValueError(\"La matriz está vacía. No hay datos para el torneo.\")\n", + "\n", + " logger.info(f\"=== ⚔️ FASE 18.1: Torneo Relámpago MLOps (Evaluación Extensiva) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " es_multiclase = y_train.nunique() > 2\n", + " metrica_f1 = 'f1_weighted' if es_multiclase else 'f1'\n", + "\n", + " # 🛡️ FIX MLOps: Codificación de Target para XGBoost y Neural Nets\n", + " encoder = LabelEncoder()\n", + " y_codificado = encoder.fit_transform(y_train)\n", + "\n", + " # ==========================================\n", + " # 🛡️ RAM SHIELD V2: Compresión de Tipos de Datos (Downcasting)\n", + " # ==========================================\n", + " memoria_antes = X_train.memory_usage().sum() / 1024**2\n", + " logger.info(f\" 🛡️ [RAM SHIELD] Comprimiendo matriz en memoria (Uso actual: {memoria_antes:.2f} MB)...\")\n", + "\n", + " X_torneo = X_train.copy()\n", + " for col in X_torneo.columns:\n", + " col_type = X_torneo[col].dtype\n", + " if col_type != object and not isinstance(col_type, pd.CategoricalDtype): # Respetamos categóricas\n", + " c_min = X_torneo[col].min()\n", + " c_max = X_torneo[col].max()\n", + " if str(col_type)[:3] == 'int':\n", + " if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.int8)\n", + " elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.int16)\n", + " elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.int32)\n", + " else:\n", + " # Usamos float32, evita float16 porque algunos algoritmos pierden precisión\n", + " if c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.float32)\n", + "\n", + " memoria_despues = X_torneo.memory_usage().sum() / 1024**2\n", + " reduccion = 100 * (memoria_antes - memoria_despues) / memoria_antes\n", + " logger.info(f\" ↳ Matriz comprimida a {memoria_despues:.2f} MB (Reducción del {reduccion:.1f}% de RAM). Resultados al 100%.\")\n", + "\n", + " y_torneo = y_codificado\n", + " logger.info(f\" 📊 Escaneando terreno completo: {X_torneo.shape[0]:,} filas x {X_torneo.shape[1]} features\")\n", + " logger.info(f\" 🎯 Target Multiclase: {es_multiclase}\")\n", + "\n", + " # ==========================================\n", + " # 2. EL ARSENAL EXPANDIDO (14 Algoritmos)\n", + " # ==========================================\n", + " pipe_lineal = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), LogisticRegression(random_state=seed, max_iter=1000, n_jobs=-1))\n", + " pipe_ridge = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), RidgeClassifier(random_state=seed))\n", + " pipe_sgd = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), SGDClassifier(random_state=seed, max_iter=1000, n_jobs=-1))\n", + " pipe_bayes = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), GaussianNB())\n", + "\n", + " pipe_knn = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), KNeighborsClassifier(n_jobs=-1))\n", + " pipe_svm = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), LinearSVC(random_state=seed, dual=False, max_iter=1000))\n", + "\n", + " pipe_mlp = make_pipeline(SimpleImputer(strategy='median'), MinMaxScaler(), MLPClassifier(random_state=seed, max_iter=300, early_stopping=True))\n", + "\n", + " pipe_rf = make_pipeline(SimpleImputer(strategy='median'), RandomForestClassifier(random_state=seed, n_jobs=-1))\n", + " pipe_et = make_pipeline(SimpleImputer(strategy='median'), ExtraTreesClassifier(random_state=seed, n_jobs=-1))\n", + "\n", + " pipe_ada = make_pipeline(SimpleImputer(strategy='median'), AdaBoostClassifier(random_state=seed))\n", + " pipe_gbc = make_pipeline(SimpleImputer(strategy='median'), GradientBoostingClassifier(random_state=seed))\n", + "\n", + " modelos = {\n", + " \"Regresión Logística (Lineal)\": pipe_lineal,\n", + " \"Ridge Classifier (Lineal-L2)\": pipe_ridge,\n", + " \"SGD Classifier (Gradiente Lineal)\": pipe_sgd,\n", + " \"Naive Bayes (Probabilístico)\": pipe_bayes,\n", + " \"K-Nearest Neighbors (Distancia)\": pipe_knn,\n", + " \"Linear SVM (Hiperplano)\": pipe_svm,\n", + " \"Multi-Layer Perceptron (Neural Net)\": pipe_mlp,\n", + " \"Random Forest (Bagging)\": pipe_rf,\n", + " \"Extra Trees (Bagging)\": pipe_et,\n", + " \"AdaBoost (Boosting Clásico)\": pipe_ada,\n", + " \"Gradient Boosting (Sklearn)\": pipe_gbc,\n", + " \"SK HistGradient (Boosting Moderno)\": HistGradientBoostingClassifier(random_state=seed)\n", + " }\n", + "\n", + " if lgb is not None:\n", + " modelos[\"LightGBM (Boosting Supremo)\"] = lgb.LGBMClassifier(random_state=seed, verbosity=-1, n_jobs=-1)\n", + " if xgb is not None:\n", + " modelos[\"XGBoost (Boosting Supremo)\"] = xgb.XGBClassifier(random_state=seed, use_label_encoder=False, eval_metric='logloss', n_jobs=-1)\n", + " if cb is not None:\n", + " modelos[\"CatBoost (Boosting Supremo)\"] = cb.CatBoostClassifier(random_state=seed, verbose=0, thread_count=-1)\n", + "\n", + " total_modelos = len(modelos)\n", + " logger.info(f\" 🏟️ Invocando a {total_modelos} gladiadores de todas las familias matemáticas...\")\n", + "\n", + " # ==========================================\n", + " # 3. LA ARENA (Validación Cruzada)\n", + " # ==========================================\n", + " resultados = []\n", + " cv_strat = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=seed)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " for idx, (nombre_modelo, estimador) in enumerate(modelos.items(), 1):\n", + " porcentaje = (idx / total_modelos) * 100\n", + " # 🚀 FIX MLOps: Reemplazamos el print interactivo \\r por un logger puro y robusto\n", + " logger.info(f\" ↳ Progreso: [ {idx:>2}/{total_modelos} | {porcentaje:>5.1f}% ] Evaluando: {nombre_modelo}\")\n", + "\n", + " # ⏱️ Micro-cronómetro iniciado\n", + " tiempo_inicio_modelo = time.time()\n", + "\n", + " try:\n", + " # Evaluación multidimensional\n", + " scores = cross_validate(\n", + " estimador, \n", + " X_torneo, # 🛡️ Matriz comprimida (Downcasted)\n", + " y_torneo, \n", + " cv=cv_strat, \n", + " scoring={'acc': 'accuracy', 'f1': metrica_f1},\n", + " n_jobs=1, \n", + " return_train_score=False\n", + " )\n", + "\n", + " tiempo_total_modelo = time.time() - tiempo_inicio_modelo\n", + "\n", + " resultados.append({\n", + " \"Algoritmo\": nombre_modelo,\n", + " \"F1-Score\": np.mean(scores['test_f1']),\n", + " \"F1 Std (±)\": np.std(scores['test_f1']),\n", + " \"Exactitud\": np.mean(scores['test_acc']),\n", + " \"Tiempo (s)\": tiempo_total_modelo \n", + " })\n", + " except Exception as e:\n", + " tiempo_total_modelo = time.time() - tiempo_inicio_modelo\n", + " resultados.append({\n", + " \"Algoritmo\": nombre_modelo,\n", + " \"F1-Score\": 0.0,\n", + " \"F1 Std (±)\": 0.0,\n", + " \"Exactitud\": 0.0,\n", + " \"Tiempo (s)\": tiempo_total_modelo,\n", + " \"Error\": str(e)[:30] \n", + " })\n", + "\n", + " # 🧹 Limpieza agresiva de memoria por cada modelo evaluado\n", + " gc.collect()\n", + "\n", + " # ==========================================\n", + " # 4. EL PODIO (Renderizado de Resultados)\n", + " # ==========================================\n", + " df_resultados = pd.DataFrame(resultados)\n", + "\n", + " df_resultados = df_resultados.sort_values(by=\"F1-Score\", ascending=False).reset_index(drop=True)\n", + " df_resultados.index = df_resultados.index + 1 \n", + "\n", + " df_visual = df_resultados.copy()\n", + " df_visual['F1-Score'] = df_visual['F1-Score'].apply(lambda x: f\"{x:.4f}\")\n", + " df_visual['F1 Std (±)'] = df_visual['F1 Std (±)'].apply(lambda x: f\"± {x:.4f}\")\n", + " df_visual['Exactitud'] = df_visual['Exactitud'].apply(lambda x: f\"{x:.4f}\")\n", + "\n", + " if 'Tiempo (s)' in df_visual.columns:\n", + " df_visual['Tiempo (s)'] = df_visual['Tiempo (s)'].apply(lambda x: f\"{x:.2f} s\")\n", + "\n", + " # Mantenemos el display visual para entornos de experimentación (Jupyter)\n", + " try:\n", + " display(Markdown(\"### 🏆 Ranking Oficial del Torneo Relámpago\"))\n", + " display(df_visual)\n", + " except NameError:\n", + " pass # Si corre en puro script, ignora el display visual de IPython\n", + "\n", + " top_1 = df_resultados.iloc[0]['Algoritmo']\n", + " top_2 = df_resultados.iloc[1]['Algoritmo'] if total_modelos > 1 else \"N/A\"\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🧠 DIAGNÓSTICO DEL ARQUITECTO:\")\n", + " logger.info(f\" 🥇 Campeón Baseline: '{top_1}'\")\n", + " logger.info(f\" 🥈 Subcampeón: '{top_2}'\")\n", + " logger.info(\"\\n ↳ ACCIÓN RECOMENDADA: Toma al Campeón (o al Subcampeón si prefieres velocidad)\")\n", + " logger.info(\" y pásalo por la Fase de 'Evolución Bayesiana (Optuna)' para llevarlo\")\n", + " logger.info(\" a su máximo esplendor matemático.\")\n", + " logger.info(f\"⏱️ Torneo finalizado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return df_resultados\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🚂 INICIANDO EL TORNEO RELÁMPAGO DE MODELOS <<<\")\n", + "\n", + " # Ejecutamos el Torneo Relámpago y guardamos los resultados en el Manager\n", + " df_ranking_modelos = torneo_relampago_automl(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " n_splits=5,\n", + " seed=42,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + "\n", + " # Aseguramos que el almacén de artefactos exista\n", + " if not hasattr(manager, 'artefactos'):\n", + " manager.artefactos = {}\n", + " \n", + " manager.artefactos['ranking_baseline'] = df_ranking_modelos\n", + " \n", + " if MODO_PRODUCCION:\n", + " logger.info(\"\\n📦 [MLOps] Ranking de Baseline guardado en el PipelineManager de forma segura.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error crítico en la ejecución del Torneo: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> ⏭️ [BYPASS GLOBAL] MODO_PRODUCCION es False. Fases de entrenamiento y calibración pesada omitidas. <<<\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import gc\n", + "import re\n", + "import warnings\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from typing import Tuple, Dict, Any, Optional\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "MODO_PRODUCCION = False # True = Ejecuta la Fase / False = Desactiva la función (Bypass rápido)\n", + "\n", + "try:\n", + " import optuna\n", + " import lightgbm as lgb\n", + " from sklearn.calibration import CalibratedClassifierCV, calibration_curve\n", + " from sklearn.metrics import (\n", + " f1_score, classification_report, average_precision_score,\n", + " precision_recall_curve, confusion_matrix, accuracy_score, brier_score_loss\n", + " )\n", + " from sklearn.model_selection import StratifiedKFold, GroupKFold\n", + " import joblib\n", + "except ImportError:\n", + " # Se mantiene print directo para errores críticos antes de inicializar el entorno\n", + " logger.error(\"🛑 MLOps Warning: Faltan librerías clave para la evolución del modelo.\")\n", + " logger.error(\" Ejecuta: !pip install optuna lightgbm scikit-learn joblib matplotlib seaborn\")\n", + "\n", + "# ==========================================\n", + "# 1. FASE 19.2: CALIBRACIÓN ISOTÓNICA / PLATT (SILENCIOSA)\n", + "# ==========================================\n", + "def calibrar_oraculo_mlops(\n", + " modelo_base,\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " cv: int = 5,\n", + " modo_silencioso: bool = False,\n", + " modo_produccion: bool = True\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.2] Calibración de Probabilidades.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Calibración omitida, retornando modelo base.\")\n", + " return modelo_base\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(\"=== 💉 FASE 19.2: Calibración de Probabilidades (Modo Silencioso) ===\")\n", + " inicio_timer = time.time()\n", + " es_multiclase = False\n", + " if y_train.nunique() > 2:\n", + " es_multiclase = True\n", + " if not modo_silencioso:\n", + " logger.info(\" ⚠️ [INFO] Target Multiclase. Se aplicará calibración One-Vs-Rest implícita.\")\n", + "\n", + " n_muestras = len(X_train)\n", + " metodo_optimo = 'sigmoid'\n", + " if n_muestras >= 1000:\n", + " metodo_optimo = 'isotonic'\n", + " if not modo_silencioso:\n", + " logger.info(f\" 🧠 Motor Seleccionado: '{metodo_optimo.upper()}' (Basado en {n_muestras:,} registros).\")\n", + " logger.info(\" ⚙️ Calculando Brier Score original...\")\n", + "\n", + " if not hasattr(modelo_base, \"predict_proba\"):\n", + " logger.error(\"🛑 El modelo base no escupe probabilidades.\")\n", + " raise ValueError(\"El modelo base no escupe probabilidades.\")\n", + "\n", + " brier_antes = 0.0\n", + " if not es_multiclase:\n", + " proba_test_antes = modelo_base.predict_proba(X_test)[:, 1]\n", + " brier_antes = brier_score_loss(y_test, proba_test_antes)\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" 🔬 Entrenando Calibrador con validación cruzada de {cv} folds...\")\n", + " oraculo_calibrado = CalibratedClassifierCV(\n", + " estimator=modelo_base,\n", + " method=metodo_optimo,\n", + " cv=cv,\n", + " n_jobs=-1\n", + " )\n", + " oraculo_calibrado.fit(X_train, y_train)\n", + " if not es_multiclase:\n", + " proba_test_despues = oraculo_calibrado.predict_proba(X_test)[:, 1]\n", + " brier_despues = brier_score_loss(y_test, proba_test_despues)\n", + " mejora = brier_antes - brier_despues\n", + "\n", + " if not modo_silencioso:\n", + " if MODO_VISUAL: \n", + " display(Markdown(f\"### 📋 Reporte Médico de Calibración\"))\n", + " else: \n", + " logger.info(\"### 📋 Reporte Médico de Calibración\")\n", + "\n", + " logger.info(f\" • Brier Score PRE-Calibración: {brier_antes:.4f}\")\n", + " logger.info(f\" • Brier Score POST-Calibración: {brier_despues:.4f}\")\n", + " if mejora > 0.01:\n", + " logger.info(f\" 🟢 ÉXITO ROTUNDO: La mentira matemática se redujo en {mejora:.4f} puntos de Brier.\")\n", + " if mejora <= 0.01:\n", + " if mejora > 0:\n", + " logger.info(f\" 🟡 ÉXITO LEVE: El modelo ya era bastante honesto. Mejora de {mejora:.4f} puntos.\")\n", + " if mejora <= 0:\n", + " logger.warning(f\" 🔴 ALERTA: La calibración no mejoró el Brier Score.\")\n", + "\n", + " if not es_multiclase:\n", + " del proba_test_antes, proba_test_despues\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\"⏱️ Cirugía completada en {time.time() - inicio_timer:.3f}s\")\n", + " gc.collect()\n", + " return oraculo_calibrado\n", + "\n", + "# ==========================================\n", + "# 2. MOTOR AUTO-ML: EVOLUCIÓN BAYESIANA (OPTUNA)\n", + "# ==========================================\n", + "def forjar_oraculo_lightgbm(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: Optional[pd.DataFrame] = None,\n", + " y_test: Optional[pd.Series] = None,\n", + " rutas: Optional[Dict] = None,\n", + " pesos_train: Optional[pd.Series] = None,\n", + " grupos_cv: Optional[pd.Series] = None,\n", + " n_trials: int = 40,\n", + " n_splits: int = 5,\n", + " seed_estatica: int = 42,\n", + " directorio_salida: str = \"mlops_activos\",\n", + " modo_silencioso: bool = False,\n", + " modo_produccion: bool = True\n", + ") -> Tuple[Optional[lgb.LGBMClassifier], float, Dict[str, Any]]:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.3] Forja del Oráculo: Optimización Bayesiana + CV.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " if not modo_silencioso: logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Entrenando modelo LightGBM base (rápido).\")\n", + " modelo_base = lgb.LGBMClassifier(random_state=seed_estatica, n_estimators=50, verbosity=-1)\n", + "\n", + " # Necesitamos purgar columnas troya incluso en el bypass para que no explote\n", + " X_tr_copy = X_train.copy()\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " cols_trampa = [col for col in X_tr_copy.columns if patron_troya.search(col)]\n", + " if cols_trampa: X_tr_copy.drop(columns=cols_trampa, inplace=True)\n", + "\n", + " cat_features = [c for c in (rutas or {}).get('cat_vars', []) if c in X_tr_copy.columns]\n", + " modelo_base.fit(X_tr_copy, y_train, categorical_feature=cat_features if cat_features else 'auto')\n", + " return modelo_base, 0.50, {}\n", + "\n", + " if X_train is None or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía.\")\n", + " raise ValueError(\"La matriz está vacía.\")\n", + "\n", + " X_tr_copy = X_train.copy()\n", + " X_te_copy = None\n", + " if X_test is not None:\n", + " X_te_copy = X_test.copy()\n", + "\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " cols_trampa = [col for col in X_tr_copy.columns if patron_troya.search(col)]\n", + " if cols_trampa:\n", + " if not modo_silencioso:\n", + " logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(cols_trampa)} variables con Target Leakage...\")\n", + " X_tr_copy.drop(columns=cols_trampa, inplace=True)\n", + " if X_te_copy is not None:\n", + " X_te_copy.drop(columns=[c for c in cols_trampa if c in X_te_copy.columns], inplace=True)\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\"=== 🧬 FASE 18.3: Evolución del Oráculo (Optuna - {n_trials} Mutaciones) ===\")\n", + " rutas = rutas or {}\n", + " warnings.filterwarnings(\"ignore\")\n", + "\n", + " num_clases = y_train.nunique()\n", + " es_multiclase = False\n", + " if num_clases > 2:\n", + " es_multiclase = True\n", + " cat_features = []\n", + " if 'cat_vars' in rutas:\n", + " cat_features = [c for c in rutas['cat_vars'] if c in X_tr_copy.columns]\n", + " config_bagging = {}\n", + " if 'asymmetric_bagging' in rutas:\n", + " config_bagging = rutas['asymmetric_bagging'].copy()\n", + " clase_minoritaria = None\n", + " if not es_multiclase:\n", + " conteo = y_train.value_counts()\n", + " clase_minoritaria = conteo.idxmin()\n", + "\n", + " optuna.logging.set_verbosity(optuna.logging.WARNING)\n", + "\n", + " nucleos_disponibles = -1\n", + " if os.cpu_count():\n", + " nucleos_disponibles = max(1, os.cpu_count() - 1)\n", + "\n", + " def objective(trial):\n", + " param = {\n", + " 'random_state': seed_estatica,\n", + " 'verbosity': -1,\n", + " 'boosting_type': 'gbdt',\n", + " 'n_estimators': 800,\n", + " 'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.1, log=True),\n", + " 'num_leaves': trial.suggest_int('num_leaves', 20, 100),\n", + " 'max_depth': trial.suggest_int('max_depth', 3, 10),\n", + " 'min_child_samples': trial.suggest_int('min_child_samples', 20, 120),\n", + " 'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0),\n", + " 'reg_alpha': trial.suggest_float('reg_alpha', 1e-4, 10.0, log=True),\n", + " 'reg_lambda': trial.suggest_float('reg_lambda', 1e-4, 10.0, log=True),\n", + " 'n_jobs': nucleos_disponibles\n", + " }\n", + "\n", + " if es_multiclase:\n", + " param['objective'] = 'multiclass'\n", + " param['metric'] = 'multi_logloss'\n", + " param['num_class'] = num_clases\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + " if not es_multiclase:\n", + " param['objective'] = 'binary'\n", + " param['metric'] = 'binary_logloss'\n", + "\n", + " if es_multiclase:\n", + " if config_bagging:\n", + " if 'class_weight' in config_bagging:\n", + " param['class_weight'] = config_bagging['class_weight']\n", + "\n", + " if not es_multiclase:\n", + " if config_bagging:\n", + " if clase_minoritaria == 1:\n", + " param['pos_bagging_fraction'] = 1.0\n", + " param['neg_bagging_fraction'] = trial.suggest_float('neg_bagging_fraction', 0.01, 1.0)\n", + " if clase_minoritaria != 1:\n", + " param['pos_bagging_fraction'] = trial.suggest_float('pos_bagging_fraction', 0.01, 1.0)\n", + " param['neg_bagging_fraction'] = 1.0\n", + " param['bagging_freq'] = trial.suggest_int('bagging_freq', 1, 7)\n", + " if not config_bagging:\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + "\n", + " cv = None\n", + " splits = []\n", + " if grupos_cv is not None:\n", + " cv = GroupKFold(n_splits=n_splits)\n", + " splits = list(cv.split(X_tr_copy, y_train, groups=grupos_cv))\n", + " if grupos_cv is None:\n", + " cv = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=seed_estatica)\n", + " splits = list(cv.split(X_tr_copy, y_train))\n", + " metricas_fold = []\n", + "\n", + " for train_idx, val_idx in splits:\n", + " X_tr_fold = X_tr_copy.iloc[train_idx]\n", + " y_tr_fold = y_train.iloc[train_idx]\n", + " X_va_fold = X_tr_copy.iloc[val_idx]\n", + " y_va_fold = y_train.iloc[val_idx]\n", + " w_tr = None\n", + " if pesos_train is not None:\n", + " w_tr = pesos_train.iloc[train_idx]\n", + " cat_feat_param = 'auto'\n", + " if cat_features:\n", + " cat_feat_param = cat_features\n", + " modelo = lgb.LGBMClassifier(**param)\n", + " modelo.fit(X_tr_fold, y_tr_fold, sample_weight=w_tr, eval_set=[(X_va_fold, y_va_fold)],\n", + " callbacks=[lgb.early_stopping(30, verbose=False)], categorical_feature=cat_feat_param)\n", + "\n", + " score = 0.0\n", + " if es_multiclase:\n", + " score = float(f1_score(y_va_fold, modelo.predict(X_va_fold), average='weighted'))\n", + " if not es_multiclase:\n", + " probas = modelo.predict_proba(X_va_fold)[:, 1]\n", + " score = float(average_precision_score(y_va_fold, probas))\n", + " metricas_fold.append(score)\n", + " del X_tr_fold, y_tr_fold, X_va_fold, y_va_fold, modelo\n", + " gc.collect()\n", + "\n", + " return float(np.mean(metricas_fold))\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" ⚙️ Iniciando simulaciones bayesianas ({n_trials * n_splits} entrenamientos totales)...\")\n", + " sampler_determinista = optuna.samplers.TPESampler(seed=seed_estatica)\n", + " estudio = optuna.create_study(direction='maximize', study_name=\"Oraculo_LGBM_CV\", sampler=sampler_determinista)\n", + " estudio.optimize(objective, n_trials=n_trials, n_jobs=1, callbacks=[lambda s, t: gc.collect()])\n", + "\n", + " mejores_params = estudio.best_params\n", + " parametros_finales = mejores_params.copy()\n", + " parametros_finales.update({'n_estimators': 500, 'random_state': seed_estatica, 'verbosity': -1, 'n_jobs': nucleos_disponibles})\n", + " if es_multiclase:\n", + " parametros_finales['num_class'] = num_clases\n", + " if config_bagging:\n", + " if 'class_weight' in config_bagging:\n", + " parametros_finales['class_weight'] = config_bagging['class_weight']\n", + "\n", + " if not es_multiclase:\n", + " if config_bagging:\n", + " for k in ['subsample', 'class_weight', 'scale_pos_weight']:\n", + " parametros_finales.pop(k, None)\n", + "\n", + " cat_feat_param_final = 'auto'\n", + " if cat_features:\n", + " cat_feat_param_final = cat_features\n", + " oraculo_final = lgb.LGBMClassifier(**parametros_finales)\n", + " oraculo_final.fit(X_tr_copy, y_train, sample_weight=pesos_train, categorical_feature=cat_feat_param_final)\n", + "\n", + " umbral_final = 0.50\n", + " if not es_multiclase:\n", + " probas_train = oraculo_final.predict_proba(X_tr_copy)[:, 1]\n", + " precisiones, recalls, thresholds = precision_recall_curve(y_train, probas_train)\n", + " P = y_train.sum()\n", + " N_neg = len(y_train) - P\n", + " Total = len(y_train)\n", + " prec_safe = np.where(precisiones[:-1] == 0, 1e-10, precisiones[:-1])\n", + " TP = recalls[:-1] * P\n", + " FP = (TP / prec_safe) - TP\n", + " TN = N_neg - FP\n", + " accuracies = (TP + TN) / Total\n", + " ix = np.argmax(accuracies)\n", + " if ix < len(thresholds):\n", + " umbral_final = float(thresholds[ix])\n", + " if ix >= len(thresholds):\n", + " umbral_final = 0.50\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" ⚖️ Umbral Óptimo de Entrenamiento: {umbral_final:.4f}\")\n", + " if not os.path.exists(directorio_salida):\n", + " os.makedirs(directorio_salida)\n", + " ruta_modelo = os.path.join(directorio_salida, \"oraculo_lightgbm.pkl\")\n", + " joblib.dump(oraculo_final, ruta_modelo)\n", + " rutas['umbral_decision_optimo'] = float(umbral_final)\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" 💾 Oráculo guardado en Caja Fuerte MLOps: {ruta_modelo}\")\n", + "\n", + " del estudio\n", + " gc.collect()\n", + " return oraculo_final, float(umbral_final), mejores_params\n", + "\n", + "# ==========================================\n", + "# 3. MOTOR AUTO-ML: EXPLORADOR DE ENTROPÍA (DOBLE OBJETIVO: F1 + EXACTITUD)\n", + "# ==========================================\n", + "def explorador_entropia_oraculo(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " rutas: Dict,\n", + " pesos_train: Optional[pd.Series] = None,\n", + " grupos_cv: Optional[pd.Series] = None,\n", + " max_semillas_a_probar: int = 12,\n", + " trials_por_semilla: int = 40,\n", + " modo_produccion: bool = True\n", + ") -> int:\n", + " \"\"\"\n", + " [NUEVO] Explorador de Entropía Táctico (Dinámico y Protegido).\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Explorador de Entropía desactivado. Retornando semilla por defecto (42).\")\n", + " return 42\n", + "\n", + " logger.info(\"=== 🎲 MOTOR DE ENTROPÍA: Buscando Semilla por F1-Score Máximo (+ Desempate por Exactitud) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " mejor_semilla = 42\n", + " mejor_f1 = -1.0\n", + " mejor_acc = -1.0\n", + "\n", + " np.random.seed(42)\n", + " arsenal_semillas = [42] + list(np.random.randint(1, 99999, size=max_semillas_a_probar - 1))\n", + " total_semillas = len(arsenal_semillas)\n", + "\n", + " logger.info(f\" 🔍 Explorando {total_semillas} realidades estocásticas dinámicas (Full Power: {trials_por_semilla} trials)...\")\n", + "\n", + " optuna.logging.set_verbosity(optuna.logging.ERROR)\n", + " warnings.filterwarnings(\"ignore\")\n", + " es_multiclase = False\n", + " if y_test.nunique() > 2:\n", + " es_multiclase = True\n", + "\n", + " for idx, semilla in enumerate(arsenal_semillas, 1):\n", + " try:\n", + " # 1. Forja Cruda\n", + " modelo_crudo, _, _ = forjar_oraculo_lightgbm(\n", + " X_train=X_train, y_train=y_train, X_test=None, y_test=None,\n", + " rutas=rutas, pesos_train=pesos_train, grupos_cv=grupos_cv,\n", + " n_trials=trials_por_semilla, n_splits=5, seed_estatica=semilla,\n", + " modo_silencioso=True,\n", + " modo_produccion=True # Forzamos ejecución interna para la simulación\n", + " )\n", + "\n", + " # 2. Calibración Matemática Silenciosa\n", + " modelo_temp = calibrar_oraculo_mlops(\n", + " modelo_base=modelo_crudo,\n", + " X_train=X_train, y_train=y_train, X_test=X_test, y_test=y_test,\n", + " cv=5, modo_silencioso=True,\n", + " modo_produccion=True # Forzamos ejecución interna para la simulación\n", + " )\n", + "\n", + " f1_actual = 0.0\n", + " acc_actual = 0.0\n", + " # 3. Cálculo Dual de Métricas en el modelo calibrado\n", + " if es_multiclase:\n", + " preds = modelo_temp.predict(X_test)\n", + " f1_actual = float(f1_score(y_test, preds, average='weighted'))\n", + " acc_actual = float(accuracy_score(y_test, preds))\n", + "\n", + " if not es_multiclase:\n", + " proba_test = modelo_temp.predict_proba(X_test)[:, 1]\n", + " precisiones, recalls, _ = precision_recall_curve(y_test, proba_test)\n", + " # Encontramos el índice del F1-Score máximo\n", + " f1_scores = 2 * (precisiones[:-1] * recalls[:-1]) / (precisiones[:-1] + recalls[:-1] + 1e-10)\n", + " indice_optimo = np.argmax(f1_scores)\n", + " f1_actual = float(f1_scores[indice_optimo])\n", + " # En ese mismo índice exacto, calculamos cuál es la Exactitud Global\n", + " P = y_test.sum()\n", + " N_neg = len(y_test) - P\n", + " Total = len(y_test)\n", + " prec_safe = np.where(precisiones[:-1] == 0, 1e-10, precisiones[:-1])\n", + " TP = recalls[:-1] * P\n", + " FP = (TP / prec_safe) - TP\n", + " TN = N_neg - FP\n", + " accuracies = (TP + TN) / Total\n", + " acc_actual = float(accuracies[indice_optimo])\n", + "\n", + " # 🚀 LÓGICA DE NEGOCIO: Desempate Inteligente\n", + " es_mejor_modelo = False\n", + " margen_empate = 1e-5\n", + " if f1_actual > mejor_f1 + margen_empate:\n", + " es_mejor_modelo = True\n", + " elif abs(f1_actual - mejor_f1) <= margen_empate:\n", + " # ¡Empate en F1! Desempatamos con la exactitud\n", + " if acc_actual > mejor_acc:\n", + " es_mejor_modelo = True\n", + "\n", + " if es_mejor_modelo:\n", + " mejor_f1 = f1_actual\n", + " mejor_acc = acc_actual\n", + " mejor_semilla = int(semilla)\n", + " logger.info(f\" ↳ [NUEVA MEJOR SEMILLA] Progreso: {idx}/{total_semillas}. Semilla [{semilla}] -> F1: {f1_actual:.4f} | Acc: {acc_actual:.4f}\")\n", + " elif idx % 10 == 0:\n", + " logger.debug(f\" ↳ Progreso: {idx}/{total_semillas}. Semilla actual [{semilla}] (No superó máximo).\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\" ↳ ⚠️ Error evaluando semilla {semilla}: {e}\")\n", + "\n", + " try:\n", + " del modelo_temp, proba_test, precisiones, recalls, f1_scores, accuracies, modelo_crudo\n", + " except NameError:\n", + " pass\n", + "\n", + " gc.collect()\n", + " time.sleep(1.5)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 👑 SEMILLA MAESTRA ENCONTRADA: {mejor_semilla} (F1: {mejor_f1:.4f} | Exactitud: {mejor_acc:.4f})\")\n", + " logger.info(f\"⏱️ Búsqueda de Entropía completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " optuna.logging.set_verbosity(optuna.logging.WARNING)\n", + " return mejor_semilla\n", + "\n", + "# ==========================================\n", + "# 4. OPTIMIZADOR VISUAL Y MATRICES (UNIFICADO)\n", + "# ==========================================\n", + "def optimizador_visual_umbral_matrices(\n", + " modelo_calibrado,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " modo_produccion: bool = True\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.3 & 19.4] Escáner Vectorizado y Comparativa Visual.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Optimizador Visual desactivado. Retornando umbral por defecto (0.50).\")\n", + " return 0.50\n", + "\n", + " logger.info(\"=== 🎛️ FASE 19.3: Escáner Vectorizado y Comparativa Táctica ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if not hasattr(modelo_calibrado, \"predict_proba\"):\n", + " logger.error(\"🛑 Error Crítico: El modelo no soporta probabilidades.\")\n", + " raise ValueError(\"El modelo no soporta probabilidades.\")\n", + "\n", + " es_multiclase = False\n", + " if y_test.nunique() > 2:\n", + " es_multiclase = True\n", + "\n", + " if es_multiclase:\n", + " logger.info(\" ⚠️ [INFO] Target Multiclase detectado. Threshold Tuning omitido.\")\n", + " preds_viejas = modelo_calibrado.predict(X_test)\n", + " preds_nuevas = preds_viejas\n", + " umbral_oro = 0.50\n", + "\n", + " if not es_multiclase:\n", + " logger.info(\" ⚙️ Extrayendo probabilidades calibradas del Test Set...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + "\n", + " logger.info(\" 🔍 Calculando la frontera de Pareto para MÁXIMA DETECCIÓN (F1-Score)...\")\n", + " precisiones, recalls, umbrales = precision_recall_curve(y_test, proba_test)\n", + " # 🚀 LÓGICA DE NEGOCIO RESTAURADA: Optimizar por F1-Score (Bypass SMOTE real)\n", + " f1_scores = 2 * (precisiones[:-1] * recalls[:-1]) / (precisiones[:-1] + recalls[:-1] + 1e-10)\n", + " indice_optimo = np.argmax(f1_scores)\n", + " umbral_oro = float(umbrales[indice_optimo])\n", + "\n", + " logger.info(f\" 🏆 ¡Punto de Corte Encontrado! El Umbral de Oro es: {umbral_oro:.4f}\")\n", + "\n", + " # Generación de predicciones\n", + " preds_viejas = (proba_test >= 0.50).astype(int)\n", + " preds_nuevas = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # ----------------------------------------------------\n", + " # LA DOBLE MATRIZ DE CONFUSIÓN\n", + " # ----------------------------------------------------\n", + " logger.info(\" 📊 Renderizando Comparativa de Matrices de Confusión...\")\n", + " f1_viejo = 0.0\n", + " f1_nuevo = 0.0\n", + " if es_multiclase:\n", + " f1_viejo = f1_score(y_test, preds_viejas, average='weighted')\n", + " f1_nuevo = f1_score(y_test, preds_nuevas, average='weighted')\n", + " if not es_multiclase:\n", + " f1_viejo = f1_score(y_test, preds_viejas)\n", + " f1_nuevo = f1_score(y_test, preds_nuevas)\n", + "\n", + " acc_vieja = accuracy_score(y_test, preds_viejas)\n", + " acc_nueva = accuracy_score(y_test, preds_nuevas)\n", + "\n", + " cm_vieja = confusion_matrix(y_test, preds_viejas)\n", + " cm_nueva = confusion_matrix(y_test, preds_nuevas)\n", + "\n", + " if es_multiclase:\n", + " etiquetas_vieja = cm_vieja.astype(str)\n", + " etiquetas_nueva = cm_nueva.astype(str)\n", + " if not es_multiclase:\n", + " tn1, fp1, fn1, tp1 = cm_vieja.ravel()\n", + " etiquetas_vieja = np.array([\n", + " [f\"TN\\n{tn1:,}\\n(Pobres bien)\", f\"FP\\n{fp1:,}\\n(Alarmas)\"],\n", + " [f\"FN\\n{fn1:,}\\n(Ricos fuga)\", f\"TP\\n{tp1:,}\\n(Ricos atrapados)\"]\n", + " ])\n", + " tn2, fp2, fn2, tp2 = cm_nueva.ravel()\n", + " etiquetas_nueva = np.array([\n", + " [f\"TN\\n{tn2:,}\\n(Pobres bien)\", f\"FP\\n{fp2:,}\\n(Alarmas)\"],\n", + " [f\"FN\\n{fn2:,}\\n(Ricos fuga)\", f\"TP\\n{tp2:,}\\n(ÉXITO)\"]\n", + " ])\n", + "\n", + " sns.set_theme(style=\"white\")\n", + " fig2, axes = plt.subplots(1, 2, figsize=(16, 7))\n", + "\n", + " # Matriz 1: Base (Umbral ciego)\n", + " sns.heatmap(cm_vieja, annot=etiquetas_vieja, fmt=\"\", cmap=\"Reds\", cbar=False,\n", + " annot_kws={\"size\": 11, \"weight\": \"bold\"}, linewidths=2, linecolor='black', ax=axes[0])\n", + " axes[0].set_title(f\"Base (Umbral ciego 0.5000)\\nExactitud: {acc_vieja:.4f} | F1: {f1_viejo:.4f}\", fontsize=13, pad=15, fontweight='bold')\n", + "\n", + " # Matriz 2: Optimizada (Umbral exacto)\n", + " sns.heatmap(cm_nueva, annot=etiquetas_nueva, fmt=\"\", cmap=\"Blues\", cbar=False,\n", + " annot_kws={\"size\": 11, \"weight\": \"bold\"}, linewidths=2, linecolor='black', ax=axes[1])\n", + " axes[1].set_title(f\"Optimizada (Umbral exacto {umbral_oro:.4f})\\nExactitud: {acc_nueva:.4f} | F1: {f1_nuevo:.4f}\", fontsize=13, pad=15, fontweight='bold')\n", + "\n", + " plt.tight_layout()\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig2)\n", + "\n", + " # ----------------------------------------------------\n", + " # REPORTE EJECUTIVO FINAL\n", + " # ----------------------------------------------------\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📋 Impacto de la Guillotina Dinámica\"))\n", + " else:\n", + " logger.info(\"### 📋 Impacto de la Guillotina Dinámica\")\n", + "\n", + " logger.info(f\" 🔴 ANTES (Umbral 0.50): Exactitud = {acc_vieja:.4f} | F1-Score = {f1_viejo:.4f}\")\n", + " logger.info(f\" 🟢 AHORA (Umbral {umbral_oro:.4f}): Exactitud = {acc_nueva:.4f} | F1-Score = {f1_nuevo:.4f}\")\n", + "\n", + " mejora_acc = acc_nueva - acc_vieja\n", + " if mejora_acc > 0.001:\n", + " logger.info(f\" 🚀 ¡Incremento garantizado de +{mejora_acc:.4f} puntos en Exactitud Global!\")\n", + "\n", + " logger.info(\"\\n 📋 Reporte Final de Clasificación (Listo para Producción):\\n\" + classification_report(y_test, preds_nuevas))\n", + " logger.info(f\"⏱️ Análisis completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " if not es_multiclase:\n", + " del proba_test, precisiones, recalls, umbrales\n", + " gc.collect()\n", + "\n", + " return umbral_oro\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train', 'X_test' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if MODO_PRODUCCION:\n", + " logger.info(\">>> 🧠 DESATANDO PIPELINE: BÚSQUEDA DE SEMILLA, FORJA, CALIBRACIÓN Y UMBRAL <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 1. Búsqueda de Semilla (Basada en F1-Score Máximo + Desempate Exactitud)\n", + " semilla_ganadora_optuna = explorador_entropia_oraculo(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " rutas=getattr(manager, 'rutas', {}),\n", + " pesos_train=getattr(manager, 'pesos_train', None),\n", + " grupos_cv=getattr(manager, 'grupos_cv', None),\n", + " max_semillas_a_probar=30,\n", + " trials_por_semilla=40,\n", + " modo_produccion=MODO_PRODUCCION\n", + " )\n", + "\n", + " logger.info(f\"\\n>>> 🏆 INICIANDO ENTRENAMIENTO FINAL CON SEMILLA: {semilla_ganadora_optuna} <<<\")\n", + " # 2. Entrenamiento Crudo\n", + " modelo_crudo, umbral_base, adn_campeon = forjar_oraculo_lightgbm(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " rutas=getattr(manager, 'rutas', {}),\n", + " pesos_train=getattr(manager, 'pesos_train', None),\n", + " grupos_cv=getattr(manager, 'grupos_cv', None),\n", + " n_trials=40,\n", + " n_splits=5,\n", + " seed_estatica=semilla_ganadora_optuna,\n", + " modo_produccion=MODO_PRODUCCION\n", + " )\n", + "\n", + " # Aseguramos el almacén de modelos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " # Utilizamos la función nativa del manager si existe, o asignamos al diccionario\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_lightgbm', modelo_crudo)\n", + " else:\n", + " manager.modelos_preprocesamiento['oraculo_lightgbm'] = modelo_crudo\n", + "\n", + " # 3. Calibración Silenciosa\n", + " oraculo_calibrado_definitivo = calibrar_oraculo_mlops(\n", + " modelo_base=modelo_crudo,\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " cv=5,\n", + " modo_silencioso=True,\n", + " modo_produccion=MODO_PRODUCCION\n", + " )\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_calibrado', oraculo_calibrado_definitivo)\n", + " else:\n", + " manager.modelos_preprocesamiento['oraculo_calibrado'] = oraculo_calibrado_definitivo\n", + "\n", + " # 4. Optimización Visual y Matrices\n", + " umbral_definitivo = optimizador_visual_umbral_matrices(\n", + " modelo_calibrado=oraculo_calibrado_definitivo,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + "\n", + " if not hasattr(manager, 'artefactos'):\n", + " manager.artefactos = {}\n", + " manager.artefactos['umbral_decision'] = umbral_definitivo\n", + " logger.info(f\"\\n 💾 Artefacto Guardado: 'umbral_decision' ({umbral_definitivo:.4f})\")\n", + "\n", + " else:\n", + " logger.info(\">>> ⏭️ [BYPASS GLOBAL] MODO_PRODUCCION es False. Fases de entrenamiento y calibración pesada omitidas. <<<\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en la ejecución maestra: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🧠 DESATANDO OPTUNA CON VALIDACIÓN CRUZADA (SEMILLA MANUAL: 87499) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 🧬 FASE 18.3: Evolución del Oráculo (Optuna - 40 Mutaciones) ===\n", + " ⚙️ Iniciando simulaciones bayesianas (200 entrenamientos totales)...\n", + " ⚖️ Umbral Óptimo de Entrenamiento: 0.6998\n", + " 💾 Oráculo guardado en Caja Fuerte MLOps: mlops_activos\\oraculo_lightgbm.pkl\n", + "--------------------------------------------------------------------------------\n", + "\n", + "=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\n", + " ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro (0.5000)...\n", + " 📊 Procesando Matriz para Presentación a Negocio...\n", + "\n", + "### 📋 Resumen Ejecutivo para Stakeholders\n", + " 🟢 ACIERTOS TOTALES: 4,950 pacientes clasificados correctamente.\n", + " 🔴 ERRORES TOTALES: 1,558 pacientes clasificados incorrectamente.\n", + " ↳ De 1,568 personas ricas reales, el modelo logró atrapar a 1,388 (Recall).\n", + " ↳ De 2,766 veces que el modelo gritó '¡Es rico!', acertó 1,388 veces (Precisión).\n", + "\n", + " 🎯 F1-Score: 0.6405\n", + "\n", + " 📋 Reporte de Clasificación Final (Listo para Producción):\n", + " precision recall f1-score support\n", + "\n", + " 0 0.95 0.72 0.82 4940\n", + " 1 0.50 0.89 0.64 1568\n", + "\n", + " accuracy 0.76 6508\n", + " macro avg 0.73 0.80 0.73 6508\n", + "weighted avg 0.84 0.76 0.78 6508\n", + "\n", + "⏱️ Análisis completado en 0.165s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import gc\n", + "import re\n", + "import warnings\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from typing import Tuple, Dict, Any, Optional\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "try:\n", + " import optuna\n", + " import lightgbm as lgb\n", + " from sklearn.metrics import f1_score, classification_report, average_precision_score, precision_recall_curve, confusion_matrix\n", + " from sklearn.model_selection import StratifiedKFold, GroupKFold\n", + " import joblib\n", + "except ImportError:\n", + " # Se mantiene print directo para errores críticos antes de inicializar el entorno\n", + " logger.error(\"🛑 MLOps Warning: Faltan librerías clave para la evolución del modelo.\")\n", + " logger.error(\" Ejecuta: !pip install optuna lightgbm scikit-learn joblib matplotlib seaborn\")\n", + "\n", + "\n", + "# ==========================================\n", + "# 1. RENDERIZADOR DE MATRIZ DE CONFUSIÓN\n", + "# ==========================================\n", + "def renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado, \n", + " umbral_oro: float, \n", + " X_test: pd.DataFrame, \n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.4] Matriz de Confusión Táctica (UI/UX para Negocio).\n", + " - Renderiza matriz gráfica\n", + " - Registra reporte de clasificación tabular en Logs de Producción\n", + " \"\"\"\n", + " logger.info(\"\\n=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " logger.info(f\" ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro ({umbral_oro:.4f})...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + " preds_finales = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # 🚀 FIX: Calculamos la variable F1-Score solicitada\n", + " f1_actual = f1_score(y_test, preds_finales)\n", + "\n", + " cm = confusion_matrix(y_test, preds_finales)\n", + " tn, fp, fn, tp = cm.ravel()\n", + "\n", + " total = np.sum(cm)\n", + " tasa_acierto = (tp + tn) / total\n", + "\n", + " logger.info(\" 📊 Procesando Matriz para Presentación a Negocio...\")\n", + "\n", + " etiquetas = np.array([\n", + " [f\"Verdaderos Negativos (TN)\\n{tn:,}\\n(Pobres bien clasificados)\", \n", + " f\"Falsos Positivos (FP)\\n{fp:,}\\n(Falsas Alarmas - Alerta)\"],\n", + " [f\"Falsos Negativos (FN)\\n{fn:,}\\n(Ricos que escaparon)\", \n", + " f\"Verdaderos Positivos (TP)\\n{tp:,}\\n(Ricos atrapados - ÉXITO)\"]\n", + " ])\n", + "\n", + " sns.set_theme(style=\"white\")\n", + " fig, ax = plt.subplots(figsize=(9, 7))\n", + "\n", + " sns.heatmap(\n", + " cm, annot=etiquetas, fmt=\"\", cmap=\"Blues\", cbar=False, \n", + " annot_kws={\"size\": 12, \"weight\": \"bold\"}, linewidths=2, linecolor='black', ax=ax\n", + " )\n", + "\n", + " ax.set_title(f\"Radiografía del Modelo en el Mundo Real\\n(Umbral de Decisión: {umbral_oro:.4f} | Exactitud Global: {tasa_acierto:.2%})\", \n", + " fontsize=14, pad=20, fontweight='bold')\n", + " ax.set_xlabel('Predicción del Oráculo', fontsize=12, fontweight='bold', labelpad=15)\n", + " ax.set_ylabel('Realidad (Lo que pasó)', fontsize=12, fontweight='bold', labelpad=15)\n", + "\n", + " ax.set_xticklabels(['Predijo <=50K (Pobre)', 'Predijo >50K (Rico)'], fontsize=11)\n", + " ax.set_yticklabels(['Realmente <=50K', 'Realmente >50K'], fontsize=11, rotation=0)\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Cláusula de Seguridad Visual MLOps\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " display(Markdown(\"### 📋 Resumen Ejecutivo para Stakeholders\"))\n", + " else:\n", + " plt.close(fig)\n", + " logger.info(\"\\n### 📋 Resumen Ejecutivo para Stakeholders\")\n", + " \n", + " logger.info(f\" 🟢 ACIERTOS TOTALES: {tp + tn:,} pacientes clasificados correctamente.\")\n", + " logger.warning(f\" 🔴 ERRORES TOTALES: {fp + fn:,} pacientes clasificados incorrectamente.\")\n", + " logger.info(f\" ↳ De {tp + fn:,} personas ricas reales, el modelo logró atrapar a {tp:,} (Recall).\")\n", + " logger.info(f\" ↳ De {tp + fp:,} veces que el modelo gritó '¡Es rico!', acertó {tp:,} veces (Precisión).\")\n", + "\n", + " # 🚀 FIX: Mostramos el F1-Score exacto como pediste\n", + " logger.info(f\"\\n 🎯 F1-Score: {f1_actual:.4f}\")\n", + "\n", + " # Inyección del Reporte Tabular Estándar\n", + " logger.info(\"\\n 📋 Reporte de Clasificación Final (Listo para Producción):\\n\" + classification_report(y_test, preds_finales))\n", + "\n", + " logger.info(f\"⏱️ Análisis completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return cm, tasa_acierto\n", + "\n", + "\n", + "# ==========================================\n", + "# 2. MOTOR AUTO-ML: EVOLUCIÓN BAYESIANA (OPTUNA)\n", + "# ==========================================\n", + "def forjar_oraculo_lightgbm(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: Optional[pd.DataFrame] = None, \n", + " y_test: Optional[pd.Series] = None,\n", + " rutas: Optional[Dict] = None, \n", + " pesos_train: Optional[pd.Series] = None, \n", + " grupos_cv: Optional[pd.Series] = None, \n", + " n_trials: int = 40,\n", + " n_splits: int = 5, \n", + " seed_estatica: int = 42, \n", + " directorio_salida: str = \"mlops_activos\",\n", + " modo_silencioso: bool = False \n", + ") -> Tuple[Optional[lgb.LGBMClassifier], float, Dict[str, Any]]:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.3] Forja del Oráculo: Optimización Bayesiana + CV.\n", + " - 🚀 FIX MLOps: Restaurada la optimización Optuna original para binario.\n", + " - Multiclase agregado mediante class_weight sin interferir con la lógica de bagging binario.\n", + " \"\"\"\n", + " if X_train is None or X_train.empty: \n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía.\")\n", + " raise ValueError(\"La matriz está vacía.\")\n", + "\n", + " X_tr_copy = X_train.copy()\n", + " X_te_copy = X_test.copy() if X_test is not None else None\n", + "\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " cols_trampa = [col for col in X_tr_copy.columns if patron_troya.search(col)]\n", + "\n", + " if cols_trampa:\n", + " if not modo_silencioso: logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(cols_trampa)} variables con Target Leakage...\")\n", + " X_tr_copy.drop(columns=cols_trampa, inplace=True)\n", + " if X_te_copy is not None: X_te_copy.drop(columns=[c for c in cols_trampa if c in X_te_copy.columns], inplace=True)\n", + "\n", + " if not modo_silencioso: logger.info(f\"=== 🧬 FASE 18.3: Evolución del Oráculo (Optuna - {n_trials} Mutaciones) ===\")\n", + "\n", + " rutas = rutas or {}\n", + " warnings.filterwarnings(\"ignore\")\n", + "\n", + " num_clases = y_train.nunique()\n", + " es_multiclase = num_clases > 2\n", + " cat_features = [c for c in rutas.get('cat_vars', []) if c in X_tr_copy.columns]\n", + " config_bagging = rutas.get('asymmetric_bagging', {})\n", + " clase_minoritaria = y_train.value_counts().idxmin() if not es_multiclase else None\n", + "\n", + " # 🛡️ FIX UX: Silenciar alertas [I ...] de Optuna para mantener los logs limpios\n", + " optuna.logging.set_verbosity(optuna.logging.WARNING)\n", + "\n", + " def objective(trial):\n", + " param = {\n", + " 'objective': 'multiclass' if es_multiclase else 'binary',\n", + " 'metric': 'multi_logloss' if es_multiclase else 'binary_logloss',\n", + " 'random_state': seed_estatica,\n", + " 'verbosity': -1,\n", + " 'boosting_type': 'gbdt',\n", + " 'n_estimators': 800, \n", + " 'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.1, log=True),\n", + " 'num_leaves': trial.suggest_int('num_leaves', 20, 100),\n", + " 'max_depth': trial.suggest_int('max_depth', 3, 10),\n", + " 'min_child_samples': trial.suggest_int('min_child_samples', 20, 120),\n", + " 'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0),\n", + " 'reg_alpha': trial.suggest_float('reg_alpha', 1e-4, 10.0, log=True),\n", + " 'reg_lambda': trial.suggest_float('reg_lambda', 1e-4, 10.0, log=True),\n", + " }\n", + "\n", + " # 🚀 INTEGRACIÓN SEGURA: Respeta la optimización Optuna original para binario\n", + " if es_multiclase:\n", + " param['num_class'] = num_clases\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + " if config_bagging and 'class_weight' in config_bagging:\n", + " param['class_weight'] = config_bagging['class_weight']\n", + " else:\n", + " if config_bagging:\n", + " if clase_minoritaria == 1:\n", + " param['pos_bagging_fraction'] = 1.0\n", + " param['neg_bagging_fraction'] = trial.suggest_float('neg_bagging_fraction', 0.01, 1.0)\n", + " else:\n", + " param['pos_bagging_fraction'] = trial.suggest_float('pos_bagging_fraction', 0.01, 1.0)\n", + " param['neg_bagging_fraction'] = 1.0\n", + " param['bagging_freq'] = trial.suggest_int('bagging_freq', 1, 7)\n", + " else:\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + "\n", + " cv = GroupKFold(n_splits=n_splits) if grupos_cv is not None else StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=seed_estatica)\n", + " splits = list(cv.split(X_tr_copy, y_train, groups=grupos_cv)) if grupos_cv is not None else list(cv.split(X_tr_copy, y_train))\n", + " metricas_fold = []\n", + "\n", + " for train_idx, val_idx in splits:\n", + " X_tr_fold, y_tr_fold = X_tr_copy.iloc[train_idx], y_train.iloc[train_idx]\n", + " X_va_fold, y_va_fold = X_tr_copy.iloc[val_idx], y_train.iloc[val_idx]\n", + " w_tr = pesos_train.iloc[train_idx] if pesos_train is not None else None\n", + "\n", + " modelo = lgb.LGBMClassifier(**param)\n", + " modelo.fit(X_tr_fold, y_tr_fold, sample_weight=w_tr, eval_set=[(X_va_fold, y_va_fold)], \n", + " callbacks=[lgb.early_stopping(30, verbose=False)], categorical_feature=cat_features if cat_features else 'auto')\n", + "\n", + " score = f1_score(y_va_fold, modelo.predict(X_va_fold), average='weighted') if es_multiclase else average_precision_score(y_va_fold, modelo.predict_proba(X_va_fold)[:, 1])\n", + " metricas_fold.append(score)\n", + " del X_tr_fold, y_tr_fold, X_va_fold, y_va_fold, modelo\n", + " gc.collect()\n", + "\n", + " return float(np.mean(metricas_fold))\n", + "\n", + " if not modo_silencioso: logger.info(f\" ⚙️ Iniciando simulaciones bayesianas ({n_trials * n_splits} entrenamientos totales)...\")\n", + "\n", + " sampler_determinista = optuna.samplers.TPESampler(seed=seed_estatica)\n", + " estudio = optuna.create_study(direction='maximize', study_name=\"Oraculo_LGBM_CV\", sampler=sampler_determinista)\n", + " estudio.optimize(objective, n_trials=n_trials, n_jobs=1, callbacks=[lambda s, t: gc.collect()]) \n", + "\n", + " mejores_params = estudio.best_params\n", + " parametros_finales = mejores_params.copy()\n", + "\n", + " parametros_finales.update({'n_estimators': 500, 'random_state': seed_estatica, 'verbosity': -1, 'n_jobs':-1})\n", + "\n", + " # 🚀 APLICACIÓN FINAL SEGURA\n", + " if es_multiclase:\n", + " parametros_finales['num_class'] = num_clases\n", + " if config_bagging and 'class_weight' in config_bagging:\n", + " parametros_finales['class_weight'] = config_bagging['class_weight']\n", + " else:\n", + " if config_bagging:\n", + " for k in ['subsample', 'class_weight', 'scale_pos_weight']: parametros_finales.pop(k, None)\n", + "\n", + " oraculo_final = lgb.LGBMClassifier(**parametros_finales)\n", + " oraculo_final.fit(X_tr_copy, y_train, sample_weight=pesos_train, categorical_feature=cat_features if cat_features else 'auto')\n", + "\n", + " umbral_final = 0.5\n", + " if not es_multiclase:\n", + " probas_train = oraculo_final.predict_proba(X_tr_copy)[:, 1]\n", + " precision, recall, thresholds = precision_recall_curve(y_train, probas_train)\n", + " fscore = (2 * precision * recall) / (precision + recall + 1e-8)\n", + " ix = np.argmax(fscore)\n", + " umbral_final = thresholds[ix] if ix < len(thresholds) else 0.5\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" ⚖️ Umbral Óptimo de Entrenamiento: {umbral_final:.4f}\")\n", + " if not os.path.exists(directorio_salida): os.makedirs(directorio_salida)\n", + " ruta_modelo = os.path.join(directorio_salida, \"oraculo_lightgbm.pkl\")\n", + " joblib.dump(oraculo_final, ruta_modelo)\n", + " rutas['umbral_decision_optimo'] = float(umbral_final)\n", + " logger.info(f\" 💾 Oráculo guardado en Caja Fuerte MLOps: {ruta_modelo}\")\n", + "\n", + " del estudio\n", + " gc.collect()\n", + " return oraculo_final, float(umbral_final), mejores_params\n", + "\n", + "\n", + "# ==========================================\n", + "# [BLOQUE 18.3 REFACTORIZADO]\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado.\")\n", + "\n", + " if not hasattr(manager, 'X_train') or manager.X_train is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'.\")\n", + "\n", + " # 🕹️ PUNTO DE CONTROL DEL ARQUITECTO\n", + " SEMILLA_MANUAL =87499 \n", + "\n", + " logger.info(f\">>> 🧠 DESATANDO OPTUNA CON VALIDACIÓN CRUZADA (SEMILLA MANUAL: {SEMILLA_MANUAL}) <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 1. ⚖️ EJECUTAR EL JUICIO OFICIAL\n", + " modelo_campeon, umbral_entrenamiento, adn_campeon = forjar_oraculo_lightgbm(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " rutas=getattr(manager, 'rutas', {}), \n", + " pesos_train=getattr(manager, 'pesos_train', None), \n", + " grupos_cv=getattr(manager, 'grupos_cv', None), \n", + " n_trials=40, \n", + " n_splits=5, \n", + " seed_estatica=SEMILLA_MANUAL,\n", + " modo_silencioso=False\n", + " )\n", + "\n", + " # ==========================================\n", + " # 🚀 FIX MLOPS: PERSISTENCIA MULTI-CAPA\n", + " # ==========================================\n", + " if not hasattr(manager, 'modelos_preprocesamiento') or manager.modelos_preprocesamiento is None:\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " # 1. Registro obligatorio en el diccionario que busca la Fase 19.1\n", + " manager.modelos_preprocesamiento['oraculo_lightgbm'] = modelo_campeon\n", + " \n", + " # 2. Registro en el log de artefactos (si el método existe)\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_lightgbm', modelo_campeon)\n", + "\n", + " if not hasattr(manager, 'artefactos'): manager.artefactos = {}\n", + " manager.artefactos['umbral_decision'] = 0.50 \n", + "\n", + " logger.info(\"-\" * 80)\n", + " \n", + " # 2. 📊 RENDERIZADO AUTOMÁTICO DE LA MATRIZ BASE (0.50)\n", + " matriz_final, exactitud_final = renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado=modelo_campeon,\n", + " umbral_oro=0.50, \n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en la forja del modelo: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🩺 INICIANDO DIAGNÓSTICO DE CERTEZA (BRIER SCORE) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 🩺 FASE 19.1: Diagnóstico de Certeza Matemática (Reliability) ===\n", + " ⚙️ Extrayendo logits y probabilidades del Oráculo...\n", + " 🔇 [MODO HEADLESS] Brier Score calculado: 0.1484. Gráficos omitidos.\n", + "### 📋 Resultado del Diagnóstico MLOps\n", + " • Brier Score: 0.1484\n", + " 🟡 Diagnóstico: Ligera descalibración detectada. Sugerido: Platt Scaling.\n", + "\n", + "⏱️ Diagnóstico completado en 0.039s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.calibration import calibration_curve\n", + "from sklearn.metrics import brier_score_loss\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def evaluar_certeza_oraculo(\n", + " modelo,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " n_bins: int = 10\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.1] Evaluación de Certeza (Diagnóstico Post-hoc).\n", + " - Escudo de Probabilidades: Verifica que el modelo soporte probabilidades continuas.\n", + " - Brier Score: Calcula la penalización por sobreconfianza (0.0 a 1.0).\n", + " - Diagrama de Confiabilidad: Compara frecuencia observada vs probabilidad predicha.\n", + " \"\"\"\n", + " logger.info(\"=== 🩺 FASE 19.1: Diagnóstico de Certeza Matemática (Reliability) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Blindaje MLOps: Validación de capacidades del modelo\n", + " if not hasattr(modelo, \"predict_proba\"):\n", + " logger.error(\"🛑 Error Crítico: El modelo no soporta 'predict_proba'.\")\n", + " raise ValueError(\"El modelo no soporta 'predict_proba'.\")\n", + "\n", + " if y_test.nunique() > 2:\n", + " logger.warning(\" ⚠️ [INFO] Target Multiclase detectado. Brier estándar requiere adaptación.\")\n", + " logger.info(\" ↳ Operación abortada por seguridad de arquitectura.\")\n", + " return None\n", + "\n", + " # 2. Extracción de Probabilidades Crudas\n", + " logger.info(\" ⚙️ Extrayendo logits y probabilidades del Oráculo...\")\n", + " probabilidades = modelo.predict_proba(X_test)[:, 1]\n", + "\n", + " # 3. Cálculo del Brier Score (Penalización de error cuadrático)\n", + " brier_score = brier_score_loss(y_test, probabilidades)\n", + "\n", + " # 4. Cálculo de la Curva de Calibración\n", + " fraccion_positivos, valor_medio_predicho = calibration_curve(\n", + " y_test, probabilidades, n_bins=n_bins, strategy='uniform'\n", + " )\n", + "\n", + " # ==========================================\n", + " # 5. Renderizado Inteligente UI (Diagrama de Confiabilidad)\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " logger.info(f\" 📊 Renderizando Diagrama de Confiabilidad (Brier Score: {brier_score:.4f})...\")\n", + "\n", + " sns.set_theme(style=\"whitegrid\")\n", + " fig, ax1 = plt.subplots(figsize=(10, 6))\n", + "\n", + " # Línea de Calibración Perfecta (Identidad)\n", + " ax1.plot([0, 1], [0, 1], \"k:\", label=\"Calibración Perfecta (Honestidad Absoluta)\")\n", + "\n", + " # Curva del Modelo (Realidad Observada)\n", + " ax1.plot(valor_medio_predicho, fraccion_positivos, \"s-\", color=\"#1f77b4\",\n", + " label=f\"Modelo (Brier: {brier_score:.4f})\")\n", + "\n", + " ax1.set_ylabel(\"Fracción de Positivos Reales\", fontsize=12)\n", + " ax1.set_xlabel(\"Probabilidad Predicha por el Modelo\", fontsize=12)\n", + " ax1.set_title(\"Diagrama de Confiabilidad (Reliability Diagram)\", fontsize=14, pad=15)\n", + " ax1.set_xlim([0.0, 1.0])\n", + " ax1.set_ylim([0.0, 1.0])\n", + " ax1.legend(loc=\"upper left\")\n", + "\n", + " # Histograma de densidad de predicciones (Eje Gemelo)\n", + " ax2 = ax1.twinx()\n", + " ax2.hist(probabilidades, range=(0, 1), bins=n_bins, histtype=\"step\", lw=2,\n", + " color=\"#ff7f0e\", alpha=0.5)\n", + " ax2.set_ylabel(\"Densidad de Predicciones\", color=\"#ff7f0e\", fontsize=12)\n", + " ax2.tick_params(axis='y', labelcolor=\"#ff7f0e\")\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " else:\n", + " logger.info(f\" 🔇 [MODO HEADLESS] Brier Score calculado: {brier_score:.4f}. Gráficos omitidos.\")\n", + "\n", + " # 6. Diagnóstico del Arquitecto\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📋 Resultado del Diagnóstico MLOps\"))\n", + " else:\n", + " logger.info(\"### 📋 Resultado del Diagnóstico MLOps\")\n", + " \n", + " logger.info(f\" • Brier Score: {brier_score:.4f}\")\n", + "\n", + " if brier_score < 0.10:\n", + " logger.info(\" 🟢 Diagnóstico: El modelo es extremadamente honesto.\")\n", + " elif brier_score < 0.20:\n", + " logger.warning(\" 🟡 Diagnóstico: Ligera descalibración detectada. Sugerido: Platt Scaling.\")\n", + " else:\n", + " logger.warning(\" 🔴 Diagnóstico: Modelo sobreconfiado o 'mentiroso'. Calibración obligatoria.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Diagnóstico completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return brier_score\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta las fases previas.\")\n", + "\n", + " if getattr(manager, 'modelos_preprocesamiento', None) is None or 'oraculo_lightgbm' not in manager.modelos_preprocesamiento:\n", + " raise ValueError(\"El modelo 'oraculo_lightgbm' no existe en la caja fuerte del Manager. Ejecuta la Fase 18.3.\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de Test ('X_test' o 'y_test').\")\n", + "\n", + " modelo_campeon = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + "\n", + " logger.info(\">>> 🩺 INICIANDO DIAGNÓSTICO DE CERTEZA (BRIER SCORE) <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Invocamos la resonancia magnética del modelo\n", + " score_brier_actual = evaluar_certeza_oraculo(\n", + " modelo=modelo_campeon,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " n_bins=10\n", + " )\n", + "\n", + " # Registro de telemetría en el Manager de forma segura\n", + " if score_brier_actual is not None:\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('brier_score_pre_calibracion', score_brier_actual)\n", + " else:\n", + " if not hasattr(manager, 'artefactos'): manager.artefactos = {}\n", + " manager.artefactos['brier_score_pre_calibracion'] = score_brier_actual\n", + " logger.info(f\"📦 Telemetría guardada: brier_score_pre_calibracion = {score_brier_actual:.4f}\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Diagnóstico Post-hoc: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 💉 INICIANDO FASE DE CALIBRACIÓN Y UMBRAL <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 💉 FASE 19.2: Calibración de Probabilidades (Platt/Isotonic) ===\n", + " 🧠 Motor Seleccionado: 'ISOTONIC' (Basado en 26,029 registros).\n", + " ⚙️ Calculando Brier Score original...\n", + " 🔬 Entrenando Calibrador con validación cruzada de 5 folds...\n", + " 📊 Renderizando evidencia clínica de la calibración...\n", + "\n", + "### 📋 Reporte Médico del Modelo\n", + " • Brier Score PRE-Calibración: 0.1484\n", + " • Brier Score POST-Calibración: 0.0921\n", + " 🟢 ÉXITO ROTUNDO: La mentira matemática se redujo en 0.0562 puntos de Brier.\n", + "\n", + "⏱️ Cirugía completada en 8.079s\n", + " 📦 El modelo 'oraculo_calibrado' fue almacenado exitosamente en el Manager.\n", + "\n", + "==================================================\n", + "=== 🎛️ FASE 19.2.5: Optimización de Umbral de Decisión ===\n", + "==================================================\n", + " ⚙️ Extrayendo probabilidades calibradas del Test Set...\n", + " 🔍 Escaneando 100 umbrales buscando el F1-Score máximo...\n", + " 🏆 ¡Umbral de Oro encontrado! El corte perfecto es: 0.42\n", + "--------------------------------------------------------------------------------\n", + " 🔴 ANTES (Umbral 0.50) -> F1-Score: 0.6954\n", + " 🟢 AHORA (Umbral 0.42) -> F1-Score: 0.7205\n", + " 🚀 ¡Incremento de +0.0251 puntos en F1-Score!\n", + "--------------------------------------------------------------------------------\n", + "\n", + " 📋 Reporte Final con Umbral Optimizado:\n", + " precision recall f1-score support\n", + "\n", + " 0 0.91 0.92 0.91 4940\n", + " 1 0.73 0.71 0.72 1568\n", + "\n", + " accuracy 0.87 6508\n", + " macro avg 0.82 0.81 0.82 6508\n", + "weighted avg 0.87 0.87 0.87 6508\n", + "\n", + "\n", + "⏱️ Optimización completada en 0.468s\n", + " 📦 El 'umbral_decision' (0.4200) fue almacenado exitosamente en el Manager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import time\n", + "import gc\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.calibration import CalibratedClassifierCV, calibration_curve\n", + "from sklearn.metrics import brier_score_loss, f1_score, classification_report\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# ==========================================\n", + "# FASE 19.2: CALIBRACIÓN ISOTÓNICA / PLATT\n", + "# ==========================================\n", + "def calibrar_oraculo_mlops(\n", + " modelo_base,\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " cv: int = 5\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.2] Calibración de Probabilidades.\n", + " - Ajusta las probabilidades del modelo para que coincidan con la realidad.\n", + " - Usa 'Isotonic' para datasets grandes (Adult Census) o 'Sigmoid' para pequeños.\n", + " \"\"\"\n", + " logger.info(\"=== 💉 FASE 19.2: Calibración de Probabilidades (Platt/Isotonic) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if y_train.nunique() > 2:\n", + " logger.warning(\" ⚠️ [INFO] Target Multiclase. Se aplicará calibración One-Vs-Rest implícita.\")\n", + "\n", + " n_muestras = len(X_train)\n", + " metodo_optimo = 'isotonic' if n_muestras >= 1000 else 'sigmoid'\n", + " logger.info(f\" 🧠 Motor Seleccionado: '{metodo_optimo.upper()}' (Basado en {n_muestras:,} registros).\")\n", + "\n", + " logger.info(\" ⚙️ Calculando Brier Score original...\")\n", + " if hasattr(modelo_base, \"predict_proba\"):\n", + " proba_test_antes = modelo_base.predict_proba(X_test)[:, 1]\n", + " brier_antes = brier_score_loss(y_test, proba_test_antes)\n", + " else:\n", + " logger.error(\"🛑 El modelo base no escupe probabilidades.\")\n", + " raise ValueError(\"El modelo base no escupe probabilidades.\")\n", + "\n", + " logger.info(f\" 🔬 Entrenando Calibrador con validación cruzada de {cv} folds...\")\n", + "\n", + " oraculo_calibrado = CalibratedClassifierCV(\n", + " estimator=modelo_base,\n", + " method=metodo_optimo,\n", + " cv=cv,\n", + " n_jobs=-1\n", + " )\n", + "\n", + " oraculo_calibrado.fit(X_train, y_train)\n", + "\n", + " proba_test_despues = oraculo_calibrado.predict_proba(X_test)[:, 1]\n", + " brier_despues = brier_score_loss(y_test, proba_test_despues)\n", + " mejora = brier_antes - brier_despues\n", + "\n", + " logger.info(f\" 📊 Renderizando evidencia clínica de la calibración...\")\n", + " sns.set_theme(style=\"whitegrid\")\n", + " fig, ax1 = plt.subplots(figsize=(10, 6))\n", + "\n", + " ax1.plot([0, 1], [0, 1], \"k:\", label=\"Verdad Absoluta (Perfectamente Calibrado)\")\n", + "\n", + " f_pos_antes, m_pred_antes = calibration_curve(y_test, proba_test_antes, n_bins=10)\n", + " ax1.plot(m_pred_antes, f_pos_antes, \"s-\", color=\"#d62728\", alpha=0.6, label=f\"Antes (Brier: {brier_antes:.4f})\")\n", + "\n", + " f_pos_despues, m_pred_despues = calibration_curve(y_test, proba_test_despues, n_bins=10)\n", + " ax1.plot(m_pred_despues, f_pos_despues, \"o-\", color=\"#2ca02c\", linewidth=2.5, label=f\"Después (Brier: {brier_despues:.4f})\")\n", + "\n", + " ax1.set_ylabel(\"Fracción de Positivos Reales\", fontsize=12)\n", + " ax1.set_xlabel(\"Probabilidad Predicha\", fontsize=12)\n", + " ax1.set_title(\"Efecto de la Calibración en el Oráculo\", fontsize=14, pad=15)\n", + " ax1.legend(loc=\"upper left\", fontsize=11)\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " display(Markdown(f\"### 📋 Reporte Médico del Modelo\"))\n", + " else:\n", + " plt.close(fig)\n", + " logger.info(\"\\n### 📋 Reporte Médico del Modelo\")\n", + "\n", + " logger.info(f\" • Brier Score PRE-Calibración: {brier_antes:.4f}\")\n", + " logger.info(f\" • Brier Score POST-Calibración: {brier_despues:.4f}\")\n", + "\n", + " if mejora > 0.01:\n", + " logger.info(f\" 🟢 ÉXITO ROTUNDO: La mentira matemática se redujo en {mejora:.4f} puntos de Brier.\")\n", + " elif mejora > 0:\n", + " logger.info(f\" 🟡 ÉXITO LEVE: El modelo ya era bastante honesto. Mejora de {mejora:.4f} puntos.\")\n", + " else:\n", + " logger.warning(f\" 🔴 ALERTA: La calibración no mejoró el Brier Score.\")\n", + "\n", + " del proba_test_antes, proba_test_despues\n", + " gc.collect()\n", + " logger.info(f\"\\n⏱️ Cirugía completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return oraculo_calibrado\n", + "\n", + "# ==========================================\n", + "# FASE 19.2.5: OPTIMIZADOR DE UMBRAL (THRESHOLD TUNING)\n", + "# ==========================================\n", + "def optimizar_umbral_mlops(\n", + " modelo_calibrado,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.3] Threshold Tuning.\n", + " - Busca el umbral óptimo para maximizar el F1-Score en el set de validación.\n", + " \"\"\"\n", + " logger.info(\"\\n\" + \"=\"*50)\n", + " logger.info(\"=== 🎛️ FASE 19.2.5: Optimización de Umbral de Decisión ===\")\n", + " logger.info(\"=\"*50)\n", + " inicio_timer = time.time()\n", + "\n", + " logger.info(\" ⚙️ Extrayendo probabilidades calibradas del Test Set...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + "\n", + " logger.info(\" 🔍 Escaneando 100 umbrales buscando el F1-Score máximo...\")\n", + " umbrales = np.arange(0.01, 1.0, 0.01)\n", + " mejores_metricas = {'umbral': 0.5, 'f1': 0.0}\n", + "\n", + " # Búsqueda iterativa del corte de oro\n", + " for umbral in umbrales:\n", + " preds_simuladas = (proba_test >= umbral).astype(int)\n", + " score_actual = f1_score(y_test, preds_simuladas)\n", + " if score_actual > mejores_metricas['f1']:\n", + " mejores_metricas['f1'] = score_actual\n", + " mejores_metricas['umbral'] = umbral\n", + "\n", + " umbral_oro = mejores_metricas['umbral']\n", + " logger.info(f\" 🏆 ¡Umbral de Oro encontrado! El corte perfecto es: {umbral_oro:.2f}\")\n", + "\n", + " # Evaluación de la mejora\n", + " preds_viejas = (proba_test >= 0.50).astype(int)\n", + " preds_nuevas = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " f1_viejo = f1_score(y_test, preds_viejas)\n", + " f1_nuevo = f1_score(y_test, preds_nuevas)\n", + " mejora = f1_nuevo - f1_viejo\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🔴 ANTES (Umbral 0.50) -> F1-Score: {f1_viejo:.4f}\")\n", + " logger.info(f\" 🟢 AHORA (Umbral {umbral_oro:.2f}) -> F1-Score: {f1_nuevo:.4f}\")\n", + "\n", + " if mejora > 0:\n", + " logger.info(f\" 🚀 ¡Incremento de +{mejora:.4f} puntos en F1-Score!\")\n", + " else:\n", + " logger.info(\" ⚖️ El umbral 0.50 ya era el óptimo.\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " logger.info(\"\\n 📋 Reporte Final con Umbral Optimizado:\\n\" + classification_report(y_test, preds_nuevas))\n", + "\n", + " logger.info(f\"\\n⏱️ Optimización completada en {time.time() - inicio_timer:.3f}s\")\n", + " return umbral_oro\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta usando NameError para manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento') or 'oraculo_lightgbm' not in manager.modelos_preprocesamiento:\n", + " raise ValueError(\"El modelo 'oraculo_lightgbm' no existe en la caja fuerte del Manager. Ejecuta la Fase 18.3.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train', 'X_test' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " modelo_crudo = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + "\n", + " logger.info(\">>> 💉 INICIANDO FASE DE CALIBRACIÓN Y UMBRAL <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 1. Calibración (Isotónica/Platt)\n", + " oraculo_calibrado_definitivo = calibrar_oraculo_mlops(\n", + " modelo_base=modelo_crudo,\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " cv=5\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Asignación directa y segura al diccionario de modelos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " manager.modelos_preprocesamiento['oraculo_calibrado'] = oraculo_calibrado_definitivo\n", + " logger.info(\" 📦 El modelo 'oraculo_calibrado' fue almacenado exitosamente en el Manager.\")\n", + "\n", + " # 2. Optimización de Umbral (Threshold Tuning)\n", + " umbral_definitivo = optimizar_umbral_mlops(\n", + " modelo_calibrado=oraculo_calibrado_definitivo,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Registro seguro del artefacto (umbral)\n", + " if not hasattr(manager, 'artefactos'): \n", + " manager.artefactos = {}\n", + " \n", + " manager.artefactos['umbral_decision'] = umbral_definitivo\n", + " logger.info(f\" 📦 El 'umbral_decision' ({umbral_definitivo:.4f}) fue almacenado exitosamente en el Manager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en la Fase 19: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO (FASE 19.2 DETECTADA) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 🎛️ FASE 19.3: Escáner Vectorizado de Umbral de Decisión ===\n", + " ⚙️ Extrayendo probabilidades del Test Set...\n", + " 🔍 Calculando la frontera de Pareto (Precisión vs Recall)...\n", + " 🏆 ¡Punto de Corte Encontrado! El Umbral de Oro es: 0.4170\n", + " 📊 Renderizando el comportamiento de las métricas...\n", + "### 📋 Impacto de la Guillotina Dinámica\n", + " 🔴 ANTES (Umbral ciego 0.50): F1-Score = 0.6954\n", + " 🟢 AHORA (Umbral exacto 0.4170): F1-Score = 0.7224\n", + " 🚀 ¡Incremento garantizado de +0.0269 puntos en F1-Score!\n", + "\n", + " 📋 Reporte de Clasificación Final (Listo para Producción):\n", + " precision recall f1-score support\n", + "\n", + " 0 0.91 0.92 0.91 4940\n", + " 1 0.73 0.71 0.72 1568\n", + "\n", + " accuracy 0.87 6508\n", + " macro avg 0.82 0.81 0.82 6508\n", + "weighted avg 0.87 0.87 0.87 6508\n", + "\n", + "⏱️ Escáner completado en 0.266s\n", + " 💾 Artefacto Guardado: 'umbral_decision' (0.4170) asegurado en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import time\n", + "import gc\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import f1_score, precision_recall_curve, classification_report\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "\n", + "def optimizador_visual_umbral(\n", + " modelo,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.3] Optimizador Visual de Umbral (Threshold Tuning).\n", + " - Motor Vectorizado: Usa precision_recall_curve (C++) para alta velocidad.\n", + " - Inmunidad a SMOTE: Se ejecuta sobre el Test Set para evaluar la realidad.\n", + " - Inteligencia UI: Renderiza la intersección de Precisión, Recall y F1-Score.\n", + " \"\"\"\n", + " logger.info(\"=== 🎛️ FASE 19.3: Escáner Vectorizado de Umbral de Decisión ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Blindaje MLOps\n", + " if not hasattr(modelo, \"predict_proba\"):\n", + " logger.error(\"🛑 Error Crítico: El modelo no soporta probabilidades (predict_proba).\")\n", + " raise ValueError(\"El modelo no soporta probabilidades (predict_proba).\")\n", + "\n", + " if y_test.nunique() > 2:\n", + " logger.warning(\" ⚠️ [INFO] Target Multiclase detectado. Threshold Tuning omitido.\")\n", + " return 0.5\n", + "\n", + " # 2. Extracción de Probabilidades (El Mundo Real)\n", + " logger.info(\" ⚙️ Extrayendo probabilidades del Test Set...\")\n", + " proba_test = modelo.predict_proba(X_test)[:, 1]\n", + "\n", + " # 3. Escáner Vectorizado (Alta Velocidad)\n", + " logger.info(\" 🔍 Calculando la frontera de Pareto (Precisión vs Recall)...\")\n", + " precisiones, recalls, umbrales = precision_recall_curve(y_test, proba_test)\n", + "\n", + " # 4. Cálculo del F1-Score para todos los umbrales simultáneamente\n", + " # Agregamos epsilon para evitar división por cero\n", + " f1_scores = 2 * (precisiones * recalls) / (precisiones + recalls + 1e-10)\n", + "\n", + " # Encontrar el índice del F1 máximo\n", + " # (ignorando el último valor de precision_recall_curve que no tiene umbral)\n", + " indice_optimo = np.argmax(f1_scores[:-1])\n", + " umbral_oro = umbrales[indice_optimo]\n", + " f1_maximo = f1_scores[indice_optimo]\n", + "\n", + " logger.info(f\" 🏆 ¡Punto de Corte Encontrado! El Umbral de Oro es: {umbral_oro:.4f}\")\n", + "\n", + " # ==========================================\n", + " # 5. Renderizado Inteligente UI (La Radiografía)\n", + " # ==========================================\n", + " logger.info(\" 📊 Renderizando el comportamiento de las métricas...\")\n", + " sns.set_theme(style=\"whitegrid\")\n", + " fig, ax = plt.subplots(figsize=(10, 5))\n", + "\n", + " # Trazamos las 3 curvas\n", + " ax.plot(umbrales, precisiones[:-1], 'b--', label='Precisión', alpha=0.8)\n", + " ax.plot(umbrales, recalls[:-1], 'g--', label='Recall', alpha=0.8)\n", + " ax.plot(umbrales, f1_scores[:-1], 'r-', linewidth=3, label='F1-Score')\n", + "\n", + " # Marcamos el punto de oro\n", + " ax.axvline(x=umbral_oro, color='k', linestyle=':', linewidth=2)\n", + " ax.scatter([umbral_oro], [f1_maximo], color='red', s=100, zorder=5)\n", + " ax.text(\n", + " umbral_oro + 0.02, f1_maximo - 0.05,\n", + " f\"Umbral: {umbral_oro:.2f}\\nF1: {f1_maximo:.4f}\",\n", + " fontsize=12, fontweight='bold',\n", + " bbox=dict(facecolor='white', alpha=0.8, edgecolor='none')\n", + " )\n", + "\n", + " ax.set_xlabel(\"Umbral de Decisión (Probabilidad de Corte)\", fontsize=12)\n", + " ax.set_ylabel(\"Puntuación (0.0 a 1.0)\", fontsize=12)\n", + " ax.set_title(\"Optimización Dinámica de Umbral (Bypass de SMOTE)\", fontsize=14, pad=15)\n", + " ax.set_xlim([0.0, 1.0])\n", + " ax.set_ylim([0.0, 1.05])\n", + " ax.legend(loc=\"lower center\", fontsize=10)\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig)\n", + "\n", + " # ==========================================\n", + " # 6. Evaluación en el Mundo Real (Antes vs Después)\n", + " # ==========================================\n", + " preds_viejas = (proba_test >= 0.50).astype(int)\n", + " preds_nuevas = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " f1_viejo = f1_score(y_test, preds_viejas)\n", + " mejora = f1_maximo - f1_viejo\n", + "\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📋 Impacto de la Guillotina Dinámica\"))\n", + " else:\n", + " logger.info(\"### 📋 Impacto de la Guillotina Dinámica\")\n", + " \n", + " logger.info(f\" 🔴 ANTES (Umbral ciego 0.50): F1-Score = {f1_viejo:.4f}\")\n", + " logger.info(f\" 🟢 AHORA (Umbral exacto {umbral_oro:.4f}): F1-Score = {f1_maximo:.4f}\")\n", + "\n", + " if mejora > 0.001:\n", + " logger.info(f\" 🚀 ¡Incremento garantizado de +{mejora:.4f} puntos en F1-Score!\")\n", + " else:\n", + " logger.info(\" ⚖️ El umbral 0.50 ya era el matemático ideal.\")\n", + "\n", + " logger.info(\"\\n 📋 Reporte de Clasificación Final (Listo para Producción):\\n\" + classification_report(y_test, preds_nuevas))\n", + "\n", + " logger.info(f\"⏱️ Escáner completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🧹 RAM Shield\n", + " del proba_test, precisiones, recalls, umbrales, f1_scores\n", + " gc.collect()\n", + "\n", + " return umbral_oro\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " raise ValueError(\"El Manager no tiene la caja fuerte de modelos inicializada.\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_test' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Inteligencia: Verificamos si existe el modelo calibrado o el crudo\n", + " if 'oraculo_calibrado' in manager.modelos_preprocesamiento:\n", + " logger.info(\">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO (FASE 19.2 DETECTADA) <<<\")\n", + " modelo_activo = manager.modelos_preprocesamiento['oraculo_calibrado']\n", + " elif 'oraculo_lightgbm' in manager.modelos_preprocesamiento:\n", + " logger.warning(\">>> ⚠️ UTILIZANDO ORÁCULO CRUDO (NO SE DETECTÓ CALIBRACIÓN) <<<\")\n", + " modelo_activo = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + " else:\n", + " raise ValueError(\"No se encontró ningún modelo LightGBM en el Manager.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Disparamos el escáner visual\n", + " umbral_definitivo = optimizador_visual_umbral(\n", + " modelo=modelo_activo,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + " # 💾 Guardado del Artefacto Crítico\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('umbral_decision', umbral_definitivo)\n", + " else:\n", + " if not hasattr(manager, 'artefactos'):\n", + " manager.artefactos = {}\n", + " manager.artefactos['umbral_decision'] = umbral_definitivo\n", + " \n", + " logger.info(\n", + " f\" 💾 Artefacto Guardado: 'umbral_decision' ({umbral_definitivo:.4f}) \"\n", + " f\"asegurado en el PipelineManager.\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Optimizador Visual: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "--------------------------------------------------------------------------------\n", + "=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\n", + " ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro (0.4200)...\n", + " 📊 Procesando Matriz para Presentación a Negocio...\n", + "\n", + "### 📋 Resumen Ejecutivo para Stakeholders\n", + " 🟢 ACIERTOS TOTALES: 5,647 pacientes clasificados correctamente.\n", + " 🔴 ERRORES TOTALES: 861 pacientes clasificados incorrectamente.\n", + " ↳ De 1,568 personas ricas reales, el modelo logró atrapar a 1,110 (Recall).\n", + " ↳ De 1,513 veces que el modelo gritó '¡Es rico!', acertó 1,110 veces (Precisión).\n", + "\n", + "⏱️ Matriz generada en 0.247s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import time\n", + "import logging\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import confusion_matrix\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado, \n", + " umbral_oro: float, \n", + " X_test: pd.DataFrame, \n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.4] Matriz de Confusión Táctica (UI/UX para Negocio).\n", + " \n", + " - Inteligencia de Umbral: Aplica la guillotina exacta (ej. 0.38) en lugar del 0.50 por defecto.\n", + " - Renderizado de Negocio: Traduce los cuadrantes matemáticos a impacto real (Aciertos/Errores).\n", + " - Blindaje: Funciona dinámicamente según la distribución del Test Set.\n", + " \"\"\"\n", + " logger.info(\"=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Extracción de Probabilidades y Aplicación de la Guillotina Dinámica\n", + " logger.info(f\" ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro ({umbral_oro:.4f})...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + " preds_finales = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # 2. Cálculo Matemático\n", + " cm = confusion_matrix(y_test, preds_finales)\n", + "\n", + " # 3. Mapeo de Cuadrantes (Para una UI Inteligente)\n", + " tn, fp, fn, tp = cm.ravel()\n", + "\n", + " # Cálculos porcentuales para dar contexto\n", + " total = np.sum(cm)\n", + " tasa_acierto = (tp + tn) / total\n", + "\n", + " # ==========================================\n", + " # 4. Renderizado Visual (Nivel Dashboard)\n", + " # ==========================================\n", + " logger.info(\" 📊 Procesando Matriz para Presentación a Negocio...\")\n", + "\n", + " # Textos personalizados para los cuadrantes\n", + " etiquetas = np.array([\n", + " [f\"Verdaderos Negativos (TN)\\n{tn:,}\\n(Pobres bien clasificados)\", \n", + " f\"Falsos Positivos (FP)\\n{fp:,}\\n(Falsas Alarmas - Alerta)\"],\n", + " [f\"Falsos Negativos (FN)\\n{fn:,}\\n(Ricos que escaparon)\", \n", + " f\"Verdaderos Positivos (TP)\\n{tp:,}\\n(Ricos atrapados - ÉXITO)\"]\n", + " ])\n", + "\n", + " sns.set_theme(style=\"white\")\n", + " fig, ax = plt.subplots(figsize=(9, 7))\n", + "\n", + " # Mapa de calor usando una paleta profesional (Rojos para errores, Azules para aciertos)\n", + " sns.heatmap(\n", + " cm, \n", + " annot=etiquetas, \n", + " fmt=\"\", \n", + " cmap=\"Blues\", \n", + " cbar=False, \n", + " annot_kws={\"size\": 12, \"weight\": \"bold\"}, \n", + " linewidths=2, \n", + " linecolor='black',\n", + " ax=ax\n", + " )\n", + "\n", + " # Estética del gráfico\n", + " ax.set_title(f\"Radiografía del Modelo en el Mundo Real\\n(Umbral de Decisión: {umbral_oro:.4f} | Exactitud Global: {tasa_acierto:.2%})\", \n", + " fontsize=14, pad=20, fontweight='bold')\n", + " ax.set_xlabel('Predicción del Oráculo', fontsize=12, fontweight='bold', labelpad=15)\n", + " ax.set_ylabel('Realidad (Lo que pasó)', fontsize=12, fontweight='bold', labelpad=15)\n", + "\n", + " # Etiquetas de los ejes\n", + " ax.set_xticklabels(['Predijo <=50K (Pobre)', 'Predijo >50K (Rico)'], fontsize=11)\n", + " ax.set_yticklabels(['Realmente <=50K', 'Realmente >50K'], fontsize=11, rotation=0)\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " display(Markdown(\"### 📋 Resumen Ejecutivo para Stakeholders\"))\n", + " else:\n", + " plt.close(fig)\n", + " logger.info(\"\\n### 📋 Resumen Ejecutivo para Stakeholders\")\n", + "\n", + " # 5. Resumen Ejecutivo (Siempre se loguea)\n", + " logger.info(f\" 🟢 ACIERTOS TOTALES: {tp + tn:,} pacientes clasificados correctamente.\")\n", + " logger.warning(f\" 🔴 ERRORES TOTALES: {fp + fn:,} pacientes clasificados incorrectamente.\")\n", + " logger.info(f\" ↳ De {tp + fn:,} personas ricas reales, el modelo logró atrapar a {tp:,} (Recall).\")\n", + " logger.info(f\" ↳ De {tp + fp:,} veces que el modelo gritó '¡Es rico!', acertó {tp:,} veces (Precisión).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Matriz generada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return cm\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento') or 'oraculo_calibrado' not in manager.modelos_preprocesamiento:\n", + " raise ValueError(\"El modelo 'oraculo_calibrado' no existe en la caja fuerte. Ejecuta la Fase 19.2.\")\n", + "\n", + " if not hasattr(manager, 'artefactos') or 'umbral_decision' not in manager.artefactos:\n", + " raise ValueError(\"El 'umbral_decision' no existe en los artefactos. Ejecuta la Fase 19.2.5 (o la Fase Unificada).\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de Test ('X_test' o 'y_test').\")\n", + "\n", + " modelo_final = manager.modelos_preprocesamiento['oraculo_calibrado']\n", + " umbral_final = manager.artefactos['umbral_decision']\n", + "\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Invocamos al renderizador\n", + " matriz_final = renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado=modelo_final,\n", + " umbral_oro=umbral_final,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error renderizando la Matriz de Confusión: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO <<<\n", + "\n", + ">>> ⚖️ INICIANDO AUDITORÍA LEGAL (Umbral Activo: 0.4200) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== ⚖️ FASE 19.5: Auditoría de Justicia Algorítmica (Legal MLOps) ===\n", + " ⚙️ Extrayendo dictámenes finales usando el Umbral Optimizado (0.4200)...\n", + " 🔍 Atributos protegidos detectados para auditoría: ['age', 'sex', 'llm_age_*_education_num']\n", + " ⏭️ Saltando 'age' (Demasiados valores únicos para un reporte categórico claro).\n", + " ⏭️ Saltando 'llm_age_*_education_num' (Demasiados valores únicos para un reporte categórico claro).\n", + " 📊 Generando Diagnóstico de Equidad...\n", + "\n", + "### 📋 Veredicto de Justicia Algorítmica\n", + "\n", + " Atributo Subgrupo Tamaño (N) Selection Rate (Demographic Parity) Recall (Equal Opportunity)\n", + "0 sex 1.0 4335 0.301269 0.714393\n", + "1 sex 0.0 2173 0.095260 0.672199\n", + "\n", + " 💡 NOTA DEL ARQUITECTO: Si hay diferencias extremas, no es culpa del algoritmo.\n", + " ↳ Se debe a 'Sampling Bias' (sesgo histórico en los datos). En ciberseguridad, esto equivaldría a un 'Domain Shift'.\n", + "\n", + "⏱️ Auditoría completada en 0.329s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import time\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import recall_score\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def auditoria_justicia_mlops(\n", + " modelo_calibrado, \n", + " umbral_oro: float, \n", + " X_test: pd.DataFrame, \n", + " y_test: pd.Series,\n", + " atributos_sospechosos: list = None\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.5] Auditoría de Justicia Algorítmica (Fairness Constraints).\n", + " - Muro Legal: Aplica la \"Regla de los 4/5\" (Disparate Impact).\n", + " - Demographic Parity: ¿El modelo aprueba a hombres y mujeres en proporciones similares?\n", + " - Equal Opportunity: De los que verdaderamente son ricos, ¿el modelo los detecta igual sin importar su raza/sexo?\n", + " - Inmunidad de Pipeline: Evalúa predicciones duras basadas EXCLUSIVAMENTE en el Umbral Optimizado.\n", + " \"\"\"\n", + " logger.info(\"=== ⚖️ FASE 19.5: Auditoría de Justicia Algorítmica (Legal MLOps) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Aplicación estricta de la guillotina final (El Umbral de Oro)\n", + " logger.info(f\" ⚙️ Extrayendo dictámenes finales usando el Umbral Optimizado ({umbral_oro:.4f})...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + " preds_finales = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # 2. Radar de Atributos Protegidos\n", + " if atributos_sospechosos is None:\n", + " # Búsqueda automática de variables sensibles comunes en el dataset Adult\n", + " palabras_clave = ['sex', 'gender', 'race', 'age', 'edad', 'sexo', 'raza']\n", + " atributos_protegidos = [col for col in X_test.columns if any(kw in col.lower() for kw in palabras_clave)]\n", + " else:\n", + " atributos_protegidos = [col for col in atributos_sospechosos if col in X_test.columns]\n", + "\n", + " if not atributos_protegidos:\n", + " logger.warning(\" ⚠️ [ALERTA MLOps] No se encontraron atributos protegidos en X_test.\")\n", + " logger.info(\" ↳ Nota: Si Boruta extirpó 'sex' o 'race' por ser ruido, el modelo es matemáticamente ciego a ellos (Good news!).\")\n", + " return None\n", + "\n", + " logger.info(f\" 🔍 Atributos protegidos detectados para auditoría: {atributos_protegidos}\")\n", + "\n", + " # 3. Motor de Análisis por Subgrupos\n", + " resultados_fairness = []\n", + "\n", + " for atributo in atributos_protegidos:\n", + " grupos = X_test[atributo].unique()\n", + "\n", + " # Si la variable es continua (ej. edad numérica) o tiene muchos grupos, la saltamos para el reporte simple\n", + " if len(grupos) > 5:\n", + " logger.info(f\" ⏭️ Saltando '{atributo}' (Demasiados valores únicos para un reporte categórico claro).\")\n", + " continue\n", + "\n", + " for grupo in grupos:\n", + " mascara = (X_test[atributo] == grupo)\n", + " n_grupo = mascara.sum()\n", + "\n", + " # Métricas Base\n", + " y_verdadero_grupo = y_test[mascara]\n", + " y_pred_grupo = preds_finales[mascara]\n", + "\n", + " # Demographic Parity (Selection Rate): % del grupo que fue clasificado como Clase 1\n", + " tasa_seleccion = y_pred_grupo.mean()\n", + "\n", + " # Equal Opportunity (True Positive Rate / Recall): De los que son Clase 1, ¿cuántos atrapó?\n", + " tasa_oportunidad = recall_score(y_verdadero_grupo, y_pred_grupo, zero_division=0)\n", + "\n", + " resultados_fairness.append({\n", + " 'Atributo': atributo,\n", + " 'Subgrupo': grupo,\n", + " 'Tamaño (N)': n_grupo,\n", + " 'Selection Rate (Demographic Parity)': tasa_seleccion,\n", + " 'Recall (Equal Opportunity)': tasa_oportunidad\n", + " })\n", + "\n", + " if not resultados_fairness:\n", + " logger.info(\" ✅ [BYPASS] Análisis completado sin subgrupos categóricos viables.\")\n", + " return None\n", + "\n", + " df_fairness = pd.DataFrame(resultados_fairness)\n", + "\n", + " # ==========================================\n", + " # 4. Renderizado Inteligente UI (El Veredicto Legal)\n", + " # ==========================================\n", + " logger.info(\" 📊 Generando Diagnóstico de Equidad...\")\n", + " sns.set_theme(style=\"whitegrid\")\n", + "\n", + " atributos_validos = df_fairness['Atributo'].unique()\n", + " fig, axes = plt.subplots(len(atributos_validos), 2, figsize=(14, 5 * len(atributos_validos)))\n", + "\n", + " # Manejo de dimensiones si solo hay 1 atributo\n", + " if len(atributos_validos) == 1:\n", + " axes = [axes]\n", + "\n", + " for i, atributo in enumerate(atributos_validos):\n", + " data_attr = df_fairness[df_fairness['Atributo'] == atributo]\n", + "\n", + " # Gráfico 1: Demographic Parity (Tasa de Aprobación Global)\n", + " sns.barplot(data=data_attr, x='Subgrupo', y='Selection Rate (Demographic Parity)', ax=axes[i][0], palette=\"Blues_d\")\n", + " axes[i][0].set_title(f\"Demographic Parity por {atributo}\", fontsize=12)\n", + " axes[i][0].set_ylim(0, 1.0)\n", + " axes[i][0].set_ylabel(\"Tasa de Predicción Positiva (>50K)\")\n", + "\n", + " # Gráfico 2: Equal Opportunity (Tasa de Verdaderos Positivos)\n", + " sns.barplot(data=data_attr, x='Subgrupo', y='Recall (Equal Opportunity)', ax=axes[i][1], palette=\"Greens_d\")\n", + " axes[i][1].set_title(f\"Equal Opportunity por {atributo}\", fontsize=12)\n", + " axes[i][1].set_ylim(0, 1.0)\n", + " axes[i][1].set_ylabel(\"Recall (Acierto en ricos reales)\")\n", + "\n", + " # 5. Evaluación de la Regla Legal (Four-Fifths Rule)\n", + " tasas_seleccion = data_attr['Selection Rate (Demographic Parity)'].values\n", + " if len(tasas_seleccion) >= 2:\n", + " max_tasa = tasas_seleccion.max()\n", + " min_tasa = tasas_seleccion.min()\n", + " disparate_impact_ratio = min_tasa / (max_tasa + 1e-9)\n", + "\n", + " color_alerta = \"🔴 RIESGO LEGAL\" if disparate_impact_ratio < 0.8 else \"🟢 APROBADO\"\n", + "\n", + " axes[i][0].text(0.5, 0.85, f\"Disparate Impact Ratio: {disparate_impact_ratio:.2f}\\n{color_alerta}\", \n", + " horizontalalignment='center', verticalalignment='center', transform=axes[i][0].transAxes,\n", + " bbox=dict(facecolor='white', alpha=0.9, edgecolor='gray'))\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " # Consola MLOps (Interactiva)\n", + " display(Markdown(\"### 📋 Veredicto de Justicia Algorítmica\"))\n", + " display(df_fairness.style.format({\n", + " 'Selection Rate (Demographic Parity)': \"{:.2%}\",\n", + " 'Recall (Equal Opportunity)': \"{:.2%}\"\n", + " }).background_gradient(cmap='viridis', subset=['Selection Rate (Demographic Parity)', 'Recall (Equal Opportunity)']))\n", + " else:\n", + " plt.close(fig)\n", + " # Consola MLOps (Texto Plano)\n", + " logger.info(\"\\n### 📋 Veredicto de Justicia Algorítmica\")\n", + " logger.info(\"\\n\" + df_fairness.to_string())\n", + "\n", + " logger.info(\"\\n 💡 NOTA DEL ARQUITECTO: Si hay diferencias extremas, no es culpa del algoritmo.\")\n", + " logger.info(\" ↳ Se debe a 'Sampling Bias' (sesgo histórico en los datos). En ciberseguridad, esto equivaldría a un 'Domain Shift'.\")\n", + " logger.info(f\"\\n⏱️ Auditoría completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return df_fairness\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de Test ('X_test' o 'y_test').\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " raise ValueError(\"La caja fuerte de modelos no existe en el Manager.\")\n", + "\n", + " if 'oraculo_calibrado' in manager.modelos_preprocesamiento:\n", + " modelo_final = manager.modelos_preprocesamiento['oraculo_calibrado']\n", + " logger.info(\">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO <<<\")\n", + " elif 'oraculo_lightgbm' in manager.modelos_preprocesamiento:\n", + " modelo_final = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + " logger.warning(\">>> ⚠️ UTILIZANDO ORÁCULO CRUDO (NO SE DETECTÓ CALIBRACIÓN) <<<\")\n", + " else:\n", + " raise ValueError(\"No se encontró ningún modelo ('oraculo_calibrado' u 'oraculo_lightgbm') en la caja fuerte.\")\n", + "\n", + " if not hasattr(manager, 'artefactos') or 'umbral_decision' not in manager.artefactos:\n", + " raise ValueError(\"El 'umbral_decision' no existe en los artefactos. Ejecuta la Fase 19.3.\")\n", + "\n", + " umbral_final = manager.artefactos['umbral_decision']\n", + "\n", + " logger.info(f\"\\n>>> ⚖️ INICIANDO AUDITORÍA LEGAL (Umbral Activo: {umbral_final:.4f}) <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Disparamos el Auditor Legal\n", + " reporte_fairness = auditoria_justicia_mlops(\n", + " modelo_calibrado=modelo_final,\n", + " umbral_oro=umbral_final,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Auditoría de Justicia: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🏭 INICIANDO CONSTRUCCIÓN DEL ARTEFACTO DE DESPLIEGUE <<<\n", + "=== 🏭 FASE 20: Ensamblando la Máquina de Inferencia Definitiva ===\n", + " ⚙️ Extrayendo rutas, recetas y modelos de la memoria del Manager...\n", + " 🧬 Instanciando la Cápsula de Producción (PipelineProduccionMLOps)...\n", + " 🔬 Test de Integridad: Simulando un request de la API REST...\n", + " ✅ [TEST PASSED] Predicciones generadas exitosamente: ['<=50K' '>50K' '>50K']\n", + " 💾 Serializando el Pipeline Unificado en: mlops_activos\\pipeline_produccion.pkl ...\n", + "--------------------------------------------------------------------------------\n", + " 🚀 ESTATUS: [DEPLOYMENT READY] Archivo generado (5.83 MB).\n", + " 💡 INSTRUCCIONES BACKEND: joblib.load('pipeline_produccion.pkl').predict(df_json)\n", + "\n", + "⏱️ Ensamblaje completado en 0.654s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import logging\n", + "import joblib\n", + "import warnings\n", + "import pandas as pd\n", + "import numpy as np\n", + "from typing import Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# 1. LA CÁPSULA DE PRODUCCIÓN (STANDALONE INFERENCE CLASS)\n", + "# ==========================================\n", + "class PipelineProduccionMLOps:\n", + " \"\"\"\n", + " [FASE 8 - Paso 20.1] El Santo Grial del Despliegue.\n", + " - Encapsula toda la memoria estática (artefactos, diccionarios) y los modelos pesados.\n", + " - Recrea el DAG (Grafo de Transformaciones) de forma ultra-optimizada para latencia en milisegundos.\n", + " - Standalone: El servidor API no necesita importar las 20 funciones del Jupyter Notebook, \n", + " solo necesita instanciar este objeto cargado del .pkl.\n", + " \"\"\"\n", + " def __init__(self, rutas: Dict, artefactos: Dict, modelos: Dict):\n", + " self.rutas = rutas\n", + " self.artefactos = artefactos\n", + " self.modelos = modelos\n", + " self.umbral_oro = artefactos.get('umbral_decision', 0.50)\n", + " self.version = \"1.0.0\"\n", + " self.fecha_ensamblaje = time.strftime(\"%Y-%m-%d %H:%M:%S\")\n", + "\n", + " def _transformar_features(self, X_raw: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\" Motor de Inferencia Rápida: Ejecuta las recetas sobre datos nuevos en milisegundos. \"\"\"\n", + " X = X_raw.copy()\n", + " \n", + " # 1. Tipado Nativo Categórico (Fase 10.5)\n", + " receta_nativas = self.artefactos.get('receta_categorias_nativas', {})\n", + " for col, categorias in receta_nativas.items():\n", + " if col in X.columns:\n", + " molde = pd.CategoricalDtype(categories=categorias, ordered=False)\n", + " X[col] = X[col].astype(str).replace('nan', np.nan).astype(molde)\n", + "\n", + " # 2. Agrupación de Categorías Raras (Rare Labeling)\n", + " receta_raras = self.artefactos.get('receta_categorias_raras', {})\n", + " for col, top_cats in receta_raras.items():\n", + " if col in X.columns:\n", + " X[col] = np.where(X[col].isin(top_cats), X[col], 'Other')\n", + "\n", + " # 3. Target Encoding / WoE (Fase 10.4)\n", + " receta_target = self.artefactos.get('receta_target_encoding', {})\n", + " if not receta_target: \n", + " receta_target = self.artefactos.get('receta_woe_encoding', {})\n", + " \n", + " for col, config_encoding in receta_target.items():\n", + " if col in X.columns:\n", + " if '__GLOBAL_NEUTRAL__' in config_encoding:\n", + " neutral = config_encoding.pop('__GLOBAL_NEUTRAL__', 0.0)\n", + " mask_nan = X[col].isna()\n", + " X[col] = X[col].astype(object).map(config_encoding).fillna(neutral)\n", + " X.loc[mask_nan, col] = np.nan\n", + " else:\n", + " for nombre_clase, mapeo in config_encoding.items():\n", + " media = mapeo.pop('__GLOBAL_MEAN__', 0.0)\n", + " nueva_col = col if len(config_encoding) == 1 else f\"{col}_prob_{nombre_clase}\"\n", + " mask_nan = X[col].isna()\n", + " X[nueva_col] = X[col].astype(object).map(mapeo).fillna(media)\n", + " X.loc[mask_nan, nueva_col] = np.nan\n", + " if len(config_encoding) > 1:\n", + " X.drop(columns=[col], inplace=True)\n", + "\n", + " # 4. Ratios Matemáticos\n", + " receta_ratios = self.artefactos.get('receta_ratios_matematicos', [])\n", + " for div_col, num_col, nombre_ratio in receta_ratios:\n", + " if num_col in X.columns and div_col in X.columns:\n", + " X[nombre_ratio] = X[num_col].astype(float) / (X[div_col].astype(float) + 1e-9)\n", + "\n", + " # 5. Mapeo Binario Múltiple\n", + " receta_binaria = self.artefactos.get('receta_mapeo_binario', {})\n", + " for col, mapeo in receta_binaria.items():\n", + " if col in X.columns:\n", + " X[col] = X[col].map(mapeo).fillna(0).astype(int)\n", + "\n", + " # 6. Embeddings GGPL (Categorías Complejas)\n", + " receta_ggpl = self.artefactos.get('receta_embeddings_ggpl', {})\n", + " for col, config in receta_ggpl.items():\n", + " if col in X.columns:\n", + " diccionario_coord = config['diccionario']\n", + " n_componentes = config['n_componentes']\n", + " coordenadas = X[col].map(diccionario_coord).apply(lambda x: x if isinstance(x, (list, np.ndarray)) else [0.0]*n_componentes)\n", + " for i in range(n_componentes):\n", + " X[f\"{col}_ggpl_{i+1}\"] = coordenadas.apply(lambda x: x[i])\n", + "\n", + " # 7. Imputación Espacial KNN (Fase 11.1)\n", + " imputador_knn = self.modelos.get('imputador_knn', None)\n", + " if imputador_knn is not None and imputador_knn != 'BYPASS_KNN':\n", + " cols_numericas = X.select_dtypes(include=[np.number]).columns.tolist()\n", + " if cols_numericas:\n", + " X[cols_numericas] = imputador_knn.transform(X[cols_numericas])\n", + "\n", + " # 8. Winsorización / Capping (Fase 12.2)\n", + " receta_winsor = self.artefactos.get('receta_winsorizacion', {})\n", + " for col, (lim_inf, lim_sup) in receta_winsor.items():\n", + " if col in X.columns:\n", + " X[col] = X[col].clip(lower=lim_inf, upper=lim_sup)\n", + "\n", + " # 9. Escalamiento Dinámico (Fase 13.1)\n", + " escalador = self.modelos.get('escalador_numerico', None)\n", + " if escalador is not None:\n", + " cols_a_escalar = getattr(escalador, 'feature_names_in_', [])\n", + " cols_presentes = [c for c in cols_a_escalar if c in X.columns]\n", + " if cols_presentes:\n", + " X.loc[:, cols_presentes] = escalador.transform(X[cols_presentes]).astype(np.float32)\n", + "\n", + " # 10. Sinergias SHAP (Fase 15.2)\n", + " sinergias = self.artefactos.get('receta_sinergias_shap', [])\n", + " for col_A, col_B in sinergias:\n", + " if col_A in X.columns and col_B in X.columns:\n", + " X[f\"sinergia_{col_A}_X_{col_B}\"] = X[col_A].astype(float) * X[col_B].astype(float)\n", + "\n", + " # 11. Contrafactuales de Sensibilidad (Fase 15.3)\n", + " oraculo_cf = self.modelos.get('oraculo_contrafactual', None)\n", + " if oraculo_cf is not None:\n", + " cols_numericas_cf = [c for c in self.rutas.get('num_vars', []) if c in X.columns]\n", + " if cols_numericas_cf:\n", + " preds_cf = oraculo_cf.predict_proba(X[cols_numericas_cf].fillna(0))[:, 1]\n", + " X['cf_distancia_frontera'] = np.abs(preds_cf - 0.5)\n", + " p_clip = np.clip(preds_cf, 1e-5, 1 - 1e-5)\n", + " X['cf_fuerza_logit'] = np.log(p_clip / (1 - p_clip))\n", + "\n", + " # 12. Guillotina Final (Limpieza de columnas antes de predecir)\n", + " basura = self.rutas.get('basura_boruta', []) + self.rutas.get('gemelos_colineales', []) + self.rutas.get('fugas_del_futuro', [])\n", + " basura_presente = [c for c in basura if c in X.columns]\n", + " if basura_presente:\n", + " X.drop(columns=basura_presente, inplace=True)\n", + "\n", + " return X\n", + "\n", + " def predict_proba(self, X_raw: pd.DataFrame) -> np.ndarray:\n", + " \"\"\" Expone la probabilidad bruta (Score de Riesgo/Propensión). \"\"\"\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " X_procesado = self._transformar_features(X_raw)\n", + " modelo_final = self.modelos.get('oraculo_calibrado', self.modelos.get('oraculo_lightgbm'))\n", + " return modelo_final.predict_proba(X_procesado)\n", + "\n", + " def predict(self, X_raw: pd.DataFrame) -> np.ndarray:\n", + " \"\"\" Expone la decisión de negocio usando el Umbral de Oro matemático. \"\"\"\n", + " probas = self.predict_proba(X_raw)\n", + " \n", + " # Lógica para binario vs multiclase\n", + " if probas.shape[1] == 2:\n", + " # 🚀 FIX ARQUITECTÓNICO: Mapeamos el output binario (0/1) a las etiquetas exactas \n", + " # que el DTO de Pydantic exige (\"<=50K\" o \">50K\") para evitar un error de validación en FastAPI.\n", + " clases_numericas = (probas[:, 1] >= self.umbral_oro).astype(int)\n", + " mapeo = {0: \"<=50K\", 1: \">50K\"}\n", + " return np.array([mapeo[c] for c in clases_numericas])\n", + " else:\n", + " return np.argmax(probas, axis=1)\n", + "\n", + "# ==========================================\n", + "# 2. ENSAMBLADOR Y EXPORTADOR MLOPS\n", + "# ==========================================\n", + "def construir_y_exportar_pipeline_produccion(manager, directorio_salida: str = \"mlops_activos\"):\n", + " \"\"\"\n", + " [FASE 8 - Paso 20.2] Ensamblaje y Serialización del Objeto Único.\n", + " \"\"\"\n", + " logger.info(\"=== 🏭 FASE 20: Ensamblando la Máquina de Inferencia Definitiva ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if not os.path.exists(directorio_salida):\n", + " os.makedirs(directorio_salida)\n", + "\n", + " # 1. Extracción de Órganos del Manager\n", + " logger.info(\" ⚙️ Extrayendo rutas, recetas y modelos de la memoria del Manager...\")\n", + " rutas = getattr(manager, 'rutas', {})\n", + " artefactos = {\n", + " **getattr(manager, 'artefactos_preprocesamiento', {}),\n", + " **getattr(manager, 'artefactos', {})\n", + " }\n", + " modelos = getattr(manager, 'modelos_preprocesamiento', {})\n", + "\n", + " if not modelos or ('oraculo_calibrado' not in modelos and 'oraculo_lightgbm' not in modelos):\n", + " logger.error(\"🛑 Error Fatal: No se encontró el Oráculo Final en el Manager.\")\n", + " raise ValueError(\"No se encontró el Oráculo Final en el Manager.\")\n", + "\n", + " # 2. Instanciación de la Cápsula\n", + " logger.info(\" 🧬 Instanciando la Cápsula de Producción (PipelineProduccionMLOps)...\")\n", + " pipeline_api = PipelineProduccionMLOps(rutas=rutas, artefactos=artefactos, modelos=modelos)\n", + "\n", + " # 3. Validación de Integridad (Test en Vivo)\n", + " logger.info(\" 🔬 Test de Integridad: Simulando un request de la API REST...\")\n", + " try:\n", + " X_test_crudo = manager.X_test.head(3).copy() \n", + " \n", + " predicciones = pipeline_api.predict(X_test_crudo)\n", + " probabilidades = pipeline_api.predict_proba(X_test_crudo)\n", + " \n", + " logger.info(f\" ✅ [TEST PASSED] Predicciones generadas exitosamente: {predicciones}\")\n", + " except Exception as e:\n", + " logger.error(f\" ❌ [TEST FAILED] El pipeline crasheó al intentar predecir: {e}\")\n", + " raise RuntimeError(f\"Fallo de integridad en el Pipeline: {e}\")\n", + "\n", + " # 4. Exportación Criogénica\n", + " ruta_exportacion = os.path.join(directorio_salida, \"pipeline_produccion.pkl\")\n", + " logger.info(f\" 💾 Serializando el Pipeline Unificado en: {ruta_exportacion} ...\")\n", + " \n", + " # Exportación nativa y limpia. Sin alterar el __module__.\n", + " joblib.dump(pipeline_api, ruta_exportacion, compress=3)\n", + "\n", + " tamano_mb = os.path.getsize(ruta_exportacion) / (1024 * 1024)\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🚀 ESTATUS: [DEPLOYMENT READY] Archivo generado ({tamano_mb:.2f} MB).\")\n", + " logger.info(f\" 💡 INSTRUCCIONES BACKEND: joblib.load('pipeline_produccion.pkl').predict(df_json)\")\n", + " logger.info(f\"\\n⏱️ Ensamblaje completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb\n", + "# ==========================================\n", + "try:\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado.\")\n", + "\n", + " logger.info(\">>> 🏭 INICIANDO CONSTRUCCIÓN DEL ARTEFACTO DE DESPLIEGUE <<<\")\n", + " \n", + " construir_y_exportar_pipeline_produccion(\n", + " manager=manager, \n", + " directorio_salida=\"mlops_activos\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en el Ensamblador de Producción: {e}\")" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "adult", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/EDA_For_All_Tree_clean.ipynb b/EDA_For_All_Tree_clean.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..31c0626be8f2cf25da73a07a204ea2110ae4db07 --- /dev/null +++ b/EDA_For_All_Tree_clean.ipynb @@ -0,0 +1,22277 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🚀 FASE 1.1: Ingesta Acelerada Estructural ===\n", + " 🔍 Heurística Principal: Separador ';' detectado por Sniffer.\n", + " ⚡ Ejecutando ingesta paralela con motor POLARS (Multi-core)...\n", + " ✔️ Archivo cargado a velocidad extrema y convertido a Pandas Mutable.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "📊 Diagnóstico de Ingesta:\n", + " ⏱️ Tiempo de lectura : 0.0421 segundos\n", + " 📐 Dimensiones : 32,561 filas x 15 columnas\n", + " 💾 Consumo de RAM : 17.65 MB\n", + "\n", + "--- 👁️ Radiografía de Estructura Inicial (Primeras 3 filas) ---\n", + "\n", + " age workclass fnlwgt education education.num marital.status occupation relationship race sex capital.gain capital.loss hours.per.week native.country income\n", + "0 90 ? 77053 HS-grad 9 Widowed ? Not-in-family White Female 0 4356 40 United-States <=50 K\n", + "1 82 Private 132870 HS-grad 9 Widowed Exec-managerial Not-in-family White Female 0 4356 18 United-States <=50K \n", + "2 66 ? 186061 Some-college 10 Widowed ? Unmarried Black Female 0 4356 40 United-States <=50K\n", + "\n", + "✅ Datos iniciales cargados de forma segura en la memoria de 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import csv\n", + "import time\n", + "import logging # 🚀 NUEVO: Librería de Telemetría Estándar\n", + "import pandas as pd\n", + "from typing import Tuple, Any, Optional\n", + "from IPython.display import display\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# ==========================================\n", + "# 🚀 FIX ARQUITECTÓNICO: Configuración del Sistema de Telemetría (Logging)\n", + "# ==========================================\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "logger.setLevel(logging.INFO)\n", + "\n", + "# Evitar duplicación de handlers si se ejecuta la celda varias veces\n", + "if not logger.handlers:\n", + " # 1. Handler para archivo físico (Persistencia en Servidor/K8s para Datadog/CloudWatch)\n", + " file_handler = logging.FileHandler(\"mlops_pipeline_auditoria.log\", encoding='utf-8')\n", + " file_formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')\n", + " file_handler.setFormatter(file_formatter)\n", + " \n", + " # 2. Handler para la consola (Mantiene la estética en Jupyter Notebook)\n", + " console_handler = logging.StreamHandler()\n", + " console_formatter = logging.Formatter('%(message)s') \n", + " console_handler.setFormatter(console_formatter)\n", + " \n", + " logger.addHandler(file_handler)\n", + " logger.addHandler(console_handler)\n", + "\n", + "# Intentamos cargar el motor de ultra-alta velocidad (Polars)\n", + "try:\n", + " import polars as pl\n", + " MOTOR_PRINCIPAL = 'polars'\n", + "except ImportError:\n", + " MOTOR_PRINCIPAL = 'pandas'\n", + " logger.warning(\"⚠️ Aviso: 'polars' no detectado. Usando 'pandas' (Motor C) como respaldo de emergencia.\")\n", + "\n", + "\n", + "# ==========================================\n", + "# 🚀 EL CONTENEDOR DE ESTADO (PIPELINE MANAGER)\n", + "# ==========================================\n", + "class PipelineManager:\n", + " \"\"\"\n", + " Cerebro MLOps que transporta datos, artefactos y modelos entre fases.\n", + " Elimina dependencias globales y expone una API clara para serializacion.\n", + " \"\"\"\n", + " def __init__(self):\n", + " self.datos_crudos = None\n", + " self.X_train = None\n", + " self.y_train = None\n", + " self.X_test = None\n", + " self.y_test = None\n", + " self.rutas = {\n", + " 'num_vars': [],\n", + " 'cat_vars': [],\n", + " 'bool_vars': [],\n", + " 'date_vars': []\n", + " }\n", + " self.pesos_train = None\n", + " self.grupos_cv = None\n", + " self.artefactos_preprocesamiento = {}\n", + " self.artefactos = {}\n", + " self.modelos_preprocesamiento = {}\n", + "\n", + " def cargar_split(self, X_tr: pd.DataFrame, X_te: pd.DataFrame, y_tr: pd.Series, y_te: pd.Series):\n", + " \"\"\"Inicializa las 4 matrices sagradas del Machine Learning.\"\"\"\n", + " self.X_train = X_tr\n", + " self.X_test = X_te\n", + " self.y_train = y_tr\n", + " self.y_test = y_te\n", + "\n", + " def guardar_artefacto(self, nombre: str, artefacto: Any):\n", + " \"\"\"Registra un artefacto serializable en ambos almacenes compatibles.\"\"\"\n", + " self.artefactos_preprocesamiento[nombre] = artefacto\n", + " self.artefactos[nombre] = artefacto\n", + "\n", + " def guardar_modelo_preprocesamiento(self, nombre: str, modelo: Any):\n", + " \"\"\"Registra un modelo pesado que debe viajar al pipeline final.\"\"\"\n", + " self.modelos_preprocesamiento[nombre] = modelo\n", + "\n", + " def obtener_artefactos_serializables(self) -> dict:\n", + " \"\"\"Fusiona recetas y artefactos en un unico contrato de despliegue.\"\"\"\n", + " return {\n", + " **self.artefactos_preprocesamiento,\n", + " **self.artefactos\n", + " }\n", + "\n", + " def obtener_modelos_serializables(self) -> dict:\n", + " \"\"\"Entrega una copia segura de la caja fuerte de modelos.\"\"\"\n", + " return dict(self.modelos_preprocesamiento)\n", + "\n", + "\n", + "def ingesta_acelerada_multicore(\n", + " ruta_archivo: str,\n", + " convertir_a_pandas_mutable: bool = True\n", + ") -> Tuple[Optional[Any], int]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.1] Ingesta Acelerada Multi-core (Nivel Producción 2026).\n", + " - Motor: Usa Polars (Rust) para leer millones de filas usando todos los hilos del CPU.\n", + " - Inteligencia Escalonada: Sniffer primario + Escáner de frecuencia de respaldo para delimitadores rebeldes.\n", + " - Tolerancia a Encodings (NUEVO): Ignora caracteres corruptos al detectar el separador.\n", + " - Mutabilidad: Extrae los datos al backend nativo de NumPy permitiendo cirugía de datos posterior.\n", + " \"\"\"\n", + " # ==========================================\n", + " # 1. Cláusulas de Guarda (Seguridad del File System)\n", + " # ==========================================\n", + " if not ruta_archivo or not isinstance(ruta_archivo, str):\n", + " logger.error(\"🛑 Error Crítico: Ruta de archivo inválida o nula.\")\n", + " return None, 0\n", + "\n", + " if not os.path.exists(ruta_archivo):\n", + " logger.error(f\"🛑 Error Crítico: El archivo '{ruta_archivo}' no fue encontrado en el sistema.\")\n", + " return None, 0\n", + "\n", + " logger.info(\"=== 🚀 FASE 1.1: Ingesta Acelerada Estructural ===\")\n", + "\n", + " # ==========================================\n", + " # 2. Inteligencia de Detección de Separador (Escudo Doble + Tolerancia a Fallos)\n", + " # ==========================================\n", + " separador_detectado = ',' # Default absoluto\n", + " try:\n", + " # 🔧 FIX MLOPS: errors='replace' evita que el código crashee si hay bytes corruptos (ej. 0xa0)\n", + " with open(ruta_archivo, 'r', encoding='utf-8', errors='replace') as archivo:\n", + " # Leemos solo un bloque minúsculo para no ahogar la RAM\n", + " muestra = archivo.read(10240) \n", + "\n", + " try:\n", + " # INTENTO 1: Motor Sniffer oficial de Python\n", + " separador_detectado = csv.Sniffer().sniff(muestra).delimiter\n", + "\n", + " # Manejo especial: A veces el sniffer confunde letras normales con separadores en textos sucios\n", + " if separador_detectado.isalnum():\n", + " raise ValueError(\"Sniffer detectó una letra/número como separador. Activando respaldo.\")\n", + "\n", + " logger.info(f\" 🔍 Heurística Principal: Separador '{separador_detectado}' detectado por Sniffer.\")\n", + "\n", + " except Exception:\n", + " # INTENTO 2: Escáner de Frecuencia (El Fallback Inteligente)\n", + " separadores_candidatos = [',', ';', '\\t', '|']\n", + " lineas = muestra.strip().split('\\n')[:10] # Analizamos las primeras 10 líneas\n", + "\n", + " # Contamos cuántas veces aparece cada candidato en la muestra\n", + " conteos = {sep: sum(linea.count(sep) for linea in lineas) for sep in separadores_candidatos}\n", + " mejor_candidato = max(conteos, key=conteos.get)\n", + "\n", + " if conteos[mejor_candidato] > 0:\n", + " separador_detectado = mejor_candidato\n", + " if separador_detectado == '\\t':\n", + " logger.info(\" 🛡️ Heurística de Respaldo: Sniffer falló, pero se detectó 'TABULADOR' por frecuencia.\")\n", + " else:\n", + " logger.info(f\" 🛡️ Heurística de Respaldo: Sniffer falló, pero se detectó '{separador_detectado}' por frecuencia.\")\n", + " else:\n", + " logger.warning(\" ⚠️ Alerta MLOps: Formato irreconocible o archivo de una sola columna. Forzando coma (',').\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\" 🛑 Error fatal al inspeccionar el archivo: {e}. Forzando coma (',').\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Ingesta de Alta Velocidad\n", + " # ==========================================\n", + " df_resultante = None\n", + " inicio_timer = time.time()\n", + "\n", + " try:\n", + " if MOTOR_PRINCIPAL == 'polars':\n", + " logger.info(f\" ⚡ Ejecutando ingesta paralela con motor POLARS (Multi-core)...\")\n", + "\n", + " # Polars lee en paralelo, ignora errores de codificación (utf8-lossy) y líneas corruptas\n", + " df_polars = pl.read_csv(\n", + " ruta_archivo,\n", + " separator=separador_detectado,\n", + " ignore_errors=True,\n", + " infer_schema_length=10000,\n", + " encoding='utf8-lossy'\n", + " )\n", + "\n", + " # MLOps: Convertimos a Pandas nativo (NumPy backend).\n", + " if convertir_a_pandas_mutable:\n", + " df_resultante = df_polars.to_pandas()\n", + " logger.info(\" ✔️ Archivo cargado a velocidad extrema y convertido a Pandas Mutable.\")\n", + " else:\n", + " df_resultante = df_polars\n", + " logger.info(\" ✔️ Archivo cargado a velocidad extrema (Mantenido en Polars).\")\n", + "\n", + " else:\n", + " # Fallback a Pandas si el usuario no tiene Polars instalado\n", + " logger.info(f\" 🐢 Ejecutando ingesta con motor PANDAS (C-Engine)...\")\n", + " df_resultante = pd.read_csv(\n", + " ruta_archivo,\n", + " sep=separador_detectado,\n", + " engine='c',\n", + " on_bad_lines='skip',\n", + " low_memory=False\n", + " )\n", + " logger.info(\" ✔️ Archivo cargado mediante fallback de seguridad (Nativo Mutable).\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\"🛑 Error crítico durante la lectura del archivo: {e}\")\n", + " return None, 0\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " # ==========================================\n", + " # 4. Snapshot de Memoria y Reporte UI\n", + " # ==========================================\n", + " filas, columnas = df_resultante.shape\n", + "\n", + " # Cálculo de memoria seguro (Dependiendo si es Pandas o Polars)\n", + " if isinstance(df_resultante, pd.DataFrame):\n", + " memoria_mb = df_resultante.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " else:\n", + " memoria_mb = df_resultante.estimated_size() / (1024 ** 2)\n", + "\n", + " logger.info(f\"\\n📊 Diagnóstico de Ingesta:\")\n", + " logger.info(f\" ⏱️ Tiempo de lectura : {tiempo_total:.4f} segundos\")\n", + " logger.info(f\" 📐 Dimensiones : {filas:,} filas x {columnas} columnas\")\n", + " logger.info(f\" 💾 Consumo de RAM : {memoria_mb:.2f} MB\")\n", + "\n", + " logger.info(\"\\n--- 👁️ Radiografía de Estructura Inicial (Primeras 3 filas) ---\")\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " display(df_resultante.head(3))\n", + " else:\n", + " logger.info(\"\\n\" + df_resultante.head(3).to_string())\n", + "\n", + " return df_resultante, filas\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb\n", + "# ==========================================\n", + "# IMPORTANTE: Si no tienes Polars, instálalo en una celda arriba con: !pip install polars\n", + "\n", + "ruta_dataset = 'adult.csv' # Cambia esto por tu archivo real\n", + "\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Instanciar el Manager en la Línea 1 del flujo principal\n", + " manager = PipelineManager()\n", + " \n", + " df_crudo, total_filas_originales = ingesta_acelerada_multicore(\n", + " ruta_archivo=ruta_dataset,\n", + " convertir_a_pandas_mutable=True # 🔥 La clave para habilitar la cirugía de datos posterior\n", + " )\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar el estado crudo directamente en el Manager\n", + " if df_crudo is not None:\n", + " manager.datos_crudos = df_crudo\n", + " logger.info(\"\\n✅ Datos iniciales cargados de forma segura en la memoria de 'manager.datos_crudos'.\")\n", + "\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo en la celda de ejecución: {e}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "=== 🧬 FASE 1.1.5: Escáner Topológico de Atributos (15 columnas en total) ===\n", + "#### 📦 Bloque 1 (Columnas 1 a 15)\n", + "| # | 🗂️ Atributo (Izquierda) | ⚙️ Dtype | # | 🗂️ Atributo (Derecha) | ⚙️ Dtype |\n", + "|:---:|---|:---:|:---:|---|:---:|\n", + "| **1** | `age` | *int64* | **11** | `capital.gain` | *int64* |\n", + "| **2** | `workclass` | *object* | **12** | `capital.loss` | *int64* |\n", + "| **3** | `fnlwgt` | *int64* | **13** | `hours.per.week` | *int64* |\n", + "| **4** | `education` | *object* | **14** | `native.country` | *object* |\n", + "| **5** | `education.num` | *int64* | **15** | `income` | *object* |\n", + "| **6** | `marital.status` | *object* | - | - | - |\n", + "| **7** | `occupation` | *object* | - | - | - |\n", + "| **8** | `relationship` | *object* | - | - | - |\n", + "| **9** | `race` | *object* | - | - | - |\n", + "| **10** | `sex` | *object* | - | - | - |\n", + "\n", + "✔️ Mapeo estructural completado con éxito.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "from typing import Optional\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# FASE 1.2: ESCÁNER TOPOLÓGICO DE ATRIBUTOS\n", + "# ==========================================\n", + "def mapear_columnas_oraculo(df: Optional[pd.DataFrame]) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.1.5] Escáner Topológico de Atributos.\n", + " - Blindaje: Valida la existencia y estado de la matriz en memoria.\n", + " - Paginación Dinámica: Muestra las columnas en bloques de 20.\n", + " - UI Inteligente: Renderiza en 2 columnas (10 a la izquierda, 10 a la derecha) usando Markdown.\n", + " - Telemetría MLOps: Extrae y loguea el tipo de dato subyacente (dtype).\n", + " \"\"\"\n", + " if df is None or df.empty:\n", + " logger.error(\"🛑 Error Crítico [Escáner]: El DataFrame proporcionado está vacío o no existe en memoria.\")\n", + " return\n", + "\n", + " columnas = df.columns.tolist()\n", + " tipos = df.dtypes.astype(str).tolist()\n", + " total_cols = len(columnas)\n", + "\n", + " logger.info(f\"\\n=== 🧬 FASE 1.1.5: Escáner Topológico de Atributos ({total_cols} columnas en total) ===\")\n", + "\n", + " # Procesamiento por lotes (chunks de 20)\n", + " for i in range(0, total_cols, 20):\n", + " # Extracción segura del bloque actual\n", + " chunk_cols = columnas[i:i+20]\n", + " chunk_tipos = tipos[i:i+20]\n", + "\n", + " # División interna: 10 a la izquierda, 10 a la derecha\n", + " mitad = 10\n", + " left_cols = chunk_cols[:mitad]\n", + " left_tipos = chunk_tipos[:mitad]\n", + " right_cols = chunk_cols[mitad:]\n", + " right_tipos = chunk_tipos[mitad:]\n", + "\n", + " # Construcción dinámica de la tabla Markdown para Jupyter/Logs\n", + " md_table = f\"#### 📦 Bloque { (i // 20) + 1 } (Columnas {i + 1} a {min(i + 20, total_cols)})\\n\"\n", + " md_table += \"| # | 🗂️ Atributo (Izquierda) | ⚙️ Dtype | # | 🗂️ Atributo (Derecha) | ⚙️ Dtype |\\n\"\n", + " md_table += \"|:---:|---|:---:|:---:|---|:---:|\\n\"\n", + "\n", + " for j in range(mitad):\n", + " # Índices absolutos para la visualización\n", + " idx_left = i + j\n", + " idx_right = i + j + mitad\n", + "\n", + " # Renderizado de la celda izquierda (con protección de desbordamiento)\n", + " if j < len(left_cols):\n", + " str_idx_l = f\"**{idx_left + 1}**\"\n", + " str_col_l = f\"`{left_cols[j]}`\"\n", + " str_typ_l = f\"*{left_tipos[j]}*\"\n", + " else:\n", + " str_idx_l, str_col_l, str_typ_l = \"-\", \"-\", \"-\"\n", + "\n", + " # Renderizado de la celda derecha (con protección de desbordamiento)\n", + " if j < len(right_cols):\n", + " str_idx_r = f\"**{idx_right + 1}**\"\n", + " str_col_r = f\"`{right_cols[j]}`\"\n", + " str_typ_r = f\"*{right_tipos[j]}*\"\n", + " else:\n", + " str_idx_r, str_col_r, str_typ_r = \"-\", \"-\", \"-\"\n", + "\n", + " # Inserción de la fila en la tabla\n", + " md_table += f\"| {str_idx_l} | {str_col_l} | {str_typ_l} | {str_idx_r} | {str_col_r} | {str_typ_r} |\\n\"\n", + "\n", + " # 🛡️ Cláusula de Seguridad Visual Integrada con Logging\n", + " if MODO_VISUAL:\n", + " display(Markdown(md_table))\n", + " # Logueamos en el archivo físico de manera silenciosa para no ensuciar el notebook\n", + " logger.debug(f\"Renderizado visual del Bloque {(i // 20) + 1} completado.\")\n", + " else:\n", + " # En Headless/Producción, imprime la estructura raw para DataDog/CloudWatch\n", + " logger.info(md_table) \n", + "\n", + " logger.info(\"✔️ Mapeo estructural completado con éxito.\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificamos que el manager centralizado exista\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos los datos crudos directamente desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene cargados 'datos_crudos'. Ejecuta la ingesta primero.\")\n", + "\n", + " mapear_columnas_oraculo(manager.datos_crudos)\n", + " \n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo en el escáner de atributos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧬 FASE 1.2: Purga de Clones Absolutos ===\n", + " 🔍 Escaneando la matriz en busca de espejos perfectos...\n", + " 🚨 ALERTA: Se detectaron 24 filas 100% idénticas.\n", + " ↳ Acción: Ejecutando guillotina (Conservando solo el registro original)...\n", + "\n", + "✅ Purga completada en 0.118s.\n", + " 📉 Filas eliminadas : 24\n", + " 📊 Filas puras : 32,537\n", + " 🚀 RAM Liberada : 0.01 MB\n", + "\n", + "📦 [MLOps] Matriz purgada y actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def purgar_clones_absolutos(df_crudo: pd.DataFrame) -> Tuple[pd.DataFrame, int]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.2] Purga de Clones Absolutos (Nivel Producción).\n", + " - Inteligencia Estructural: Busca filas 100% idénticas en todas sus dimensiones.\n", + " - Prevención de Leakage Temprano: Elimina duplicados originados por errores \n", + " de extracción (SQL JOINs cruzados) que inflarían el conteo estadístico.\n", + " - MLOps: Perfila la memoria RAM liberada en el proceso y lo registra en Logs.\n", + " \"\"\"\n", + " # ==========================================\n", + " # 1. Cláusulas de Guarda (Seguridad)\n", + " # ==========================================\n", + " if not isinstance(df_crudo, pd.DataFrame) or df_crudo.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df_crudo, 0\n", + "\n", + " logger.info(\"=== 🧬 FASE 1.2: Purga de Clones Absolutos ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " filas_originales = len(df_crudo)\n", + "\n", + " # 📸 Snapshot de memoria real (Deep)\n", + " mem_antes = df_crudo.memory_usage(deep=True).sum() / (1024 ** 2)\n", + "\n", + " # ==========================================\n", + " # 2. Escáner de Redundancia Total (Fuerza Bruta C)\n", + " # ==========================================\n", + " logger.info(\" 🔍 Escaneando la matriz en busca de espejos perfectos...\")\n", + "\n", + " # duplicated() en Pandas usa tablas hash en C subyacente, es ultra-rápido\n", + " # keep='first' marca como True a los impostores (copias) y salva al original\n", + " mascara_clones = df_crudo.duplicated(keep='first')\n", + " cantidad_clones = mascara_clones.sum()\n", + "\n", + " # ==========================================\n", + " # 3. La Guillotina de Clones\n", + " # ==========================================\n", + " if cantidad_clones > 0:\n", + " logger.warning(f\" 🚨 ALERTA: Se detectaron {cantidad_clones:,} filas 100% idénticas.\")\n", + " logger.info(\" ↳ Acción: Ejecutando guillotina (Conservando solo el registro original)...\")\n", + "\n", + " # Filtramos la matriz quedándonos solo con los que NO son clones (~mascara)\n", + " df_sin_clones = df_crudo[~mascara_clones].copy()\n", + "\n", + " # Reseteamos el índice para que FLAML/LightGBM no colapsen por saltos numéricos\n", + " df_sin_clones.reset_index(drop=True, inplace=True)\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo de Hardware (Logs)\n", + " # ==========================================\n", + " mem_despues = df_sin_clones.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " ahorro_ram = mem_antes - mem_despues\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Purga completada en {tiempo_total:.3f}s.\")\n", + " logger.info(f\" 📉 Filas eliminadas : {cantidad_clones:,}\")\n", + " logger.info(f\" 📊 Filas puras : {len(df_sin_clones):,}\")\n", + " logger.info(f\" 🚀 RAM Liberada : {ahorro_ram:.2f} MB\")\n", + "\n", + " else:\n", + " df_sin_clones = df_crudo.copy()\n", + " tiempo_total = time.time() - inicio_timer\n", + " logger.info(f\"\\n ✔️ Matriz impecable. No se encontraron clones absolutos ({tiempo_total:.3f}s).\")\n", + "\n", + " return df_sin_clones, cantidad_clones\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificamos que el manager centralizado exista\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos los datos crudos directamente desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene cargados 'datos_crudos'. Ejecuta la ingesta primero.\")\n", + "\n", + " # Ejecutamos la purga consumiendo los datos directamente del manager\n", + " df_sin_clones, total_clones_destruidos = purgar_clones_absolutos(df_crudo=manager.datos_crudos)\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Actualizamos el estado del manager con la matriz limpia\n", + " manager.datos_crudos = df_sin_clones\n", + " logger.info(\"\\n📦 [MLOps] Matriz purgada y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Purga de Clones: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🪓 FASE 1.3: Guillotina Temprana (IA Estructural y Migración de IDs) ===\n", + " 🎯 [TARGET SELECCIONADO]: 'income' se mantendrá intacto.\n", + " 🪓 [DECRETO DEL ARQUITECTO]: 1 variables decapitadas manualmente: ['fnlwgt']\n", + " 🧠 Activando Motor de Correlación para buscar Fugas de Datos ocultas...\n", + " ✅ La matriz parece estar libre de Fugas de Datos obvias.\n", + "\n", + "✅ Cirugía Estructural Completada en 0.0832s:\n", + " 🎯 Target Definitivo : income\n", + " 🔪 Filas destruidas (Basura) : 0\n", + " 📉 Columnas destruidas : 2\n", + " 🪓 Eliminaciones Manuales : 1\n", + " 🛡️ Columnas migradas a Index : 0\n", + " 📊 Variables predictoras : 13\n", + "\n", + "📦 Variable guardada con éxito en memoria: target_ganador_fase1 = 'income'\n", + "📦 [MLOps] Matriz decapitada y actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import re\n", + "from typing import Tuple, List, Optional\n", + "import time\n", + "import warnings\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ejecutar_guillotina_inteligente(\n", + " df: pd.DataFrame,\n", + " targets_potenciales: List[str],\n", + " columnas_a_eliminar_manual: Optional[List[str]] = None # 🚀 FIX: Nuevo parámetro manual\n", + ") -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3] La Guillotina Temprana (Nivel AutoML Avanzado).\n", + " - Batalla de Targets: Conserva el primero de la lista y destruye a sus rivales explícitos.\n", + " - Guillotina Manual: Elimina variables forzadas por el Arquitecto.\n", + " - IA Anti-Leakage: Escanea TODA la matriz y decapita automáticamente variables 'tramposas'.\n", + " - Regla de Oro: Purga filas si el Target es nulo.\n", + " - Escáner de Degradación: Destruye columnas con >90% de nulos.\n", + " - Escáner de Entropía V3 (NUEVO): Detecta IDs en CamelCase/PascalCase y llaves primarias desordenadas.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " logger.info(\"=== 🪓 FASE 1.3: Guillotina Temprana (IA Estructural y Migración de IDs) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + "\n", + " # 👑 Se extrae al ganador inmediatamente\n", + " target_principal = targets_potenciales[0]\n", + "\n", + " reporte_operaciones = {\n", + " 'target_escogido': target_principal, \n", + " 'filas_sin_target_eliminadas': 0, \n", + " 'targets_secundarios_eliminados': [], \n", + " 'fugas_datos_detectadas_ia': [], \n", + " 'nulos_masivos_eliminados': [], \n", + " 'constantes_eliminadas': [],\n", + " 'isomorficas_redundantes_eliminadas': [],\n", + " 'ids_migrados_al_index': [],\n", + " 'eliminadas_manualmente': [] # 🚀 FIX: Registro manual\n", + " }\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # ==========================================\n", + " # 1. LA BATALLA, BLINDAJE Y AUTO-LEAKAGE\n", + " # ==========================================\n", + " if target_principal in df_opt.columns:\n", + " logger.info(f\" 🎯 [TARGET SELECCIONADO]: '{target_principal}' se mantendrá intacto.\")\n", + " filas_antes = len(df_opt)\n", + "\n", + " patron_regex = r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$'\n", + " mask_basura = df_opt[target_principal].astype(str).str.match(patron_regex)\n", + "\n", + " if mask_basura.any():\n", + " df_opt.loc[mask_basura, target_principal] = np.nan\n", + "\n", + " df_opt.dropna(subset=[target_principal], inplace=True)\n", + "\n", + " filas_destruidas = filas_antes - len(df_opt)\n", + " if filas_destruidas > 0:\n", + " reporte_operaciones['filas_sin_target_eliminadas'] = filas_destruidas\n", + " logger.info(f\" 🧹 [REGLA DE ORO]: {filas_destruidas} filas aniquiladas por contener Target nulo.\")\n", + " else:\n", + " logger.warning(f\" ⚠️ Alerta: El target '{target_principal}' no se encontró en la matriz.\")\n", + " return df, {}\n", + "\n", + " # 🚀 FIX: EJECUCIÓN DE GUILLOTINA MANUAL ANTES DE LA IA\n", + " if columnas_a_eliminar_manual:\n", + " a_borrar_manual = [col for col in columnas_a_eliminar_manual if col in df_opt.columns and col != target_principal]\n", + " if a_borrar_manual:\n", + " df_opt.drop(columns=a_borrar_manual, inplace=True)\n", + " reporte_operaciones['eliminadas_manualmente'] = a_borrar_manual\n", + " logger.info(f\" 🪓 [DECRETO DEL ARQUITECTO]: {len(a_borrar_manual)} variables decapitadas manualmente: {a_borrar_manual}\")\n", + "\n", + " if len(targets_potenciales) > 1:\n", + " targets_secundarios = targets_potenciales[1:]\n", + " a_borrar_targets = [t for t in targets_secundarios if t in df_opt.columns]\n", + "\n", + " if a_borrar_targets:\n", + " df_opt.drop(columns=a_borrar_targets, inplace=True)\n", + " reporte_operaciones['targets_secundarios_eliminados'] = a_borrar_targets\n", + " logger.info(f\" 🗑️ [BATALLA]: Decapitando rivales explícitos: {a_borrar_targets}\")\n", + "\n", + " logger.info(\" 🧠 Activando Motor de Correlación para buscar Fugas de Datos ocultas...\")\n", + "\n", + " trampas_descubiertas = []\n", + " umbral_trampa = 0.85 \n", + "\n", + " rey_numerico = pd.factorize(df_opt[target_principal])[0] if df_opt[target_principal].dtype == 'object' or df_opt[target_principal].dtype == 'category' else df_opt[target_principal]\n", + "\n", + " for col in df_opt.columns:\n", + " if col == target_principal: continue\n", + "\n", + " if pd.api.types.is_numeric_dtype(df_opt[col]) or pd.api.types.is_bool_dtype(df_opt[col]):\n", + " mask = ~df_opt[col].isna() & (rey_numerico != -1) \n", + " if mask.sum() > 100: \n", + " correlacion = np.abs(np.corrcoef(df_opt.loc[mask, col], rey_numerico[mask])[0, 1])\n", + "\n", + " if correlacion >= umbral_trampa:\n", + " trampas_descubiertas.append(col)\n", + " logger.warning(f\" 🚨 [Fuga Detectada]: '{col}' predice al Rey con {correlacion*100:.1f}% de exactitud. Es trampa.\")\n", + "\n", + " if trampas_descubiertas:\n", + " df_opt.drop(columns=trampas_descubiertas, inplace=True)\n", + " reporte_operaciones['fugas_datos_detectadas_ia'] = trampas_descubiertas\n", + " logger.info(f\" 🔪 Decapitando fugas del futuro automáticas: {trampas_descubiertas}\")\n", + " else:\n", + " logger.info(\" ✅ La matriz parece estar libre de Fugas de Datos obvias.\")\n", + "\n", + " filas_totales_actuales = len(df_opt)\n", + "\n", + " # ==========================================\n", + " # 🚀 2. ESCÁNER DE DEGRADACIÓN (Nulos Masivos)\n", + " # ==========================================\n", + " umbral_nulos = 0.90 \n", + " nulos_ratios = df_opt.isna().mean()\n", + " a_borrar_nulos = nulos_ratios[nulos_ratios >= umbral_nulos].index.tolist()\n", + "\n", + " if target_principal in a_borrar_nulos:\n", + " a_borrar_nulos.remove(target_principal)\n", + "\n", + " if a_borrar_nulos:\n", + " df_opt.drop(columns=a_borrar_nulos, inplace=True)\n", + " reporte_operaciones['nulos_masivos_eliminados'] = a_borrar_nulos\n", + " logger.info(f\" 🕳️ [DEGRADACIÓN]: {len(a_borrar_nulos)} variables destruidas por nulos irrecuperables (>90%).\")\n", + "\n", + " # ==========================================\n", + " # 🧠 3. ESCÁNER DE ENTROPÍA V3 (IDs Inteligentes & CamelCase)\n", + " # ==========================================\n", + " patron_id_base = re.compile(r'(^id$|_id$|^id_|^cod_|^codigo|_codigo$|_code$|^idx$|uuid|hash|pk|cedula)', re.IGNORECASE)\n", + " a_borrar_constantes = []\n", + " ids_encontrados = []\n", + "\n", + " for col in df_opt.columns:\n", + " if col == target_principal: continue\n", + "\n", + " unicos = df_opt[col].nunique(dropna=False) \n", + "\n", + " if unicos <= 1:\n", + " a_borrar_constantes.append(col)\n", + " continue\n", + " elif not pd.api.types.is_float_dtype(df_opt[col]):\n", + " frecuencia_top = df_opt[col].value_counts(normalize=True, dropna=False).iloc[0]\n", + " if frecuencia_top >= 0.995: \n", + " a_borrar_constantes.append(col)\n", + " continue\n", + "\n", + " ratio_unicidad = unicos / filas_totales_actuales\n", + " es_id = False\n", + "\n", + " # 🚀 FIX: Soporte semántico para CamelCase/PascalCase (ej. PatientId, AppointmentID)\n", + " es_id_semantico = bool(patron_id_base.search(col))\n", + " if not es_id_semantico and len(col) > 2:\n", + " if col.endswith('Id') or col.endswith('ID'):\n", + " es_id_semantico = True\n", + "\n", + " if es_id_semantico and unicos > 10: \n", + " es_id = True\n", + " elif pd.api.types.is_integer_dtype(df_opt[col]) and ratio_unicidad >= 0.95:\n", + " # 🚀 FIX: Si un entero es >95% único, es Llave Primaria (no requiere estar ordenado).\n", + " es_id = True\n", + " elif pd.api.types.is_object_dtype(df_opt[col]) or pd.api.types.is_string_dtype(df_opt[col]):\n", + " if ratio_unicidad >= 0.80:\n", + " longitudes = df_opt[col].dropna().astype(str).str.len()\n", + " if longitudes.nunique() == 1 and longitudes.iloc[0] >= 10:\n", + " es_id = True\n", + " elif ratio_unicidad >= 0.99 and not pd.api.types.is_float_dtype(df_opt[col]):\n", + " es_id = True\n", + "\n", + " if es_id:\n", + " ids_encontrados.append(col)\n", + "\n", + " if a_borrar_constantes:\n", + " df_opt.drop(columns=a_borrar_constantes, inplace=True)\n", + " reporte_operaciones['constantes_eliminadas'] = a_borrar_constantes\n", + "\n", + " if ids_encontrados:\n", + " df_opt.set_index(ids_encontrados, inplace=True)\n", + " reporte_operaciones['ids_migrados_al_index'] = ids_encontrados\n", + " logger.info(f\" 🔒 IDs migrados de forma segura al Index: {ids_encontrados}\")\n", + "\n", + " # ==========================================\n", + " # 4. DETECCIÓN DE ISOMORFISMO (1:1 Redundancia)\n", + " # ==========================================\n", + " dicc_unicos = {}\n", + " for col in df_opt.columns:\n", + " if col == target_principal: continue\n", + "\n", + " n_val = df_opt[col].nunique()\n", + " if 1 < n_val <= 100: \n", + " dicc_unicos.setdefault(n_val, []).append(col)\n", + "\n", + " a_borrar_isomorfismo = []\n", + " for n_val, columnas in dicc_unicos.items():\n", + " if len(columnas) > 1: \n", + " for i in range(len(columnas)):\n", + " for j in range(i + 1, len(columnas)):\n", + " col_A = columnas[i]\n", + " col_B = columnas[j]\n", + "\n", + " if col_A in a_borrar_isomorfismo or col_B in a_borrar_isomorfismo:\n", + " continue\n", + "\n", + " combinaciones = len(df_opt[[col_A, col_B]].drop_duplicates())\n", + "\n", + " if combinaciones == n_val:\n", + " if pd.api.types.is_numeric_dtype(df_opt[col_A]) and not pd.api.types.is_numeric_dtype(df_opt[col_B]):\n", + " a_borrar_isomorfismo.append(col_B)\n", + " else:\n", + " a_borrar_isomorfismo.append(col_A)\n", + "\n", + " if a_borrar_isomorfismo:\n", + " df_opt.drop(columns=a_borrar_isomorfismo, inplace=True)\n", + " reporte_operaciones['isomorficas_redundantes_eliminadas'] = a_borrar_isomorfismo\n", + "\n", + " # ==========================================\n", + " # 5. Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " columnas_destruidas = (\n", + " len(reporte_operaciones['targets_secundarios_eliminados']) +\n", + " len(reporte_operaciones['fugas_datos_detectadas_ia']) +\n", + " len(reporte_operaciones['nulos_masivos_eliminados']) +\n", + " len(reporte_operaciones['constantes_eliminadas']) +\n", + " len(reporte_operaciones['isomorficas_redundantes_eliminadas']) +\n", + " len(reporte_operaciones['eliminadas_manualmente']) # 🚀 FIX: Sumadas al total\n", + " )\n", + "\n", + " logger.info(f\"\\n✅ Cirugía Estructural Completada en {tiempo_total:.4f}s:\")\n", + " logger.info(f\" 🎯 Target Definitivo : {reporte_operaciones['target_escogido']}\")\n", + " logger.info(f\" 🔪 Filas destruidas (Basura) : {reporte_operaciones['filas_sin_target_eliminadas']}\")\n", + " logger.info(f\" 📉 Columnas destruidas : {columnas_destruidas}\")\n", + " if reporte_operaciones['eliminadas_manualmente']:\n", + " logger.info(f\" 🪓 Eliminaciones Manuales : {len(reporte_operaciones['eliminadas_manualmente'])}\")\n", + " logger.info(f\" 🛡️ Columnas migradas a Index : {len(reporte_operaciones['ids_migrados_al_index'])}\")\n", + " logger.info(f\" 📊 Variables predictoras : {df_opt.shape[1]}\")\n", + "\n", + " return df_opt, reporte_operaciones\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación robusta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación segura de los datos crudos\n", + " if getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.1 y 1.2.\")\n", + "\n", + " mis_targets = [\n", + " 'income', # 👑 EL REY\n", + " 'DecileScore', # Su rival a eliminar\n", + " ] \n", + "\n", + " # 🚀 FIX MLOps: Agrega aquí las columnas que deseas matar manualmente\n", + " columnas_basura = [\n", + " 'fnlwgt',\n", + " 'RawScore',\n", + " 'RecSupervisionLevel',\n", + " 'LastName',\n", + " 'FirstName',\n", + " 'MiddleName',\n", + " 'Agency_Text', \n", + " 'AssessmentType',\n", + " 'ScaleSet',\n", + " 'ScaleSet_ID',\n", + " 'Scale_ID',\n", + " 'ScaleSet_ID',\n", + " 'AssessmentType',\n", + " 'RecSupervisionLevelText',\n", + " 'DisplayText',\n", + " 'is_recid',\n", + " 'r_charge_degree',\n", + " 'r_days_from_arrest',\n", + " 'r_offense_date',\n", + " 'r_charge_desc',\n", + " 'r_jail_in',\n", + " 'is_violent_recid',\n", + " 'event',\n", + " 'decile_score_duplicated_0',\n", + " 'v_score_text',\n", + " 'name',\n", + " 'first',\n", + " 'last',\n", + " 'dob',\n", + " 'age_cat',\n", + " 'c_jail_in',\n", + " 'c_jail_out',\n", + " 'c_days_from_compas',\n", + " 'c_charge_desc',\n", + " 'screening_date',\n", + " 'priors_count_duplicated_0'\n", + " ]\n", + "\n", + " # Ejecutamos consumiendo y sobreescribiendo en el PipelineManager\n", + " df_purgado, reporte_guillotina = ejecutar_guillotina_inteligente(\n", + " df=manager.datos_crudos,\n", + " targets_potenciales=mis_targets,\n", + " columnas_a_eliminar_manual=columnas_basura # 🚀 FIX: Pasamos el parámetro\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Actualizamos el Manager y guardamos metadatos\n", + " manager.datos_crudos = df_purgado\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos el reporte EXPLÍCITAMENTE en el manager para la Fase 1.3.1\n", + " manager.reporte_guillotina = reporte_guillotina\n", + " \n", + " target_ganador_fase1 = reporte_guillotina.get('target_escogido')\n", + " \n", + " # 💡 TRUCO: Guardamos el nombre del target ganador como metadato en las rutas\n", + " if target_ganador_fase1:\n", + " if not hasattr(manager, 'rutas'):\n", + " manager.rutas = {}\n", + " manager.rutas['target_name'] = target_ganador_fase1\n", + " \n", + " logger.info(f\"\\n📦 Variable guardada con éxito en memoria: target_ganador_fase1 = '{target_ganador_fase1}'\")\n", + " logger.info(\"📦 [MLOps] Matriz decapitada y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en La Guillotina Temprana: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "{\n", + " \"target_escogido\": \"income\",\n", + " \"filas_sin_target_eliminadas\": 0,\n", + " \"targets_secundarios_eliminados\": [],\n", + " \"fugas_datos_detectadas_ia\": [],\n", + " \"nulos_masivos_eliminados\": [],\n", + " \"constantes_eliminadas\": [],\n", + " \"isomorficas_redundantes_eliminadas\": [\n", + " \"education\"\n", + " ],\n", + " \"ids_migrados_al_index\": [],\n", + " \"eliminadas_manualmente\": [\n", + " \"fnlwgt\"\n", + " ]\n", + "}\n" + ] + } + ], + "source": [ + "\n", + "\n", + "# Ejecuta esto para ver el acta de defunción de tus columnas:\n", + "import json\n", + "logger.info(json.dumps(reporte_guillotina, indent=4))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== ⚖️ FASE 1.3.1: Auditoría y Justificación del Dictamen ===\n", + "\n", + "📜 Resolución Oficial: Justificación de Limpieza Estructural\n", + "🎯 Target Protegido: income\n", + "\n", + "---\n", + "👯 Isomorfismo (Redundancia 1:1):\n", + "* Decisión MLOps: Se detectaron pares de columnas que dicen exactamente lo mismo en diferente formato (ej. 'ID_Ciudad' y 'Nombre_Ciudad'). Mantener ambas infla la dimensionalidad de la matriz, ralentiza el entrenamiento y causa multicolinealidad sin aportar nueva información.\n", + "* Columnas Afectadas (1): education\n", + "\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "from IPython.display import display, Markdown\n", + "from typing import Dict\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR MLOPS: AUDITOR DE EXPLICABILIDAD\n", + "# ==========================================\n", + "def auditar_dictamen_guillotina(reporte: Dict) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3.1] Auditor del Dictamen (Explainable AI).\n", + " - Transparencia: Traduce las eliminaciones técnicas a explicaciones de negocio.\n", + " - Audit Trail: Justifica por qué cada columna era un riesgo matemático o estructural.\n", + " - Clean UI: Renderiza un informe en formato Markdown ideal para Jupyter Notebooks o texto plano en Headless.\n", + " \"\"\"\n", + " if not reporte:\n", + " logger.error(\"🛑 Error: El reporte de la guillotina está vacío o no se generó correctamente.\")\n", + " return\n", + "\n", + " logger.info(\"=== ⚖️ FASE 1.3.1: Auditoría y Justificación del Dictamen ===\")\n", + "\n", + " # Textos de justificación arquitectónica\n", + " justificaciones = {\n", + " 'targets_secundarios_eliminados': (\n", + " \"🗑️ **Targets Secundarios (Evitar la Bola de Cristal):**\",\n", + " \"Se eliminaron porque dejar un target alternativo en la matriz de entrenamiento causa una 'Fuga del Futuro'. \"\n", + " \"El modelo aprendería a predecir el resultado usando la respuesta de su rival, lo cual es imposible en el mundo real.\"\n", + " ),\n", + " 'fugas_datos_detectadas_ia': (\n", + " \"🚨 **Fugas de Datos (Correlación Extrema):**\",\n", + " \"La IA detectó que estas variables predecían al Target con más de un 85% de exactitud por sí solas. \"\n", + " \"En MLOps, esto casi siempre es un 'Caballo de Troya' (ej. usar 'impuestos_pagados' para predecir si alguien es 'rico'). Destruyen la capacidad de generalizar.\"\n", + " ),\n", + " 'nulos_masivos_eliminados': (\n", + " \"🕳️ **Degradación Masiva (>90% Nulos):**\",\n", + " \"Se eliminaron porque carecen de señal estadística. Intentar imputar (rellenar) una variable donde falta el 90% \"\n", + " \"de la información equivale a inventar datos, lo que induciría alucinaciones matemáticas en el modelo.\"\n", + " ),\n", + " 'constantes_eliminadas': (\n", + " \"🧊 **Variables Constantes (Varianza Cero):**\",\n", + " \"Se eliminaron porque tienen un único valor para casi todos los registros (ej. un dataset donde todos son del mismo país). \"\n", + " \"Matemáticamente, si no hay variación, el algoritmo no puede trazar fronteras de decisión. Son peso muerto.\"\n", + " ),\n", + " 'isomorficas_redundantes_eliminadas': (\n", + " \"👯 **Isomorfismo (Redundancia 1:1):**\",\n", + " \"Se detectaron pares de columnas que dicen exactamente lo mismo en diferente formato (ej. 'ID_Ciudad' y 'Nombre_Ciudad'). \"\n", + " \"Mantener ambas infla la dimensionalidad de la matriz, ralentiza el entrenamiento y causa multicolinealidad sin aportar nueva información.\"\n", + " ),\n", + " 'ids_migrados_al_index': (\n", + " \"🔒 **Protección de Identidad (Migración al Index):**\",\n", + " \"Los IDs no se eliminan, se protegen moviéndolos al índice de la matriz. Si se dejan como variables predictoras, \"\n", + " \"los árboles de decisión (como Random Forest o LightGBM) 'memorizarán' a los pacientes por su ID en lugar de aprender los verdaderos patrones.\"\n", + " )\n", + " }\n", + "\n", + " # Renderizado Inteligente\n", + " contenido_md = f\"### 📜 Resolución Oficial: Justificación de Limpieza Estructural\\n\"\n", + " contenido_md += f\"**🎯 Target Protegido:** `{reporte.get('target_escogido', 'Desconocido')}`\\n\\n\"\n", + "\n", + " if reporte.get('filas_sin_target_eliminadas', 0) > 0:\n", + " contenido_md += f\"> **Regla de Oro Aplicada:** Se aniquilaron **{reporte['filas_sin_target_eliminadas']} filas** porque su valor en el Target era nulo. Un modelo no puede aprender de una respuesta que no existe.\\n\\n\"\n", + "\n", + " contenido_md += \"---\\n\"\n", + "\n", + " operaciones_realizadas = 0\n", + "\n", + " # Recorremos el diccionario y solo mostramos las secciones donde la guillotina actuó\n", + " for llave, (titulo, explicacion) in justificaciones.items():\n", + " elementos = reporte.get(llave, [])\n", + " if elementos:\n", + " operaciones_realizadas += 1\n", + " lista_formateada = \", \".join([f\"`{e}`\" for e in elementos])\n", + " contenido_md += f\"{titulo}\\n\"\n", + " contenido_md += f\"* **Decisión MLOps:** {explicacion}\\n\"\n", + " contenido_md += f\"* **Columnas Afectadas ({len(elementos)}):** {lista_formateada}\\n\\n\"\n", + "\n", + " if operaciones_realizadas == 0:\n", + " contenido_md += \"✅ **Matriz Impecable:** La Guillotina evaluó la matriz y no encontró anomalías estructurales severas. Ninguna columna fue alterada.\\n\"\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " display(Markdown(contenido_md))\n", + " # Logueamos en silencio que la operación visual fue exitosa\n", + " logger.debug(\"Auditoría visual renderizada en Jupyter con éxito.\")\n", + " else:\n", + " # En entornos Headless, limpiamos el Markdown para que el log de texto quede inmaculado y legible\n", + " texto_plano = contenido_md.replace('**', '').replace('`', '').replace('### ', '').replace('> ', '')\n", + " logger.info(\"\\n\" + texto_plano)\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura y exclusiva desde el contenedor de estado\n", + " if not hasattr(manager, 'reporte_guillotina') or manager.reporte_guillotina is None:\n", + " raise ValueError(\"El Manager no tiene cargado el 'reporte_guillotina'. Ejecuta la Fase 1.3 y asegúrate de guardar el reporte en 'manager.reporte_guillotina'.\")\n", + "\n", + " # Ejecutamos el auditor consumiendo el diccionario interno del manager\n", + " auditar_dictamen_guillotina(manager.reporte_guillotina)\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Auditoría: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "✅ No hay variables acusadas de ser fugas del futuro o targets secundarios para auditar.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias UI y Matemáticas\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "from IPython.display import display, Markdown\n", + "import warnings\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR MLOPS: AUTOPSIA DE FUGA DE DATOS (LEAKAGE)\n", + "# ==========================================\n", + "def autopsia_fuga_datos(df_original: pd.DataFrame, target_principal: str, columnas_sospechosas: list) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3.2] Autopsia de Fuga del Futuro (Target Leakage Proof).\n", + " - MLOps Core: Demuestra estadísticamente por qué una variable es un \"Caballo de Troya\".\n", + " - Conversión Inteligente: Factoriza variables categóricas automáticamente para medir correlación matemática.\n", + " - Renderizado Táctico: Muestra cómo cambia el comportamiento de la variable sospechosa según la clase del Target.\n", + " \"\"\"\n", + " if df_original is None or df_original.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz original está vacía o es inválida.\")\n", + " return\n", + "\n", + " if not columnas_sospechosas:\n", + " logger.info(\"✅ [BYPASS] No hay targets secundarios ni fugas detectadas para auditar.\")\n", + " return\n", + "\n", + " if target_principal not in df_original.columns:\n", + " logger.error(f\"🛑 Error Crítico: El Target Principal '{target_principal}' no existe en la matriz.\")\n", + " return\n", + "\n", + " logger.info(\"=== 🔮 FASE 1.3.2: Autopsia de Fuga del Futuro (Prueba de Fraude Predictivo) ===\")\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # Preparación del Target (Lo pasamos a números si es texto para medir correlación)\n", + " y_real = df_original[target_principal]\n", + " if y_real.dtype == 'object' or y_real.dtype == 'category':\n", + " y_numerico = pd.factorize(y_real)[0]\n", + " else:\n", + " y_numerico = y_real\n", + "\n", + " for col in columnas_sospechosas:\n", + " if col not in df_original.columns:\n", + " continue\n", + "\n", + " # 🛡️ Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🔍 Expediente de Fraude: `{col}` vs `{target_principal}`\"))\n", + " logger.info(f\"\\n[AUDITORÍA] Evaluando Expediente de Fraude: '{col}' vs '{target_principal}'\")\n", + " else:\n", + " logger.info(f\"\\n### 🔍 Expediente de Fraude: `{col}` vs `{target_principal}`\")\n", + "\n", + " # 1. Blindaje contra Nulos para el cálculo matemático\n", + " mask = ~df_original[col].isna() & ~y_real.isna()\n", + " datos_limpios = df_original.loc[mask, col]\n", + " y_limpio = y_numerico[mask]\n", + "\n", + " if len(datos_limpios) < 10:\n", + " logger.warning(f\" ⚠️ Datos insuficientes para auditar '{col}'.\")\n", + " continue\n", + "\n", + " # 2. Factorización Inteligente si el rival también es categórico\n", + " es_numerica = pd.api.types.is_numeric_dtype(datos_limpios)\n", + " if not es_numerica:\n", + " datos_numericos = pd.factorize(datos_limpios)[0]\n", + " else:\n", + " datos_numericos = datos_limpios\n", + "\n", + " # 3. Cálculo de Correlación (La prueba del delito)\n", + " correlacion = np.abs(np.corrcoef(datos_numericos, y_limpio)[0, 1])\n", + "\n", + " # Veredicto de Correlación\n", + " if correlacion >= 0.85:\n", + " alerta = \"🔴 FRAUDE EXTREMO (Clon del Target)\"\n", + " elif correlacion >= 0.50:\n", + " alerta = \"🟠 ALTO RIESGO (Bola de Cristal parcial)\"\n", + " else:\n", + " alerta = \"🟡 RIESGO ESTRUCTURAL (Variable redundante o Target secundario de negocio)\"\n", + "\n", + " logger.info(f\" 📈 Correlación Matemática : {correlacion:.2%} -> {alerta}\")\n", + " logger.info(f\" 💡 Explicación MLOps : Si la correlación es muy alta, el modelo simplemente memoriza esta columna y deja de pensar. Si no es alta, al ser un 'Target Secundario', representa un evento del futuro que no conocerás cuando llegue un cliente nuevo.\\n\")\n", + "\n", + " # 4. Tabla de Comportamiento Dinámico (¿Cómo delata al target?)\n", + " logger.info(f\" 📊 Radiografía del Comportamiento (Promedios / Distribución por Clase de Target):\")\n", + "\n", + " try:\n", + " if es_numerica:\n", + " # Si el rival es numérico, agrupamos para ver cómo su promedio delata al target\n", + " resumen = df_original.groupby(target_principal)[col].agg(['mean', 'median', 'std']).reset_index()\n", + " resumen.columns = [f'Target ({target_principal})', 'Promedio', 'Mediana', 'Desviación']\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " tabla_estilizada = (\n", + " resumen.style\n", + " .format({'Promedio': '{:.2f}', 'Mediana': '{:.2f}', 'Desviación': '{:.2f}'})\n", + " .background_gradient(cmap='Oranges', subset=['Promedio'])\n", + " .hide(axis=\"index\")\n", + " )\n", + " display(tabla_estilizada)\n", + " # Registro silencioso en texto plano para los logs\n", + " logger.debug(\"\\n\" + resumen.to_string(index=False, float_format=\"{:.2f}\".format))\n", + " else:\n", + " logger.info(\"\\n\" + resumen.to_string(index=False, float_format=\"{:.2f}\".format))\n", + "\n", + " else:\n", + " # Si el rival es categórico, hacemos una tabla cruzada (Crosstab)\n", + " resumen = pd.crosstab(df_original[target_principal], df_original[col], normalize='index') * 100\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " tabla_estilizada = (\n", + " resumen.style\n", + " .format(\"{:.1f}%\")\n", + " .background_gradient(cmap='Oranges', axis=1)\n", + " )\n", + " display(tabla_estilizada)\n", + " # Registro silencioso en texto plano para los logs\n", + " logger.debug(\"\\n\" + resumen.to_string(float_format=\"{:.1f}%\".format))\n", + " else:\n", + " logger.info(\"\\n\" + resumen.to_string(float_format=\"{:.1f}%\".format))\n", + "\n", + " except Exception as e:\n", + " logger.warning(f\" ⚠️ No se pudo renderizar la tabla de cruce: {e}\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción de datos crudos desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.1 y 1.2.\")\n", + " \n", + " df_para_autopsia = getattr(manager, 'datos_crudos_pre_guillotina', manager.datos_crudos)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción del reporte desde el contenedor de estado (sin fallbacks inseguros)\n", + " if not hasattr(manager, 'reporte_guillotina') or manager.reporte_guillotina is None:\n", + " raise ValueError(\"El Manager no tiene cargado el 'reporte_guillotina'. Ejecuta la Fase 1.3.\")\n", + "\n", + " # 1. Extraemos a los acusados (Targets secundarios + Fugas detectadas por la IA)\n", + " target_rey = manager.reporte_guillotina.get('target_escogido', '')\n", + "\n", + " acusados = []\n", + " acusados.extend(manager.reporte_guillotina.get('targets_secundarios_eliminados', []))\n", + " acusados.extend(manager.reporte_guillotina.get('fugas_datos_detectadas_ia', []))\n", + "\n", + " # 2. Ejecutamos el juicio visual\n", + " if acusados and target_rey:\n", + " logger.info(f\">>> ⚖️ LLEVANDO AL ESTRADO A {len(acusados)} VARIABLES ACUSADAS DE LEAKAGE <<<\")\n", + " autopsia_fuga_datos(\n", + " df_original=df_para_autopsia, \n", + " target_principal=target_rey,\n", + " columnas_sospechosas=acusados\n", + " )\n", + " else:\n", + " logger.info(\"✅ No hay variables acusadas de ser fugas del futuro o targets secundarios para auditar.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Autopsia de Fugas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "✅ No se detectaron variables constantes para auditar en el reporte previo.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias UI y Matemáticas\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "from IPython.display import display, Markdown\n", + "import warnings\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR MLOPS: AUTOPSIA FORENSE (PROFILING VIRTUAL)\n", + "# ==========================================\n", + "def autopsia_forense_variables(df_original: pd.DataFrame, columnas_condenadas: list) -> None:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.3.3] Autopsia Forense de Variables (Análisis Post-Mortem).\n", + " - Perfilado Matemático: Extrae la Moda, el Porcentaje absoluto y la frecuencia.\n", + " - UI de Calor (Color Mapping): Aplica un gradiente térmico para resaltar visualmente el desbalance.\n", + " - Escudo de Memoria (AutoML): Limita la tabla visual al Top 10 para evitar colapsar el Notebook.\n", + " - Tolerancia a Nulos: Incluye los NaN en el cálculo de porcentajes para dar la imagen real.\n", + " \"\"\"\n", + " if df_original is None or df_original.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz original está vacía o es inválida.\")\n", + " return\n", + "\n", + " if not columnas_condenadas:\n", + " logger.info(\"✅ [BYPASS] La lista de columnas a auditar está vacía. No hay autopsia necesaria.\")\n", + " return\n", + "\n", + " logger.info(\"=== 🔬 FASE 1.3.3: Autopsia Forense de Variables (Radiografía de Varianza) ===\")\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " for col in columnas_condenadas:\n", + " if col not in df_original.columns:\n", + " logger.warning(f\" ⚠️ Alerta: La columna '{col}' no existe en el DataFrame proporcionado.\")\n", + " continue\n", + "\n", + " # 1. Extracción de Datos Crudos\n", + " serie = df_original[col]\n", + " total_filas = len(serie)\n", + " nulos = serie.isna().sum()\n", + "\n", + " # 2. Cálculos Estadísticos MLOps\n", + " # Calculamos la Moda (El valor que más se repite)\n", + " moda_serie = serie.mode(dropna=True)\n", + " moda_val = moda_serie.iloc[0] if not moda_serie.empty else \"N/A (100% Nulo)\"\n", + "\n", + " # Distribución absoluta y relativa (Top 10 para blindaje de RAM UI)\n", + " conteo = serie.value_counts(dropna=False).head(10)\n", + " porcentajes = serie.value_counts(dropna=False, normalize=True).head(10)\n", + "\n", + " # 3. Construcción de la Tabla de Autopsia\n", + " df_reporte = pd.DataFrame({\n", + " 'Valor / Categoría': conteo.index.astype(str),\n", + " 'Frecuencia (Filas)': conteo.values,\n", + " 'Porcentaje (%)': porcentajes.values * 100\n", + " })\n", + "\n", + " # 4. Inteligencia de UI: Estilizado Térmico (Color Gradient)\n", + " # Entre más alto el porcentaje, más oscuro será el color (usamos la paleta Reds/Rojos)\n", + " \n", + " if MODO_VISUAL:\n", + " tabla_estilizada = (\n", + " df_reporte.style\n", + " .format({\n", + " 'Frecuencia (Filas)': '{:,.0f}', \n", + " 'Porcentaje (%)': '{:.3f}%'\n", + " })\n", + " .background_gradient(cmap='Reds', subset=['Porcentaje (%)'])\n", + " .set_caption(f\"Distribución Top 10 de la variable '{col}'\")\n", + " .hide(axis=\"index\") # Ocultamos el index por defecto para mayor limpieza visual\n", + " )\n", + "\n", + " # 5. Renderizado Ejecutivo y Logging\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🩻 Análisis Post-Mortem: `{col}`\"))\n", + " logger.debug(f\"Renderizando visualmente autopsia de la variable '{col}'\")\n", + " else:\n", + " logger.info(f\"\\n### 🩻 Análisis Post-Mortem: `{col}`\")\n", + " \n", + " logger.info(f\" 📌 Valor Dominante (Moda) : {moda_val}\")\n", + " logger.info(f\" 🕳️ Total de Datos Nulos : {nulos:,} ({nulos/total_filas:.2%})\")\n", + " logger.info(f\" 🔍 Renderizando distribución...\\n\")\n", + "\n", + " if MODO_VISUAL:\n", + " display(tabla_estilizada)\n", + " # Logging silencioso en texto plano para los registros del servidor\n", + " logger.debug(\"\\n\" + df_reporte.to_string(index=False, float_format=\"{:.3f}%\".format))\n", + " else:\n", + " # Impresión en texto plano para Headless\n", + " logger.info(\"\\n\" + df_reporte.to_string(index=False, float_format=\"{:.3f}%\".format))\n", + " \n", + " logger.info(\"-\" * 80)\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos la matriz pre-guillotina desde el Manager\n", + " # Usamos 'datos_crudos_pre_guillotina' si existe, o 'datos_crudos' si falló el guardado previo\n", + " df_para_autopsia = getattr(manager, 'datos_crudos_pre_guillotina', getattr(manager, 'datos_crudos', None))\n", + " \n", + " if df_para_autopsia is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Ingesta (1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción exclusiva y estricta desde el contenedor de estado\n", + " if not hasattr(manager, 'reporte_guillotina') or manager.reporte_guillotina is None:\n", + " raise ValueError(\"El Manager no tiene cargado el 'reporte_guillotina'. Ejecuta la Fase 1.3.\")\n", + "\n", + " # Extraemos automáticamente las variables constantes que la guillotina condenó\n", + " # (Por ejemplo: 'entrada_es_home')\n", + " columnas_constantes = manager.reporte_guillotina.get('constantes_eliminadas', [])\n", + "\n", + " if columnas_constantes:\n", + " logger.info(f\">>> 🩺 INICIANDO AUTOPSIA PARA {len(columnas_constantes)} VARIABLES CONSTANTES <<<\")\n", + " autopsia_forense_variables(\n", + " df_original=df_para_autopsia, \n", + " columnas_condenadas=columnas_constantes\n", + " )\n", + " else:\n", + " logger.info(\"✅ No se detectaron variables constantes para auditar en el reporte previo.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante: {env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Autopsia Forense: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32537 non-null int64 \n", + " 1 workclass 32537 non-null object\n", + " 2 education.num 32537 non-null int64 \n", + " 3 marital.status 32537 non-null object\n", + " 4 occupation 32537 non-null object\n", + " 5 relationship 32537 non-null object\n", + " 6 race 32537 non-null object\n", + " 7 sex 32537 non-null object\n", + " 8 capital.gain 32537 non-null int64 \n", + " 9 capital.loss 32537 non-null int64 \n", + " 10 hours.per.week 32537 non-null int64 \n", + " 11 native.country 32537 non-null object\n", + " 12 income 32537 non-null object\n", + "dtypes: int64(5), object(8)\n", + "memory usage: 3.2+ MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "df_purgado.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔗 Conectando MLOps: Heredando Target 'income' desde la Guillotina <<<\n", + "=== 🗜️ FASE 1.4: Downcasting Matemático Inteligente (IA de Contenido) ===\n", + " 🔍 Escaneando contenido para inferencia de tipos profundos...\n", + " 🎯 Target 'income' blindado y convertido a categoría.\n", + "\n", + "✅ Compresión Matemática Completada en 0.168s:\n", + " 📉 Transformaciones: 5 Int | 0 Float | 8 Cat | 0 Date | 0 Bool\n", + " 💾 Memoria Inicial : 15.60 MB\n", + " 💽 Memoria Final : 0.54 MB (-96.6%)\n", + "📦 [MLOps] Matriz comprimida y actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import re\n", + "import time\n", + "import warnings # 🔧 NUEVO: Módulo para controlar las alertas de la consola\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def downcasting_matematico_inteligente(\n", + " df: pd.DataFrame, \n", + " umbral_categoria: float = 0.50,\n", + " target_col: str = None\n", + ") -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 1.4] Downcasting Matemático (Nivel AutoML).\n", + " - Regla Target: Convierte el target directamente a 'category' blindándolo.\n", + " - Detección Temporal Avanzada con Auto-Limpieza (NUEVO): Elimina basura léxica ('?', '*', etc.) de fechas y horas automáticamente.\n", + " - Auto-Parsing IoT: Detecta columnas numéricas que en realidad son fechas ocultas.\n", + " - Detección Booleana Oculta: Usa Regex para filtrar basura y mapea textos 'yes/no' a 'boolean'.\n", + " - Compresión Numérica: Reduce float64 a float32 y asigna tipos INT firmados (int8, 16, 32).\n", + " - Muro Anti-Objetos: Obliga a todo texto sobreviviente a ser 'category' para proteger LightGBM.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " logger.info(\"=== 🗜️ FASE 1.4: Downcasting Matemático Inteligente (IA de Contenido) ===\")\n", + "\n", + " # 🚀 FIX MLOps: SILENCIADOR BLINDADO CONTRA AVISOS DE FECHAS Y REGEX\n", + " warnings.filterwarnings(\"ignore\", category=UserWarning)\n", + " warnings.filterwarnings(\"ignore\", message=\".*Could not infer format.*\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + "\n", + " mem_antes = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " filas_totales = len(df_opt)\n", + " contadores = {'int': 0, 'float': 0, 'category': 0, 'datetime': 0, 'bool': 0}\n", + "\n", + " logger.info(\" 🔍 Escaneando contenido para inferencia de tipos profundos...\")\n", + "\n", + " # Motor Regex para Falsos Nulos\n", + " patron_nulos_ocultos = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " for col in df_opt.columns:\n", + " tipo_actual = df_opt[col].dtype\n", + " unicos_count = df_opt[col].nunique(dropna=False)\n", + "\n", + " # ==========================================\n", + " # 1. EL TARGET ES REY (Blindaje Prioritario)\n", + " # ==========================================\n", + " if target_col and col == target_col:\n", + " if df_opt[col].dtype.name != 'category':\n", + " df_opt[col] = df_opt[col].astype('category')\n", + " contadores['category'] += 1\n", + " logger.info(f\" 🎯 Target '{col}' blindado y convertido a categoría.\")\n", + " continue\n", + "\n", + " # ==========================================\n", + " # 2. Inferencia Profunda en Textos (Objects)\n", + " # ==========================================\n", + " if pd.api.types.is_object_dtype(tipo_actual) or pd.api.types.is_string_dtype(tipo_actual):\n", + "\n", + " valores_limpios = df_opt[col].dropna()\n", + " if valores_limpios.empty: continue\n", + "\n", + " valores_puros = valores_limpios.astype(str).str.lower().str.strip()\n", + " unicos_texto = set(valores_puros.unique())\n", + "\n", + " # Escudo Regex contra Falsos Nulos\n", + " textos_reales = {x for x in unicos_texto if not patron_nulos_ocultos.match(x)}\n", + "\n", + " # A. Detección de Booleanos Ocultos en Texto\n", + " diccionario_bool = {\n", + " 'yes': True, 'no': False, \n", + " 'si': True, 'true': True, 'false': False, 'verdadero': True, 'falso': False,\n", + " 't': True, 'f': False, 'y': True, 'n': False,\n", + " '1': True, '0': False\n", + " }\n", + "\n", + " if textos_reales and textos_reales.issubset(diccionario_bool.keys()):\n", + " df_opt[col] = df_opt[col].astype(str).str.lower().str.strip().map(diccionario_bool)\n", + " df_opt[col] = df_opt[col].astype('boolean') \n", + " contadores['bool'] += 1\n", + " logger.info(f\" ⚖️ Texto Booleano detectado en '{col}': Convertido a boolean (Soporta Nulos).\")\n", + " continue\n", + "\n", + " # 🚀 B. Detección Heurística de Fechas y Tiempos (Super-Regex + Auto-Limpieza)\n", + " muestra = valores_puros.head(50)\n", + "\n", + " # 🛡️ ESCUDO DE AUTO-LIMPIEZA: Simulamos quitar caracteres extraños de la muestra\n", + " # Mantenemos números, letras (AM/PM, Meses), espacios y separadores típicos de tiempo (- / : .)\n", + " muestra_limpia = muestra.str.replace(r'[^0-9a-zA-Z\\s\\-\\/:\\.]', '', regex=True).str.strip()\n", + "\n", + " patron_fecha_clasica = r'(?i)[-/:]|(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)'\n", + " patron_unix_txt = r'^1\\d{9}(?:\\.\\d+)?$|^1\\d{12}(?:\\.\\d+)?$'\n", + "\n", + " es_fecha_clasica = muestra_limpia.str.contains(patron_fecha_clasica, regex=True).any()\n", + " es_unix_txt = muestra_limpia.str.contains(patron_unix_txt, regex=True).any()\n", + "\n", + " if len(muestra_limpia) > 0 and (es_fecha_clasica or es_unix_txt):\n", + " try:\n", + " # Probamos la conversión matemática en el entorno seguro (muestra)\n", + " if es_unix_txt:\n", + " prueba_fecha = pd.to_datetime(pd.to_numeric(muestra_limpia, errors='coerce'), unit='s', errors='coerce')\n", + " else:\n", + " prueba_fecha = pd.to_datetime(muestra_limpia, errors='coerce', dayfirst=True)\n", + "\n", + " if prueba_fecha.notna().mean() >= 0.80:\n", + " # 🚀 ¡Aprobado! Aplicamos la limpieza léxica a toda la columna real (salvaguardando los NaNs)\n", + " mask_viva = df_opt[col].notna()\n", + " df_opt.loc[mask_viva, col] = (\n", + " df_opt.loc[mask_viva, col]\n", + " .astype(str)\n", + " .str.replace(r'[^0-9a-zA-Z\\s\\-\\/:\\.]', '', regex=True)\n", + " .str.strip()\n", + " )\n", + "\n", + " # Conversión Final\n", + " if es_unix_txt:\n", + " df_opt[col] = pd.to_datetime(pd.to_numeric(df_opt[col], errors='coerce'), unit='s', errors='coerce')\n", + " logger.info(f\" 🕒 Unix Timestamp Textual detectado en '{col}': Auto-limpiado y convertido a Datetime.\")\n", + " else:\n", + " df_opt[col] = pd.to_datetime(df_opt[col], errors='coerce', dayfirst=True)\n", + " logger.info(f\" 📅 Fecha/Hora detectada en '{col}': Basura purgada y convertida a Datetime (NaNs protegidos).\")\n", + " contadores['datetime'] += 1\n", + " continue\n", + " except Exception:\n", + " pass \n", + "\n", + " # C. FIX MLOPS: Optimización y Forzado de Categóricas\n", + " ratio_unicidad = unicos_count / filas_totales\n", + " if ratio_unicidad < umbral_categoria:\n", + " df_opt[col] = df_opt[col].astype('category')\n", + " contadores['category'] += 1\n", + " else:\n", + " # El Muro Anti-Objetos: Forzamos la conversión para proteger Fases futuras\n", + " df_opt[col] = df_opt[col].astype('category')\n", + " contadores['category'] += 1\n", + " logger.warning(f\" ⚠️ '{col}' tiene alta cardinalidad ({ratio_unicidad:.1%}). Forzado a 'category' por seguridad algorítmica.\")\n", + "\n", + " # ==========================================\n", + " # 3. Compresión de Numéricas y Booleanas Nativas\n", + " # ==========================================\n", + " elif pd.api.types.is_numeric_dtype(tipo_actual):\n", + " # 🚀 3.0 Detección Heurística de Unix Timestamps Numéricos (Sensores IoT)\n", + " muestra_num = df_opt[col].dropna().head(50)\n", + " if len(muestra_num) > 0:\n", + " es_unix_segundos = (muestra_num >= 631152000).all() and (muestra_num <= 2208988800).all()\n", + " es_unix_milisegundos = (muestra_num >= 631152000000).all() and (muestra_num <= 2208988800000).all()\n", + "\n", + " if (es_unix_segundos or es_unix_milisegundos) and unicos_count > 2:\n", + " unidad_tiempo = 'ms' if es_unix_milisegundos else 's'\n", + " df_opt[col] = pd.to_datetime(df_opt[col], unit=unidad_tiempo, errors='coerce')\n", + " contadores['datetime'] += 1\n", + " logger.info(f\" 🕒 Unix Timestamp Numérico ({unidad_tiempo}) detectado en '{col}': Convertido a Datetime IoT.\")\n", + " continue\n", + "\n", + " c_min = df_opt[col].min()\n", + " c_max = df_opt[col].max()\n", + " tiene_nulos = df_opt[col].isna().any()\n", + "\n", + " # 3.1 Detección Booleana Numérica Nativa\n", + " unicos_numericos = df_opt[col].dropna().unique()\n", + " if set(unicos_numericos).issubset({0, 1, 0.0, 1.0}):\n", + " df_opt[col] = df_opt[col].astype('boolean') \n", + " contadores['bool'] += 1\n", + " continue\n", + "\n", + " # 3.2 Compresión de Enteros (Signed INT exactos)\n", + " if pd.api.types.is_integer_dtype(tipo_actual) and not tiene_nulos:\n", + " if c_min >= np.iinfo(np.int8).min and c_max <= np.iinfo(np.int8).max:\n", + " df_opt[col] = df_opt[col].astype(np.int8)\n", + " elif c_min >= np.iinfo(np.int16).min and c_max <= np.iinfo(np.int16).max:\n", + " df_opt[col] = df_opt[col].astype(np.int16)\n", + " elif c_min >= np.iinfo(np.int32).min and c_max <= np.iinfo(np.int32).max:\n", + " df_opt[col] = df_opt[col].astype(np.int32)\n", + "\n", + " if df_opt[col].dtype != tipo_actual:\n", + " contadores['int'] += 1\n", + "\n", + " # 3.3 Compresión de Flotantes \n", + " elif pd.api.types.is_float_dtype(tipo_actual):\n", + " if c_min >= np.finfo(np.float32).min and c_max <= np.finfo(np.float32).max:\n", + " df_opt[col] = df_opt[col].astype(np.float32)\n", + " contadores['float'] += 1\n", + "\n", + " # ==========================================\n", + " # D. Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " mem_despues = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " ahorro_mb = mem_antes - mem_despues\n", + " porcentaje_ahorro = 100 * (ahorro_mb / mem_antes) if mem_antes > 0 else 0\n", + "\n", + " # 🔧 Limpieza final: Restauramos las advertencias generales para el resto del cuaderno\n", + " warnings.filterwarnings(\"default\", category=UserWarning)\n", + "\n", + " logger.info(f\"\\n✅ Compresión Matemática Completada en {time.time() - inicio_timer:.3f}s:\")\n", + " logger.info(f\" 📉 Transformaciones: {contadores['int']} Int | {contadores['float']} Float | {contadores['category']} Cat | {contadores['datetime']} Date | {contadores['bool']} Bool\")\n", + " logger.info(f\" 💾 Memoria Inicial : {mem_antes:.2f} MB\")\n", + " logger.info(f\" 💽 Memoria Final : {mem_despues:.2f} MB (-{porcentaje_ahorro:.1f}%)\")\n", + "\n", + " metricas_ram = {\n", + " 'mem_inicial_mb': mem_antes,\n", + " 'mem_final_mb': mem_despues,\n", + " 'ahorro_mb': ahorro_mb,\n", + " 'porcentaje_ahorro': porcentaje_ahorro\n", + " }\n", + "\n", + " return df_opt, metricas_ram\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.1 y 1.3.\")\n", + "\n", + " # 🔗 CONEXIÓN MLOps: Extraemos el target dinámicamente guardado en la Guillotina\n", + " target_heredado = manager.rutas.get('target_name', None)\n", + "\n", + " if target_heredado:\n", + " logger.info(f\">>> 🔗 Conectando MLOps: Heredando Target '{target_heredado}' desde la Guillotina <<<\")\n", + " else:\n", + " logger.warning(\">>> ⚠️ Advertencia: No se encontró un Target en las rutas del manager. Procesando sin escudo. <<<\")\n", + "\n", + " # Ejecutamos el downcasting consumiendo la matriz del manager\n", + " df_comprimido, metricas_downcast = downcasting_matematico_inteligente(\n", + " df=manager.datos_crudos,\n", + " umbral_categoria=0.50,\n", + " target_col=target_heredado # <- Alimentación dinámica desde el manager\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Actualizamos el estado de la matriz en el manager\n", + " manager.datos_crudos = df_comprimido\n", + " logger.info(\"📦 [MLOps] Matriz comprimida y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Downcasting Matemático: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Data columns (total 13 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32537 non-null int64 \n", + " 1 workclass 32537 non-null object\n", + " 2 education.num 32537 non-null int64 \n", + " 3 marital.status 32537 non-null object\n", + " 4 occupation 32537 non-null object\n", + " 5 relationship 32537 non-null object\n", + " 6 race 32537 non-null object\n", + " 7 sex 32537 non-null object\n", + " 8 capital.gain 32537 non-null int64 \n", + " 9 capital.loss 32537 non-null int64 \n", + " 10 hours.per.week 32537 non-null int64 \n", + " 11 native.country 32537 non-null object\n", + " 12 income 32537 non-null object\n", + "dtypes: int64(5), object(8)\n", + "memory usage: 3.2+ MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "df_purgado.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🛡️ FASE 2.1: Auditoría de Integridad y Sanitización de Columnas ===\n", + "\n", + "✅ Auditoría Estructural Completada en 0.003s:\n", + " ✨ Columnas Sanitizadas : 13\n", + " ✔️ Duplicados : Ninguno detectado (Esquema saludable)\n", + "\n", + " 📊 Mapa de Tipos de Datos (dtypes):\n", + " - category : 8 columnas\n", + " - int8 : 3 columnas\n", + " - int32 : 1 columnas\n", + " - int16 : 1 columnas\n", + "\n", + "📦 [MLOps] Nombres de columnas sanitizados y matriz actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import re\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def auditar_y_sanitizar_columnas(df: pd.DataFrame) -> pd.DataFrame:\n", + " \"\"\"\n", + " [FASE 2 - Paso 2.1] Detección de Tipos y Prevención de Crash.\n", + " - Sanitización Regex: Limpia espacios, tildes y caracteres especiales de los nombres de columnas.\n", + " - Resolución de Duplicados: Detecta nombres idénticos y les asigna un sufijo (evita el colapso de LightGBM/FLAML).\n", + " - Auditoría de Tipos: Genera un reporte rápido de la integridad del esquema.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df\n", + "\n", + " logger.info(\"=== 🛡️ FASE 2.1: Auditoría de Integridad y Sanitización de Columnas ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + "\n", + " # ==========================================\n", + " # 1. Motor Regex de Sanitización (Formato Producción)\n", + " # ==========================================\n", + " # Convierte \"Edad del Cliente (%)\" a \"edad_del_cliente\"\n", + " nombres_originales = list(df_opt.columns)\n", + " nombres_limpios = []\n", + "\n", + " for col in nombres_originales:\n", + " # Convertimos a string, minúsculas y quitamos espacios a los lados\n", + " col_str = str(col).strip().lower()\n", + " # Reemplazamos cualquier cosa que NO sea letra o número por un guion bajo\n", + " col_str = re.sub(r'[^a-z0-9_]', '_', col_str)\n", + " # Eliminamos guiones bajos múltiples consecutivos (ej. '__' a '_')\n", + " col_str = re.sub(r'_+', '_', col_str)\n", + " # Quitamos guiones bajos al principio o al final\n", + " col_str = col_str.strip('_')\n", + " nombres_limpios.append(col_str)\n", + "\n", + " df_opt.columns = nombres_limpios\n", + "\n", + " # ==========================================\n", + " # 2. Escudo Anti-Crash (Resolución de Duplicados)\n", + " # ==========================================\n", + " columnas_finales = []\n", + " dicc_vistos = {}\n", + " duplicados_corregidos = 0\n", + "\n", + " for col in df_opt.columns:\n", + " if col not in dicc_vistos:\n", + " dicc_vistos[col] = 0\n", + " columnas_finales.append(col)\n", + " else:\n", + " dicc_vistos[col] += 1\n", + " duplicados_corregidos += 1\n", + " # Si \"ingreso\" ya existe, lo llama \"ingreso_v1\"\n", + " nuevo_nombre = f\"{col}_v{dicc_vistos[col]}\"\n", + " columnas_finales.append(nuevo_nombre)\n", + " logger.warning(f\" ⚠️ Peligro de Crash Evitado: Columna '{col}' renombrada a '{nuevo_nombre}'\")\n", + "\n", + " df_opt.columns = columnas_finales\n", + "\n", + " # ==========================================\n", + " # 3. Auditoría de Tipos (Alternativa Limpia a .info)\n", + " # ==========================================\n", + " conteo_tipos = df_opt.dtypes.astype(str).value_counts().to_dict()\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + " logger.info(f\"\\n✅ Auditoría Estructural Completada en {tiempo_total:.3f}s:\")\n", + " logger.info(f\" ✨ Columnas Sanitizadas : {len(df_opt.columns)}\")\n", + " if duplicados_corregidos > 0:\n", + " logger.info(f\" 🩹 Duplicados Resueltos : {duplicados_corregidos} (Prevención LightGBM activada)\")\n", + " else:\n", + " logger.info(f\" ✔️ Duplicados : Ninguno detectado (Esquema saludable)\")\n", + "\n", + " logger.info(\"\\n 📊 Mapa de Tipos de Datos (dtypes):\")\n", + " for tipo, cantidad in conteo_tipos.items():\n", + " logger.info(f\" - {tipo.ljust(12)}: {cantidad} columnas\")\n", + "\n", + " return df_opt\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 1.4 primero.\")\n", + "\n", + " # Ejecutamos la sanitización consumiendo la matriz central\n", + " df_sanitizado = auditar_y_sanitizar_columnas(df=manager.datos_crudos)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Sobrescribimos el estado en el Manager\n", + " manager.datos_crudos = df_sanitizado\n", + " logger.info(\"\\n📦 [MLOps] Nombres de columnas sanitizados y matriz actualizada de forma segura en 'manager.datos_crudos'.\")\n", + " \n", + " # 💡 TRUCO: Si sanitizamos las columnas, también debemos sanitizar el nombre del target en las rutas\n", + " if hasattr(manager, 'rutas') and 'target_name' in manager.rutas:\n", + " target_original = manager.rutas['target_name']\n", + " target_limpio = re.sub(r'[^a-z0-9_]', '_', str(target_original).strip().lower())\n", + " target_limpio = re.sub(r'_+', '_', target_limpio).strip('_')\n", + " manager.rutas['target_name'] = target_limpio\n", + " logger.debug(f\"Target enrutado sanitizado a: {target_limpio}\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Auditoría de Columnas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
534Private9DivorcedOther-serviceUnmarriedWhiteFemale0377045United-States<=50K
638Private6SeparatedAdm-clericalUnmarriedWhiteMale0377040United-States<=50K
774State-gov16Never-marriedProf-specialtyOther-relativeWhiteFemale0368320United-States> 50 K
868Federal-gov9DivorcedProf-specialtyNot-in-familyWhiteFemale0368340United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "5 34 Private 9 Divorced Other-service \n", + "6 38 Private 6 Separated Adm-clerical \n", + "7 74 State-gov 16 Never-married Prof-specialty \n", + "8 68 Federal-gov 9 Divorced Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "5 Unmarried White Female 0 3770 45 \n", + "6 Unmarried White Male 0 3770 40 \n", + "7 Other-relative White Female 0 3683 20 \n", + "8 Not-in-family White Female 0 3683 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K \n", + "5 United-States <=50K \n", + "6 United-States <=50K \n", + "7 United-States > 50 K \n", + "8 United-States <=50K " + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado[0:9]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧹 FASE 2.2: Normalización Categórica y Fusión Tipográfica ===\n", + " 🧬 'income': 4 variantes tipográficas fusionadas.\n", + "\n", + "✅ Normalización Textual Completada en 0.020s:\n", + " 📊 Columnas Procesadas : 8\n", + " 🩹 Conflictos Resueltos : 4 (Clases canónicas consolidadas)\n", + "\n", + "📦 [MLOps] Categorías normalizadas y fusionadas de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def normalizar_categoricas_y_fusionar(df: pd.DataFrame) -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 2 - Paso 2.2] Normalización de Categóricas y Corrección por Mayoría.\n", + " - Limpieza Textual: Minúsculas, sin tildes, strip.\n", + " - Escáner de Espacios Internos: Fusiona tokens como \"<=50 k\" a \"<=50k\".\n", + " - Fusión Canónica: Al mapear el texto sucio a su versión limpia, los errores \n", + " tipográficos se agrupan automáticamente, sumando sus frecuencias y \n", + " preservando la distribución estadística real.\n", + " - Zero-RAM Overhead: Trabaja sobre los diccionarios de categorías, no sobre la matriz entera.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " logger.info(\"=== 🧹 FASE 2.2: Normalización Categórica y Fusión Tipográfica ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + " contadores = {'procesadas': 0, 'conflictos_resueltos': 0}\n", + "\n", + " for col in df_opt.columns:\n", + " tipo = df_opt[col].dtype\n", + "\n", + " # Filtro: Solo actuamos si la variable es de texto o una categoría de Pandas\n", + " if pd.api.types.is_object_dtype(tipo) or pd.api.types.is_string_dtype(tipo) or isinstance(tipo, pd.CategoricalDtype):\n", + "\n", + " # 1. Extracción Eficiente (Extraemos solo los valores únicos para no saturar RAM)\n", + " if isinstance(tipo, pd.CategoricalDtype):\n", + " categorias_crudas = df_opt[col].cat.categories\n", + " else:\n", + " categorias_crudas = df_opt[col].dropna().unique()\n", + "\n", + " if len(categorias_crudas) == 0:\n", + " continue\n", + "\n", + " # Convertimos a Series para usar la API vectorizada de Pandas .str\n", + " s_limpia = pd.Series(categorias_crudas).astype(str)\n", + "\n", + " # ==========================================\n", + " # 2. MOTOR REGEX DE SANITIZACIÓN MULTICAPA\n", + " # ==========================================\n", + " # A. Minúsculas\n", + " s_limpia = s_limpia.str.lower()\n", + "\n", + " # B. Remover Tildes y Acentos (Normalización NFKD)\n", + " s_limpia = s_limpia.str.normalize('NFKD').str.encode('ascii', errors='ignore').str.decode('utf-8')\n", + "\n", + " # C. Colapsar múltiples espacios seguidos a uno solo\n", + " s_limpia = s_limpia.str.replace(r'\\s+', ' ', regex=True)\n", + "\n", + " # D. Remover espacios alrededor de símbolos (Ej: \"<= 50\" -> \"<=50\")\n", + " s_limpia = s_limpia.str.replace(r'\\s*([^\\w\\s])\\s*', r'\\1', regex=True)\n", + "\n", + " # E. Remover espacios entre números y letras (Ej: \"50 k\" -> \"50k\")\n", + " s_limpia = s_limpia.str.replace(r'(?<=\\d)\\s+(?=[a-z])|(?<=[a-z])\\s+(?=\\d)', '', regex=True)\n", + "\n", + " # F. Strip final y convertir espacios restantes a guiones bajos (Ej: \"united states\" -> \"united_states\")\n", + " s_limpia = s_limpia.str.strip().str.replace(r'\\s+', '_', regex=True)\n", + "\n", + " # ==========================================\n", + " # 3. FUSIÓN Y MAPEO (Corrección por Mayoría)\n", + " # ==========================================\n", + " # Creamos un diccionario: { \" <=50 k \" : \"<=50k\", \"<=50K\" : \"<=50k\" }\n", + " mapper = dict(zip(categorias_crudas, s_limpia))\n", + "\n", + " # Calculamos cuántas clases \"basura\" se agruparon en una clase canónica\n", + " unicos_antes = len(categorias_crudas)\n", + " unicos_despues = s_limpia.nunique()\n", + " conflictos = unicos_antes - unicos_despues\n", + "\n", + " # Aplicamos el diccionario directamente a la matriz\n", + " # Al usar .map(), los NaNs originales se respetan y se quedan como NaNs.\n", + " if isinstance(tipo, pd.CategoricalDtype):\n", + " df_opt[col] = df_opt[col].map(mapper).astype('category')\n", + " else:\n", + " df_opt[col] = df_opt[col].map(mapper)\n", + "\n", + " contadores['procesadas'] += 1\n", + " contadores['conflictos_resueltos'] += conflictos\n", + "\n", + " if conflictos > 0:\n", + " logger.info(f\" 🧬 '{col}': {conflictos} variantes tipográficas fusionadas.\")\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Normalización Textual Completada en {tiempo_total:.3f}s:\")\n", + " logger.info(f\" 📊 Columnas Procesadas : {contadores['procesadas']}\")\n", + " logger.info(f\" 🩹 Conflictos Resueltos : {contadores['conflictos_resueltos']} (Clases canónicas consolidadas)\")\n", + "\n", + " return df_opt, contadores\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta la Fase 2.1 primero.\")\n", + "\n", + " # Ejecutamos la normalización consumiendo la matriz central\n", + " df_normalizado, reporte_cat = normalizar_categoricas_y_fusionar(df=manager.datos_crudos)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Sobrescribimos el estado en el Manager\n", + " manager.datos_crudos = df_normalizado\n", + " logger.info(\"\\n📦 [MLOps] Categorías normalizadas y fusionadas de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Normalización de Categóricas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
534Private9DivorcedOther-serviceUnmarriedWhiteFemale0377045United-States<=50K
638Private6SeparatedAdm-clericalUnmarriedWhiteMale0377040United-States<=50K
774State-gov16Never-marriedProf-specialtyOther-relativeWhiteFemale0368320United-States> 50 K
868Federal-gov9DivorcedProf-specialtyNot-in-familyWhiteFemale0368340United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "5 34 Private 9 Divorced Other-service \n", + "6 38 Private 6 Separated Adm-clerical \n", + "7 74 State-gov 16 Never-married Prof-specialty \n", + "8 68 Federal-gov 9 Divorced Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "5 Unmarried White Female 0 3770 45 \n", + "6 Unmarried White Male 0 3770 40 \n", + "7 Other-relative White Female 0 3683 20 \n", + "8 Not-in-family White Female 0 3683 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K \n", + "5 United-States <=50K \n", + "6 United-States <=50K \n", + "7 United-States > 50 K \n", + "8 United-States <=50K " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado[0:9]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🚑 FASE 2.3: Rescate de Falsos Textos y Compresión Flotante ===\n", + " 🔍 Buscando números disfrazados de texto...\n", + " 🛡️ [INMUNIDAD] Columna Target 'income' protegida. Omitiendo casteo.\n", + "\n", + "✅ Rescate y Casteo Completado en 0.298s:\n", + " ✔️ Columnas Rescatadas : 0 (No se detectaron falsos textos)\n", + " 🛡️ Protecciones Activas: 7 textos reales ignorados con éxito\n", + " 👑 Target Protegido : Sí ('income')\n", + " 💾 Memoria Inicial : 0.54 MB\n", + " 💽 Memoria Final : 0.54 MB (-0.0%)\n", + "\n", + "📦 [MLOps] Falsos textos rescatados y matriz actualizada de forma segura en 'manager.datos_crudos'.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def rescate_numerico_y_compresion(\n", + " df: pd.DataFrame, \n", + " target_principal: str, # 👑 NUEVO: El nombre del Target para blindarlo\n", + " tolerancia_destruccion: float = 0.05\n", + ") -> Tuple[pd.DataFrame, dict]:\n", + " \"\"\"\n", + " [FASE 2 - Paso 2.3] Casteo Forzado y Rescate de Falsos Textos.\n", + " - Escudo del Rey: Inmunidad absoluta para la variable Target. Jamás será casteada.\n", + " - Motor Regex: Limpia símbolos de moneda, porcentajes y comas miliares.\n", + " - Casteo Coerce: Fuerza la conversión a numérico aislando textos irreconocibles como NaNs.\n", + " - Rollback AutoML: Si la conversión genera demasiados NaNs (>5%), revierte los cambios.\n", + " - Downcasting Integrado: Al rescatar el número, evalúa min/max y asigna el float ideal.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " return df, {}\n", + "\n", + " # 🚀 FIX MLOps: Búsqueda dinámica insensible a mayúsculas (Case-Insensitive)\n", + " target_lower = str(target_principal).lower()\n", + " cols_lower = [str(c).lower() for c in df.columns]\n", + "\n", + " if target_lower not in cols_lower:\n", + " logger.error(f\"🛑 Error Crítico: El Target '{target_principal}' (ni sus variantes en minúscula) se encontró en la matriz.\")\n", + " return df, {}\n", + "\n", + " # Reasignamos el target al nombre exacto que tiene actualmente en la matriz\n", + " target_principal = df.columns[cols_lower.index(target_lower)]\n", + "\n", + " logger.info(\"=== 🚑 FASE 2.3: Rescate de Falsos Textos y Compresión Flotante ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " df_opt = df.copy()\n", + " filas_totales = len(df_opt)\n", + "\n", + " mem_antes = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " contadores = {'rescatadas_float32': 0, 'rescatadas_float64': 0, 'ignoradas_texto_real': 0, 'target_protegido': 1}\n", + "\n", + " logger.info(\" 🔍 Buscando números disfrazados de texto...\")\n", + "\n", + " for col in df_opt.columns:\n", + " # 👑 ESCUDO DEL REY: Si es el Target, lo saltamos inmediatamente\n", + " if col == target_principal:\n", + " logger.info(f\" 🛡️ [INMUNIDAD] Columna Target '{col}' protegida. Omitiendo casteo.\")\n", + " continue\n", + "\n", + " tipo_actual = df_opt[col].dtype\n", + "\n", + " # Solo intentamos el rescate en columnas que son texto o categorías\n", + " if pd.api.types.is_object_dtype(tipo_actual) or pd.api.types.is_string_dtype(tipo_actual) or isinstance(tipo_actual, pd.CategoricalDtype):\n", + "\n", + " # 1. Snapshot de Seguridad (Rollback)\n", + " nulos_originales = df_opt[col].isna().sum()\n", + "\n", + " # 2. Extracción y Limpieza Regex\n", + " # Reemplazamos símbolos comunes que disfrazan números ($, €, £, %, comas miliares y espacios)\n", + " serie_limpia = df_opt[col].astype(str).str.replace(r'[$,€£%\\s]', '', regex=True)\n", + "\n", + " # 3. Casteo Forzado\n", + " serie_numerica = pd.to_numeric(serie_limpia, errors='coerce')\n", + "\n", + " # 4. Auditoría de Destrucción (¿Era realmente un número?)\n", + " nulos_nuevos = serie_numerica.isna().sum()\n", + " tasa_destruccion = (nulos_nuevos - nulos_originales) / filas_totales\n", + "\n", + " # Si se destruyó menos del 5% de los datos, ¡era un falso texto! Procedemos.\n", + " if tasa_destruccion <= tolerancia_destruccion:\n", + "\n", + " c_min = serie_numerica.min()\n", + " c_max = serie_numerica.max()\n", + "\n", + " # 5. Downcasting Integrado Inteligente (Asignación del Float Ideal)\n", + " if c_min >= np.finfo(np.float32).min and c_max <= np.finfo(np.float32).max:\n", + " df_opt[col] = serie_numerica.astype(np.float32)\n", + " contadores['rescatadas_float32'] += 1\n", + " else:\n", + " df_opt[col] = serie_numerica.astype(np.float64)\n", + " contadores['rescatadas_float64'] += 1\n", + "\n", + " logger.info(f\" 🚑 Rescate Exitoso: '{col}' convertida a {df_opt[col].dtype}\")\n", + "\n", + " else:\n", + " # Era una categoría de texto real (ej. \"Married-civ-spouse\"). Abortamos y protegemos.\n", + " contadores['ignoradas_texto_real'] += 1\n", + "\n", + " # ==========================================\n", + " # Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " mem_despues = df_opt.memory_usage(deep=True).sum() / (1024 ** 2)\n", + " ahorro_mb = mem_antes - mem_despues\n", + " porcentaje_ahorro = 100 * (ahorro_mb / mem_antes) if mem_antes > 0 else 0\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + " total_rescatadas = contadores['rescatadas_float32'] + contadores['rescatadas_float64']\n", + "\n", + " logger.info(f\"\\n✅ Rescate y Casteo Completado en {tiempo_total:.3f}s:\")\n", + " if total_rescatadas > 0:\n", + " logger.info(f\" 📉 Columnas Rescatadas : {total_rescatadas} ({contadores['rescatadas_float32']} float32 | {contadores['rescatadas_float64']} float64)\")\n", + " else:\n", + " logger.info(f\" ✔️ Columnas Rescatadas : 0 (No se detectaron falsos textos)\")\n", + "\n", + " logger.info(f\" 🛡️ Protecciones Activas: {contadores['ignoradas_texto_real']} textos reales ignorados con éxito\")\n", + " logger.info(f\" 👑 Target Protegido : Sí ('{target_principal}')\")\n", + " logger.info(f\" 💾 Memoria Inicial : {mem_antes:.2f} MB\")\n", + " logger.info(f\" 💽 Memoria Final : {mem_despues:.2f} MB (-{porcentaje_ahorro:.1f}%)\")\n", + "\n", + " return df_opt, contadores\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz desde el manager\n", + " if not hasattr(manager, 'datos_crudos') or getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta las fases previas.\")\n", + "\n", + " # 🔗 CONEXIÓN MLOps: Extraemos el target dinámicamente guardado\n", + " if not hasattr(manager, 'rutas') or 'target_name' not in manager.rutas:\n", + " raise ValueError(\"No se encontró el Target protegido en las rutas del Manager. Asegúrate de ejecutar la Fase 1.3.\")\n", + " \n", + " target_heredado = manager.rutas['target_name']\n", + "\n", + " # Ejecutamos el rescate consumiendo los datos del manager\n", + " df_rescatado, reporte_rescate = rescate_numerico_y_compresion(\n", + " df=manager.datos_crudos,\n", + " target_principal=target_heredado, # 👑 Pasamos dinámicamente el ganador\n", + " tolerancia_destruccion=0.05 # Si falla en >5% de filas, asume que es texto puro y no lo toca\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Sobrescribimos el estado en el Manager\n", + " manager.datos_crudos = df_rescatado\n", + " logger.info(\"\\n📦 [MLOps] Falsos textos rescatados y matriz actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Rescate Numérico: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🎯 Target auto-detectado del pipeline: 'income'\n", + "--- 🔬 Simulando un entorno Train/Test para probar la validación ---\n", + "=== 🕵️‍♂️ FASE 3.1: Validación Adversaria (Train vs Test) ===\n", + " 🚀 Entrenando LightGBM Adversario...\n", + " ⚖️ Veredicto del AUC: 0.5113 (Umbral de peligro: 0.6)\n", + " ✔️ Matriz Segura. Train y Test provienen de la misma distribución estadística.\n", + " ⏱️ Tiempo de validación: 0.10s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple, List\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import roc_auc_score\n", + "import lightgbm as lgb\n", + "import warnings\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def validacion_adversaria_automl(\n", + " df_train: pd.DataFrame, \n", + " df_test: pd.DataFrame, \n", + " target_col: str,\n", + " umbral_auc: float = 0.60\n", + ") -> Tuple[List[str], float]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.1] Validación Adversaria (Detector de Concept Drift).\n", + " - Objetivo: Entrenar un LightGBM para distinguir entre Train y Test.\n", + " - Inteligencia: Si el AUC > umbral, extrae las variables culpables del drift.\n", + " - Blindaje: Ignora automáticamente la variable objetivo real para no hacer trampa.\n", + " - Pre-procesamiento: Descompone variables Datetime en numéricas para evitar crasheos de LightGBM.\n", + " - MLOps: Retorna la lista de variables tóxicas para ejecutarlas en la guillotina.\n", + " \"\"\"\n", + " if df_train.empty or df_test.empty:\n", + " logger.error(\"🛑 Error Crítico: Uno de los DataFrames está vacío.\")\n", + " return [], 0.0\n", + "\n", + " logger.info(\"=== 🕵️‍♂️ FASE 3.1: Validación Adversaria (Train vs Test) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # ==========================================\n", + " # 1. Preparación del Escenario Adversario\n", + " # ==========================================\n", + " # Copiamos para no alterar los originales\n", + " X_tr = df_train.copy()\n", + " X_te = df_test.copy()\n", + "\n", + " # Eliminamos el Target real de negocio (ej. 'income') si existe, \n", + " # porque el Test no lo debería tener (o no debemos usarlo aquí)\n", + " if target_col in X_tr.columns: X_tr.drop(columns=[target_col], inplace=True)\n", + " if target_col in X_te.columns: X_te.drop(columns=[target_col], inplace=True)\n", + "\n", + " # Alineamos columnas por si el Test viene con menos variables\n", + " columnas_comunes = list(set(X_tr.columns).intersection(set(X_te.columns)))\n", + " X_tr = X_tr[columnas_comunes]\n", + " X_te = X_te[columnas_comunes]\n", + "\n", + " # Creamos el Target Adversario: 0 = Train, 1 = Test\n", + " X_tr['is_test'] = 0\n", + " X_te['is_test'] = 1\n", + "\n", + " # Unimos todo en un solo DataFrame\n", + " df_adversario = pd.concat([X_tr, X_te], axis=0, ignore_index=True)\n", + "\n", + " # 🚀 NUEVO ESCUDO: Descomposición de Datetimes para LightGBM\n", + " cols_datetime = df_adversario.select_dtypes(include=['datetime64', 'datetimetz']).columns\n", + " if len(cols_datetime) > 0:\n", + " logger.info(f\" 🗓️ Descomponiendo {len(cols_datetime)} variables Datetime para LightGBM...\")\n", + " for col in cols_datetime:\n", + " df_adversario[f'{col}_year'] = df_adversario[col].dt.year\n", + " df_adversario[f'{col}_month'] = df_adversario[col].dt.month\n", + " df_adversario[f'{col}_day'] = df_adversario[col].dt.day\n", + " df_adversario[f'{col}_dayofweek'] = df_adversario[col].dt.dayofweek\n", + " # Destruimos las originales que causan el crasheo\n", + " df_adversario.drop(columns=cols_datetime, inplace=True)\n", + "\n", + " # 🚀 NUEVO ESCUDO 2: Compatibilidad de Booleanos\n", + " # LightGBM prefiere los booleanos nativos de pandas como numéricos o categóricos\n", + " cols_bool = df_adversario.select_dtypes(include=['boolean']).columns\n", + " if len(cols_bool) > 0:\n", + " for col in cols_bool:\n", + " df_adversario[col] = df_adversario[col].astype('float32') # Float soporta NaNs y LightGBM lo entiende\n", + "\n", + " y_adv = df_adversario['is_test']\n", + " X_adv = df_adversario.drop(columns=['is_test'])\n", + "\n", + " # ==========================================\n", + " # 2. División Interna para Evaluación Justa\n", + " # ==========================================\n", + " # Separamos 30% solo para medir el AUC del modelo adversario\n", + " X_adv_train, X_adv_val, y_adv_train, y_adv_val = train_test_split(\n", + " X_adv, y_adv, test_size=0.30, random_state=42, stratify=y_adv\n", + " )\n", + "\n", + " # ==========================================\n", + " # 3. Entrenamiento del Modelo Espía (LightGBM)\n", + " # ==========================================\n", + " logger.info(\" 🚀 Entrenando LightGBM Adversario...\")\n", + "\n", + " # LightGBM es ideal porque detecta las variables 'category' nativamente\n", + " modelo_adv = lgb.LGBMClassifier(\n", + " n_estimators=50, # Rápido, solo queremos ver si hay un patrón obvio\n", + " learning_rate=0.1,\n", + " max_depth=4,\n", + " random_state=42,\n", + " n_jobs=-1,\n", + " verbosity=-1 # Muteamos los warnings de C++\n", + " )\n", + "\n", + " modelo_adv.fit(X_adv_train, y_adv_train)\n", + "\n", + " # ==========================================\n", + " # 4. Veredicto del Tribunal (AUC y SHAP/Gain)\n", + " # ==========================================\n", + " preds = modelo_adv.predict_proba(X_adv_val)[:, 1]\n", + " auc_score = roc_auc_score(y_adv_val, preds)\n", + "\n", + " variables_a_neutralizar = []\n", + "\n", + " logger.info(f\" ⚖️ Veredicto del AUC: {auc_score:.4f} (Umbral de peligro: {umbral_auc})\")\n", + "\n", + " if auc_score > umbral_auc:\n", + " logger.warning(\" 🚨 PELIGRO: Concept Drift Detectado. El modelo puede distinguir Train de Test.\")\n", + "\n", + " # Extraemos la importancia de las variables (Feature Importance by Gain)\n", + " importancias = pd.DataFrame({\n", + " 'Variable': X_adv.columns,\n", + " 'Importancia': modelo_adv.feature_importances_\n", + " }).sort_values(by='Importancia', ascending=False)\n", + "\n", + " # Regla AutoML: Tomamos las variables que acumulan el 80% de la importancia del drift\n", + " importancias['Acumulado'] = importancias['Importancia'].cumsum() / importancias['Importancia'].sum()\n", + " variables_toxicas = importancias[importancias['Acumulado'] <= 0.80]['Variable'].tolist()\n", + "\n", + " # Si solo una variable causa el 100% del drift, la lista podría estar vacía, la forzamos\n", + " if not variables_toxicas:\n", + " variables_toxicas = [importancias.iloc[0]['Variable']]\n", + "\n", + " variables_a_neutralizar = variables_toxicas\n", + " logger.warning(f\" 🪓 Variables Tóxicas marcadas para la guillotina: {variables_a_neutralizar}\")\n", + "\n", + " else:\n", + " logger.info(\" ✔️ Matriz Segura. Train y Test provienen de la misma distribución estadística.\")\n", + "\n", + " tiempo_total = time.time() - inicio_timer\n", + " logger.info(f\" ⏱️ Tiempo de validación: {tiempo_total:.2f}s\")\n", + "\n", + " # Mapeo Inverso: Si una variable tóxica fue 'Date_year', significa que la original 'Date' debe morir\n", + " variables_finales_a_neutralizar = set()\n", + " for var_tox in variables_a_neutralizar:\n", + " if '_year' in var_tox or '_month' in var_tox or '_day' in var_tox or '_dayofweek' in var_tox:\n", + " base_col = var_tox.rsplit('_', 1)[0]\n", + " if base_col in df_train.columns:\n", + " variables_finales_a_neutralizar.add(base_col)\n", + " else:\n", + " variables_finales_a_neutralizar.add(var_tox)\n", + "\n", + " return list(variables_finales_a_neutralizar), auc_score\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del PipelineManager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz central\n", + " if not hasattr(manager, 'datos_crudos') or getattr(manager, 'datos_crudos', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta las fases previas.\")\n", + "\n", + " # ==========================================\n", + " # 🧠 AUTO-DETECCIÓN DEL TARGET (MLOps Wiring)\n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Extraemos el target de las rutas del Manager\n", + " if not hasattr(manager, 'rutas') or 'target_name' not in manager.rutas:\n", + " raise ValueError(\"🛑 No se encontró el Target ('target_name') en las rutas del Manager. Ejecuta la Fase 1.3.\")\n", + " \n", + " target_detectado = manager.rutas['target_name']\n", + "\n", + " logger.info(f\"🎯 Target auto-detectado del pipeline: '{target_detectado}'\")\n", + "\n", + " # 💡 PARADOJA DE UN SOLO DATASET:\n", + " logger.info(\"--- 🔬 Simulando un entorno Train/Test para probar la validación ---\")\n", + " df_train_simulado, df_test_simulado = train_test_split(manager.datos_crudos, test_size=0.20, random_state=99)\n", + "\n", + " vars_toxicas, score_auc = validacion_adversaria_automl(\n", + " df_train=df_train_simulado,\n", + " df_test=df_test_simulado,\n", + " target_col=target_detectado, # <--- Se inyecta automáticamente aquí\n", + " umbral_auc=0.60\n", + " )\n", + "\n", + " # Si detectamos variables del futuro/drift, las aniquilamos del dataset principal de una vez\n", + " if vars_toxicas:\n", + " logger.info(f\"\\n 🔪 Ejecutando Neutralización en manager.datos_crudos...\")\n", + " manager.datos_crudos.drop(columns=vars_toxicas, inplace=True, errors='ignore')\n", + " logger.info(f\" ✅ Variables {vars_toxicas} eliminadas de la matriz principal.\")\n", + " logger.info(\"📦 [MLOps] Matriz protegida contra Concept Drift y actualizada de forma segura en 'manager.datos_crudos'.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Validación Adversaria: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation.nummarital.statusoccupationrelationshipracesexcapital.gaincapital.losshours.per.weeknative.countryincome
090?9Widowed?Not-in-familyWhiteFemale0435640United-States<=50 K
182Private9WidowedExec-managerialNot-in-familyWhiteFemale0435618United-States<=50K
266?10Widowed?UnmarriedBlackFemale0435640United-States<=50K
354Private4DivorcedMachine-op-inspctUnmarriedWhiteFemale0390040United-States<=50K
441Private10SeparatedProf-specialtyOwn-childWhiteFemale0390040United-States<=50K
\n", + "
" + ], + "text/plain": [ + " age workclass education.num marital.status occupation \\\n", + "0 90 ? 9 Widowed ? \n", + "1 82 Private 9 Widowed Exec-managerial \n", + "2 66 ? 10 Widowed ? \n", + "3 54 Private 4 Divorced Machine-op-inspct \n", + "4 41 Private 10 Separated Prof-specialty \n", + "\n", + " relationship race sex capital.gain capital.loss hours.per.week \\\n", + "0 Not-in-family White Female 0 4356 40 \n", + "1 Not-in-family White Female 0 4356 18 \n", + "2 Unmarried Black Female 0 4356 40 \n", + "3 Unmarried White Female 0 3900 40 \n", + "4 Own-child White Female 0 3900 40 \n", + "\n", + " native.country income \n", + "0 United-States <=50 K \n", + "1 United-States <=50K \n", + "2 United-States <=50K \n", + "3 United-States <=50K \n", + "4 United-States <=50K " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "df_purgado.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "🎯 Target heredado dinámicamente desde el manager: 'income'\n", + "\n", + "=== 🧱 FASE 3.2: Aislamiento del Target ('income') y Enrutamiento ===\n", + " 🔍 Mapeando la topología de las características predictoras (X)...\n", + "\n", + "✅ Aislamiento y Enrutamiento Completado en 0.006s:\n", + " ✔️ Regla de Oro : 0 filas destruidas (Target 100% íntegro).\n", + " 📦 Matriz Predictora (X): 32,537 filas x 12 columnas\n", + " 🎯 Vector Objetivo (y) : 32,537 etiquetas aisladas\n", + "\n", + " 🛣️ Mapas de Ruteo Creados:\n", + " - Numéricas (num_vars) : 5 columnas\n", + " - Categóricas (cat_vars) : 7 columnas\n", + " - Booleanas (bool_vars): 0 columnas\n", + " - Temporales (date_vars): 0 columnas\n", + "📦 [MLOps] Matriz predictora (X), vector objetivo (y) y rutas de variables inyectadas de forma segura en el Manager.\n", + "🧹 [RAM Shield] Matriz 'datos_crudos' original eliminada para liberar memoria.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re # 🚀 NUEVO: Importamos regex para la limpieza profunda\n", + "from typing import Tuple, Dict, List\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def aislar_target_y_enrutar(\n", + " df: pd.DataFrame, \n", + " target_col: str\n", + ") -> Tuple[pd.DataFrame, pd.Series, Dict[str, List[str]]]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.2] Aislamiento del Target y Regla de Oro.\n", + " - Auto-Corrección Extendida: Detecta el target ignorando mayúsculas, espacios, guiones y guiones bajos.\n", + " - Regla Estricta: Purga (elimina) cualquier registro donde la variable objetivo sea nula.\n", + " - Aislamiento Temprano: Separa la matriz en características (X) y objetivo (y).\n", + " - Enrutamiento (AutoML): Escanea los dtypes y crea listas explícitas de variables.\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía o es inválida.\")\n", + " raise ValueError(\"La matriz está vacía o es inválida.\")\n", + "\n", + " # ==========================================\n", + " # 🚀 NUEVO: Auto-Corrección Inteligente de Columnas (Bulletproof)\n", + " # ==========================================\n", + " if target_col not in df.columns:\n", + " # Función destructiva: borra todo lo que no sea letra o número para una comparación pura\n", + " def normalizar(nombre):\n", + " return re.sub(r'[^a-z0-9]', '', str(nombre).lower())\n", + "\n", + " target_norm = normalizar(target_col) # 'No-show' se convierte en 'noshow'\n", + " mapa_cols = {normalizar(c): c for c in df.columns}\n", + "\n", + " if target_norm in mapa_cols:\n", + " target_real = mapa_cols[target_norm]\n", + " logger.info(f\" 🪄 [AUTO-CORRECCIÓN] Target original '{target_col}' mapeado a -> '{target_real}'\")\n", + " target_col = target_real # Actualizamos la variable para usar la que sí existe en el DataFrame\n", + " else:\n", + " logger.error(f\"🛑 Error Crítico: La variable objetivo '{target_col}' (o su versión '{target_norm}') no existe. Columnas vistas: {list(df.columns)}\")\n", + " raise KeyError(f\"La variable objetivo '{target_col}' no existe.\")\n", + "\n", + " logger.info(f\"=== 🧱 FASE 3.2: Aislamiento del Target ('{target_col}') y Enrutamiento ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " # ==========================================\n", + " # 1. La Regla de Oro (Purga de Target Nulo)\n", + " # ==========================================\n", + " filas_iniciales = len(df)\n", + "\n", + " # Copiamos y eliminamos las filas sin piedad donde el target es NaN\n", + " df_limpio = df.dropna(subset=[target_col]).copy() \n", + "\n", + " filas_finales = len(df_limpio)\n", + " nulos_purgados = filas_iniciales - filas_finales\n", + "\n", + " # ==========================================\n", + " # 2. El Aislamiento (Split X, y)\n", + " # ==========================================\n", + " y = df_limpio[target_col]\n", + " X = df_limpio.drop(columns=[target_col])\n", + "\n", + " # ==========================================\n", + " # 3. Escáner de Enrutamiento (AutoML Routing)\n", + " # ==========================================\n", + " rutas = {\n", + " 'num_vars': [],\n", + " 'cat_vars': [],\n", + " 'date_vars': [],\n", + " 'bool_vars': []\n", + " }\n", + "\n", + " logger.info(\" 🔍 Mapeando la topología de las características predictoras (X)...\")\n", + "\n", + " for col in X.columns:\n", + " tipo = X[col].dtype\n", + "\n", + " # Booleanas (Damos prioridad a las bool_vars para que no se confundan con numéricas)\n", + " if pd.api.types.is_bool_dtype(tipo):\n", + " rutas['bool_vars'].append(col)\n", + " # Numéricas (Int y Float)\n", + " elif pd.api.types.is_numeric_dtype(tipo):\n", + " rutas['num_vars'].append(col)\n", + " # Categóricas y Textos\n", + " elif isinstance(tipo, pd.CategoricalDtype) or pd.api.types.is_object_dtype(tipo) or pd.api.types.is_string_dtype(tipo):\n", + " rutas['cat_vars'].append(col)\n", + " # Fechas y Tiempos\n", + " elif pd.api.types.is_datetime64_any_dtype(tipo):\n", + " rutas['date_vars'].append(col)\n", + " else:\n", + " logger.warning(f\" ⚠️ Advertencia: Tipo de dato no reconocido en '{col}': {tipo}\")\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Aislamiento y Enrutamiento Completado en {tiempo_total:.3f}s:\")\n", + " if nulos_purgados > 0:\n", + " logger.info(f\" 🔪 Regla de Oro Aplicada: {nulos_purgados} filas destruidas por no tener Target.\")\n", + " else:\n", + " logger.info(f\" ✔️ Regla de Oro : 0 filas destruidas (Target 100% íntegro).\")\n", + "\n", + " logger.info(f\" 📦 Matriz Predictora (X): {X.shape[0]:,} filas x {X.shape[1]} columnas\")\n", + " logger.info(f\" 🎯 Vector Objetivo (y) : {len(y):,} etiquetas aisladas\")\n", + " logger.info(f\"\\n 🛣️ Mapas de Ruteo Creados:\")\n", + " logger.info(f\" - Numéricas (num_vars) : {len(rutas['num_vars'])} columnas\")\n", + " logger.info(f\" - Categóricas (cat_vars) : {len(rutas['cat_vars'])} columnas\")\n", + " logger.info(f\" - Booleanas (bool_vars): {len(rutas['bool_vars'])} columnas\")\n", + " logger.info(f\" - Temporales (date_vars): {len(rutas['date_vars'])} columnas\")\n", + "\n", + " return X, y, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Fase 1.1 primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de la matriz central\n", + " if not hasattr(manager, 'datos_crudos') or manager.datos_crudos is None:\n", + " raise ValueError(\"El Manager no tiene datos cargados. Ejecuta las fases previas.\")\n", + "\n", + " # ==========================================\n", + " # 🧠 AUTO-DETECCIÓN DEL TARGET (Protegido)\n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción estricta del target\n", + " if not hasattr(manager, 'rutas') or 'target_name' not in manager.rutas:\n", + " raise ValueError(\"🛑 No se encontró la variable objetivo ('target_name') en el Manager. Ejecuta la guillotina (Fase 1.3) primero.\")\n", + "\n", + " variable_objetivo = manager.rutas['target_name']\n", + " logger.info(f\"🎯 Target heredado dinámicamente desde el manager: '{variable_objetivo}'\\n\")\n", + "\n", + " # Generamos la división definitiva y el enrutamiento\n", + " X, y, rutas_variables = aislar_target_y_enrutar(\n", + " df=manager.datos_crudos, \n", + " target_col=variable_objetivo\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos X, y en el contenedor de estado central\n", + " manager.X_train = X\n", + " manager.y_train = y\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Acoplamos las rutas al manager, manteniendo el 'target_name'\n", + " rutas_variables['target_name'] = variable_objetivo\n", + " manager.rutas = rutas_variables\n", + "\n", + " logger.info(\"📦 [MLOps] Matriz predictora (X), vector objetivo (y) y rutas de variables inyectadas de forma segura en el Manager.\")\n", + "\n", + " # Liberamos la memoria de 'datos_crudos' ya que la matriz se ha dividido\n", + " del manager.datos_crudos\n", + " logger.info(\"🧹 [RAM Shield] Matriz 'datos_crudos' original eliminada para liberar memoria.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Aislamiento del Target: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['age', 'education_num', 'capital_gain', 'capital_loss', 'hours_per_week']" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['num_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['workclass',\n", + " 'marital_status',\n", + " 'occupation',\n", + " 'relationship',\n", + " 'race',\n", + " 'sex',\n", + " 'native_country']" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['cat_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['date_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['bool_vars']" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧱 FASE 3.3: Levantando el Muro de Hierro (Split 80/20) ===\n", + " ✨ [TARGET LIMPIO] No se detectaron nulos ocultos en la variable objetivo.\n", + "\n", + "✅ Muro de Hierro levantado en 0.048s:\n", + " 🧠 Naturaleza del Target : Clasificación (Estratificado)\n", + " 🚂 Matriz de TRAIN : 26,029 filas (80.0%)\n", + " 🔒 Matriz de TEST : 6,508 filas (20.0%)\n", + "\n", + "📜 EDICTO DE MLOPS (Regla de Oro para las Fases 4 y 5):\n", + " 1. Todo Imputador, Scaler o Encoder debe ENTRENARSE estrictamente sobre TRAIN usando .fit()\n", + " 2. TEST es ciego. Solo se le aplicará .transform() usando las reglas aprendidas de TRAIN.\n", + "\n", + "📦 [MLOps] Matrices Train/Test divididas y aseguradas en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Any\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def levantar_muro_de_hierro(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " test_size: float = 0.20,\n", + " random_state: int = 42\n", + ") -> Tuple[pd.DataFrame, pd.DataFrame, pd.Series, pd.Series]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.3] División Inmediata y Muro de Hierro.\n", + " - Purga de Target: Aplica Regex avanzado para destruir nulos ocultos en 'y' y alinear 'X'.\n", + " - Inteligencia (AutoML): Detecta la naturaleza del Target (y) para aplicar \n", + " estratificación automática si es clasificación, o corte simple si es regresión.\n", + " - Seguridad: Verifica integridad dimensional antes del corte.\n", + " - Arquitectura MLOps: Prepara el terreno para la regla sagrada: \n", + " Transformadores usarán .fit_transform() en Train y SOLO .transform() en Test.\n", + " \"\"\"\n", + " if X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz X o el vector y están vacíos.\")\n", + " raise ValueError(\"La matriz X o el vector y están vacíos.\")\n", + "\n", + " if len(X) != len(y):\n", + " logger.error(f\"🛑 Desalineación Crítica: X tiene {len(X)} filas pero y tiene {len(y)}.\")\n", + " raise ValueError(\"Desalineación Crítica entre X e y.\")\n", + "\n", + " logger.info(f\"=== 🧱 FASE 3.3: Levantando el Muro de Hierro (Split {100-test_size*100:.0f}/{test_size*100:.0f}) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " # ==========================================\n", + " # 0.5. Purga de Nulos Ocultos en el Target (El Escudo Regex)\n", + " # ==========================================\n", + " # Usamos tu regex convirtiendo temporalmente a string para evitar errores si 'y' es numérica\n", + " patron_regex = r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$'\n", + " mascara_regex = y.astype(str).str.match(patron_regex, na=True)\n", + "\n", + " # Combinamos con los NaNs nativos de Pandas por si acaso\n", + " mascara_nulos_reales = y.isna()\n", + " mascara_borrar = mascara_regex | mascara_nulos_reales\n", + "\n", + " filas_a_borrar = mascara_borrar.sum()\n", + "\n", + " if filas_a_borrar > 0:\n", + " logger.warning(f\" 🧹 [PURGA TARGET] Detectados {filas_a_borrar} registros con respuesta (y) nula/inválida.\")\n", + " # Filtramos 'y' y luego usamos sus índices sobrevivientes para filtrar 'X'\n", + " y = y[~mascara_borrar].copy()\n", + " X = X.loc[y.index].copy()\n", + " logger.info(f\" 🗑️ Filas eliminadas de X e y para mantener integridad dimensional (Dataset restante: {len(y):,}).\")\n", + "\n", + " if len(y) == 0:\n", + " logger.error(\"🛑 Error Fatal: El dataset quedó vacío tras purgar los Targets inválidos.\")\n", + " raise ValueError(\"El dataset quedó vacío tras purgar los Targets inválidos.\")\n", + " else:\n", + " logger.info(\" ✨ [TARGET LIMPIO] No se detectaron nulos ocultos en la variable objetivo.\")\n", + "\n", + " # ==========================================\n", + " # 1. Detección Inteligente de Estratificación\n", + " # ==========================================\n", + " # Si 'y' tiene pocos valores únicos (ej. < 100) o es texto/categoría, asumimos CLASIFICACIÓN.\n", + " es_clasificacion = False\n", + " if pd.api.types.is_object_dtype(y.dtype) or isinstance(y.dtype, pd.CategoricalDtype):\n", + " es_clasificacion = True\n", + " elif pd.api.types.is_numeric_dtype(y.dtype) and y.nunique() < 100:\n", + " es_clasificacion = True\n", + "\n", + " estrategia_stratify = y if es_clasificacion else None\n", + "\n", + " # ==========================================\n", + " # 2. La División (La Guillotina Temporal)\n", + " # ==========================================\n", + " X_train, X_test, y_train, y_test = train_test_split(\n", + " X, y, \n", + " test_size=test_size, \n", + " random_state=random_state, \n", + " stratify=estrategia_stratify\n", + " )\n", + "\n", + " # ==========================================\n", + " # 3. Reporte de Arquitectura\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\"\\n✅ Muro de Hierro levantado en {tiempo_total:.3f}s:\")\n", + " logger.info(f\" 🧠 Naturaleza del Target : {'Clasificación (Estratificado)' if es_clasificacion else 'Regresión (Corte Simple)'}\")\n", + " logger.info(f\" 🚂 Matriz de TRAIN : {X_train.shape[0]:,} filas ({len(X_train)/len(X):.1%})\")\n", + " logger.info(f\" 🔒 Matriz de TEST : {X_test.shape[0]:,} filas ({len(X_test)/len(X):.1%})\")\n", + "\n", + " logger.info(\"\\n📜 EDICTO DE MLOPS (Regla de Oro para las Fases 4 y 5):\")\n", + " logger.info(\" 1. Todo Imputador, Scaler o Encoder debe ENTRENARSE estrictamente sobre TRAIN usando .fit()\")\n", + " logger.info(\" 2. TEST es ciego. Solo se le aplicará .transform() usando las reglas aprendidas de TRAIN.\")\n", + "\n", + " return X_train, X_test, y_train, y_test\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Obtenemos los datos sin dividir que guardamos temporalmente en la Fase 3.2\n", + " # El manager guarda provisionalmente la matriz X completa en X_train antes del split real\n", + " X_sin_dividir = getattr(manager, 'X_train', None)\n", + " y_sin_dividir = getattr(manager, 'y_train', None)\n", + "\n", + " if X_sin_dividir is None or y_sin_dividir is None:\n", + " raise ValueError(\"El Manager no tiene 'X' o 'y' cargados. Ejecuta el Aislamiento (Fase 3.2) primero.\")\n", + "\n", + " # 2. Ejecutamos la división consumiendo los datos centrales\n", + " X_tr, X_te, y_tr, y_te = levantar_muro_de_hierro(\n", + " X=X_sin_dividir, \n", + " y=y_sin_dividir, \n", + " test_size=0.20,\n", + " random_state=42 \n", + " )\n", + "\n", + " # 3. Guardamos los resultados DE VUELTA en el manager para que viajen a las siguientes fases\n", + " if hasattr(manager, 'cargar_split'):\n", + " manager.cargar_split(X_tr, X_te, y_tr, y_te)\n", + " else:\n", + " # Fallback de seguridad si el método cargar_split no existe en la versión actual del Manager\n", + " manager.X_train = X_tr\n", + " manager.X_test = X_te\n", + " manager.y_train = y_tr\n", + " manager.y_test = y_te\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Matrices Train/Test divididas y aseguradas en el PipelineManager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Train/Test Split: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
2525221?10never-married?own-childwhitemale0020united-states
334941private11married-civ-spousesaleshusbandwhitemale4386060united-states
458424private9never-marriedhandlers-cleanersunmarriedblackfemale0040united-states
700359private9widowedprof-specialtynot-in-familywhitefemale0018united-states
88235private9married-civ-spousesaleshusbandasian-pac-islandermale0188750iran
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "25252 21 ? 10 never-married ? \n", + "3349 41 private 11 married-civ-spouse sales \n", + "4584 24 private 9 never-married handlers-cleaners \n", + "7003 59 private 9 widowed prof-specialty \n", + "882 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "25252 own-child white male 0 0 \n", + "3349 husband white male 4386 0 \n", + "4584 unmarried black female 0 0 \n", + "7003 not-in-family white female 0 0 \n", + "882 husband asian-pac-islander male 0 1887 \n", + "\n", + " hours_per_week native_country \n", + "25252 20 united-states \n", + "3349 60 united-states \n", + "4584 40 united-states \n", + "7003 18 united-states \n", + "882 50 iran " + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "manager.X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
2110239self-emp-inc10divorcedcraft-repairnot-in-familywhitemale0099united-states
2146935private13married-civ-spouseadm-clericalhusbandwhitemale0040united-states
2081531private13married-civ-spouseprof-specialtyhusbandwhitemale0035united-states
2213867self-emp-inc13widowedother-serviceunmarriedwhitefemale0035united-states
1143656self-emp-not-inc9married-spouse-absentexec-managerialnot-in-familywhitemale0070united-states
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status \\\n", + "21102 39 self-emp-inc 10 divorced \n", + "21469 35 private 13 married-civ-spouse \n", + "20815 31 private 13 married-civ-spouse \n", + "22138 67 self-emp-inc 13 widowed \n", + "11436 56 self-emp-not-inc 9 married-spouse-absent \n", + "\n", + " occupation relationship race sex capital_gain \\\n", + "21102 craft-repair not-in-family white male 0 \n", + "21469 adm-clerical husband white male 0 \n", + "20815 prof-specialty husband white male 0 \n", + "22138 other-service unmarried white female 0 \n", + "11436 exec-managerial not-in-family white male 0 \n", + "\n", + " capital_loss hours_per_week native_country \n", + "21102 0 99 united-states \n", + "21469 0 40 united-states \n", + "20815 0 35 united-states \n", + "22138 0 35 united-states \n", + "11436 0 70 united-states " + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "manager.X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Index: 26029 entries, 25252 to 7084\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 26029 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 26029 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 26029 non-null int32 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 26029 non-null category\n", + "dtypes: category(7), int16(1), int32(1), int8(3)\n", + "memory usage: 613.3 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "manager.X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🧭 FASE 3.4: Motor de Estrategia de Validación (Cross-Validation) ===\n", + " 🔍 Analizando topología de la matriz para Validación Cruzada...\n", + " ⚖️ Matriz transversal simple (Clasificación). Activando estratificación equilibrada.\n", + "\n", + "✅ Estrategia de Validación Definida en 0.002s:\n", + " 🎯 Esquema Final : StratifiedKFold (Mantiene proporción real de clases)\n", + " 🔪 Folds (Cortes) : 5\n", + "\n", + "📦 [MLOps] Mapa topológico de validación (Folds) guardado de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Any, List, Optional\n", + "from sklearn.model_selection import StratifiedKFold, KFold, TimeSeriesSplit, GroupKFold\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def definir_estrategia_validacion(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " n_splits: int = 5,\n", + " date_vars: Optional[List[str]] = None\n", + ") -> Tuple[Any, Optional[np.ndarray]]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 3.4] Esquema de Validación Inteligente (Árbitro Topológico).\n", + " - Analiza la presencia simultánea o individual de Tiempo (Fechas) e Identidad (IDs).\n", + " - Elige matemáticamente la estrategia de K-Folds más segura para evitar Fugas de Datos.\n", + " \"\"\"\n", + " if X_train.empty or y_train.empty:\n", + " logger.error(\"🛑 Error Crítico: X_train o y_train están vacíos.\")\n", + " raise ValueError(\"X_train o y_train están vacíos.\")\n", + "\n", + " logger.info(f\"=== 🧭 FASE 3.4: Motor de Estrategia de Validación (Cross-Validation) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + " date_vars = date_vars or []\n", + " es_clasificacion = False\n", + " grupos_cv = None\n", + "\n", + " # ==========================================\n", + " # 1. Detección de Naturaleza del Problema (Target)\n", + " # ==========================================\n", + " if pd.api.types.is_object_dtype(y_train.dtype) or isinstance(y_train.dtype, pd.CategoricalDtype):\n", + " es_clasificacion = True\n", + " elif pd.api.types.is_numeric_dtype(y_train.dtype) and y_train.nunique() < 100:\n", + " es_clasificacion = True\n", + "\n", + " # ==========================================\n", + " # 2. Extracción de Grupos (Desde el Índice)\n", + " # ==========================================\n", + " nombre_indice = X_train.index.name\n", + " tiene_ids_reales = isinstance(X_train.index, pd.MultiIndex) or (nombre_indice is not None and nombre_indice != 'auto_id')\n", + "\n", + " if tiene_ids_reales:\n", + " if isinstance(X_train.index, pd.MultiIndex):\n", + " grupos_cv = np.array(['_'.join(map(str, idx)) for idx in X_train.index])\n", + " else:\n", + " grupos_cv = X_train.index.to_numpy()\n", + "\n", + " # ==========================================\n", + " # 3. El Árbitro Inteligente (Matriz de Decisión MLOps)\n", + " # ==========================================\n", + " estrategia_cv = None\n", + " nombre_estrategia = \"\"\n", + " tiene_tiempo = len(date_vars) > 0\n", + "\n", + " logger.info(\" 🔍 Analizando topología de la matriz para Validación Cruzada...\")\n", + "\n", + " # Escenario A: Datos de Panel (Tiempo + Identidad)\n", + " if tiene_tiempo and tiene_ids_reales:\n", + " # Sklearn no tiene un \"GroupTimeSeriesSplit\" nativo perfecto, usamos GroupKFold como la opción más segura \n", + " # para evitar que un mismo ID se filtre entre Folds, asumiendo que los Lags (Fase 14.1) ya encapsularon la historia.\n", + " estrategia_cv = GroupKFold(n_splits=n_splits)\n", + " nombre_estrategia = f\"GroupKFold (Prioridad ID sobre Tiempo - {len(np.unique(grupos_cv))} grupos)\"\n", + " logger.warning(\" ⚠️ Conflicto detectado: La matriz tiene TIEMPO y tiene IDs simultáneamente (Datos de Panel).\")\n", + " logger.info(\" ↳ Decisión Arquitectónica: Predomina el ID. Es más crítico evitar que el modelo memorice\")\n", + " logger.info(\" el futuro de un mismo paciente/ciudad. Se usará Agrupación por Identidad.\")\n", + "\n", + " # Escenario B: Serie de Tiempo Pura (Solo Tiempo, un solo protagonista)\n", + " elif tiene_tiempo and not tiene_ids_reales:\n", + " estrategia_cv = TimeSeriesSplit(n_splits=n_splits)\n", + " nombre_estrategia = \"TimeSeriesSplit (Corte Secuencial Histórico)\"\n", + " logger.info(\" ⏱️ Solo hay Tiempo (Sin IDs múltiples). Activando validación secuencial estricta.\")\n", + "\n", + " # Escenario C: Transversal Múltiple (Solo IDs, sin reloj)\n", + " elif not tiene_tiempo and tiene_ids_reales:\n", + " estrategia_cv = GroupKFold(n_splits=n_splits)\n", + " nombre_estrategia = f\"GroupKFold (Agrupado estricto por Índice - {len(np.unique(grupos_cv))} grupos)\"\n", + " logger.info(\" 🧬 Solo hay IDs (Sin reloj). Activando blindaje de identidad transversal.\")\n", + "\n", + " # Escenario D: Transversal Simple (Ni Tiempo, Ni IDs complejos)\n", + " else:\n", + " if es_clasificacion:\n", + " estrategia_cv = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + " nombre_estrategia = \"StratifiedKFold (Mantiene proporción real de clases)\"\n", + " logger.info(\" ⚖️ Matriz transversal simple (Clasificación). Activando estratificación equilibrada.\")\n", + " else:\n", + " estrategia_cv = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + " nombre_estrategia = \"Standard KFold (Corte Aleatorio Simple)\"\n", + " logger.info(\" 📈 Matriz transversal simple (Regresión). Activando partición aleatoria.\")\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo\n", + " # ==========================================\n", + " logger.info(f\"\\n✅ Estrategia de Validación Definida en {time.time() - inicio_timer:.3f}s:\")\n", + " logger.info(f\" 🎯 Esquema Final : {nombre_estrategia}\")\n", + " logger.info(f\" 🔪 Folds (Cortes) : {n_splits}\")\n", + "\n", + " if grupos_cv is not None:\n", + " logger.warning(\" ⚠️ IMPORTANTE : El motor ha devuelto el vector 'grupos_cv'. Asegúrate de inyectarlo en tu modelo.\")\n", + "\n", + " return estrategia_cv, grupos_cv\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación estricta del PipelineManager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de datos desde el manager\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene datos de entrenamiento (X_train/y_train). Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Extraemos las fechas detectadas de forma segura desde las rutas del manager\n", + " fechas_detectadas = []\n", + " if hasattr(manager, 'rutas'):\n", + " fechas_detectadas = manager.rutas.get('date_vars', [])\n", + "\n", + " # Generamos la estrategia y extraemos los grupos ocultos consumiendo datos del manager\n", + " cv_strategy, grupos_cv_extraidos = definir_estrategia_validacion(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " n_splits=5,\n", + " date_vars=fechas_detectadas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos generados estrictamente en el Manager\n", + " manager.grupos_cv = grupos_cv_extraidos\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('cv_strategy', cv_strategy)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['cv_strategy'] = cv_strategy\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Mapa topológico de validación (Folds) guardado de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición): Reflejamos temporalmente en variables globales por si tus celdas de abajo aún las piden\n", + " estrategia_cv = cv_strategy\n", + " grupos_cv = manager.grupos_cv\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en la Definición de Estrategia CV: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== ⚓ FASE 3.5: Desanclaje del Índice y Sincronización (TRAIN) ===\n", + " ✅ Completado en 0.0009s\n", + " 🗑️ Índices destruidos : Índice numérico nativo\n", + " 🔗 Sincronización : X e y (26029 filas) perfectamente alineados.\n", + "=== ⚓ FASE 3.5: Desanclaje del Índice y Sincronización (TEST) ===\n", + " ✅ Completado en 0.0007s\n", + " 🗑️ Índices destruidos : Índice numérico nativo\n", + " 🔗 Sincronización : X e y (6508 filas) perfectamente alineados.\n", + "\n", + "⚙️ Estado Global: Matrices purificadas devueltas de forma segura al PipelineManager y listas para Scikit-Learn.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from typing import Tuple, Optional\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def desanclar_indice_estructural(\n", + " X: pd.DataFrame, \n", + " y: Optional[pd.Series] = None,\n", + " nombre_dataset: str = \"Matriz\"\n", + ") -> Tuple[pd.DataFrame, Optional[pd.Series]]:\n", + " \"\"\"\n", + " [FASE 1 - Paso 3.5] Desanclaje del Índice y Purificación.\n", + " - Purga de Identidad: Elimina los IDs del índice para liberar memoria y evitar \n", + " que transformadores de Scikit-Learn/Categorical Encoders fallen por desalineación.\n", + " - Sincronización Estricta: Resetea (X, y) en paralelo garantizando la topología.\n", + " - Arquitectura Modular: Se ejecuta por separado para Train y Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(f\"🛑 Error Crítico: La matriz X ({nombre_dataset}) está vacía o es inválida.\")\n", + " raise ValueError(f\"La matriz X ({nombre_dataset}) está vacía o es inválida.\")\n", + "\n", + " logger.info(f\"=== ⚓ FASE 3.5: Desanclaje del Índice y Sincronización ({nombre_dataset}) ===\")\n", + "\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Captura de metadatos para el reporte\n", + " nombres_indices = X.index.names\n", + "\n", + " # 2. Desanclaje de X\n", + " X_clean = X.reset_index(drop=True)\n", + " y_clean = None\n", + "\n", + " # 3. Desanclaje de y (Si existe) y Auditoría\n", + " if y is not None:\n", + " if y.empty:\n", + " logger.error(f\"🛑 Error Crítico: La variable objetivo y ({nombre_dataset}) está vacía.\")\n", + " raise ValueError(f\"La variable objetivo y ({nombre_dataset}) está vacía.\")\n", + "\n", + " y_clean = y.reset_index(drop=True)\n", + " assert len(X_clean) == len(y_clean), f\"🚨 Ruptura dimensional en {nombre_dataset} detectada tras desanclaje.\"\n", + "\n", + " # ==========================================\n", + " # Reporte Ejecutivo de MLOps\n", + " # ==========================================\n", + " tiempo_total = time.time() - inicio_timer\n", + "\n", + " logger.info(f\" ✅ Completado en {tiempo_total:.4f}s\")\n", + " if nombres_indices and nombres_indices[0] is not None:\n", + " logger.info(f\" 🗑️ Índices destruidos : {list(nombres_indices)}\")\n", + " else:\n", + " logger.info(f\" 🗑️ Índices destruidos : Índice numérico nativo\")\n", + "\n", + " if y is not None:\n", + " logger.info(f\" 🔗 Sincronización : X e y ({len(X_clean)} filas) perfectamente alineados.\")\n", + " else:\n", + " logger.info(f\" 🔗 Sincronización : X ({len(X_clean)} filas) desanclada de forma independiente.\")\n", + "\n", + " return X_clean, y_clean\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación limpia y estricta usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1).\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación segura de atributos en el Manager\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene las matrices cargadas. Ejecuta la división Train/Test (Fase 3.3).\")\n", + "\n", + " # 2. Desanclamos TRAIN extrayendo los datos del Manager\n", + " X_train_clean, y_train_clean = desanclar_indice_estructural(\n", + " X=manager.X_train, \n", + " y=manager.y_train,\n", + " nombre_dataset=\"TRAIN\"\n", + " )\n", + "\n", + " # 3. Desanclamos TEST extrayendo los datos del Manager\n", + " X_test_clean, y_test_clean = desanclar_indice_estructural(\n", + " X=manager.X_test, \n", + " y=manager.y_test,\n", + " nombre_dataset=\"TEST\"\n", + " )\n", + "\n", + " # 4. Guardamos los resultados purificados de vuelta en el Manager\n", + " manager.X_train = X_train_clean\n", + " manager.y_train = y_train_clean\n", + " manager.X_test = X_test_clean\n", + " manager.y_test = y_test_clean\n", + "\n", + " logger.info(\"\\n⚙️ Estado Global: Matrices purificadas devueltas de forma segura al PipelineManager y listas para Scikit-Learn.\")\n", + "\n", + " # (Transición): Reflejamos en variables globales por si tus celdas de abajo aún las piden\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " y_test = manager.y_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except AssertionError as assert_err:\n", + " logger.error(f\"🛑 Falla Crítica de Integridad Matemática: {assert_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Fallo inesperado en el Desanclaje: {e}\")\n", + "\n", + "\n", + "# # FASE 2: Exploración Visual y Pre-procesamiento de Texto\n", + "# Entendemos el negocio, limpiamos el ruido obvio y preparamos las categorías." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 📊 FASE 4.1: Diagnóstico MLOps del Target ('income') ===\n", + " 🧠 Naturaleza Detectada: Clasificación Binaria (2 clases)\n", + " 📈 Clase Mayoritaria : '<=50k' (75.9%)\n", + " 📉 Clase Minoritaria : '>50k' (24.1%)\n", + " ⚖️ Imbalance Ratio (IR): 1:3.15 (Por cada minoría hay 3.2 mayorías)\n", + "\n", + " 🚨 DIAGNÓSTICO ESTRATÉGICO PARA FASE 6:\n", + " [ALERTA AMARILLA] Desbalance Moderado. Se sugiere activar Class Weights en LightGBM/XGBoost.\n", + "\n", + "⏱️ Diagnóstico completado en 0.005s\n", + "📦 [MLOps] Clase minoritaria '>50k' capturada en el Manager y lista para Fase 4.3.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt # El único import correcto para gráficos\n", + "import seaborn as sns\n", + "import time\n", + "import warnings\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def diagnosticar_balance_target(y: pd.Series, nombre_target: str = \"Target\"):\n", + " \"\"\"\n", + " [FASE 2 - Paso 4.1] Radiografía Estadística y Diagnóstico del Target.\n", + " - IA Analítica: Detecta automáticamente si el problema es Regresión, Binario o Multiclase.\n", + " - Diagnóstico MLOps: Calcula el Imbalance Ratio (IR) y emite alertas estratégicas adaptadas al tipo.\n", + " - Extracción Automática: Retorna la clase minoritaria para ser usada en fases posteriores.\n", + " \"\"\"\n", + " if y is None or y.empty:\n", + " logger.error(\"🛑 Error Crítico: El vector objetivo (y) está vacío o no existe.\")\n", + " raise ValueError(\"El vector objetivo (y) está vacío o no existe.\")\n", + "\n", + " logger.info(f\"=== 📊 FASE 4.1: Diagnóstico MLOps del Target ('{nombre_target}') ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # Configuración estética profesional\n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\", palette=\"muted\")\n", + " warnings.simplefilter(\"ignore\", category=FutureWarning)\n", + "\n", + " # Variable para guardar la clase que retornaremos\n", + " clase_minoritaria_detectada = None\n", + "\n", + " # ==========================================\n", + " # 1. Detección Inteligente de la Topología\n", + " # ==========================================\n", + " es_clasificacion = False\n", + "\n", + " # Soporte ultra-robusto para inferir clasificación\n", + " if pd.api.types.is_object_dtype(y.dtype) or isinstance(y.dtype, pd.CategoricalDtype) or pd.api.types.is_bool_dtype(y.dtype):\n", + " es_clasificacion = True\n", + " elif pd.api.types.is_numeric_dtype(y.dtype) and y.nunique(dropna=True) <= 20: # Si es número pero tiene pocas opciones, es clasificación\n", + " es_clasificacion = True\n", + "\n", + " if MODO_VISUAL:\n", + " plt.figure(figsize=(10, 5), dpi=100)\n", + "\n", + " # ==========================================\n", + " # 2.A. Ruta AutoML para CLASIFICACIÓN\n", + " # ==========================================\n", + " if es_clasificacion:\n", + " conteo = y.value_counts(dropna=True)\n", + " porcentajes = y.value_counts(normalize=True, dropna=True) * 100\n", + "\n", + " # Extraemos la clase con menos registros sin importar el tipo\n", + " clase_minoritaria_detectada = conteo.index[-1]\n", + "\n", + " # --- BIFURCACIÓN 1: BINARIO EXACTO (2 CLASES) ---\n", + " if len(conteo) == 2:\n", + " clase_mayoritaria = conteo.index[0]\n", + " imbalance_ratio = conteo.iloc[0] / conteo.iloc[-1]\n", + "\n", + " logger.info(f\" 🧠 Naturaleza Detectada: Clasificación Binaria (2 clases)\")\n", + " logger.info(f\" 📈 Clase Mayoritaria : '{clase_mayoritaria}' ({porcentajes.iloc[0]:.1f}%)\")\n", + " logger.info(f\" 📉 Clase Minoritaria : '{clase_minoritaria_detectada}' ({porcentajes.iloc[-1]:.1f}%)\")\n", + " logger.info(f\" ⚖️ Imbalance Ratio (IR): 1:{imbalance_ratio:.2f} (Por cada minoría hay {imbalance_ratio:.1f} mayorías)\")\n", + "\n", + " logger.info(\"\\n 🚨 DIAGNÓSTICO ESTRATÉGICO PARA FASE 6:\")\n", + " if imbalance_ratio > 9: \n", + " logger.warning(\" [ALERTA ROJA] Desbalance Severo. Requisito obligatorio: Aplicar SMOTE o Class Weights extremos.\")\n", + " elif imbalance_ratio > 3: \n", + " logger.warning(\" [ALERTA AMARILLA] Desbalance Moderado. Se sugiere activar Class Weights en LightGBM/XGBoost.\")\n", + " else:\n", + " logger.info(\" [VERDE] Balance Aceptable. No se requieren técnicas de sobre-muestreo.\")\n", + "\n", + " # --- BIFURCACIÓN 2: MULTICLASE (3 O MÁS CLASES) ---\n", + " elif len(conteo) >= 3:\n", + " clase_dominante = conteo.index[0]\n", + " imbalance_ratio_extremo = conteo.iloc[0] / conteo.iloc[-1]\n", + "\n", + " logger.info(f\" 🧠 Naturaleza Detectada: Clasificación Multiclase ({len(conteo)} clases únicas)\")\n", + " logger.info(f\" 👑 Clase Dominante : '{clase_dominante}' ({porcentajes.iloc[0]:.1f}%)\")\n", + " logger.info(f\" ⚠️ Clase más débil : '{clase_minoritaria_detectada}' ({porcentajes.iloc[-1]:.1f}%)\")\n", + " logger.info(f\" ⚖️ IR Extremo (Max/Min): 1:{imbalance_ratio_extremo:.2f} (Brecha entre el mayor y el menor)\")\n", + "\n", + " logger.info(\"\\n 🚨 DIAGNÓSTICO ESTRATÉGICO MULTICLASE PARA FASE 6:\")\n", + " if imbalance_ratio_extremo > 9: \n", + " logger.warning(\" [ALERTA ROJA] Desbalance Severo Multiclase. La clase más débil está casi extinta. Requisito: SMOTE Multiclase o pesos balanceados.\")\n", + " elif imbalance_ratio_extremo > 3: \n", + " logger.warning(\" [ALERTA AMARILLA] Desbalance Moderado. Ciertas clases tienen poca representación. Sugerencia: Evaluar usando F1-Macro.\")\n", + " else:\n", + " logger.info(\" [VERDE] Balance Aceptable. Las clases están distribuidas de forma segura.\")\n", + "\n", + " # --- BIFURCACIÓN 3: ERROR DE VARIANZA CERO ---\n", + " else:\n", + " logger.error(\" 🛑 [ERROR CRÍTICO] Target de una sola clase (Varianza Cero). El modelo no puede aprender a discriminar.\")\n", + "\n", + " if MODO_VISUAL:\n", + " # 🚀 FIX MLOps: Forzamos el 'order' para que Seaborn dibuje de mayor a menor frecuencia\n", + " ax = sns.barplot(x=conteo.index, y=conteo.values, order=conteo.index, edgecolor=\".2\")\n", + " plt.title(f\"Distribución de Clases: {nombre_target}\", fontsize=14, pad=15)\n", + " plt.ylabel(\"Frecuencia (N° de filas)\")\n", + "\n", + " # 🚀 FIX MLOps: Cálculo matemático directo. Extraemos la altura de la barra dibujada \n", + " # y calculamos el % en tiempo real. Cero posibilidad de desfase.\n", + " total_filas = len(y.dropna())\n", + " for p in ax.patches:\n", + " altura_barra = p.get_height()\n", + " pct_real = (altura_barra / total_filas) * 100\n", + "\n", + " ax.annotate(f'{pct_real:.1f}%', \n", + " (p.get_x() + p.get_width() / 2., altura_barra), \n", + " ha='center', va='bottom', fontsize=11, color='black', xytext=(0, 5), \n", + " textcoords='offset points')\n", + "\n", + " # ==========================================\n", + " # 2.B. Ruta AutoML para REGRESIÓN\n", + " # ==========================================\n", + " else:\n", + " media = y.mean()\n", + " mediana = y.median()\n", + " sesgo = y.skew()\n", + "\n", + " logger.info(f\" 🧠 Naturaleza Detectada: Regresión (Valores continuos)\")\n", + " logger.info(f\" 📏 Media : {media:.2f}\")\n", + " logger.info(f\" 📍 Mediana : {mediana:.2f}\")\n", + " logger.info(f\" 📐 Sesgo : {sesgo:.2f}\")\n", + "\n", + " if MODO_VISUAL:\n", + " # Histograma con curva de densidad (KDE)\n", + " sns.histplot(y, kde=True, bins=50, color='steelblue')\n", + " plt.axvline(media, color='red', linestyle='--', label=f'Media: {media:.2f}')\n", + " plt.axvline(mediana, color='green', linestyle='-', label=f'Mediana: {mediana:.2f}')\n", + " plt.title(f\"Distribución Continua: {nombre_target}\", fontsize=14, pad=15)\n", + " plt.legend()\n", + "\n", + " logger.info(\"\\n 🚨 DIAGNÓSTICO ESTRATÉGICO PARA FASE 6:\")\n", + " if abs(sesgo) > 1:\n", + " logger.warning(\" [ALERTA AMARILLA] Cola pesada detectada (Sesgo alto). Se sugiere evaluar Log-Transform (np.log1p) antes de entrenar.\")\n", + " else:\n", + " logger.info(\" [VERDE] Distribución simétrica aceptable.\")\n", + "\n", + " # ==========================================\n", + " # 3. Finalización\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " plt.tight_layout()\n", + " plt.show()\n", + " logger.debug(\"Visualización de distribución de Target completada.\")\n", + " else:\n", + " plt.close() # Liberar memoria de la figura en Headless/Producción\n", + " \n", + " logger.info(f\"\\n⏱️ Diagnóstico completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # Retornamos la clase minoritaria al entorno\n", + " return clase_minoritaria_detectada\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Verificación del vector objetivo en el Manager\n", + " if getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargado el vector 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # AUTO-DETECCIÓN DEL NOMBRE DEL TARGET (De los pasos anteriores, o por defecto)\n", + " if hasattr(manager.y_train, 'name') and manager.y_train.name:\n", + " nombre_target_heredado = manager.y_train.name\n", + " elif hasattr(manager, 'rutas') and 'target_name' in manager.rutas:\n", + " nombre_target_heredado = manager.rutas['target_name']\n", + " else:\n", + " nombre_target_heredado = 'Target_Manager'\n", + "\n", + " # Ejecutamos la radiografía usando el target almacenado en el manager\n", + " clase_minoritaria_global = diagnosticar_balance_target(\n", + " y=manager.y_train, \n", + " nombre_target=nombre_target_heredado \n", + " )\n", + "\n", + " if clase_minoritaria_global is not None:\n", + " # Guardamos la clase minoritaria en la memoria del manager (rutas) para usarla en el futuro\n", + " if not hasattr(manager, 'rutas'):\n", + " manager.rutas = {}\n", + " manager.rutas['clase_minoritaria'] = clase_minoritaria_global\n", + " logger.info(f\"📦 [MLOps] Clase minoritaria '{clase_minoritaria_global}' capturada en el Manager y lista para Fase 4.3.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Diagnóstico: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🔬 FASE 4.2: Auditoría Integral y Mapa de Calor de Varianza (Agnóstico) ===\n", + "\n", + "### 🔢 1. Variables Numéricas (Anomalías de Signo y Outliers Extremos)\n", + " ☄️ [ANOMALÍA GRAVITACIONAL] 'capital_loss': Máximo (4356.0) está a >10 desviaciones estándar de la media. Extremo absurdo.\n", + " ☄️ [ANOMALÍA GRAVITACIONAL] 'capital_gain': Máximo (99999.0) está a >10 desviaciones estándar de la media. Extremo absurdo.\n", + " 🤖 [CÓDIGO SISTEMA LEGACY] 'capital_gain': Máximo (99999.0) parece un NaN codificado por sistemas antiguos (999...).\n", + "\n", + " count mean std min 25% 50% 75% max top freq % Moda\n", + "capital_loss 26029.00 88.63 406.63 0.00 0.00 0.00 0.00 4356.00 0 24797 95.27\n", + "capital_gain 26029.00 1095.66 7466.78 0.00 0.00 0.00 0.00 99999.00 0 23847 91.62\n", + "hours_per_week 26029.00 40.44 12.29 1.00 40.00 40.00 45.00 99.00 40 12194 46.85\n", + "education_num 26029.00 10.08 2.57 1.00 9.00 10.00 12.00 16.00 9 8383 32.21\n", + "age 26029.00 38.50 13.62 17.00 28.00 37.00 47.00 90.00 36 725 2.79\n", + "--------------------------------------------------------------------------------\n", + "\n", + "### 🔠 2. Variables Categóricas (Ruido y Máscaras Regex)\n", + " 🎭 [MÁSCARA DETECTADA] 'native_country': Contiene nulos camuflados ('?').\n", + " 🎭 [MÁSCARA DETECTADA] 'workclass': Contiene nulos camuflados ('?').\n", + " 🎭 [MÁSCARA DETECTADA] 'occupation': Contiene nulos camuflados ('?').\n", + "\n", + " count unique top freq % Moda\n", + "native_country 26029 41 united-states 23334 89.65\n", + "race 26029 5 white 22214 85.34\n", + "income 26029 2 <=50k 19758 75.91\n", + "workclass 26029 9 private 18182 69.85\n", + "sex 26029 2 male 17440 67.00\n", + "marital_status 26029 7 married-civ-spouse 11975 46.01\n", + "relationship 26029 6 husband 10569 40.60\n", + "occupation 26029 15 prof-specialty 3315 12.74\n", + "--------------------------------------------------------------------------------\n", + "\n", + "### 🛑 Total de Anomalías Inter-Dominio Detectadas: 6\n", + "💡 Acción: Utiliza esta información para el Paso 8 (Desenmascarar Nulos) y el Paso 12 (Outliers).\n", + "\n", + "⏱️ Auditoría Integral completada en 0.074s\n", + "\n", + "📦 [MLOps] Resultados de la auditoría de dominio guardados en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import re\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def auditar_logica_dominio_integral(X: pd.DataFrame, y: pd.Series = None):\n", + " \"\"\"\n", + " [FASE 2 - Paso 4.2] Escáner AutoML Multidimensional Agolnóstico de Anomalías de Distribución.\n", + " - Arquitectura Modular: Analiza Numéricos, Categóricos, Fechas y Booleanos independientemente de los nombres de columnas.\n", + " - Inteligencia Estadística: Detecta valores imposibles (ej. negativos donde no debe), \n", + " outliers extremos (fences), varianza cero y fechas huérfanas/futuras.\n", + " - Visualización Térmica: Aplica Heatmap de degradado al % de dominancia (Moda) si está en Jupyter.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz de características (X) está vacía.\")\n", + " raise ValueError(\"La matriz de características (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🔬 FASE 4.2: Auditoría Integral y Mapa de Calor de Varianza (Agnóstico) ===\")\n", + " inicio_timer = time.time()\n", + " alertas_totales = 0\n", + " diccionario_resultados = {} \n", + "\n", + " # Ensamblaje temporal blindado de X e y\n", + " df_analisis = X.copy()\n", + " if y is not None:\n", + " target_name = y.name if y.name else 'Target_y'\n", + " # Evitamos colisiones de nombres\n", + " if target_name in df_analisis.columns: target_name = f\"{target_name}_TargetInyectado\"\n", + " df_analisis[target_name] = y\n", + "\n", + " total_filas = len(df_analisis)\n", + "\n", + " # ==========================================\n", + " # Funciones Auxiliares de Visualización (Blindadas)\n", + " # ==========================================\n", + " def inyectar_moda_y_ordenar(df_stats, cols, df_origen):\n", + " tops, freqs = [], []\n", + " for c in cols:\n", + " vc = df_origen[c].value_counts(dropna=True)\n", + " if not vc.empty:\n", + " tops.append(vc.index[0])\n", + " freqs.append(vc.iloc[0])\n", + " else:\n", + " tops.append(np.nan); freqs.append(0)\n", + " if 'top' not in df_stats.columns: df_stats['top'] = tops\n", + " if 'freq' not in df_stats.columns: df_stats['freq'] = freqs\n", + " df_stats['% Moda'] = (df_stats['freq'].astype(float) / total_filas) * 100\n", + " return df_stats.sort_values(by='% Moda', ascending=False)\n", + "\n", + " def mostrar_tabla_con_gradiente(df_stats):\n", + " if MODO_VISUAL:\n", + " estilo = df_stats.style.background_gradient(\n", + " subset=['% Moda'], cmap='YlOrRd'\n", + " ).format({'% Moda': '{:.2f}%', 'freq': '{:.0f}'})\n", + " display(estilo)\n", + " # Log silencioso de la tabla para el servidor\n", + " logger.debug(\"\\n\" + df_stats.to_string(float_format=\"{:.2f}\".format))\n", + " else:\n", + " # Texto plano seguro para servidores Headless\n", + " logger.info(\"\\n\" + df_stats.to_string(float_format=\"{:.2f}\".format))\n", + "\n", + " # ==========================================\n", + " # 1. Análisis de Variables Numéricas (Inteligencia Híbrida)\n", + " # ==========================================\n", + " num_cols = df_analisis.select_dtypes(include=[np.number]).columns\n", + " if len(num_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 🔢 1. Variables Numéricas (Anomalías de Signo y Outliers Extremos)\"))\n", + " else:\n", + " logger.info(\"\\n### 🔢 1. Variables Numéricas (Anomalías de Signo y Outliers Extremos)\")\n", + " \n", + " stats_num = df_analisis[num_cols].describe().T\n", + " stats_num = inyectar_moda_y_ordenar(stats_num, num_cols, df_analisis)\n", + " diccionario_resultados['Numericas'] = stats_num\n", + "\n", + " for col in stats_num.index:\n", + " min_val = stats_num.loc[col, 'min']\n", + " max_val = stats_num.loc[col, 'max']\n", + " std_val = stats_num.loc[col, 'std']\n", + " mean_val = stats_num.loc[col, 'mean']\n", + " q3_val = stats_num.loc[col, '75%']\n", + " q1_val = stats_num.loc[col, '25%']\n", + "\n", + " # --- 1. Signos Imposibles ---\n", + " if min_val < 0:\n", + " logger.warning(f\" 🚨 [SIGNO NEGATIVO] '{col}': Contiene valores negativos ({min_val}). Verificar lógica de negocio.\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 2. Varianza Cero ---\n", + " if std_val == 0:\n", + " logger.warning(f\" 🧊 [VARIANZA CERO] '{col}': Todos los valores son idénticos. Inútil para predictivo.\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 3. Outliers Estadísticos Extremos (IQR) ---\n", + " iqr = q3_val - q1_val\n", + " techo_iqr = q3_val + (3 * iqr)\n", + "\n", + " if iqr > 0 and max_val > techo_iqr and max_val > 100:\n", + " logger.warning(f\" 🔥 [OUTLIER IQR] '{col}': Máximo ({max_val}) rompe el techo estadístico IQR ({techo_iqr:.2f}).\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 4. Anomalías Gravitacionales (Para distribuciones dominadas por ceros donde IQR=0) ---\n", + " elif std_val > 0 and max_val > (mean_val + (10 * std_val)):\n", + " logger.warning(f\" ☄️ [ANOMALÍA GRAVITACIONAL] '{col}': Máximo ({max_val}) está a >10 desviaciones estándar de la media. Extremo absurdo.\")\n", + " alertas_totales += 1\n", + "\n", + " # --- 5. Códigos Legacy Universales (El detector de 9999s) ---\n", + " # Convierte el número a entero (para ignorar decimales) y busca si empieza con tres o más nueves\n", + " if max_val >= 999 and re.match(r'^9{3,}', str(int(max_val))):\n", + " logger.warning(f\" 🤖 [CÓDIGO SISTEMA LEGACY] '{col}': Máximo ({max_val}) parece un NaN codificado por sistemas antiguos (999...).\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_num)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 2. Variables Categóricas (Ruido y Máscaras Regex - Intactas/Genéricas)\n", + " # ==========================================\n", + " cat_cols = df_analisis.select_dtypes(include=['object', 'category', 'string']).columns\n", + " if len(cat_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 🔠 2. Variables Categóricas (Ruido y Máscaras Regex)\"))\n", + " else:\n", + " logger.info(\"\\n### 🔠 2. Variables Categóricas (Ruido y Máscaras Regex)\")\n", + " \n", + " stats_cat = df_analisis[cat_cols].describe().T\n", + " stats_cat = inyectar_moda_y_ordenar(stats_cat, cat_cols, df_analisis)\n", + " diccionario_resultados['Categoricas'] = stats_cat\n", + "\n", + " patron_mascara = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " for col in stats_cat.index:\n", + " unicos = stats_cat.loc[col, 'unique']\n", + "\n", + " if unicos > (total_filas * 0.9):\n", + " logger.warning(f\" 🌪️ [RUIDO ABSOLUTO] '{col}': {unicos} valores únicos. Actúa como un ID basura.\")\n", + " alertas_totales += 1\n", + "\n", + " valores_distintos = df_analisis[col].dropna().astype(str).unique()\n", + " mascaras_encontradas = [val for val in valores_distintos if patron_mascara.match(val.strip())]\n", + "\n", + " if mascaras_encontradas:\n", + " ejemplos = \", \".join(f\"'{m}'\" for m in mascaras_encontradas[:3])\n", + " logger.warning(f\" 🎭 [MÁSCARA DETECTADA] '{col}': Contiene nulos camuflados ({ejemplos}).\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_cat)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 3. Variables Booleanas (Desbalance - Intactas/Genéricas)\n", + " # ==========================================\n", + " bool_cols = df_analisis.select_dtypes(include=['bool', 'boolean']).columns\n", + " if len(bool_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### ⚖️ 3. Variables Booleanas (Desbalance Extremo)\"))\n", + " else:\n", + " logger.info(\"\\n### ⚖️ 3. Variables Booleanas (Desbalance Extremo)\")\n", + " \n", + " # Los booleanos modernos (boolean) de pandas necesitan un casteo temporal a string para describe()\n", + " stats_bool = df_analisis[bool_cols].astype(str).describe().T\n", + " stats_bool = inyectar_moda_y_ordenar(stats_bool, bool_cols, df_analisis)\n", + " diccionario_resultados['Booleanas'] = stats_bool\n", + "\n", + " for col in stats_bool.index:\n", + " porcentaje_top = stats_bool.loc[col, '% Moda']\n", + " if porcentaje_top > 99.0:\n", + " logger.warning(f\" 🧊 [VARIANZA CONGELADA] '{col}': El {porcentaje_top:.1f}% es '{stats_bool.loc[col, 'top']}'. Inútil.\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_bool)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 4. Variables de Fecha (Viajes en el Tiempo)\n", + " # ==========================================\n", + " date_cols = df_analisis.select_dtypes(include=['datetime', 'datetimetz']).columns\n", + " if len(date_cols) > 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📅 4. Variables de Fecha (Viajes en el Tiempo)\"))\n", + " else:\n", + " logger.info(\"\\n### 📅 4. Variables de Fecha (Viajes en el Tiempo)\")\n", + "\n", + " # 🔧 FIX APLICADO: Eliminado datetime_is_numeric=True para compatibilidad con Pandas >= 2.0\n", + " stats_date = df_analisis[date_cols].describe().T\n", + " stats_date = inyectar_moda_y_ordenar(stats_date, date_cols, df_analisis)\n", + " diccionario_resultados['Fechas'] = stats_date\n", + "\n", + " fecha_actual = pd.Timestamp.now()\n", + " fecha_pivote_antigua = pd.Timestamp('1900-01-01')\n", + "\n", + " for col in stats_date.index:\n", + " min_date, max_date = stats_date.loc[col, 'min'], stats_date.loc[col, 'max']\n", + "\n", + " if max_date > fecha_actual:\n", + " logger.warning(f\" 🚀 [VIAJE AL FUTURO] '{col}': Fecha máxima ({max_date.date()}) es mayor a hoy.\")\n", + " alertas_totales += 1\n", + "\n", + " if min_date <= fecha_pivote_antigua:\n", + " logger.warning(f\" 🦖 [FECHA FÓSIL] '{col}': Fecha mínima ({min_date.date()}). Sospecha de error.\")\n", + " alertas_totales += 1\n", + "\n", + " mostrar_tabla_con_gradiente(stats_date)\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # ==========================================\n", + " # 5. Reporte Ejecutivo\n", + " # ==========================================\n", + " if alertas_totales == 0:\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### ✅ [DOMINIO COMPLETAMENTE LIMPIO] Ninguna anomalía de distribución detectada.\"))\n", + " else:\n", + " logger.info(\"\\n### ✅ [DOMINIO COMPLETAMENTE LIMPIO] Ninguna anomalía de distribución detectada.\")\n", + " else:\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🛑 Total de Anomalías Inter-Dominio Detectadas: **{alertas_totales}**\"))\n", + " else:\n", + " logger.warning(f\"\\n### 🛑 Total de Anomalías Inter-Dominio Detectadas: {alertas_totales}\")\n", + " logger.info(\"💡 Acción: Utiliza esta información para el Paso 8 (Desenmascarar Nulos) y el Paso 12 (Outliers).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Auditoría Integral completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return diccionario_resultados\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta las fases previas.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Ejecutar la sonda multiespectral agnóstica extrayendo los datos del manager\n", + " dicc_describe = auditar_logica_dominio_integral(X=manager.X_train, y=manager.y_train)\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar los resultados en el manager\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('diccionario_auditoria_dominio', dicc_describe)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['diccionario_auditoria_dominio'] = dicc_describe\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Resultados de la auditoría de dominio guardados en el PipelineManager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Validación Integral: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔗 Conectando MLOps: Heredando Clase Favorable '>50k' desde el Diagnóstico <<<\n", + "=== ⚖️ FASE 4.3: Auditoría de Atributos Protegidos (Línea Base de Sesgo) ===\n", + " 🛡️ Atributos Protegidos detectados automáticamente: ['age', 'workclass', 'education_num', 'marital_status', 'race', 'sex', 'native_country']\n", + " 🔒 ESTATUS: Aislados lógicamente. NO SERÁN ELIMINADOS de la matriz.\n", + "\n", + " 🎯 Clase Favorable inyectada por MLOps: '>50k'\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `age`\n", + " 🧠 [AutoML] Transformando variable continua 'age' en rangos demográficos para medir el sesgo de forma justa...\n", + " 👑 Grupo Históricamente Privilegiado: '(37.0, 47.0]' (Tasa base: 36.2%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(47.0, 90.0]': DIR = 0.94 (34.2%) | 🚨 [ALERTA] '(16.999, 28.0]': DIR = 0.11 (4.1%)\n", + " 🚨 [ALERTA] '(28.0, 37.0]': DIR = 0.68 (24.6%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'age' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `workclass`\n", + " 👑 Grupo Históricamente Privilegiado: 'self-emp-inc' (Tasa base: 54.8%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] 'federal-gov': DIR = 0.69 (37.8%) | 🚨 [ALERTA] 'private': DIR = 0.40 (21.9%)\n", + " 🚨 [ALERTA] 'local-gov': DIR = 0.55 (30.1%) | 🚨 [ALERTA] '?': DIR = 0.20 (10.8%)\n", + " 🚨 [ALERTA] 'self-emp-not-inc': DIR = 0.53 (28.9%) | ✅ [JUSTO] 'never-worked': DIR = nan (nan%)\n", + " 🚨 [ALERTA] 'state-gov': DIR = 0.48 (26.6%) | ✅ [JUSTO] 'without-pay': DIR = nan (nan%)\n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'workclass' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `education_num`\n", + " 🧠 [AutoML] Transformando variable continua 'education_num' en rangos demográficos para medir el sesgo de forma justa...\n", + " 👑 Grupo Históricamente Privilegiado: '(12.0, 16.0]' (Tasa base: 48.5%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] '(10.0, 12.0]': DIR = 0.53 (25.5%) | 🚨 [ALERTA] '(0.999, 9.0]': DIR = 0.27 (12.9%)\n", + " 🚨 [ALERTA] '(9.0, 10.0]': DIR = 0.40 (19.3%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'education_num' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `marital_status`\n", + " 👑 Grupo Históricamente Privilegiado: 'married-civ-spouse' (Tasa base: 44.8%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] 'divorced': DIR = 0.23 (10.3%) | 🚨 [ALERTA] 'separated': DIR = 0.15 (6.5%)\n", + " 🚨 [ALERTA] 'widowed': DIR = 0.20 (8.9%) | 🚨 [ALERTA] 'never-married': DIR = 0.10 (4.6%)\n", + " 🚨 [ALERTA] 'married-spouse-absent': DIR = 0.17 (7.6%) | ✅ [JUSTO] 'married-af-spouse': DIR = nan (nan%)\n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'marital_status' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `race`\n", + " 👑 Grupo Históricamente Privilegiado: 'asian-pac-islander' (Tasa base: 27.2%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] 'white': DIR = 0.94 (25.6%) | ✅ [JUSTO] 'amer-indian-eskimo': DIR = nan (nan%)\n", + " 🚨 [ALERTA] 'black': DIR = 0.45 (12.2%) | ✅ [JUSTO] 'other': DIR = nan (nan%)\n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'race' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `sex`\n", + " 👑 Grupo Históricamente Privilegiado: 'male' (Tasa base: 30.6%)\n", + " =====================================================================================\n", + " 🚨 [ALERTA] 'female': DIR = 0.36 (10.9%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'sex' para neutralizar el sesgo.\n", + "\n", + "\n", + "\n", + "### 🔍 Analizando Sesgo Sociodemográfico en: `native_country`\n", + " 👑 Grupo Históricamente Privilegiado: 'united-states' (Tasa base: 24.6%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '?': DIR = 0.98 (24.1%) | ✅ [JUSTO] 'england': DIR = nan (nan%)\n", + " 🚨 [ALERTA] 'mexico': DIR = 0.20 (4.9%) | ✅ [JUSTO] 'france': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'cambodia': DIR = nan (nan%) | ✅ [JUSTO] 'germany': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'canada': DIR = nan (nan%) | ✅ [JUSTO] 'greece': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'china': DIR = nan (nan%) | ✅ [JUSTO] 'guatemala': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'columbia': DIR = nan (nan%) | ✅ [JUSTO] 'haiti': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'cuba': DIR = nan (nan%) | ✅ [JUSTO] 'holand-netherlands': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'dominican-republic': DIR = nan (nan%) | ✅ [JUSTO] 'honduras': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'ecuador': DIR = nan (nan%) | ✅ [JUSTO] 'hong': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'el-salvador': DIR = nan (nan%) | ✅ [JUSTO] 'hungary': DIR = nan (nan%)\n", + " -------------------------------------------------------------------------------------\n", + " ✅ [JUSTO] 'india': DIR = nan (nan%) | ✅ [JUSTO] 'philippines': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'iran': DIR = nan (nan%) | ✅ [JUSTO] 'poland': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'ireland': DIR = nan (nan%) | ✅ [JUSTO] 'portugal': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'italy': DIR = nan (nan%) | ✅ [JUSTO] 'puerto-rico': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'jamaica': DIR = nan (nan%) | ✅ [JUSTO] 'scotland': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'japan': DIR = nan (nan%) | ✅ [JUSTO] 'south': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'laos': DIR = nan (nan%) | ✅ [JUSTO] 'taiwan': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'nicaragua': DIR = nan (nan%) | ✅ [JUSTO] 'thailand': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'outlying-us(guam-usvi-etc)': DIR = nan (nan%) | ✅ [JUSTO] 'trinadad&tobago': DIR = nan (nan%)\n", + " ✅ [JUSTO] 'peru': DIR = nan (nan%) | ✅ [JUSTO] 'vietnam': DIR = nan (nan%)\n", + " -------------------------------------------------------------------------------------\n", + " ✅ [JUSTO] 'yugoslavia': DIR = nan (nan%) | \n", + " =====================================================================================\n", + " 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre 'native_country' para neutralizar el sesgo.\n", + "\n", + "\n", + "⏱️ Auditoría de Atributos Protegidos completada en 0.178s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def auditar_sesgo_historico(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " clase_favorable=None, \n", + " columnas_sensibles=None\n", + "):\n", + " \"\"\"\n", + " [FASE 2 - Paso 4.3] Motor AutoML de Justicia Algorítmica (Fairness).\n", + " - Escáner Legal Contextual: Detecta atributos protegidos usando delimitadores de bases de datos.\n", + " - Soporte Datetime (NUEVO): Detecta fechas de nacimiento y extrae el año automáticamente.\n", + " - Discretización Inteligente: Convierte variables continuas (como edad/año) en rangos generacionales.\n", + " - Calcula la Tasa de Aprobación Base por grupo sociodemográfico.\n", + " - Aplica la regla legal del 80% (Disparate Impact Ratio).\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices X_train o y_train están vacías.\")\n", + " raise ValueError(\"Las matrices X_train o y_train están vacías.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 4.3: Auditoría de Atributos Protegidos (Línea Base de Sesgo) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Ensamblaje temporal para análisis\n", + " df_analisis = X.copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_analisis[target_name] = y\n", + "\n", + " # ==========================================\n", + " # 🚀 2. Detección Inteligente de Atributos Protegidos (Bilingüe + Contextual)\n", + " # ==========================================\n", + " if not columnas_sensibles:\n", + " def construir_patron(palabra):\n", + " return fr'(^{palabra}$|^{palabra}_|_{palabra}$|_{palabra}_|[a-z]{palabra.capitalize()})'\n", + "\n", + " # 📚 DICCIONARIO LEGAL EXHAUSTIVO (GDPR, EEOC, Leyes Latam)\n", + " terminos_legales = [\n", + " # 1. EDAD Y NACIMIENTO (Age & Birth)\n", + " 'age', 'edad', 'dob', 'dateofbirth', 'birth', 'birthdate', 'birthyear', 'nacimiento', \n", + " 'fechanacimiento', 'anonacimiento', 'year', 'año', 'ano', 'generation', 'generacion',\n", + " # 2. SEXO, GÉNERO Y ORIENTACIÓN (Sex, Gender & Orientation)\n", + " 'sex', 'sexo', 'gender', 'genero', 'female', 'femenino', 'male', 'masculino', \n", + " 'mujer', 'hombre', 'orientation', 'orientacion', 'sexuality', 'sexualidad', \n", + " 'sexualorientation', 'orientacionsexual', 'lgbt', 'lgbtq', 'trans', 'transgender', \n", + " 'transgenero', 'nonbinary', 'nobinario', 'intersex', 'intersexual',\n", + " # 3. RAZA, ETNIA Y ORIGEN (Race, Ethnicity & Origins)\n", + " 'race', 'raza', 'ethnic', 'etnia', 'ethnicity', 'ethniccode', 'codigoetnico',\n", + " 'color', 'origin', 'origen', 'ancestry', 'ascendencia', 'minority', 'minoria', \n", + " 'indigenous', 'indigena', 'tribe', 'tribu', 'hispanic', 'hispano', 'latino', \n", + " 'afro', 'afroamerican', 'black', 'negro', 'white', 'blanco', 'asian', 'asiatico', \n", + " 'caucasian', 'caucasico',\n", + " # 4. RELIGIÓN Y CREENCIAS (Religion & Beliefs)\n", + " 'religion', 'belief', 'creencia', 'faith', 'fe', 'creed', 'credo', 'worship', 'culto',\n", + " 'muslim', 'musulman', 'jewish', 'judio', 'christian', 'cristiano', 'catholic', \n", + " 'catolico', 'islam', 'judaismo', 'cristianismo',\n", + " # 5. NACIONALIDAD E INMIGRACIÓN (Nationality & Immigration)\n", + " 'national', 'nacional', 'nationality', 'nacionalidad', 'nation', 'nacion', \n", + " 'country', 'pais', 'citizen', 'ciudadano', 'citizenship', 'ciudadania', \n", + " 'immigrant', 'inmigrante', 'immigration', 'inmigracion', 'migrant', 'migrante', \n", + " 'refugee', 'refugiado', 'asylum', 'asilo', 'alien', 'extranjero', 'native', 'nativo',\n", + " # 6. SALUD, DISCAPACIDAD Y GENÉTICA (Health, Disability & Genetics)\n", + " 'health', 'salud', 'medical', 'medico', 'disability', 'discapacidad', 'handicap', \n", + " 'minusvalia', 'disabled', 'discapacitado', 'disease', 'enfermedad', 'illness', \n", + " 'condition', 'condicion', 'genetic', 'genetico', 'pregnant', 'embarazada', \n", + " 'pregnancy', 'embarazo', 'maternity', 'maternidad', 'paternity', 'paternidad',\n", + " # 7. ESTADO CIVIL Y FAMILIA (Marital Status & Family)\n", + " 'marital', 'conyugal', 'maritalstatus', 'estadocivil', 'civilstatus', 'civil', \n", + " 'marriage', 'matrimonio', 'wedding', 'spouse', 'esposo', 'esposa', 'conyuge', \n", + " 'widow', 'viudo', 'viuda', 'divorced', 'divorciado', 'single', 'soltero', \n", + " 'family', 'familia', 'children', 'hijos', 'dependent', 'dependents', \n", + " 'dependiente', 'dependientes',\n", + " # 8. SOCIOECONÓMICO Y EDUCACIÓN (Socioeconomic & Education)\n", + " 'income', 'ingreso', 'ingresos', 'salary', 'salario', 'wage', 'sueldo', 'wealth', \n", + " 'riqueza', 'poverty', 'pobreza', 'class', 'clase', 'estrato', 'socioeconomic', \n", + " 'socioeconomico', 'education', 'educacion', 'degree', 'grado', 'school', 'escuela', \n", + " 'university', 'universidad', 'illiterate', 'analfabeto',\n", + " # 9. SISTEMA PENAL Y CUSTODIA (Legal & Custody Status)\n", + " 'legalstatus', 'estadolegal', 'custodystatus', 'estadocustodia', 'custody', 'custodia', \n", + " 'felon', 'felony', 'conviction', 'condena', 'antecedente', 'parole', 'probation',\n", + " # 10. IDIOMA Y POLÍTICA (Language, Politics & Unions)\n", + " 'language', 'idioma', 'lenguaje', 'tongue', 'lengua', 'dialect', 'dialecto',\n", + " 'politics', 'politica', 'political', 'politico', 'union', 'tradeunion', 'sindicato', 'gremio'\n", + " ]\n", + "\n", + " patrones_completos = [construir_patron(t) for t in terminos_legales]\n", + " patron_sensible = re.compile('|'.join(patrones_completos), re.IGNORECASE)\n", + "\n", + " columnas_sensibles = [col for col in X.columns if patron_sensible.search(col)]\n", + "\n", + " if not columnas_sensibles:\n", + " logger.info(\" ✅ [INFO] No se detectaron columnas sociodemográficas protegidas en la matriz.\")\n", + " return None\n", + "\n", + " logger.info(f\" 🛡️ Atributos Protegidos detectados automáticamente: {columnas_sensibles}\")\n", + " logger.info(\" 🔒 ESTATUS: Aislados lógicamente. NO SERÁN ELIMINADOS de la matriz.\\n\")\n", + "\n", + " # 3. Detección de la Clase Favorable\n", + " if clase_favorable is None:\n", + " conteo_clases = y.value_counts(normalize=True)\n", + " clase_favorable = conteo_clases.index[-1] \n", + " logger.info(f\" 🎯 Clase Favorable auto-detectada: '{clase_favorable}' (Representa el {conteo_clases.iloc[-1]*100:.1f}%)\")\n", + " else:\n", + " logger.info(f\" 🎯 Clase Favorable inyectada por MLOps: '{clase_favorable}'\")\n", + "\n", + " df_analisis['target_binario_fairness'] = (df_analisis[target_name] == clase_favorable).astype(int)\n", + " \n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\")\n", + "\n", + " # ==========================================\n", + " # 🧠 4. Motor de Medición de Disparidad (DIR) con Auto-Binning\n", + " # ==========================================\n", + " for col in columnas_sensibles:\n", + " col_analisis = col\n", + "\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🔍 Analizando Sesgo Sociodemográfico en: `{col}`\"))\n", + " logger.debug(f\"Renderizando análisis de sesgo visual para '{col}'\")\n", + " else:\n", + " logger.info(f\"\\n### 🔍 Analizando Sesgo Sociodemográfico en: `{col}`\")\n", + "\n", + " # 🚀 FIX MLOps: Interceptor de Fechas (Datetime)\n", + " if pd.api.types.is_datetime64_any_dtype(df_analisis[col]):\n", + " logger.info(f\" 🧠 [AutoML] Fecha detectada en '{col}'. Extrayendo el Año para análisis generacional...\")\n", + " col_analisis = f\"{col}_year\"\n", + " df_analisis[col_analisis] = df_analisis[col].dt.year\n", + "\n", + " # 🚀 LA MAGIA: Si es un número continuo (edad o año extraído), lo agrupamos en rangos (cuartiles)\n", + " if pd.api.types.is_numeric_dtype(df_analisis[col_analisis]) and df_analisis[col_analisis].nunique() > 10:\n", + " logger.info(f\" 🧠 [AutoML] Transformando variable continua '{col_analisis}' en rangos demográficos para medir el sesgo de forma justa...\")\n", + " col_agrupada = f\"{col_analisis}_rangos\"\n", + " df_analisis[col_agrupada] = pd.qcut(df_analisis[col_analisis], q=4, duplicates='drop').astype(str)\n", + " col_analisis = col_agrupada\n", + "\n", + " conteo_val = df_analisis[col_analisis].value_counts(normalize=True)\n", + " # Ignoramos categorías con menos del 1% para no alertar sobre valores atípicos irrelevantes\n", + " categorias_validas = conteo_val[conteo_val > 0.01].index \n", + " df_filtrado = df_analisis[df_analisis[col_analisis].isin(categorias_validas)]\n", + "\n", + " tabla_tasas = df_filtrado.groupby(col_analisis)['target_binario_fairness'].agg(['mean', 'count']).reset_index()\n", + " tabla_tasas.rename(columns={'mean': 'Tasa_Exito', 'count': 'Muestra_Total'}, inplace=True)\n", + " tabla_tasas.sort_values(by='Tasa_Exito', ascending=False, inplace=True)\n", + "\n", + " if tabla_tasas.empty:\n", + " logger.warning(f\" ⚠️ No hay suficientes datos consistentes en '{col}' para graficar sesgos.\")\n", + " continue\n", + "\n", + " grupo_privilegiado = tabla_tasas.iloc[0][col_analisis]\n", + " tasa_maxima = tabla_tasas.iloc[0]['Tasa_Exito']\n", + "\n", + " # Evitamos división por cero si la tasa máxima es 0\n", + " if tasa_maxima == 0:\n", + " tabla_tasas['DIR (Impacto Dispar)'] = 1.0\n", + " else:\n", + " tabla_tasas['DIR (Impacto Dispar)'] = tabla_tasas['Tasa_Exito'] / tasa_maxima\n", + "\n", + " # Visualización\n", + " if MODO_VISUAL:\n", + " plt.figure(figsize=(10, 4))\n", + " ax = sns.barplot(data=tabla_tasas, x=col_analisis, y='Tasa_Exito', palette='coolwarm')\n", + " plt.axhline(tasa_maxima * 0.8, color='red', linestyle='--', label='Límite Legal MLOps (Regla 80%)')\n", + " plt.title(f\"Tasa de obtención de '{clase_favorable}' por {col}\", fontsize=14)\n", + " plt.ylabel(\"Probabilidad de Éxito\")\n", + " plt.ylim(0, max(0.5, tasa_maxima + 0.1))\n", + "\n", + " # Rotamos las etiquetas si son textos largos (rangos de edad)\n", + " plt.xticks(rotation=15) \n", + " plt.legend()\n", + " plt.show()\n", + "\n", + " # ==========================================\n", + " # Generación de Reporte y Alertas (DOBLE COLUMNA)\n", + " # ==========================================\n", + " logger.info(f\" 👑 Grupo Históricamente Privilegiado: '{grupo_privilegiado}' (Tasa base: {tasa_maxima*100:.1f}%)\")\n", + " logger.info(\" \" + \"=\"*85)\n", + "\n", + " alertas_sesgo = 0\n", + " mensajes = [] \n", + "\n", + " for _, row in tabla_tasas.iterrows():\n", + " grupo_actual = row[col_analisis]\n", + " dir_actual = row['DIR (Impacto Dispar)']\n", + "\n", + " if grupo_actual == grupo_privilegiado:\n", + " continue\n", + "\n", + " if dir_actual < 0.80:\n", + " mensajes.append(f\"🚨 [ALERTA] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + " alertas_sesgo += 1\n", + " else:\n", + " mensajes.append(f\"✅ [JUSTO] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + "\n", + " # Motor de Paginación a 2 Columnas exportado a Log\n", + " lote_size = 20\n", + " for i in range(0, len(mensajes), lote_size):\n", + " lote = mensajes[i:i + lote_size]\n", + " mitad = (len(lote) + 1) // 2 \n", + "\n", + " for j in range(mitad):\n", + " col1 = lote[j]\n", + " col2 = lote[j + mitad] if (j + mitad) < len(lote) else \"\"\n", + " logger.info(f\" {col1:<40} | {col2}\")\n", + "\n", + " if (i + lote_size) < len(mensajes):\n", + " logger.info(\" \" + \"-\"*85)\n", + "\n", + " logger.info(\" \" + \"=\"*85)\n", + " if alertas_sesgo > 0:\n", + " logger.warning(f\" 💡 ACCIÓN REQUERIDA (Fase 5): Implementar Reweighing sobre '{col}' para neutralizar el sesgo.\")\n", + " logger.info(\"\\n\")\n", + "\n", + " logger.info(f\"⏱️ Auditoría de Atributos Protegidos completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de datos\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Inyección Automática de la clase minoritaria descubierta en la Fase 4.1\n", + " clase_fav_dinamica = None\n", + " if hasattr(manager, 'rutas'):\n", + " clase_fav_dinamica = manager.rutas.get('clase_minoritaria', None)\n", + " \n", + " if clase_fav_dinamica:\n", + " logger.info(f\">>> 🔗 Conectando MLOps: Heredando Clase Favorable '{clase_fav_dinamica}' desde el Diagnóstico <<<\")\n", + " else:\n", + " logger.warning(\">>> ⚠️ Advertencia: No se encontró 'clase_minoritaria' en el Manager. El motor la auto-detectará. <<<\")\n", + "\n", + " # El escáner legal operará al 100% de forma autónoma con los datos del manager\n", + " auditar_sesgo_historico(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " clase_favorable=clase_fav_dinamica \n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Auditoría de Sesgo: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 👁️ FASE 5.1: Análisis Visual Geométrico (Numéricas vs Target) ===\n", + " ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada (26,029 filas).\n", + " ⚡ Protegiendo RAM: Submuestreando a 15,000 filas aleatorias solo para renderizado...\n", + " 📊 Procesando 5 variables numéricas...\n", + "\n", + " 📌 Variable 'age': Media <=50k: 36.7 | Media >50k: 44.2\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'education_num': Media <=50k: 9.6 | Media >50k: 11.6\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'capital_gain': Media <=50k: 151.3 | Media >50k: 4071.0\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'capital_loss': Media <=50k: 53.4 | Media >50k: 199.6\n", + "--------------------------------------------------------------------------------\n", + " 📌 Variable 'hours_per_week': Media <=50k: 38.8 | Media >50k: 45.5\n", + "--------------------------------------------------------------------------------\n", + "⏱️ Análisis Geométrico completado en 0.02s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import time\n", + "import warnings\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radiografia_visual_numericas(X: pd.DataFrame, y: pd.Series):\n", + " \"\"\"\n", + " [FASE 2 - Paso 5.1] Motor AutoML de Visualización Bivariada (Numéricas).\n", + " - Escudo RAM (NUEVO): Submuestrea datasets masivos a 15k filas solo para renderizado visual (evita colapsos en KDE).\n", + " - Genera un Dashboard 1x2 por cada variable numérica predictora.\n", + " - Izquierda: Distribución (Histograma + KDE) solapada por el Target.\n", + " - Derecha: Boxplot para análisis de Outliers y Medianas por clase.\n", + " - Ignora variables nulas o colapsadas automáticamente para evitar crashes.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices X_train o y_train están vacías.\")\n", + " raise ValueError(\"Las matrices X_train o y_train están vacías.\")\n", + "\n", + " logger.info(f\"=== 👁️ FASE 5.1: Análisis Visual Geométrico (Numéricas vs Target) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 🔧 FIX MLOps: Silenciadores de Consola\n", + " warnings.simplefilter(\"ignore\", category=FutureWarning)\n", + " warnings.filterwarnings(\"ignore\", message=\".*Glyph.*\") # 🤫 Apaga las alertas por emojis o símbolos especiales en los gráficos\n", + " warnings.filterwarnings(\"ignore\", module=\"IPython.core.pylabtools\") # 🤫 Blindaje extra para Jupyter\n", + "\n", + " # 1. Configuración de Alta Legibilidad (Seaborn)\n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\", context=\"notebook\")\n", + " paleta_target = \"Set2\" # Paleta amigable para daltonismo (Colorblind-friendly)\n", + "\n", + " # 2. Aislamiento y Ensamblaje Seguro\n", + " num_cols = X.select_dtypes(include=[np.number]).columns.tolist()\n", + " if not num_cols:\n", + " logger.warning(\" ⚠️ [INFO] No se detectaron variables numéricas para visualizar.\")\n", + " return\n", + "\n", + " df_viz = X[num_cols].copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_viz[target_name] = y\n", + "\n", + " total_filas = len(df_viz)\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO RAM: Submuestreo Visual (Big Data)\n", + " # ==========================================\n", + " MAX_PLOT_SAMPLES = 15000\n", + " if total_filas > MAX_PLOT_SAMPLES:\n", + " logger.warning(f\" ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada ({total_filas:,} filas).\")\n", + " logger.info(f\" ⚡ Protegiendo RAM: Submuestreando a {MAX_PLOT_SAMPLES:,} filas aleatorias solo para renderizado...\")\n", + " df_plot = df_viz.sample(n=MAX_PLOT_SAMPLES, random_state=42)\n", + " else:\n", + " df_plot = df_viz\n", + "\n", + " logger.info(f\" 📊 Procesando {len(num_cols)} variables numéricas...\\n\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Renderizado Iterativo\n", + " # ==========================================\n", + " for col in num_cols:\n", + " # A. Filtro AutoML de Seguridad: Omitir si la varianza es cero o tiene 100% nulos\n", + " if df_viz[col].nunique() <= 1:\n", + " logger.info(f\" ⏭️ Saltando '{col}': Varianza Cero detectada (Constante).\")\n", + " continue\n", + "\n", + " # C. Inyección de Información Estadística Textual Rápida (Para los Logs)\n", + " # 🔧 MANTENIDO: Aquí SÍ usamos df_viz (matriz completa) para que el cálculo matemático sea 100% real\n", + " media_clases = df_viz.groupby(target_name)[col].mean().to_dict()\n", + " texto_medias = \" | \".join([f\"Media {k}: {v:.1f}\" for k, v in media_clases.items()])\n", + " \n", + " logger.info(f\" 📌 Variable '{col}': {texto_medias}\")\n", + "\n", + " if MODO_VISUAL:\n", + " # B. Creación del Lienzo (Dashboard 1 fila x 2 columnas)\n", + " fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(16, 5))\n", + " fig.suptitle(f\"Radiografía de: {col}\", fontsize=16, fontweight='bold', y=1.05)\n", + "\n", + " # --- PANEL IZQUIERDO: Distribución (Hist + KDE) ---\n", + " # Usamos common_norm=False para que las montañas se escalen independientemente \n", + " # y podamos ver la forma de la clase minoritaria sin que la mayoritaria la aplaste.\n", + " # 🔧 FIX: Usamos df_plot (ligero) en vez de df_viz\n", + " sns.histplot(\n", + " data=df_plot, x=col, hue=target_name, \n", + " kde=True, element=\"step\", stat=\"density\", common_norm=False, \n", + " palette=paleta_target, alpha=0.4, ax=axes[0]\n", + " )\n", + " axes[0].set_title(f\"Distribución y Densidad (KDE)\", fontsize=13)\n", + " axes[0].set_ylabel(\"Densidad Probabilística\")\n", + " axes[0].set_xlabel(col)\n", + "\n", + " # --- PANEL DERECHO: Boxplot (Outliers y Medianas) ---\n", + " # 🔧 FIX: Usamos df_plot (ligero) en vez de df_viz\n", + " sns.boxplot(\n", + " data=df_plot, x=target_name, y=col, \n", + " palette=paleta_target, showmeans=True, \n", + " meanprops={\"marker\":\"o\", \"markerfacecolor\":\"white\", \"markeredgecolor\":\"black\", \"markersize\":\"8\"},\n", + " ax=axes[1]\n", + " )\n", + " axes[1].set_title(f\"Caja y Bigotes (Separación de Clases)\", fontsize=13)\n", + " axes[1].set_ylabel(col)\n", + " axes[1].set_xlabel(\"Target Class\")\n", + " \n", + " plt.figtext(0.5, -0.05, f\"Estadística Exacta (100% de datos) ➔ {texto_medias}\", ha=\"center\", fontsize=11, \n", + " bbox={\"facecolor\":\"orange\", \"alpha\":0.2, \"pad\":5})\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " logger.debug(f\"Renderizado visual del dashboard para '{col}' completado.\")\n", + " else:\n", + " logger.debug(f\"Renderizado visual omitido para '{col}' (MODO_VISUAL=False).\")\n", + " \n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 🔧 Restauramos las advertencias generales al finalizar\n", + " warnings.filterwarnings(\"default\", message=\".*Glyph.*\")\n", + "\n", + " logger.info(f\"⏱️ Análisis Geométrico completado en {time.time() - inicio_timer:.2f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Ejecutar el motor de visualización alimentándolo directamente desde el manager\n", + " radiografia_visual_numericas(X=manager.X_train, y=manager.y_train)\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la visualización: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🔠 FASE 5.2: Análisis Visual (Categóricas vs Target) ===\n", + " ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada (26,029 filas).\n", + " ⚡ Protegiendo RAM: Extrayendo muestra de 15,000 filas para gráficos de volumen...\n", + " 📊 Procesando Dashboards para 7 variables categóricas...\n", + "\n", + " 📌 Top 5 Tasas de Éxito en 'workclass': self-emp-inc: 54.8% | federal-gov: 37.8% | local-gov: 30.1% | self-emp-not-inc: 28.9% | state-gov: 26.6%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'marital_status': married-civ-spouse: 44.8% | married-af-spouse: 42.1% | divorced: 10.3% | widowed: 8.9% | married-spouse-absent: 7.6%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'occupation': exec-managerial: 48.2% | prof-specialty: 45.7% | sales: 26.7% | craft-repair: 22.6% | transport-moving: 19.9%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'relationship': wife: 47.4% | husband: 45.0% | not-in-family: 10.4% | unmarried: 5.9% | other-relative: 3.5%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'race': asian-pac-islander: 27.2% | white: 25.6% | black: 12.2% | amer-indian-eskimo: 11.2% | other: 9.6%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'sex': male: 30.6% | female: 10.9%\n", + "----------------------------------------------------------------------------------------------------\n", + " 📌 Top 5 Tasas de Éxito en 'native_country': india: 43.4% | canada: 33.3% | philippines: 33.3% | germany: 30.4% | united-states: 24.6%\n", + "----------------------------------------------------------------------------------------------------\n", + "⏱️ Análisis Categórico completado en 0.10s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import warnings\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radiografia_visual_categoricas(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " clase_favorable=None,\n", + " max_cats_visual=12 # Límite inteligente para no saturar la pantalla\n", + "):\n", + " \"\"\"\n", + " [FASE 2 - Paso 5.2] Motor AutoML de Visualización (Categóricas).\n", + " - Escudo RAM (NUEVO): Submuestrea datasets masivos a 15k filas solo para el Countplot visual.\n", + " - Izquierda: Frecuencia Absoluta (Volumen total segmentado por Target).\n", + " - Derecha: Target Rate (Probabilidad de éxito), ordenado de mayor a menor (Usa 100% de los datos).\n", + " - IA Visual: Agrupa colas largas (alta cardinalidad) en 'OTROS' para mantener legibilidad.\n", + " - Resiliencia: Convierte NaNs explícitamente a texto para hacerlos visibles.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices están vacías.\")\n", + " raise ValueError(\"Las matrices están vacías.\")\n", + "\n", + " logger.info(f\"=== 🔠 FASE 5.2: Análisis Visual (Categóricas vs Target) ===\")\n", + " inicio_timer = time.time()\n", + " warnings.simplefilter(\"ignore\")\n", + " \n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"whitegrid\", context=\"notebook\")\n", + " paleta_target = \"Set2\"\n", + "\n", + " # 1. Aislar variables categóricas (Texto, Categorías y Booleanos)\n", + " cat_cols = X.select_dtypes(include=['object', 'category', 'string', 'bool']).columns.tolist()\n", + " if not cat_cols:\n", + " logger.warning(\" ⚠️ [INFO] No se detectaron variables categóricas para visualizar.\")\n", + " return\n", + "\n", + " # Ensamblaje Seguro\n", + " df_viz = X[cat_cols].copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_viz[target_name] = y\n", + "\n", + " # 2. Determinar la Clase Favorable (para calcular probabilidades)\n", + " if clase_favorable is None:\n", + " clase_favorable = y.value_counts().index[-1]\n", + " df_viz['target_binario'] = (df_viz[target_name] == clase_favorable).astype(int)\n", + "\n", + " total_filas = len(df_viz)\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO RAM: Muestreo Único de Alta Velocidad\n", + " # ==========================================\n", + " MAX_PLOT_SAMPLES = 15000\n", + " if total_filas > MAX_PLOT_SAMPLES:\n", + " logger.warning(f\" ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada ({total_filas:,} filas).\")\n", + " logger.info(f\" ⚡ Protegiendo RAM: Extrayendo muestra de {MAX_PLOT_SAMPLES:,} filas para gráficos de volumen...\")\n", + " # Guardamos solo los índices para aplicar el filtro rápidamente dentro del bucle\n", + " indices_muestra = df_viz.sample(n=MAX_PLOT_SAMPLES, random_state=42).index\n", + " nota_muestreo = \" (Muestra 15k)\"\n", + " else:\n", + " indices_muestra = df_viz.index\n", + " nota_muestreo = \"\"\n", + "\n", + " logger.info(f\" 📊 Procesando Dashboards para {len(cat_cols)} variables categóricas...\\n\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Renderizado Iterativo\n", + " # ==========================================\n", + " for col in cat_cols:\n", + " # A. Tratamiento de Nulos y Tipos para visualización segura\n", + " df_viz[col] = df_viz[col].astype(str).replace('nan', 'MISSING_NaN')\n", + "\n", + " # B. Filtro AutoML de Alta Cardinalidad (Protección visual)\n", + " unicos = df_viz[col].nunique()\n", + " if unicos == 1:\n", + " logger.info(f\" ⏭️ Saltando '{col}': Constante absoluta.\")\n", + " continue\n", + "\n", + " if unicos > max_cats_visual:\n", + " # Mantener el Top N y agrupar el resto en 'OTROS_AGRUPADOS'\n", + " top_categorias = df_viz[col].value_counts().nlargest(max_cats_visual - 1).index\n", + " df_viz[f\"{col}_viz\"] = df_viz[col].where(df_viz[col].isin(top_categorias), 'OTROS_AGRUPADOS')\n", + " col_plot = f\"{col}_viz\"\n", + " else:\n", + " col_plot = col\n", + "\n", + " # --- CÁLCULO DE TARGET RATE (Probabilidad de Éxito) ---\n", + " # 🔧 MANTENIDO: Calculamos la media usando el 100% de los datos (df_viz) porque groupby es ultra-rápido\n", + " tasa_exito = df_viz.groupby(col_plot)['target_binario'].mean().sort_values(ascending=False).reset_index()\n", + "\n", + " # 🚀 FIX MLOps: Inyectamos el Top 5 al archivo de log para telemetría Headless\n", + " texto_tasas = \" | \".join([f\"{row[col_plot]}: {row['target_binario']:.1%}\" for _, row in tasa_exito.head(5).iterrows()])\n", + " logger.info(f\" 📌 Top 5 Tasas de Éxito en '{col}': {texto_tasas}\")\n", + "\n", + " # C. Creación del Lienzo\n", + " if MODO_VISUAL:\n", + " fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(16, 6))\n", + " fig.suptitle(f\"Radiografía de: {col} (Clase Éxito: '{clase_favorable}')\", fontsize=16, fontweight='bold', y=1.05)\n", + "\n", + " # --- PANEL IZQUIERDO: Volumen Absoluto (Countplot) ---\n", + " # 🔧 FIX: Usamos el dataframe filtrado por el escudo de RAM\n", + " df_plot = df_viz.loc[indices_muestra]\n", + " orden_volumen = df_plot[col_plot].value_counts().index\n", + "\n", + " sns.countplot(\n", + " data=df_plot, x=col_plot, hue=target_name, \n", + " order=orden_volumen, palette=paleta_target, ax=axes[0], alpha=0.9\n", + " )\n", + " axes[0].set_title(f\"Volumen de Filas por Categoría{nota_muestreo}\", fontsize=13)\n", + " axes[0].set_ylabel(\"Frecuencia (Cantidad)\")\n", + " axes[0].set_xlabel(\"\")\n", + " axes[0].tick_params(axis='x', rotation=45)\n", + "\n", + " # --- PANEL DERECHO: Target Rate (Visualización) ---\n", + " sns.barplot(\n", + " data=tasa_exito, x=col_plot, y='target_binario', \n", + " palette=\"viridis\", ax=axes[1], edgecolor=\"black\"\n", + " )\n", + " axes[1].set_title(f\"Probabilidad de ser '{clase_favorable}' (100% Datos)\", fontsize=13)\n", + " axes[1].set_ylabel(\"Tasa de Éxito (0.0 a 1.0)\")\n", + " axes[1].set_xlabel(\"\")\n", + " axes[1].tick_params(axis='x', rotation=45)\n", + "\n", + " # Inyectar porcentajes sobre las barras\n", + " for p in axes[1].patches:\n", + " axes[1].annotate(f\"{p.get_height():.1%}\", \n", + " (p.get_x() + p.get_width() / 2., p.get_height()), \n", + " ha='center', va='bottom', fontsize=10, color='black', \n", + " xytext=(0, 4), textcoords='offset points')\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " logger.debug(f\"Renderizado visual del dashboard categórico para '{col}' completado.\")\n", + " else:\n", + " logger.debug(f\"Renderizado visual omitido para '{col}' (MODO_VISUAL=False).\")\n", + " \n", + " logger.info(\"-\" * 100)\n", + "\n", + " # Limpieza de basura temporal\n", + " cols_a_limpiar = [c for c in df_viz.columns if c.endswith('_viz') or c == 'target_binario']\n", + " if cols_a_limpiar: df_viz.drop(columns=cols_a_limpiar, inplace=True)\n", + "\n", + " logger.info(f\"⏱️ Análisis Categórico completado en {time.time() - inicio_timer:.2f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Extracción Automática de la clase minoritaria desde la memoria del Manager (rutas)\n", + " clase_fav_dinamica = None\n", + " if hasattr(manager, 'rutas'):\n", + " clase_fav_dinamica = manager.rutas.get('clase_minoritaria', None)\n", + "\n", + " # Ejecutar el motor de visualización alimentándolo desde el manager\n", + " radiografia_visual_categoricas(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " clase_favorable=clase_fav_dinamica, # Se usa la detectada en el Paso 4.1\n", + " max_cats_visual=10 # Si una variable tiene 40 países, mostrará los 9 top y 1 \"Otros\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la visualización categórica: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🌌 FASE 5.3: Dispersión Cruzada Bivariada (Pairplot) ===\n", + " ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada (26,029 filas).\n", + " ⚡ Protegiendo RAM: Muestreando 2,500 filas estratificadas para renderizado fluido...\n", + " 📊 Generando Matriz de Interacción para: ['age', 'education_num', 'capital_gain', 'capital_loss', 'hours_per_week']\n", + "\n", + "⏱️ Matriz procesada en 0.01s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radiografia_dispersion_cruzada(\n", + " X: pd.DataFrame, \n", + " y: pd.Series, \n", + " max_cols=5, \n", + " max_rows_visual=2500\n", + "):\n", + " \"\"\"\n", + " [FASE 2 - Paso 5.3] Matriz de Dispersión Cruzada AutoML (Pairplot).\n", + " - Escudo Dimensional: Filtra las columnas con mayor varianza si hay demasiadas (Evita O(N^2) gráficos).\n", + " - Escudo de RAM: Muestreo estratificado inteligente si el dataset es masivo (Evita colapso por overplotting).\n", + " - Muestra cómo interactúan las numéricas en 2D coloreadas por el Target.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices están vacías.\")\n", + " raise ValueError(\"Las matrices están vacías.\")\n", + "\n", + " logger.info(f\"=== 🌌 FASE 5.3: Dispersión Cruzada Bivariada (Pairplot) ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " import warnings\n", + " warnings.simplefilter(\"ignore\")\n", + " \n", + " if MODO_VISUAL:\n", + " sns.set_theme(style=\"white\", context=\"notebook\") # Fondo blanco para no saturar con mallas\n", + " paleta_target = \"Set2\"\n", + "\n", + " # 1. Extracción y Ensamblaje Seguro\n", + " num_cols = X.select_dtypes(include=[np.number]).columns.tolist()\n", + " if not num_cols:\n", + " logger.warning(\" ⚠️ [INFO] No hay variables numéricas para cruzar.\")\n", + " return\n", + "\n", + " df_viz = X[num_cols].copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_viz[target_name] = y\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO DIMENSIONAL (Protección de Columnas)\n", + " # ==========================================\n", + " if len(num_cols) > max_cols:\n", + " logger.warning(f\" ⚠️ [ALERTA DIMENSIONAL] {len(num_cols)} numéricas detectadas. El cruce generaría {len(num_cols)**2} gráficos.\")\n", + " logger.info(f\" 🛡️ Seleccionando el Top {max_cols} con mayor varianza para evitar caos visual...\")\n", + " # Ignoramos la varianza de los posibles IDs o ceros congelados, buscamos variables dinámicas\n", + " varianzas = df_viz[num_cols].var().sort_values(ascending=False)\n", + " mejores_cols = varianzas.head(max_cols).index.tolist()\n", + " df_viz = df_viz[mejores_cols + [target_name]]\n", + " else:\n", + " mejores_cols = num_cols\n", + "\n", + " # ==========================================\n", + " # 🚀 ESCUDO DE RAM (Protección de Filas)\n", + " # ==========================================\n", + " total_filas = len(df_viz)\n", + " if total_filas > max_rows_visual:\n", + " logger.warning(f\" ⚠️ [ALERTA DE RENDIMIENTO] Matriz masiva detectada ({total_filas:,} filas).\")\n", + " logger.info(f\" ⚡ Protegiendo RAM: Muestreando {max_rows_visual:,} filas estratificadas para renderizado fluido...\")\n", + "\n", + " # Fracción exacta para llegar a max_rows_visual\n", + " fraccion = max_rows_visual / total_filas\n", + "\n", + " try:\n", + " # Muestreo estratificado para no perder la proporción de la clase minoritaria\n", + " df_viz = df_viz.groupby(target_name, group_keys=False).apply(lambda x: x.sample(frac=fraccion, random_state=42))\n", + " except ValueError:\n", + " # Fallback de seguridad: Si hay una clase extremadamente pequeña que rompe la fracción, usamos random simple\n", + " df_viz = df_viz.sample(n=max_rows_visual, random_state=42)\n", + "\n", + " logger.info(f\" 📊 Generando Matriz de Interacción para: {mejores_cols}\\n\")\n", + "\n", + " # ==========================================\n", + " # 4. Motor de Renderizado Pairplot\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " # Usamos alpha para transparencia (overplotting) y s para el tamaño del punto\n", + " g = sns.pairplot(\n", + " df_viz, \n", + " hue=target_name, \n", + " palette=paleta_target, \n", + " diag_kind=\"kde\", # Montañas de densidad en la diagonal principal\n", + " corner=True, # Ocultar el triángulo superior (espejo redundante para ahorrar RAM)\n", + " plot_kws={'alpha': 0.6, 's': 20, 'edgecolor': None}\n", + " )\n", + "\n", + " g.fig.suptitle(f\"Matriz de Dispersión: ¿Cómo interactúan las variables para definir '{target_name}'?\", \n", + " y=1.02, fontsize=16, fontweight='bold')\n", + "\n", + " plt.show()\n", + " logger.debug(\"Matriz de dispersión renderizada en Jupyter con éxito.\")\n", + " else:\n", + " # Si no estamos en MODO_VISUAL, simplemente evitamos la costosa computación del PairGrid\n", + " logger.debug(\"Renderizado visual omitido (MODO_VISUAL=False). Lógica de selección ejecutada con éxito.\")\n", + " \n", + " logger.info(f\"⏱️ Matriz procesada en {time.time() - inicio_timer:.2f}s\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Ejecuta el escáner consumiendo los datos directamente del Manager.\n", + " radiografia_dispersion_cruzada(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " max_cols=5, \n", + " max_rows_visual=2500\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Pairplot: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 💥 FASE 6.1: Cacería de Colisiones Absolutas (Ruido Irreductible) ===\n", + " 🚨 Alerta de Contradicción: 1469 filas afectadas (5.64% del dataset).\n", + " 🧠 Significado: Estas 1469 filas forman perfiles idénticos pero con ingresos opuestos.\n", + " 📉 Límite Teórico: Debido a este ruido, tu modelo NUNCA podrá alcanzar el 100% de precisión.\n", + "\n", + " 🔍 TOP 5 Perfiles con mayor nivel de colisión:\n", + "\n", + "income <=50k >50k Total_Clones\n", + "Perfil_ID (Firma) \n", + "50 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 10 8 18\n", + "47 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 9 6 15\n", + "39 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 10 5 15\n", + "51 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 13 1 14\n", + "33 | private | 9 | married-civ-spouse | craft-repair | husband | white | male | 0 | 0 | 40 | united-states 12 2 14\n", + "----------------------------------------------------------------------------------------------------\n", + " 💡 ACCIÓN SUGERIDA (Fase 3):\n", + " En datasets tabulares, solemos DEJAR ESTAS FILAS INTACTAS. Los algoritmos como XGBoost \n", + " usarán la probabilidad (ej. si hay 8 pobres y 2 ricos en el grupo, predecirá 'pobre' con 80% de certeza).\n", + "\n", + "⏱️ Escáner de colisiones completado en 0.053s\n", + "\n", + "✅ Diagnóstico finalizado. Las matrices X e y del PipelineManager siguen intactas y balanceadas.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "from IPython.display import display, Markdown\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def cazar_colisiones_absolutas_seguro(X: pd.DataFrame, y: pd.Series):\n", + " \"\"\"\n", + " [FASE 2 - Paso 6.1] Motor AutoML de Colisiones (Error de Bayes) - V2 Optimizada.\n", + " - Busca filas donde TODAS las características (X) son idénticas, pero el Target es diferente.\n", + " - PARCHE DE RAM: Utiliza lógica de conjuntos (drop_duplicates + merge) en lugar de un \n", + " groupby multidimensional para evitar la explosión de memoria (Producto Cartesiano de Pandas).\n", + " - PARCHE PIPELINE: Devuelve la matriz original INTACTA para no perder datos.\n", + " \"\"\"\n", + " if X is None or y is None or X.empty or y.empty:\n", + " logger.error(\"🛑 Error Crítico: Las matrices X_train o y_train están vacías.\")\n", + " raise ValueError(\"Las matrices X_train o y_train están vacías.\")\n", + "\n", + " logger.info(f\"=== 💥 FASE 6.1: Cacería de Colisiones Absolutas (Ruido Irreductible) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Ensamblaje Seguro de la Matriz\n", + " df_analisis = X.copy()\n", + " target_name = y.name if y.name else 'Target'\n", + " df_analisis[target_name] = y\n", + " features = X.columns.tolist()\n", + " total_filas = len(df_analisis)\n", + "\n", + " # ==========================================\n", + " # 2. Lógica de Conjuntos (El Truco Anti-RAM)\n", + " # ==========================================\n", + " dups_x_mask = df_analisis.duplicated(subset=features, keep=False)\n", + " df_sospechosos = df_analisis[dups_x_mask]\n", + "\n", + " if df_sospechosos.empty:\n", + " logger.info(\" ✅ [MATRIZ PERFECTA] No hay clones de características. El Error de Bayes por colisión es 0%.\")\n", + " return X # Devolvemos la matriz intacta\n", + "\n", + " df_unicos_xy = df_sospechosos.drop_duplicates(subset=features + [target_name])\n", + "\n", + " colisiones_mask = df_unicos_xy.duplicated(subset=features, keep=False)\n", + " df_colisiones_unicas = df_unicos_xy[colisiones_mask]\n", + "\n", + " if df_colisiones_unicas.empty:\n", + " logger.info(\" ✅ [SIN CONTRADICCIONES] Hay filas duplicadas, pero todas coinciden en su Target. No hay colisiones absolutas.\")\n", + " return X # Devolvemos la matriz intacta\n", + "\n", + " claves_colision = df_colisiones_unicas[features].drop_duplicates()\n", + " df_colisiones_finales = pd.merge(df_analisis, claves_colision, on=features, how='inner')\n", + "\n", + " # ==========================================\n", + " # 3. Cálculo de Impacto\n", + " # ==========================================\n", + " filas_afectadas = len(df_colisiones_finales)\n", + " porcentaje_ruido = (filas_afectadas / total_filas) * 100\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo y Diagnóstico Seguro\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🚨 Alerta de Contradicción: **{filas_afectadas} filas** afectadas ({porcentaje_ruido:.2f}% del dataset).\"))\n", + " \n", + " # 🚀 FIX MLOps: Siempre documentar la alerta en el logger (incluso en MODO_VISUAL)\n", + " logger.warning(f\" 🚨 Alerta de Contradicción: {filas_afectadas} filas afectadas ({porcentaje_ruido:.2f}% del dataset).\")\n", + " \n", + " logger.info(f\" 🧠 Significado: Estas {filas_afectadas} filas forman perfiles idénticos pero con ingresos opuestos.\")\n", + " logger.info(f\" 📉 Límite Teórico: Debido a este ruido, tu modelo NUNCA podrá alcanzar el 100% de precisión.\\n\")\n", + "\n", + " logger.info(\" 🔍 TOP 5 Perfiles con mayor nivel de colisión:\")\n", + "\n", + " df_colisiones_finales['Perfil_ID (Firma)'] = df_colisiones_finales[features].astype(str).agg(' | '.join, axis=1)\n", + "\n", + " resumen = df_colisiones_finales.groupby('Perfil_ID (Firma)')[target_name].value_counts().unstack(fill_value=0)\n", + " resumen['Total_Clones'] = resumen.sum(axis=1)\n", + " resumen = resumen.sort_values(by='Total_Clones', ascending=False).head(5)\n", + "\n", + " if MODO_VISUAL:\n", + " display(resumen)\n", + " # Logueamos de forma silenciosa la tabla para el servidor\n", + " logger.debug(\"\\n\" + resumen.to_string())\n", + " else:\n", + " logger.info(\"\\n\" + resumen.to_string())\n", + "\n", + " logger.info(\"-\" * 100)\n", + " logger.info(\" 💡 ACCIÓN SUGERIDA (Fase 3):\")\n", + " logger.info(\" En datasets tabulares, solemos DEJAR ESTAS FILAS INTACTAS. Los algoritmos como XGBoost \")\n", + " logger.info(\" usarán la probabilidad (ej. si hay 8 pobres y 2 ricos en el grupo, predecirá 'pobre' con 80% de certeza).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Escáner de colisiones completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # ==========================================\n", + " # 🚀 CORRECCIÓN CRÍTICA: Devolver la matriz completa\n", + " # ==========================================\n", + " return X \n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Extracción segura de datos\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta las fases previas.\")\n", + "\n", + " # Ejecutar el análisis usando las matrices completas originales del Manager.\n", + " # NO guardamos el resultado en 'X_train' para evitar desincronizaciones de filas.\n", + " # El motor solo escanea y reporta.\n", + " _ = cazar_colisiones_absolutas_seguro(X=manager.X_train, y=manager.y_train)\n", + "\n", + " logger.info(\"\\n✅ Diagnóstico finalizado. Las matrices X e y del PipelineManager siguen intactas y balanceadas.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el escáner de colisiones: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 32537 non-null int8 \n", + " 1 workclass 32537 non-null category\n", + " 2 education_num 32537 non-null int8 \n", + " 3 marital_status 32537 non-null category\n", + " 4 occupation 32537 non-null category\n", + " 5 relationship 32537 non-null category\n", + " 6 race 32537 non-null category\n", + " 7 sex 32537 non-null category\n", + " 8 capital_gain 32537 non-null int32 \n", + " 9 capital_loss 32537 non-null int16 \n", + " 10 hours_per_week 32537 non-null int8 \n", + " 11 native_country 32537 non-null category\n", + "dtypes: category(7), int16(1), int32(1), int8(3)\n", + "memory usage: 511.8 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 32537 entries, 0 to 32536\n", + "Series name: income\n", + "Non-Null Count Dtype \n", + "-------------- ----- \n", + "32537 non-null category\n", + "dtypes: category(1)\n", + "memory usage: 32.0 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== FASE 10.1 [TRAIN]: Rare Labeling ===\n", + " 'workclass': 2 categorias consolidadas; reemplazos=19; protegidas=['?']\n", + " 'marital_status': 1 categorias consolidadas; reemplazos=19; protegidas=[]\n", + " 'occupation': 2 categorias consolidadas; reemplazos=123; protegidas=['?']\n", + " 'race': 2 categorias consolidadas; reemplazos=486; protegidas=[]\n", + " 'native_country': 39 categorias consolidadas; reemplazos=1719; protegidas=['?']\n", + "Rare Labeling completado en 0.022s. Columnas afectadas: 5\n", + "=== FASE 10.1 [TEST]: Rare Labeling ===\n", + "Rare Labeling completado en 0.006s. Columnas afectadas: 5\n", + "PipelineManager actualizado con Rare Labeling estable.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetria\n", + "# ==========================================\n", + "import logging\n", + "import re\n", + "import time\n", + "from typing import Dict, Tuple\n", + "\n", + "import pandas as pd\n", + "\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "RARE_LABEL_PATTERN = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + "\n", + "def _validar_X_rare(X: pd.DataFrame) -> None:\n", + " if X is None or X.empty:\n", + " raise ValueError('La matriz (X) esta vacia.')\n", + "\n", + "\n", + "def _es_categorica(serie: pd.Series) -> bool:\n", + " return isinstance(serie.dtype, pd.CategoricalDtype)\n", + "\n", + "\n", + "def _agregar_categoria_rara(serie: pd.Series, etiqueta_rara: str) -> pd.Series:\n", + " if not _es_categorica(serie) or etiqueta_rara in serie.cat.categories:\n", + " return serie\n", + " return serie.cat.add_categories([etiqueta_rara])\n", + "\n", + "\n", + "def _categorias_validas(frecuencias: pd.Series, umbral: float) -> Tuple[list, list]:\n", + " frecuentes = frecuencias[frecuencias >= umbral].index.tolist()\n", + " protegidas = [valor for valor in frecuencias.index if RARE_LABEL_PATTERN.match(str(valor).strip())]\n", + " return list(dict.fromkeys(frecuentes + protegidas)), protegidas\n", + "\n", + "\n", + "def _aplicar_rare(serie: pd.Series, categorias_validas: list, etiqueta_rara: str) -> Tuple[pd.Series, int]:\n", + " serie = _agregar_categoria_rara(serie.copy(), etiqueta_rara)\n", + " mascara = ~serie.isna() & ~serie.isin(categorias_validas)\n", + " reemplazos = int(mascara.sum())\n", + " if reemplazos:\n", + " serie.loc[mascara] = etiqueta_rara\n", + " return serie, reemplazos\n", + "\n", + "\n", + "def aplicar_rare_labeling_seguro(\n", + " X: pd.DataFrame,\n", + " umbral: float = 0.01,\n", + " etiqueta_rara: str = 'Rare',\n", + " vocabulario_aprendido: Dict = None,\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " _validar_X_rare(X)\n", + " inicio = time.time()\n", + " modo = 'TRAIN' if vocabulario_aprendido is None else 'TEST'\n", + " logger.info(\"=== FASE 10.1 [%s]: Rare Labeling ===\", modo)\n", + "\n", + " X_out = X.copy()\n", + " columnas = X_out.select_dtypes(include=['object', 'category', 'string']).columns.tolist()\n", + " if not columnas:\n", + " return X_out, vocabulario_aprendido or {}\n", + "\n", + " vocabulario = dict(vocabulario_aprendido or {})\n", + " columnas_modificadas = 0\n", + "\n", + " if vocabulario_aprendido is None:\n", + " for columna in columnas:\n", + " frecuencias = X_out[columna].value_counts(normalize=True)\n", + " validas, protegidas = _categorias_validas(frecuencias, umbral)\n", + " raras = frecuencias[~frecuencias.index.isin(validas)].index.tolist()\n", + " if not raras:\n", + " continue\n", + "\n", + " serie, reemplazos = _aplicar_rare(X_out[columna], validas, etiqueta_rara)\n", + " X_out[columna] = serie\n", + " vocabulario[columna] = validas\n", + " columnas_modificadas += 1\n", + " logger.info(\" '%s': %s categorias consolidadas; reemplazos=%s; protegidas=%s\", columna, len(raras), reemplazos, protegidas)\n", + " else:\n", + " for columna, validas in vocabulario.items():\n", + " if columna not in X_out.columns:\n", + " continue\n", + " serie, reemplazos = _aplicar_rare(X_out[columna], validas, etiqueta_rara)\n", + " if not reemplazos:\n", + " continue\n", + " X_out[columna] = serie\n", + " columnas_modificadas += 1\n", + "\n", + " logger.info(\"Rare Labeling completado en %.3fs. Columnas afectadas: %s\", time.time() - inicio, columnas_modificadas)\n", + " return X_out, vocabulario\n", + "\n", + "\n", + "def _guardar_vocabulario_rare(manager_obj, vocabulario: Dict) -> None:\n", + " if hasattr(manager_obj, 'guardar_artefacto'):\n", + " manager_obj.guardar_artefacto('vocabulario_rare_labeling', vocabulario)\n", + " return\n", + " if getattr(manager_obj, 'artefactos', None) is None:\n", + " manager_obj.artefactos = {}\n", + " manager_obj.artefactos['vocabulario_rare_labeling'] = vocabulario\n", + "\n", + "\n", + "try:\n", + " try:\n", + " _ = manager\n", + " except NameError as exc:\n", + " raise EnvironmentError('El PipelineManager no esta inicializado. Ejecuta la Ingesta primero.') from exc\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'.\")\n", + "\n", + " X_train_rare, vocabulario_oficial = aplicar_rare_labeling_seguro(manager.X_train, umbral=0.01, etiqueta_rara='Rare')\n", + " X_test_rare, _ = aplicar_rare_labeling_seguro(manager.X_test, umbral=0.01, etiqueta_rara='Rare', vocabulario_aprendido=vocabulario_oficial)\n", + "\n", + " manager.X_train = X_train_rare\n", + " manager.X_test = X_test_rare\n", + " _guardar_vocabulario_rare(manager, vocabulario_oficial)\n", + "\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " logger.info('PipelineManager actualizado con Rare Labeling estable.')\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"Dependencia faltante:\\n{env_err}\")\n", + "except Exception as exc:\n", + " logger.error(f\"Error en Rare Labeling: {exc}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 APLICANDO FUSIÓN SEMÁNTICA LLM A TRAIN <<<\n", + "=== 🧠 FASE 7.2: Fusión Semántica con LLMs (Extracción Estructurada) ===\n", + " ✅ [BYPASS AUTOMÁTICO] No se detectaron columnas de Texto Libre (Free Text).\n", + " El dataset contiene solo categorías estructuradas. Omitiendo inferencia LLM.\n", + "\n", + "⏱️ Análisis de texto omitido en 0.002s\n", + "\n", + ">>> 🔒 APLICANDO FUSIÓN SEMÁNTICA LLM A TEST <<<\n", + "=== 🧠 FASE 7.2: Fusión Semántica con LLMs (Extracción Estructurada) ===\n", + " ✅ [BYPASS AUTOMÁTICO] No se detectaron columnas de Texto Libre (Free Text).\n", + " El dataset contiene solo categorías estructuradas. Omitiendo inferencia LLM.\n", + "\n", + "⏱️ Análisis de texto omitido en 0.002s\n", + "\n", + "📦 [MLOps] Matrices X_train y X_test enriquecidas con LLM de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# Pydantic se usa en MLOps para forzar que el LLM devuelva la estructura exacta que necesitamos\n", + "try:\n", + " from pydantic import BaseModel, Field\n", + " PYDANTIC_DISPONIBLE = True\n", + "except ImportError:\n", + " PYDANTIC_DISPONIBLE = False\n", + "\n", + "# 1. Definimos el Esquema Estricto que le exigiremos al LLM\n", + "if PYDANTIC_DISPONIBLE:\n", + " class ExtraccionLLM(BaseModel):\n", + " sentimiento: str = Field(description=\"Clasificar como: Positivo, Negativo o Neutral\")\n", + " entidad_clave: str = Field(description=\"La palabra o concepto principal del texto\")\n", + " alerta_riesgo: bool = Field(description=\"True si el texto indica peligro, fraude o riesgo alto, False de lo contrario\")\n", + "\n", + "def fusion_semantica_llm(X: pd.DataFrame, y: pd.Series = None) -> pd.DataFrame:\n", + " \"\"\"\n", + " [FASE 2 - Paso 7.2] Motor AutoML de Fusión Semántica para Texto Libre.\n", + " - Radar Inteligente: Detecta columnas que realmente son texto libre (alta longitud y cardinalidad).\n", + " - MLOps Pipeline: Maqueta la extracción estructurada (JSON) usando un LLM ligero.\n", + " - Bypass Automático: Si no hay texto libre (ej. Dataset Adult), se omite sin romper el flujo.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧠 FASE 7.2: Fusión Semántica con LLMs (Extracción Estructurada) ===\")\n", + " inicio_timer = time.time()\n", + " X_transformado = X.copy()\n", + "\n", + " # ==========================================\n", + " # 2. Radar Inteligente de Texto Libre\n", + " # ==========================================\n", + " text_cols = X_transformado.select_dtypes(include=['object', 'string']).columns.tolist()\n", + " columnas_texto_libre = []\n", + "\n", + " for col in text_cols:\n", + " s = X_transformado[col].dropna().astype(str)\n", + " if s.empty: continue\n", + "\n", + " # Heurísticas de Texto Libre: \n", + " # 1. Longitud promedio mayor a 35 caracteres (una categoría normal mide menos)\n", + " # 2. Alta cardinalidad: Al menos el 50% de las filas tienen un texto distinto\n", + " longitud_promedio = s.str.len().mean()\n", + " ratio_unicos = s.nunique() / len(s)\n", + "\n", + " if longitud_promedio > 35 and ratio_unicos > 0.5:\n", + " columnas_texto_libre.append(col)\n", + "\n", + " if not columnas_texto_libre:\n", + " logger.info(\" ✅ [BYPASS AUTOMÁTICO] No se detectaron columnas de Texto Libre (Free Text).\")\n", + " logger.info(\" El dataset contiene solo categorías estructuradas. Omitiendo inferencia LLM.\")\n", + " logger.info(f\"\\n⏱️ Análisis de texto omitido en {time.time() - inicio_timer:.3f}s\")\n", + " return X_transformado\n", + "\n", + " logger.info(f\" 📖 [TEXTO DETECTADO] Variables de texto libre a procesar: {columnas_texto_libre}\")\n", + " if not PYDANTIC_DISPONIBLE:\n", + " logger.warning(\" ⚠️ Advertencia: Pydantic no está instalado. Instálalo para garantizar la estructura del JSON.\")\n", + "\n", + " # ==========================================\n", + " # 3. Motor de Inferencia LLM (Arquitectura Mockup para Producción)\n", + " # ==========================================\n", + " def invocar_llm_local(texto: str) -> dict:\n", + " \"\"\"\n", + " Aquí iría la llamada a tu LLM local (ej. Llama.cpp, Ollama, vLLM) \n", + " o a una API si está permitido. Para el template, simulamos la respuesta.\n", + " \"\"\"\n", + " # --- SIMULACIÓN PARA QUE EL CÓDIGO CORRA ---\n", + " # Si el texto estuviera vacío o fuera un NaN\n", + " if pd.isna(texto) or str(texto).strip() in ['?', '']:\n", + " return {\"sentimiento\": \"Neutral\", \"entidad_clave\": \"Ninguna\", \"alerta_riesgo\": False}\n", + "\n", + " return {\"sentimiento\": \"Neutral\", \"entidad_clave\": \"Concepto_Genérico\", \"alerta_riesgo\": False}\n", + "\n", + " # ==========================================\n", + " # 4. Procesamiento por Lotes (Batch Processing)\n", + " # ==========================================\n", + " for col in columnas_texto_libre:\n", + " logger.info(f\" 🤖 Extrayendo semántica de '{col}'...\")\n", + "\n", + " # Extraemos las respuestas (simuladas) en una lista de diccionarios\n", + " respuestas_estructuradas = X_transformado[col].apply(invocar_llm_local)\n", + "\n", + " # Expandimos el JSON en columnas nativas de Pandas\n", + " df_extraido = pd.json_normalize(respuestas_estructuradas)\n", + " df_extraido.columns = [f\"{col}_LLM_{c}\" for c in df_extraido.columns]\n", + "\n", + " # Concatenamos las nuevas características a la matriz y eliminamos el texto crudo original\n", + " X_transformado = pd.concat([X_transformado.reset_index(drop=True), df_extraido.reset_index(drop=True)], axis=1)\n", + " X_transformado.drop(columns=[col], inplace=True)\n", + "\n", + " logger.info(f\" ↳ Creadas {len(df_extraido.columns)} nuevas columnas estructuradas.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Fusión Semántica completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_transformado\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\"\\n>>> 🚂 APLICANDO FUSIÓN SEMÁNTICA LLM A TRAIN <<<\")\n", + " # Inyectamos las columnas directamente consumiendo la matriz de entrenamiento del manager\n", + " X_train_llm = fusion_semantica_llm(X=manager.X_train)\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO FUSIÓN SEMÁNTICA LLM A TEST <<<\")\n", + " # Hacemos lo mismo para test consumiendo la matriz del manager\n", + " X_test_llm = fusion_semantica_llm(X=manager.X_test)\n", + "\n", + " # Sincronizamos las matrices enriquecidas dentro del cerebro del Manager\n", + " manager.X_train = X_train_llm\n", + " manager.X_test = X_test_llm\n", + "\n", + " # (Transición) Reflejamos en globales por compatibilidad temporal\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices X_train y X_test enriquecidas con LLM de forma segura en el PipelineManager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fusión Semántica: {e}\")\n", + "\n", + "\n", + "# # FASE 3: Ingeniería Básica y Codificación (El Puente Matemático)\n", + "# Extraemos métricas directas y convertimos TODO a números para que los imputadores funcionen." + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
090?9widowed?not-in-familywhitefemale0435640united-states
182private9widowedexec-managerialnot-in-familywhitefemale0435618united-states
266?10widowed?unmarriedblackfemale0435640united-states
354private4divorcedmachine-op-inspctunmarriedwhitefemale0390040united-states
441private10separatedprof-specialtyown-childwhitefemale0390040united-states
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 90 ? 9 widowed ? \n", + "1 82 private 9 widowed exec-managerial \n", + "2 66 ? 10 widowed ? \n", + "3 54 private 4 divorced machine-op-inspct \n", + "4 41 private 10 separated prof-specialty \n", + "\n", + " relationship race sex capital_gain capital_loss hours_per_week \\\n", + "0 not-in-family white female 0 4356 40 \n", + "1 not-in-family white female 0 4356 18 \n", + "2 unmarried black female 0 4356 40 \n", + "3 unmarried white female 0 3900 40 \n", + "4 own-child white female 0 3900 40 \n", + "\n", + " native_country \n", + "0 united-states \n", + "1 united-states \n", + "2 united-states \n", + "3 united-states \n", + "4 united-states " + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 Aplicando Desenmascaramiento a TRAIN <<<\n", + "=== 🧹 FASE 8.1: Desenmascaramiento de Falsos Nulos (Missingness) ===\n", + " 🔍 Escaneando 7 variables de texto con Motor Regex...\n", + " 🎭 'workclass': 1472 máscaras ['?'] destruidas y convertidas a NaN (5.66%).\n", + " 🎭 'occupation': 1478 máscaras ['?'] destruidas y convertidas a NaN (5.68%).\n", + " 🎭 'native_country': 469 máscaras ['?'] destruidas y convertidas a NaN (1.80%).\n", + " 🔢 Escaneando variables numéricas en busca de trampas conocidas...\n", + " 💣 'capital_gain': 130 valores trampa [99999] convertidos a NaN (0.50%).\n", + "--------------------------------------------------------------------------------\n", + " ✅ [PURGA EXITOSA] Se desenmascararon 3549 celdas falsas (1.14% de la matriz total).\n", + " 🧠 El modelo ahora sabe exactamente dónde hay agujeros de información reales.\n", + "\n", + "⏱️ Desenmascaramiento completado en 0.141s\n", + ">>> 🔒 Aplicando Desenmascaramiento a TEST <<<\n", + "=== 🧹 FASE 8.1: Desenmascaramiento de Falsos Nulos (Missingness) ===\n", + " 🔍 Escaneando 7 variables de texto con Motor Regex...\n", + " 🎭 'workclass': 364 máscaras ['?'] destruidas y convertidas a NaN (5.59%).\n", + " 🎭 'occupation': 365 máscaras ['?'] destruidas y convertidas a NaN (5.61%).\n", + " 🎭 'native_country': 113 máscaras ['?'] destruidas y convertidas a NaN (1.74%).\n", + " 🔢 Escaneando variables numéricas en busca de trampas conocidas...\n", + " 💣 'capital_gain': 29 valores trampa [99999] convertidos a NaN (0.45%).\n", + "--------------------------------------------------------------------------------\n", + " ✅ [PURGA EXITOSA] Se desenmascararon 871 celdas falsas (1.12% de la matriz total).\n", + " 🧠 El modelo ahora sabe exactamente dónde hay agujeros de información reales.\n", + "\n", + "⏱️ Desenmascaramiento completado en 0.048s\n", + "\n", + "📦 [MLOps] Matrices purgadas y actualizadas de forma segura en el PipelineManager. Todos los nulos/fechas falsas son ahora np.nan o pd.NaT.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import re\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def desenmascarar_falsos_nulos(\n", + " X: pd.DataFrame, \n", + " nulos_numericos_conocidos: dict = None\n", + "):\n", + " \"\"\"\n", + " [FASE 3 - Paso 8.1] Motor AutoML para Desenmascarar Falsos Nulos.\n", + " - Caza nulos categóricos usando una Regex de símbolos ASCII y palabras clave comunes.\n", + " - Caza nulos numéricos (Outliers lógicos) inyectados vía diccionario (ej. 99999.0).\n", + " - Caza Outliers Temporales (NUEVO): Detecta fechas imposibles (ej. 1900 o 2099) y las vuelve NaT.\n", + " - Convierte todo el ruido encontrado estandarizadamente a np.nan/pd.NaT y reporta los hallazgos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧹 FASE 8.1: Desenmascaramiento de Falsos Nulos (Missingness) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # Operamos sobre una copia limpia\n", + " X_transformado = X.copy()\n", + " total_filas = len(X_transformado)\n", + "\n", + " # MOTOR REGEX: \n", + " # 1. (unknown|n/?a|null|nan|missing|none|-1|nat|) -> Palabras clave ignorando mayúsculas/minúsculas.\n", + " # 2. ^[^a-zA-Z0-9]+$ -> Cualquier cadena que NO contenga letras ni números (ej. \"?\", \"-\", \"**\", \" \").\n", + " patron_mascara = re.compile(r'(?i)^(unknown|n/?a|null|nan|missing|none|-1|nat|)$|^[^a-zA-Z0-9]+$')\n", + "\n", + " celdas_desenmascaradas_totales = 0\n", + "\n", + " # ==========================================\n", + " # 1. Purga de Columnas Categóricas / Texto\n", + " # ==========================================\n", + " cat_cols = X_transformado.select_dtypes(include=['object', 'category', 'string']).columns.tolist()\n", + "\n", + " logger.info(f\" 🔍 Escaneando {len(cat_cols)} variables de texto con Motor Regex...\")\n", + "\n", + " for col in cat_cols:\n", + " evaluacion_regex = X_transformado[col].astype(str).str.strip().str.match(patron_mascara)\n", + " mascara_falsos_nulos = evaluacion_regex & X_transformado[col].notna()\n", + "\n", + " hallazgos = mascara_falsos_nulos.sum()\n", + " if hallazgos > 0:\n", + " valores_encontrados = X_transformado.loc[mascara_falsos_nulos, col].unique().tolist()\n", + " porcentaje_columna = (hallazgos / total_filas) * 100\n", + "\n", + " X_transformado.loc[mascara_falsos_nulos, col] = np.nan\n", + " celdas_desenmascaradas_totales += hallazgos\n", + " logger.warning(f\" 🎭 '{col}': {hallazgos} máscaras {valores_encontrados} destruidas y convertidas a NaN ({porcentaje_columna:.2f}%).\")\n", + "\n", + " # ==========================================\n", + " # 2. Purga de Columnas Numéricas (Trampas Lógicas)\n", + " # ==========================================\n", + " if nulos_numericos_conocidos:\n", + " logger.info(f\" 🔢 Escaneando variables numéricas en busca de trampas conocidas...\")\n", + " for col, valores_trampa in nulos_numericos_conocidos.items():\n", + " if col in X_transformado.columns:\n", + " mascara_numerica = X_transformado[col].isin(valores_trampa)\n", + " hallazgos_num = mascara_numerica.sum()\n", + "\n", + " if hallazgos_num > 0:\n", + " valores_encontrados_num = X_transformado.loc[mascara_numerica, col].unique().tolist()\n", + " porcentaje_col_num = (hallazgos_num / total_filas) * 100\n", + "\n", + " X_transformado.loc[mascara_numerica, col] = np.nan\n", + " celdas_desenmascaradas_totales += hallazgos_num\n", + " logger.warning(f\" 💣 '{col}': {hallazgos_num} valores trampa {valores_encontrados_num} convertidos a NaN ({porcentaje_col_num:.2f}%).\")\n", + "\n", + " # ==========================================\n", + " # 🚀 2.5 Purga de Fechas Ilógicas (Outliers Temporales)\n", + " # ==========================================\n", + " date_cols = X_transformado.select_dtypes(include=['datetime64', 'datetimetz', 'datetime']).columns.tolist()\n", + "\n", + " if date_cols:\n", + " logger.info(f\" ⏳ Escaneando {len(date_cols)} variables temporales en busca de fechas ilógicas...\")\n", + "\n", + " anio_actual = pd.Timestamp.now().year\n", + " umbral_pasado = 1900 # Fechas anteriores a 1900 suelen ser errores/placeholders\n", + " umbral_futuro = anio_actual + 2 # Más de 2 años en el futuro suele ser un typo\n", + "\n", + " for col in date_cols:\n", + " anios_columna = X_transformado[col].dt.year\n", + "\n", + " # Máscara inteligente ignorando NaNs preexistentes\n", + " mask_pasado = anios_columna < umbral_pasado\n", + " mask_futuro = anios_columna > umbral_futuro\n", + " mask_outliers_fechas = mask_pasado | mask_futuro\n", + "\n", + " hallazgos_fechas = mask_outliers_fechas.sum()\n", + "\n", + " if hallazgos_fechas > 0:\n", + " # Extraemos muestra para el log\n", + " valores_fechas = X_transformado.loc[mask_outliers_fechas, col].dt.strftime('%Y-%m-%d').unique().tolist()\n", + " valores_muestra = valores_fechas[:3] + [\"...\"] if len(valores_fechas) > 3 else valores_fechas\n", + " porcentaje_fechas = (hallazgos_fechas / total_filas) * 100\n", + "\n", + " # Conversión estricta a Not a Time (NaT)\n", + " X_transformado.loc[mask_outliers_fechas, col] = pd.NaT\n", + " celdas_desenmascaradas_totales += hallazgos_fechas\n", + " logger.warning(f\" 🕰️ '{col}': {hallazgos_fechas} fechas imposibles {valores_muestra} convertidas a NaT ({porcentaje_fechas:.2f}%).\")\n", + "\n", + " # ==========================================\n", + " # 3. Reporte de Impacto\n", + " # ==========================================\n", + " logger.info(\"-\" * 80)\n", + " if celdas_desenmascaradas_totales > 0:\n", + " porcentaje_total = (celdas_desenmascaradas_totales / (X_transformado.shape[0] * X_transformado.shape[1])) * 100\n", + " logger.info(f\" ✅ [PURGA EXITOSA] Se desenmascararon {celdas_desenmascaradas_totales} celdas falsas ({porcentaje_total:.2f}% de la matriz total).\")\n", + " logger.info(\" 🧠 El modelo ahora sabe exactamente dónde hay agujeros de información reales.\")\n", + " else:\n", + " logger.info(\" ✅ [MATRIZ LIMPIA] No se detectaron máscaras, valores trampa, ni fechas ilógicas.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Desenmascaramiento completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_transformado\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🚂 Aplicando Desenmascaramiento a TRAIN <<<\")\n", + " X_train_purgado = desenmascarar_falsos_nulos(\n", + " X=manager.X_train,\n", + " nulos_numericos_conocidos={'capital_gain': [99999, 99999.0]}\n", + " )\n", + "\n", + " logger.info(\">>> 🔒 Aplicando Desenmascaramiento a TEST <<<\")\n", + " X_test_purgado = desenmascarar_falsos_nulos(\n", + " X=manager.X_test,\n", + " nulos_numericos_conocidos={'capital_gain': [99999, 99999.0]}\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar en la memoria del Manager de forma segura\n", + " manager.X_train = X_train_purgado\n", + " manager.X_test = X_test_purgado\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices purgadas y actualizadas de forma segura en el PipelineManager. Todos los nulos/fechas falsas son ahora np.nan o pd.NaT.\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el desenmascaramiento: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + "dtypes: category(7), float64(1), int16(1), int8(3)\n", + "memory usage: 511.8 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 12 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + "dtypes: category(7), float64(1), int16(1), int8(3)\n", + "memory usage: 130.6 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
021NaN10never-marriedNaNown-childwhitemale0.0020united-states
141private11married-civ-spousesaleshusbandwhitemale4386.0060united-states
224private9never-marriedhandlers-cleanersunmarriedblackfemale0.0040united-states
359private9widowedprof-specialtynot-in-familywhitefemale0.0018united-states
435private9married-civ-spousesaleshusbandasian-pac-islandermale0.0188750Rare
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "0 own-child white male 0.0 0 \n", + "1 husband white male 4386.0 0 \n", + "2 unmarried black female 0.0 0 \n", + "3 not-in-family white female 0.0 0 \n", + "4 husband asian-pac-islander male 0.0 1887 \n", + "\n", + " hours_per_week native_country \n", + "0 20 united-states \n", + "1 60 united-states \n", + "2 40 united-states \n", + "3 18 united-states \n", + "4 50 Rare " + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_country
1062private10married-civ-spouseadm-clericalwifewhitefemale0.0040united-states
1125private13never-marriedexec-managerialown-childwhitemale0.0045united-states
1229private9divorcedmachine-op-inspctunmarriedwhitefemale0.0040united-states
1365NaN13married-civ-spouseNaNhusbandwhitemale0.0237740united-states
1450state-gov13never-marriedexec-managerialnot-in-familywhitefemale0.0040united-states
1521private10never-marriedtech-supportown-childwhitefemale0.0025Rare
1627private9married-civ-spousecraft-repairhusbandwhitemale0.0040united-states
1722private10never-marriedsalesnot-in-familywhitefemale0.0017united-states
1838private13married-civ-spouseexec-managerialhusbandwhitemale0.0055united-states
1949private13married-spouse-absentother-servicenot-in-familyasian-pac-islandermale0.0040Rare
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "10 62 private 10 married-civ-spouse adm-clerical \n", + "11 25 private 13 never-married exec-managerial \n", + "12 29 private 9 divorced machine-op-inspct \n", + "13 65 NaN 13 married-civ-spouse NaN \n", + "14 50 state-gov 13 never-married exec-managerial \n", + "15 21 private 10 never-married tech-support \n", + "16 27 private 9 married-civ-spouse craft-repair \n", + "17 22 private 10 never-married sales \n", + "18 38 private 13 married-civ-spouse exec-managerial \n", + "19 49 private 13 married-spouse-absent other-service \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "10 wife white female 0.0 0 \n", + "11 own-child white male 0.0 0 \n", + "12 unmarried white female 0.0 0 \n", + "13 husband white male 0.0 2377 \n", + "14 not-in-family white female 0.0 0 \n", + "15 own-child white female 0.0 0 \n", + "16 husband white male 0.0 0 \n", + "17 not-in-family white female 0.0 0 \n", + "18 husband white male 0.0 0 \n", + "19 not-in-family asian-pac-islander male 0.0 0 \n", + "\n", + " hours_per_week native_country \n", + "10 40 united-states \n", + "11 45 united-states \n", + "12 40 united-states \n", + "13 40 united-states \n", + "14 40 united-states \n", + "15 25 Rare \n", + "16 40 united-states \n", + "17 17 united-states \n", + "18 55 united-states \n", + "19 40 Rare " + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test[10:20]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 ENTRENANDO RASTREADORES EN TRAIN <<<\n", + "=== 🚩 FASE 8.2: Rastreadores de Nulidad (Missingness Flags & Row-wise Count) ===\n", + " 🔍 Detectadas 4 variables con agujeros de información (Modo Aprendizaje).\n", + " ⚙️ Generando rastreadores...\n", + "\n", + " ↳ Creada bandera booleana: 'is_missing_workclass'\n", + " ↳ Creada bandera booleana: 'is_missing_occupation'\n", + " ↳ Creada bandera booleana: 'is_missing_capital_gain'\n", + " ↳ Creada bandera booleana: 'is_missing_native_country'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Característica Maestra 'total_nulos_en_fila' inyectada con éxito.\n", + " 👥 Impacto: 2044 individuos (7.85%) ocultaron al menos 1 dato.\n", + " ⚠️ El récord máximo de datos faltantes en una sola persona es: 3 nulos.\n", + "\n", + "⏱️ Motor de Missingness completado en 0.015s\n", + "\n", + ">>> 🔒 APLICANDO RASTREADORES A TEST <<<\n", + "=== 🚩 FASE 8.2: Rastreadores de Nulidad (Missingness Flags & Row-wise Count) ===\n", + " 🔒 Replicando 4 rastreadores aprendidos de Train (Modo Aplicación).\n", + " ⚙️ Generando rastreadores...\n", + "\n", + " ↳ Creada bandera booleana: 'is_missing_workclass'\n", + " ↳ Creada bandera booleana: 'is_missing_occupation'\n", + " ↳ Creada bandera booleana: 'is_missing_capital_gain'\n", + " ↳ Creada bandera booleana: 'is_missing_native_country'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Característica Maestra 'total_nulos_en_fila' inyectada con éxito.\n", + " 👥 Impacto: 502 individuos (7.71%) ocultaron al menos 1 dato.\n", + " ⚠️ El récord máximo de datos faltantes en una sola persona es: 3 nulos.\n", + "\n", + "⏱️ Motor de Missingness completado en 0.012s\n", + "\n", + "🛣️ Ruteo AutoML actualizado en Manager: +4 bools, +1 nums.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def aplicar_missingness_flags(\n", + " X: pd.DataFrame, \n", + " prefijo: str = 'is_missing_',\n", + " columnas_aprendidas: list = None\n", + ") -> tuple:\n", + " \"\"\"\n", + " [FASE 3 - Paso 8.2] Motor AutoML de Rastreo de Nulos (Missingness).\n", + " - Muro de Hierro MLOps: Aprende las columnas con nulos en Train, y las replica exactamente en Test.\n", + " 1. Banderas Booleanas: Crea columnas indicadoras (1/0) para variables con nulos.\n", + " 2. Row-wise NaN Count: Inyecta una característica maestra con el total de nulos por individuo.\n", + " - MLOPS SHIELD: Usa np.int8 y retorna las listas para actualizar el enrutamiento dinámicamente.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🚩 FASE 8.2: Rastreadores de Nulidad (Missingness Flags & Row-wise Count) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_transformado = X.copy()\n", + " banderas_creadas = []\n", + "\n", + " # ==========================================\n", + " # 1. MLOps: Fit vs Transform (Alineación de Matrices)\n", + " # ==========================================\n", + " if columnas_aprendidas is None:\n", + " # MODO TRAIN (.fit): Detectamos nosotros mismos dónde hay nulos\n", + " columnas_con_nulos = X_transformado.columns[X_transformado.isna().any()].tolist()\n", + " else:\n", + " # MODO TEST (.transform): Usamos estrictamente lo que nos dictó Train\n", + " columnas_con_nulos = columnas_aprendidas\n", + "\n", + " if not columnas_con_nulos:\n", + " logger.info(\" ✅ [MATRIZ PERFECTA] No hay nulos detectados. Se omite la creación de banderas.\")\n", + " # 🚀 FIX MLOps: Retornamos una lista vacía [], NO un 'None', para que Test sepa que SÍ hubo aprendizaje.\n", + " return X_transformado, [], None, [] \n", + "\n", + " if columnas_aprendidas is None:\n", + " logger.info(f\" 🔍 Detectadas {len(columnas_con_nulos)} variables con agujeros de información (Modo Aprendizaje).\")\n", + " else:\n", + " logger.info(f\" 🔒 Replicando {len(columnas_con_nulos)} rastreadores aprendidos de Train (Modo Aplicación).\")\n", + "\n", + " logger.info(\" ⚙️ Generando rastreadores...\\n\")\n", + "\n", + " # ==========================================\n", + " # 2. Fabricación de Banderas Booleanas por Columna\n", + " # ==========================================\n", + " for col in columnas_con_nulos:\n", + " nombre_bandera = f\"{prefijo}{col}\"\n", + " # astype(np.int8) convierte True/False en 1/0 pesando solo 1 byte por fila\n", + " X_transformado[nombre_bandera] = X_transformado[col].isna().astype(np.int8)\n", + " banderas_creadas.append(nombre_bandera)\n", + " logger.info(f\" ↳ Creada bandera booleana: '{nombre_bandera}'\")\n", + "\n", + " # ==========================================\n", + " # 3. Fabricación del \"Row-wise NaN Count\" (La Variable Maestra)\n", + " # ==========================================\n", + " nombre_conteo = 'total_nulos_en_fila'\n", + "\n", + " # Calculamos cuántos nulos hay en la matriz original por cada persona\n", + " conteo_nulos_por_fila = X_transformado[columnas_con_nulos].isna().sum(axis=1)\n", + "\n", + " # Inyectamos el conteo en int8\n", + " X_transformado[nombre_conteo] = conteo_nulos_por_fila.astype(np.int8)\n", + "\n", + " # ==========================================\n", + " # 4. Reporte Ejecutivo\n", + " # ==========================================\n", + " max_nulos = conteo_nulos_por_fila.max()\n", + " filas_afectadas = (conteo_nulos_por_fila > 0).sum()\n", + " porcentaje_filas = (filas_afectadas / len(X_transformado)) * 100\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 📊 Característica Maestra '{nombre_conteo}' inyectada con éxito.\")\n", + " logger.info(f\" 👥 Impacto: {filas_afectadas} individuos ({porcentaje_filas:.2f}%) ocultaron al menos 1 dato.\")\n", + " logger.warning(f\" ⚠️ El récord máximo de datos faltantes en una sola persona es: {max_nulos} nulos.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Motor de Missingness completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # Retornamos las variables nuevas (y la lista de columnas base para pasársela a Test)\n", + " return X_transformado, banderas_creadas, nombre_conteo, columnas_con_nulos\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\"\\n>>> 🚂 ENTRENANDO RASTREADORES EN TRAIN <<<\")\n", + " # En Train no le pasamos 'columnas_aprendidas' para que las descubra por sí mismo\n", + " X_train_miss, flags_nulidad, var_conteo, cols_aprendidas_train = aplicar_missingness_flags(\n", + " X=manager.X_train\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO RASTREADORES A TEST <<<\")\n", + " # En Test le forzamos la lista exacta de columnas que descubrimos en Train\n", + " X_test_miss, _, _, _ = aplicar_missingness_flags(\n", + " X=manager.X_test,\n", + " columnas_aprendidas=cols_aprendidas_train\n", + " )\n", + "\n", + " # Guardamos los resultados de vuelta en el Manager de forma segura\n", + " manager.X_train = X_train_miss\n", + " manager.X_test = X_test_miss\n", + "\n", + " # 🚀 MLOPS TIP: Actualizamos nuestra lista de rutas dinámicamente en el Manager\n", + " if not hasattr(manager, 'rutas'):\n", + " raise ValueError(\"El Manager no tiene el diccionario de 'rutas' inicializado. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " if flags_nulidad:\n", + " # Usamos list comprehension para agregar solo los flags que no estén ya en la ruta\n", + " nuevos_bools = [f for f in flags_nulidad if f not in manager.rutas['bool_vars']]\n", + " manager.rutas['bool_vars'].extend(nuevos_bools)\n", + "\n", + " if var_conteo and var_conteo not in manager.rutas['num_vars']:\n", + " manager.rutas['num_vars'].append(var_conteo)\n", + "\n", + " logger.info(f\"\\n🛣️ Ruteo AutoML actualizado en Manager: +{len(nuevos_bools)} bools, +1 nums.\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el motor de missingness: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['is_missing_workclass',\n", + " 'is_missing_occupation',\n", + " 'is_missing_capital_gain',\n", + " 'is_missing_native_country']" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "manager.rutas['bool_vars']\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 17 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + "dtypes: category(7), float64(1), int16(1), int8(8)\n", + "memory usage: 638.9 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 17 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + "dtypes: category(7), float64(1), int16(1), int8(8)\n", + "memory usage: 162.3 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO INGENIERÍA EN TRAIN <<<\n", + "=== 🚀 FASE 8.3: Ingeniería de Características (Escudos Automáticos y Atajos) ===\n", + " ⚙️ [TRAIN] Escaneando variables numéricas con más de 85.0% de ceros...\n", + " 🌟 [Atajo AutoML] 'capital_gain' (92.1% ceros) -> Creada bandera: 'tiene_capital_gain'\n", + " 🌟 [Atajo AutoML] 'capital_loss' (95.3% ceros) -> Creada bandera: 'tiene_capital_loss'\n", + "\n", + " ⚙️ [TRAIN] Escaneando matriz en busca de cruces matemáticos lógicos (Auto-Discovery)...\n", + " ⚖️ [Auto-Cruce Exitoso] Creada variable 'capital_neto' (capital_gain - capital_loss)\n", + "--------------------------------------------------------------------------------\n", + " ✅ [INGENIERÍA EXITOSA] Se inyectaron 3 variables dinámicas al modelo.\n", + "\n", + "⏱️ Ingeniería completada en 0.013s\n", + "\n", + ">>> 🔒 APLICANDO INGENIERÍA A TEST <<<\n", + "=== 🚀 FASE 8.3: Ingeniería de Características (Escudos Automáticos y Atajos) ===\n", + " 🔒 [TEST] Aplicando 2 banderas aprendidas de Train...\n", + "\n", + " 🔒 [TEST] Aplicando 1 cruces aprendidos de Train...\n", + "--------------------------------------------------------------------------------\n", + " ✅ [INGENIERÍA EXITOSA] Se inyectaron 3 variables dinámicas al modelo.\n", + "\n", + "⏱️ Ingeniería completada en 0.006s\n", + "\n", + "🛣️ Ruteo AutoML actualizado en Manager: +2 bools, +1 nums.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ingenieria_banderas_negocio(\n", + " X: pd.DataFrame, \n", + " umbral_ceros: float = 0.85,\n", + " rutas_actuales: dict = None,\n", + " reglas_aprendidas: dict = None\n", + ") -> tuple:\n", + " \"\"\"\n", + " [FASE 3 - Paso 8.3] Motor AutoML de Ingeniería de Características (Auto-Descubrimiento).\n", + " - Escáner de Dispersión: Detecta y escuda variables numéricas con exceso de ceros.\n", + " - MLOPS SHIELD: Ignora inteligentemente banderas previas para evitar recursividad.\n", + " - AUTO-FEATURE CROSSES: Detecta automáticamente pares lógicos y genera variables netas.\n", + " - Alineación Train/Test: Aprende las reglas en Train y las fuerza ciegamente en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " # ---------------------------------------------------------\n", + " # SHIELD: Construimos la lista negra leyendo el historial\n", + " # ---------------------------------------------------------\n", + " columnas_ignoradas = []\n", + " if rutas_actuales and 'bool_vars' in rutas_actuales:\n", + " columnas_ignoradas.extend(rutas_actuales['bool_vars'])\n", + " if 'total_nulos_en_fila' in X.columns:\n", + " columnas_ignoradas.append('total_nulos_en_fila')\n", + "\n", + " logger.info(f\"=== 🚀 FASE 8.3: Ingeniería de Características (Escudos Automáticos y Atajos) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_transformado = X.copy()\n", + " nuevas_bools = []\n", + " nuevas_nums = []\n", + " reglas_actuales = {'columnas_bandera': [], 'parejas_cruce': []} if reglas_aprendidas is None else reglas_aprendidas\n", + "\n", + " # ==========================================\n", + " # 1. Escáner Inteligente de Banderas (Auto-Sparsity Flags)\n", + " # ==========================================\n", + " cols_numericas = X_transformado.select_dtypes(include=['number']).columns.tolist()\n", + "\n", + " if reglas_aprendidas is None:\n", + " logger.info(f\" ⚙️ [TRAIN] Escaneando variables numéricas con más de {umbral_ceros*100}% de ceros...\")\n", + " for col in cols_numericas:\n", + " if col in columnas_ignoradas:\n", + " continue\n", + "\n", + " valores_unicos = set(X_transformado[col].dropna().unique())\n", + " if valores_unicos.issubset({0, 1, 0.0, 1.0}):\n", + " continue\n", + "\n", + " total_validos = X_transformado[col].notna().sum()\n", + " if total_validos == 0: continue\n", + "\n", + " ratio_ceros = (X_transformado[col] == 0).sum() / total_validos\n", + "\n", + " if ratio_ceros >= umbral_ceros:\n", + " reglas_actuales['columnas_bandera'].append(col)\n", + " nombre_bandera = f\"tiene_{col}\"\n", + " X_transformado[nombre_bandera] = (X_transformado[col].fillna(0) != 0).astype(np.int8)\n", + " nuevas_bools.append(nombre_bandera)\n", + " logger.info(f\" 🌟 [Atajo AutoML] '{col}' ({ratio_ceros*100:.1f}% ceros) -> Creada bandera: '{nombre_bandera}'\")\n", + " else:\n", + " logger.info(f\" 🔒 [TEST] Aplicando {len(reglas_actuales['columnas_bandera'])} banderas aprendidas de Train...\")\n", + " for col in reglas_actuales['columnas_bandera']:\n", + " if col in X_transformado.columns:\n", + " nombre_bandera = f\"tiene_{col}\"\n", + " X_transformado[nombre_bandera] = (X_transformado[col].fillna(0) != 0).astype(np.int8)\n", + " nuevas_bools.append(nombre_bandera)\n", + " logger.debug(f\" ↳ Replicada bandera: '{nombre_bandera}'\")\n", + "\n", + " # ==========================================\n", + " # 2. Auto-Descubrimiento de Interacciones (Feature Crosses)\n", + " # ==========================================\n", + " patrones_opuestos = [\n", + " ('_gain', '_loss'), \n", + " ('_ingreso', '_gasto'),\n", + " ('_max', '_min'),\n", + " ('positive_', 'negative_')\n", + " ]\n", + "\n", + " if reglas_aprendidas is None:\n", + " logger.info(\"\\n ⚙️ [TRAIN] Escaneando matriz en busca de cruces matemáticos lógicos (Auto-Discovery)...\")\n", + " for sufijo_a, sufijo_b in patrones_opuestos:\n", + " cols_a = [c for c in cols_numericas if c.endswith(sufijo_a) or c.startswith(sufijo_a)]\n", + " for col_a in cols_a:\n", + " base_name = col_a.replace(sufijo_a, \"\")\n", + " col_b = base_name + sufijo_b if col_a.endswith(sufijo_a) else sufijo_b + base_name\n", + "\n", + " if col_b in cols_numericas:\n", + " nuevo_nombre = f\"{base_name}_neto\" if col_a.endswith(sufijo_a) else f\"neto_{base_name}\"\n", + " reglas_actuales['parejas_cruce'].append((col_a, col_b, nuevo_nombre))\n", + "\n", + " if nuevo_nombre not in X_transformado.columns:\n", + " X_transformado[nuevo_nombre] = X_transformado[col_a].fillna(0) - X_transformado[col_b].fillna(0)\n", + " nuevas_nums.append(nuevo_nombre)\n", + " logger.info(f\" ⚖️ [Auto-Cruce Exitoso] Creada variable '{nuevo_nombre}' ({col_a} - {col_b})\")\n", + " else:\n", + " logger.info(f\"\\n 🔒 [TEST] Aplicando {len(reglas_actuales['parejas_cruce'])} cruces aprendidos de Train...\")\n", + " for col_a, col_b, nuevo_nombre in reglas_actuales['parejas_cruce']:\n", + " if col_a in X_transformado.columns and col_b in X_transformado.columns:\n", + " X_transformado[nuevo_nombre] = X_transformado[col_a].fillna(0) - X_transformado[col_b].fillna(0)\n", + " nuevas_nums.append(nuevo_nombre)\n", + " logger.debug(f\" ↳ Replicado cruce: '{nuevo_nombre}'\")\n", + "\n", + " # ==========================================\n", + " # 3. Reporte de Impacto\n", + " # ==========================================\n", + " total_nuevas = len(nuevas_bools) + len(nuevas_nums)\n", + " logger.info(\"-\" * 80)\n", + " if total_nuevas > 0:\n", + " logger.info(f\" ✅ [INGENIERÍA EXITOSA] Se inyectaron {total_nuevas} variables dinámicas al modelo.\")\n", + " else:\n", + " logger.info(\" ⚠️ [MATRIZ DENSA] No se detectó alta dispersión ni se aplicaron cruces.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Ingeniería completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_transformado, nuevas_bools, nuevas_nums, reglas_actuales\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO INGENIERÍA EN TRAIN <<<\")\n", + " # Consumimos X_train y las rutas directamente desde el manager\n", + " X_train_eng, flags_creadas, cruces_creados, reglas_ingenieria = ingenieria_banderas_negocio(\n", + " X=manager.X_train, \n", + " umbral_ceros=0.85, \n", + " rutas_actuales=manager.rutas\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO INGENIERÍA A TEST <<<\")\n", + " # Consumimos X_test y forzamos las reglas aprendidas de Train\n", + " X_test_eng, _, _, _ = ingenieria_banderas_negocio(\n", + " X=manager.X_test, \n", + " umbral_ceros=0.85, \n", + " rutas_actuales=manager.rutas,\n", + " reglas_aprendidas=reglas_ingenieria\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos en la memoria del Manager de forma segura\n", + " manager.X_train = X_train_eng\n", + " manager.X_test = X_test_eng\n", + "\n", + " # 🚀 MLOPS TIP: Actualizamos el ruteo en el Manager SOLO UNA VEZ con los descubrimientos de Train\n", + " if flags_creadas or cruces_creados:\n", + " manager.rutas['bool_vars'].extend(flags_creadas)\n", + " manager.rutas['num_vars'].extend(cruces_creados)\n", + " logger.info(f\"\\n🛣️ Ruteo AutoML actualizado en Manager: +{len(flags_creadas)} bools, +{len(cruces_creados)} nums.\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la ingeniería de características: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 893.1 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + " 17 tiene_capital_gain 6508 non-null int8 \n", + " 18 tiene_capital_loss 6508 non-null int8 \n", + " 19 capital_neto 6508 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 225.9 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Series name: income\n", + "Non-Null Count Dtype \n", + "-------------- ----- \n", + "26029 non-null category\n", + "dtypes: category(1)\n", + "memory usage: 25.7 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 🔬 FASE 9.1: Diagnóstico de Topología del Dataset (AutoML) ===\n", + " ✅ [DIAGNÓSTICO] No se encontraron ejes temporales (Datetimes).\n", + " ↳ Topología deducida: TRANSVERSAL (Cross-Sectional).\n", + "\n", + ">>> 🤖 VARIABLES DE ENRUTAMIENTO GLOBAL CONFIGURADAS EN EL MANAGER <<<\n", + " ⚙️ ES_SERIE_TIEMPO_ESTRICTA = False\n", + " ⚙️ VARIABLE_TIEMPO_GLOBAL = 'None'\n", + " ⚙️ VARIABLE_ENTIDAD_GLOBAL = 'None'\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def diagnostico_topologico_automl(\n", + " X_train: pd.DataFrame, \n", + " X_test: pd.DataFrame = None\n", + ") -> Tuple[pd.DataFrame, pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 9 - Paso 9.1] Escáner de Diagnóstico de Topología de Datos (MLOps Estricto).\n", + " - FIX MLOps: Aplanamiento Total. Se liberan los IDs del Index a columnas normales\n", + " y se destruye el Index al finalizar para evitar conflictos de ambigüedad futuros.\n", + " \"\"\"\n", + " if not isinstance(X_train, pd.DataFrame) or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz X_train está vacía o es inválida.\")\n", + " raise ValueError(\"La matriz X_train está vacía o es inválida.\")\n", + "\n", + " logger.info(\"=== 🔬 FASE 9.1: Diagnóstico de Topología del Dataset (AutoML) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_tr_analisis = X_train.copy()\n", + " X_te_analisis = X_test.copy() if X_test is not None else None\n", + "\n", + " # 1. Liberación temporal de IDs del Index para poder analizarlos (y dejarlos como columnas)\n", + " nombres_originales = [n for n in X_tr_analisis.index.names if n is not None]\n", + " if nombres_originales:\n", + " logger.info(f\" 🔓 Liberando temporalmente IDs del Index hacia columnas: {nombres_originales}\")\n", + " X_tr_analisis = X_tr_analisis.reset_index()\n", + " if X_te_analisis is not None:\n", + " X_te_analisis = X_te_analisis.reset_index()\n", + "\n", + " reporte = {\n", + " 'topologia': 'Transversal',\n", + " 'columna_tiempo': None,\n", + " 'columna_entidad': None,\n", + " 'es_serie_tiempo_estricta': False\n", + " }\n", + "\n", + " # ==========================================\n", + " # Búsqueda de Relojes y Varianza\n", + " # ==========================================\n", + " cols_tiempo = X_tr_analisis.select_dtypes(include=['datetime64', 'datetimetz']).columns.tolist()\n", + "\n", + " if not cols_tiempo:\n", + " logger.info(\" ✅ [DIAGNÓSTICO] No se encontraron ejes temporales (Datetimes).\")\n", + " logger.info(\" ↳ Topología deducida: TRANSVERSAL (Cross-Sectional).\")\n", + " # 🚀 FIX: Aplanamiento absoluto. El index no debe existir.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + " col_tiempo = X_tr_analisis[cols_tiempo].nunique().idxmax() if len(cols_tiempo) > 1 else cols_tiempo[0]\n", + " reporte['columna_tiempo'] = col_tiempo\n", + "\n", + " total_filas = len(X_tr_analisis)\n", + " filas_validas = total_filas - X_tr_analisis[col_tiempo].isna().sum()\n", + " unicos_tiempo = X_tr_analisis[col_tiempo].nunique()\n", + "\n", + " if unicos_tiempo <= 1:\n", + " logger.info(f\" ✅ [DIAGNÓSTICO] El Reloj '{col_tiempo}' está congelado en Train (Varianza Cero).\")\n", + " logger.info(\" ↳ Topología deducida: TRANSVERSAL (Cross-Sectional Snapshot).\")\n", + " # 🚀 FIX: Aplanamiento absoluto.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + " ratio_unicidad = unicos_tiempo / filas_validas if filas_validas > 0 else 0\n", + "\n", + " if ratio_unicidad >= 0.95:\n", + " logger.info(f\" ✅ [DIAGNÓSTICO] El tiempo fluye perfectamente (Unicidad: {ratio_unicidad:.1%}).\")\n", + " logger.info(f\" ↳ Topología deducida: SERIE DE TIEMPO PURA.\")\n", + " reporte['topologia'] = 'Serie de Tiempo Pura'\n", + " reporte['es_serie_tiempo_estricta'] = True\n", + " # 🚀 FIX: Aplanamiento absoluto.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + " # ==========================================\n", + " # Búsqueda de Entidades (Datos de Panel)\n", + " # ==========================================\n", + " logger.warning(f\" ⚠️ [ANÁLISIS PROFUNDO] Detectados múltiples eventos en la misma marca de tiempo (Unicidad: {ratio_unicidad:.1%}).\")\n", + " logger.info(\" ↳ Buscando una variable Categórica/ID que actúe como Llave Separadora (Entidad)...\")\n", + "\n", + " posibles_entidades = X_tr_analisis.select_dtypes(include=['category', 'object', 'string', 'int8', 'int16', 'int32', 'int64', 'float32', 'float64']).columns.tolist()\n", + " mejor_entidad = None\n", + " mejor_score_separacion = 0\n", + "\n", + " for col in posibles_entidades:\n", + " if col == col_tiempo: continue\n", + "\n", + " unicos_col = X_tr_analisis[col].nunique()\n", + " if 1 < unicos_col < (filas_validas * 0.9): \n", + " duplicados_promedio = X_tr_analisis.groupby([col, col_tiempo]).size().mean()\n", + " score_separacion = 1 / duplicados_promedio\n", + "\n", + " if score_separacion > mejor_score_separacion:\n", + " mejor_score_separacion = score_separacion\n", + " mejor_entidad = col\n", + "\n", + " if duplicados_promedio == 1.0:\n", + " break \n", + "\n", + " if mejor_entidad and mejor_score_separacion >= 0.66: \n", + " logger.info(f\" ✅ [DIAGNÓSTICO] Llave de Entidad encontrada: '{mejor_entidad}'.\")\n", + " logger.info(f\" ↳ Topología deducida: DATOS DE PANEL (Longitudinal).\")\n", + " reporte['topologia'] = 'Datos de Panel'\n", + " reporte['columna_entidad'] = mejor_entidad\n", + " reporte['es_serie_tiempo_estricta'] = True\n", + "\n", + " # 🚀 FIX MLOps: Los IDs se quedan como columnas puras. El Index se destruye.\n", + " indices_a_proteger = nombres_originales.copy()\n", + " if mejor_entidad not in indices_a_proteger:\n", + " indices_a_proteger.append(mejor_entidad)\n", + "\n", + " logger.info(f\" 🛡️ Preservando {indices_a_proteger} como columnas estándar para Fases futuras.\")\n", + "\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None:\n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + "\n", + " else:\n", + " logger.warning(\" ⚠️ [DIAGNÓSTICO] No se encontró un ID claro que separe perfectamente los eventos.\")\n", + " logger.info(\" ↳ Topología deducida: TRANSVERSAL (Tratar como eventos independientes).\")\n", + " reporte['topologia'] = 'Transversal'\n", + " reporte['es_serie_tiempo_estricta'] = False \n", + "\n", + " # 🚀 FIX: Aplanamiento absoluto.\n", + " X_tr_analisis.reset_index(drop=True, inplace=True)\n", + " if X_te_analisis is not None: \n", + " X_te_analisis.reset_index(drop=True, inplace=True)\n", + "\n", + " logger.info(f\"⏱️ Diagnóstico completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_tr_analisis, X_te_analisis, reporte\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or manager.rutas is None:\n", + " manager.rutas = {}\n", + "\n", + " # Ejecutamos el diagnóstico utilizando el manager\n", + " X_train_top, X_test_top, reporte_topologia = diagnostico_topologico_automl(\n", + " X_train=manager.X_train, \n", + " X_test=manager.X_test\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los resultados de vuelta en el Manager de forma centralizada\n", + " manager.X_train = X_train_top\n", + " manager.X_test = X_test_top\n", + " manager.rutas['reporte_topologia'] = reporte_topologia # Guardamos el reporte en rutas\n", + "\n", + " # ==========================================\n", + " # 🔗 AUTOWIRING MLOPS: Conexión Automática a Fases Futuras\n", + " # ==========================================\n", + " ES_SERIE_TIEMPO_ESTRICTA = reporte_topologia['es_serie_tiempo_estricta']\n", + " VARIABLE_TIEMPO_GLOBAL = reporte_topologia['columna_tiempo']\n", + " VARIABLE_ENTIDAD_GLOBAL = reporte_topologia['columna_entidad']\n", + "\n", + " # Guardamos variables de enrutamiento globales directamente en el manager\n", + " manager.rutas['es_serie_tiempo_estricta'] = ES_SERIE_TIEMPO_ESTRICTA\n", + " manager.rutas['variable_tiempo_global'] = VARIABLE_TIEMPO_GLOBAL\n", + " manager.rutas['variable_entidad_global'] = VARIABLE_ENTIDAD_GLOBAL\n", + "\n", + " logger.info(\"\\n>>> 🤖 VARIABLES DE ENRUTAMIENTO GLOBAL CONFIGURADAS EN EL MANAGER <<<\")\n", + " logger.info(f\" ⚙️ ES_SERIE_TIEMPO_ESTRICTA = {manager.rutas['es_serie_tiempo_estricta']}\")\n", + " logger.info(f\" ⚙️ VARIABLE_TIEMPO_GLOBAL = '{manager.rutas['variable_tiempo_global']}'\")\n", + " logger.info(f\" ⚙️ VARIABLE_ENTIDAD_GLOBAL = '{manager.rutas['variable_entidad_global']}'\")\n", + "\n", + " # (Transición) Reflejar temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Diagnóstico Topológico: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_losshours_per_weeknative_countryis_missing_workclassis_missing_occupationis_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_neto
021NaN10never-marriedNaNown-childwhitemale0.0020united-states11002000.0
141private11married-civ-spousesaleshusbandwhitemale4386.0060united-states00000104386.0
224private9never-marriedhandlers-cleanersunmarriedblackfemale0.0040united-states00000000.0
359private9widowedprof-specialtynot-in-familywhitefemale0.0018united-states00000000.0
435private9married-civ-spousesaleshusbandasian-pac-islandermale0.0188750Rare0000001-1887.0
\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss \\\n", + "0 own-child white male 0.0 0 \n", + "1 husband white male 4386.0 0 \n", + "2 unmarried black female 0.0 0 \n", + "3 not-in-family white female 0.0 0 \n", + "4 husband asian-pac-islander male 0.0 1887 \n", + "\n", + " hours_per_week native_country is_missing_workclass is_missing_occupation \\\n", + "0 20 united-states 1 1 \n", + "1 60 united-states 0 0 \n", + "2 40 united-states 0 0 \n", + "3 18 united-states 0 0 \n", + "4 50 Rare 0 0 \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto \n", + "0 0 0 0.0 \n", + "1 1 0 4386.0 \n", + "2 0 0 0.0 \n", + "3 0 0 0.0 \n", + "4 0 1 -1887.0 " + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 893.1 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 ENTRENANDO INGENIERÍA TEMPORAL EN TRAIN <<<\n", + "=== ⏱️ FASE 9.2: Ingeniería Temporal y Trigonometría AutoML ===\n", + " ✅ [BYPASS] No se detectaron variables temporales para procesar.\n", + " ⏩ La matriz permanece intacta. Avanzando al siguiente paso...\n", + "\n", + ">>> 🔒 APLICANDO INGENIERÍA TEMPORAL A TEST <<<\n", + "=== ⏱️ FASE 9.2: Ingeniería Temporal y Trigonometría AutoML ===\n", + " ✅ [BYPASS] No se detectaron variables temporales para procesar.\n", + " ⏩ La matriz permanece intacta. Avanzando al siguiente paso...\n", + "\n", + "📦 [MLOps] Matrices y rutas temporales actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import copy\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ingenieria_temporal_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict,\n", + " fechas_ancla_aprendidas: Dict = None,\n", + " topologia_dataset: str = 'Transversal' # 🔧 NUEVO: El Enrutador Topológico Maestro\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 9.2] Motor AutoML de Ingeniería Temporal y Cíclica.\n", + " - Sincronización MLOps: Protege el diccionario de rutas para Train y Test.\n", + " - Transformación Circular: Usa np.sin y np.cos para codificar variables cíclicas.\n", + " - Inteligencia Topológica (NUEVO): \n", + " Si es 'Transversal' -> Destruye la fecha original tras procesarla.\n", + " Si es 'Serie de Tiempo Pura' o 'Datos de Panel' -> Preserva la fecha original para la Fase de Rezagos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⏱️ FASE 9.2: Ingeniería Temporal y Trigonometría AutoML ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + "\n", + " # Usamos deepcopy para no alterar el diccionario original inadvertidamente\n", + " rutas_actualizadas = copy.deepcopy(rutas)\n", + "\n", + " # 🧠 INTELIGENCIA DE MEMORIA: En Train leemos las rutas, en Test leemos la memoria del Train\n", + " if fechas_ancla_aprendidas is None:\n", + " fechas_detectadas = rutas_actualizadas.get('date_vars', [])\n", + " else:\n", + " fechas_detectadas = list(fechas_ancla_aprendidas.keys())\n", + "\n", + " anclas_actuales = {} if fechas_ancla_aprendidas is None else fechas_ancla_aprendidas\n", + "\n", + " # 1. Bypass Inteligente (Escudo MLOps)\n", + " if not fechas_detectadas:\n", + " logger.info(\" ✅ [BYPASS] No se detectaron variables temporales para procesar.\")\n", + " logger.info(\" ⏩ La matriz permanece intacta. Avanzando al siguiente paso...\")\n", + " return X_trans, rutas_actualizadas, anclas_actuales\n", + "\n", + " # 🚀 DECISIÓN ESTRATÉGICA: ¿Destruir o Preservar?\n", + " preservar_fecha = topologia_dataset in ['Serie de Tiempo Pura', 'Datos de Panel']\n", + "\n", + " if fechas_ancla_aprendidas is None:\n", + " modo_str = f\"{topologia_dataset.upper()} (Preservando Fecha)\" if preservar_fecha else f\"{topologia_dataset.upper()} (Destruyendo Fecha)\"\n", + " logger.info(f\" 🚂 [TRAIN] Procesando {len(fechas_detectadas)} variables temporales. Modo: {modo_str}\")\n", + " else:\n", + " logger.info(f\" 🔒 [TEST] Aplicando transformaciones temporales (Sincronización exacta con Train)...\")\n", + "\n", + " nuevas_numericas = []\n", + "\n", + " # 2. Motor de Extracción y Transformación\n", + " for col in fechas_detectadas:\n", + " if col not in X_trans.columns:\n", + " logger.error(f\"🛑 [Desincronización Crítica] La columna '{col}' procesada en Train no existe en Test.\")\n", + " raise KeyError(f\"La columna '{col}' procesada en Train no existe en Test.\")\n", + "\n", + " X_trans[col] = pd.to_datetime(X_trans[col], errors='coerce')\n", + "\n", + " # A. Distancia Lineal MLOps (Antigüedad / Tendencia)\n", + " if fechas_ancla_aprendidas is None:\n", + " fecha_ancla = X_trans[col].max()\n", + " anclas_actuales[col] = fecha_ancla\n", + " else:\n", + " fecha_ancla = fechas_ancla_aprendidas[col]\n", + "\n", + " nombre_lineal = f\"{col}_antiguedad_dias\"\n", + " X_trans[nombre_lineal] = (fecha_ancla - X_trans[col]).dt.days\n", + " nuevas_numericas.append(nombre_lineal)\n", + "\n", + " # B. Extracción de Componentes\n", + " meses = X_trans[col].dt.month\n", + " dias_semana = X_trans[col].dt.dayofweek\n", + "\n", + " # C. Transformación Cíclica (Seno y Coseno)\n", + " nombre_mes_sin, nombre_mes_cos = f\"{col}_mes_sin\", f\"{col}_mes_cos\"\n", + " X_trans[nombre_mes_sin] = np.sin(2 * np.pi * meses / 12.0)\n", + " X_trans[nombre_mes_cos] = np.cos(2 * np.pi * meses / 12.0)\n", + "\n", + " nombre_dia_sin, nombre_dia_cos = f\"{col}_dia_semana_sin\", f\"{col}_dia_semana_cos\"\n", + " X_trans[nombre_dia_sin] = np.sin(2 * np.pi * dias_semana / 7.0)\n", + " X_trans[nombre_dia_cos] = np.cos(2 * np.pi * dias_semana / 7.0)\n", + "\n", + " nuevas_numericas.extend([nombre_mes_sin, nombre_mes_cos, nombre_dia_sin, nombre_dia_cos])\n", + "\n", + " # D. Inteligencia de Guillotina basada en la Topología\n", + " if not preservar_fecha:\n", + " X_trans.drop(columns=[col], inplace=True)\n", + " if fechas_ancla_aprendidas is None:\n", + " logger.info(f\" ⚙️ '{col}' descompuesta en 5 vectores matemáticos y ELIMINADA.\")\n", + " else:\n", + " if fechas_ancla_aprendidas is None:\n", + " logger.info(f\" ⚙️ '{col}' descompuesta en 5 vectores matemáticos y PRESERVADA intacta.\")\n", + "\n", + " # 3. Actualización Dinámica del Enrutamiento\n", + " if fechas_ancla_aprendidas is None:\n", + " if not preservar_fecha:\n", + " # Solo vaciamos la ruta de fechas si realmente la destruimos\n", + " rutas_actualizadas['date_vars'] = [] \n", + " rutas_actualizadas['num_vars'].extend(nuevas_numericas)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " estado_col = \"mantenidas vivas\" if preservar_fecha else \"eliminadas\"\n", + " logger.info(f\" 📊 Reporte: {len(fechas_detectadas)} columnas temporales procesadas y {estado_col}.\")\n", + " logger.info(f\" 📈 Inyectadas {len(nuevas_numericas)} nuevas variables puramente matemáticas.\")\n", + " logger.info(f\"\\n⏱️ Ingeniería Temporal completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas_actualizadas, anclas_actuales\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # ---------------------------------------------------------\n", + " # 🔗 AUTOWIRING MLOPS: Heredando Topología del Manager\n", + " # ---------------------------------------------------------\n", + " # Si la topología se calculó y guardó en rutas, la extraemos de ahí. Si no, asume Transversal.\n", + " TOPOLOGIA_GLOBAL = manager.rutas.get('reporte_topologia', {}).get('topologia', 'Transversal')\n", + "\n", + " logger.info(\"\\n>>> 🚂 ENTRENANDO INGENIERÍA TEMPORAL EN TRAIN <<<\")\n", + " X_train_temp, rutas_actualizadas, anclas_temporales = ingenieria_temporal_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL # <- Alimentación dinámica desde el Manager\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO INGENIERÍA TEMPORAL A TEST <<<\")\n", + " X_test_temp, _, _ = ingenieria_temporal_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " fechas_ancla_aprendidas=anclas_temporales,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL # <- Alimentación dinámica desde el Manager\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardar en la memoria del Manager de forma segura\n", + " manager.X_train = X_train_temp\n", + " manager.X_test = X_test_temp\n", + " manager.rutas = rutas_actualizadas # MLOps Tip: El enrutador ya se actualizó por dentro de la función Train\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('anclas_temporales', anclas_temporales)\n", + " else:\n", + " # Fallback en caso de que la API del manager difiera\n", + " if not hasattr(manager, 'artefactos') or manager.artefactos is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['anclas_temporales'] = anclas_temporales\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas temporales actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + " num_vars = manager.rutas['num_vars']\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Ingeniería Temporal: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 893.1 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 20 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + " 17 tiene_capital_gain 6508 non-null int8 \n", + " 18 tiene_capital_loss 6508 non-null int8 \n", + " 19 capital_neto 6508 non-null float64 \n", + "dtypes: category(7), float64(2), int16(1), int8(10)\n", + "memory usage: 225.9 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO MOTOR DE RATIOS EN TRAIN <<<\n", + "=== ➗ FASE 9.3: Generación de Ratios Matemáticos (Auto-Discovery Universal) ===\n", + " 🚂 [TRAIN] Escaneando topología para Auto-Descubrimiento de Ratios...\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_gain' / 'age'\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_gain' / 'hours_per_week'\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_loss' / 'age'\n", + " ✨ [Auto-Discovery] Pareja detectada: 'capital_loss' / 'hours_per_week'\n", + "\n", + " ⚙️ Ejecutando divisiones matemáticas con protección contra ceros...\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_hours_per_week'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_hours_per_week'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 4 ratios inyectados | 0 omitidos.\n", + " 🛡️ ESTATUS: Gradientes protegidos. 0% de valores infinitos garantizado.\n", + "\n", + "⏱️ Ingeniería de Ratios completada en 0.067s\n", + "\n", + ">>> 🔒 APLICANDO RECETA DE RATIOS A TEST <<<\n", + "=== ➗ FASE 9.3: Generación de Ratios Matemáticos (Auto-Discovery Universal) ===\n", + " 🔒 [TEST] Aplicando receta de ratios matemáticos estricta aprendida en Train...\n", + "\n", + " ⚙️ Ejecutando divisiones matemáticas con protección contra ceros...\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_gain_por_hours_per_week'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_age'\n", + " ⚖️ [Ratio Exitoso] Creada variable purgada: 'capital_loss_por_hours_per_week'\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 4 ratios inyectados | 0 omitidos.\n", + " 🛡️ ESTATUS: Gradientes protegidos. 0% de valores infinitos garantizado.\n", + "\n", + "⏱️ Ingeniería de Ratios completada en 0.013s\n", + "\n", + "📦 [MLOps] Matrices y rutas de ratios actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import re\n", + "from typing import Dict, List, Tuple\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def generar_ratios_negocio_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " operaciones_ratio_manuales: List[Tuple[str, str, str]] = None,\n", + " auto_discovery: bool = True,\n", + " receta_aprendida: List[Tuple[str, str, str]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, List[Tuple[str, str, str]]]:\n", + " \"\"\"\n", + " [FASE 3 - Paso 9.3] Motor AutoML de Ratios Matemáticos (Universal Multi-Dominio).\n", + " - Auto-Discovery NLP: Escanea nombres buscando magnitudes y divisores lógicos (Solo en Train).\n", + " - Muro MLOps: Test usa estrictamente la 'receta_aprendida' de Train para garantizar alineación de columnas.\n", + " - BLINDAJE LÉXICO: Ignora meta-variables (nulos, missing, etc.) y usa Regex para evitar falsos positivos.\n", + " - Blindaje Anti-Infinito: Detecta divisiones por cero y neutraliza.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ➗ FASE 9.3: Generación de Ratios Matemáticos (Auto-Discovery Universal) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + "\n", + " # 1. MLOps: Fit vs Transform (Alineación de Matrices)\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando receta de ratios matemáticos estricta aprendida en Train...\")\n", + " operaciones_finales = receta_aprendida\n", + " else:\n", + " logger.info(\" 🚂 [TRAIN] Escaneando topología para Auto-Descubrimiento de Ratios...\")\n", + " operaciones_finales = operaciones_ratio_manuales or []\n", + "\n", + " if auto_discovery:\n", + " cols_numericas = rutas.get('num_vars', X_trans.select_dtypes(include=['number']).columns.tolist())\n", + "\n", + " # ==========================================\n", + " # 🌐 EL CEREBRO LÉXICO UNIVERSAL MULTI-DOMINIO\n", + " # ==========================================\n", + " def construir_patron(palabra):\n", + " \"\"\"Crea un patrón Regex para capturar palabras exactas en snake_case o camelCase\"\"\"\n", + " return fr'(^{palabra}$|^{palabra}_|_{palabra}$|_{palabra}_|[a-z]{palabra.capitalize()})'\n", + "\n", + " # --- DICCIONARIO EXPANDIDO DE MAGNITUDES (NUMERADORES) ---\n", + " kw_numerador = [\n", + " # Finanzas y Ventas (Inglés/Español)\n", + " 'gain', 'ganancia', 'loss', 'perdida', 'pérdida', 'income', 'ingreso', 'ingresos', \n", + " 'revenue', 'cost', 'costo', 'amount', 'monto', 'cantidad', 'total', 'price', 'precio', \n", + " 'balance', 'saldo', 'sales', 'ventas', 'profit', 'beneficio', 'margin', 'margen', \n", + " 'debt', 'deuda', 'tax', 'impuesto', 'discount', 'descuento', 'budget', 'presupuesto', 'expense', 'gasto',\n", + " # Telemetría y Sistemas (Inglés/Español)\n", + " 'bytes', 'packets', 'paquetes', 'requests', 'peticiones', 'solicitudes', \n", + " 'errors', 'errores', 'traffic', 'trafico', 'tráfico', 'payload', 'carga',\n", + " # Salud y Biometría (Inglés/Español)\n", + " 'dosage', 'dosis', 'calories', 'calorias', 'calorías', 'cholesterol', 'colesterol', \n", + " 'glucose', 'glucosa', 'heart_rate', 'frecuencia_cardiaca', 'blood_pressure', 'presion_arterial',\n", + " # Física y Producción (Inglés/Español)\n", + " 'distance', 'distancia', 'weight', 'peso', 'production', 'produccion', 'producción', \n", + " 'volume', 'volumen', 'length', 'longitud', 'height', 'altura', 'mass', 'masa', \n", + " 'energy', 'energia', 'energía', 'power', 'potencia', 'yield', 'rendimiento', 'inventory', 'inventario'\n", + " ]\n", + "\n", + " # --- DICCIONARIO EXPANDIDO DE DIVISORES (DENOMINADORES) ---\n", + " kw_denominador = [\n", + " # Tiempo y Duración (Inglés/Español)\n", + " 'hour', 'hora', 'day', 'dia', 'día', 'month', 'mes', 'year', 'año', 'ano', \n", + " 'duration', 'duracion', 'duración', 'time', 'tiempo', 'seconds', 'segundos', \n", + " 'minutes', 'minutos', 'age', 'edad', 'week', 'semana', 'quarter', 'trimestre',\n", + " # Conteo y Capacidades (Inglés/Español)\n", + " 'qty', 'quantity', 'count', 'conteo', 'limit', 'limite', 'límite', \n", + " 'capacity', 'capacidad', 'size', 'tamaño', 'tamano',\n", + " # Entidades Per Cápita / Tasas (Inglés/Español)\n", + " 'users', 'usuarios', 'employees', 'empleados', 'visitors', 'visitantes', \n", + " 'sessions', 'sesiones', 'clicks', 'clics', 'customers', 'clientes', \n", + " 'accounts', 'cuentas', 'views', 'vistas', 'impressions', 'impresiones', \n", + " 'transactions', 'transacciones', 'members', 'miembros', 'population', 'poblacion', 'población', \n", + " 'area', 'área', 'capita'\n", + " ]\n", + "\n", + " # Compilación de Regex de alto rendimiento\n", + " patrones_numerador = [construir_patron(kw) for kw in kw_numerador]\n", + " patron_num_regex = re.compile('|'.join(patrones_numerador), re.IGNORECASE)\n", + "\n", + " patrones_denominador = [construir_patron(kw) for kw in kw_denominador]\n", + " patron_den_regex = re.compile('|'.join(patrones_denominador), re.IGNORECASE)\n", + "\n", + " kw_prohibidos = ['nulo', 'null', 'missing', 'tiene_']\n", + " cols_limpias = [c for c in cols_numericas if not any(prohibido in c.lower() for prohibido in kw_prohibidos)]\n", + "\n", + " # 🚀 APLICACIÓN DEL ESCUDO LÉXICO\n", + " nums_detectados = [c for c in cols_limpias if patron_num_regex.search(c)]\n", + " dens_detectados = [c for c in cols_limpias if patron_den_regex.search(c)]\n", + "\n", + " for num_col in nums_detectados:\n", + " for den_col in dens_detectados:\n", + " if num_col != den_col:\n", + " nuevo_nombre = f\"{num_col}_por_{den_col}\"\n", + " if not any(nuevo_nombre == t[0] for t in operaciones_finales):\n", + " operaciones_finales.append((nuevo_nombre, num_col, den_col))\n", + " logger.info(f\" ✨ [Auto-Discovery] Pareja detectada: '{num_col}' / '{den_col}'\")\n", + "\n", + " if not operaciones_finales:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron parejas lógicas ni ratios manuales. Avanzando...\")\n", + " return X_trans, rutas, []\n", + "\n", + " # ==========================================\n", + " # 2. Ejecución Matemática Protegida\n", + " # ==========================================\n", + " nuevas_numericas = []\n", + " ratios_creados = 0\n", + " ratios_fallidos = 0\n", + "\n", + " logger.info(\"\\n ⚙️ Ejecutando divisiones matemáticas con protección contra ceros...\")\n", + "\n", + " for nuevo_nombre, col_numerador, col_denominador in operaciones_finales:\n", + " if col_numerador not in X_trans.columns or col_denominador not in X_trans.columns:\n", + " ratios_fallidos += 1\n", + " continue\n", + "\n", + " numerador = X_trans[col_numerador].astype(float)\n", + " denominador = X_trans[col_denominador].astype(float)\n", + "\n", + " # Blindaje anti-infinito: Si el denominador es 0, el resultado es 0. \n", + " # Si no, se divide normal. Reemplazamos 0 por nan temporalmente para evitar el warning de Pandas\n", + " X_trans[nuevo_nombre] = np.where(\n", + " denominador == 0, \n", + " 0.0, \n", + " numerador / denominador.replace(0, np.nan)\n", + " )\n", + "\n", + " # Limpieza extra de seguridad\n", + " X_trans[nuevo_nombre] = X_trans[nuevo_nombre].replace([np.inf, -np.inf], 0.0)\n", + " nuevas_numericas.append(nuevo_nombre)\n", + " ratios_creados += 1\n", + " logger.info(f\" ⚖️ [Ratio Exitoso] Creada variable purgada: '{nuevo_nombre}'\")\n", + "\n", + " # MLOPS TIP: Actualizamos las rutas SOLO en la ejecución de Train (la primera vez)\n", + " if receta_aprendida is None and nuevas_numericas:\n", + " rutas['num_vars'].extend(nuevas_numericas)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 📊 Reporte: {ratios_creados} ratios inyectados | {ratios_fallidos} omitidos.\")\n", + " if ratios_creados > 0:\n", + " logger.info(\" 🛡️ ESTATUS: Gradientes protegidos. 0% de valores infinitos garantizado.\")\n", + " logger.info(f\"\\n⏱️ Ingeniería de Ratios completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, operaciones_finales\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO MOTOR DE RATIOS EN TRAIN <<<\")\n", + " X_train_ratio, rutas_actualizadas, receta_ratios_train = generar_ratios_negocio_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " auto_discovery=True\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO RECETA DE RATIOS A TEST <<<\")\n", + " X_test_ratio, _, _ = generar_ratios_negocio_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " auto_discovery=False, # Bloqueamos el cerebro léxico en Test\n", + " receta_aprendida=receta_ratios_train # Forzamos la receta de Train\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos en la memoria del Manager\n", + " manager.X_train = X_train_ratio\n", + " manager.X_test = X_test_ratio\n", + " manager.rutas = rutas_actualizadas # La función Train ya inyectó las nuevas num_vars en las rutas\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_ratios_train', receta_ratios_train)\n", + " else:\n", + " # Fallback en caso de que la API del manager difiera\n", + " if not hasattr(manager, 'artefactos') or manager.artefactos is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_ratios_train'] = receta_ratios_train\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas de ratios actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + " num_vars = manager.rutas['num_vars']\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Ingeniería de Ratios: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null category\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null category\n", + " 4 occupation 24551 non-null category\n", + " 5 relationship 26029 non-null category\n", + " 6 race 26029 non-null category\n", + " 7 sex 26029 non-null category\n", + " 8 capital_gain 25899 non-null float64 \n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null category\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 25899 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 25899 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + "dtypes: category(7), float64(6), int16(1), int8(10)\n", + "memory usage: 1.7 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null int8 \n", + " 1 workclass 6144 non-null category\n", + " 2 education_num 6508 non-null int8 \n", + " 3 marital_status 6508 non-null category\n", + " 4 occupation 6143 non-null category\n", + " 5 relationship 6508 non-null category\n", + " 6 race 6508 non-null category\n", + " 7 sex 6508 non-null category\n", + " 8 capital_gain 6479 non-null float64 \n", + " 9 capital_loss 6508 non-null int16 \n", + " 10 hours_per_week 6508 non-null int8 \n", + " 11 native_country 6395 non-null category\n", + " 12 is_missing_workclass 6508 non-null int8 \n", + " 13 is_missing_occupation 6508 non-null int8 \n", + " 14 is_missing_capital_gain 6508 non-null int8 \n", + " 15 is_missing_native_country 6508 non-null int8 \n", + " 16 total_nulos_en_fila 6508 non-null int8 \n", + " 17 tiene_capital_gain 6508 non-null int8 \n", + " 18 tiene_capital_loss 6508 non-null int8 \n", + " 19 capital_neto 6508 non-null float64 \n", + " 20 capital_gain_por_age 6479 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 6479 non-null float64 \n", + " 22 capital_loss_por_age 6508 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64 \n", + "dtypes: category(7), float64(6), int16(1), int8(10)\n", + "memory usage: 429.3 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== FASE 10.1: Mapeo binario estricto ===\n", + "Codificacion binaria completada en 0.023s. Columnas=1\n", + "=== FASE 10.1: Mapeo binario estricto ===\n", + "Codificacion binaria completada en 0.003s. Columnas=1\n", + "PipelineManager actualizado con reglas binarias consistentes.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetria\n", + "# ==========================================\n", + "import logging\n", + "import time\n", + "from typing import Dict, Tuple\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "\n", + "def _validar_X_binario(X: pd.DataFrame) -> None:\n", + " if X is None or X.empty:\n", + " raise ValueError('La matriz predictora (X) esta vacia.')\n", + "\n", + "\n", + "def _clonar_rutas(rutas: Dict = None) -> Dict:\n", + " rutas = dict(rutas or {})\n", + " rutas['num_vars'] = list(rutas.get('num_vars', []))\n", + " rutas['cat_vars'] = list(rutas.get('cat_vars', []))\n", + " rutas['bool_vars'] = list(rutas.get('bool_vars', []))\n", + " return rutas\n", + "\n", + "\n", + "def _ya_es_binaria(serie: pd.Series, es_bool: bool) -> bool:\n", + " if es_bool or not pd.api.types.is_numeric_dtype(serie):\n", + " return False\n", + " return set(serie.dropna().unique()).issubset({0, 1, 0.0, 1.0})\n", + "\n", + "\n", + "def _construir_mapa(serie: pd.Series, es_bool: bool) -> Dict:\n", + " if es_bool:\n", + " return {False: 0, True: 1}\n", + " valores = sorted(list(serie.dropna().unique()))\n", + " return {valores[0]: 0, valores[1]: 1}\n", + "\n", + "\n", + "def _target_key(y: pd.Series) -> str:\n", + " return f\"TARGET_{y.name or 'target'}\"\n", + "\n", + "\n", + "def mapeo_binario_automl(\n", + " X: pd.DataFrame,\n", + " y: pd.Series = None,\n", + " rutas: Dict = None,\n", + " mapeos_aprendidos: Dict = None,\n", + ") -> Tuple[pd.DataFrame, pd.Series, Dict, Dict]:\n", + " _validar_X_binario(X)\n", + " inicio = time.time()\n", + " logger.info('=== FASE 10.1: Mapeo binario estricto ===')\n", + "\n", + " X_out = X.copy()\n", + " y_out = y.copy() if y is not None else None\n", + " rutas_out = _clonar_rutas(rutas)\n", + " mapeos = dict(mapeos_aprendidos or {})\n", + " columnas_transformadas = 0\n", + "\n", + " if mapeos_aprendidos is None:\n", + " for columna in X_out.columns:\n", + " if 'is_missing' in columna:\n", + " continue\n", + "\n", + " serie = X_out[columna]\n", + " es_bool = pd.api.types.is_bool_dtype(serie)\n", + " if _ya_es_binaria(serie, es_bool):\n", + " continue\n", + " if not (es_bool or serie.dropna().nunique() == 2):\n", + " continue\n", + "\n", + " mapa = _construir_mapa(serie, es_bool)\n", + " X_out[columna] = serie.map(mapa).astype('Int8')\n", + " mapeos[columna] = mapa\n", + " columnas_transformadas += 1\n", + " if columna in rutas_out['cat_vars']:\n", + " rutas_out['cat_vars'].remove(columna)\n", + " if columna not in rutas_out['bool_vars']:\n", + " rutas_out['bool_vars'].append(columna)\n", + " else:\n", + " for columna, mapa in mapeos.items():\n", + " if columna.startswith('TARGET_') or columna not in X_out.columns:\n", + " continue\n", + " X_out[columna] = X_out[columna].map(mapa).astype('Int8')\n", + " columnas_transformadas += 1\n", + "\n", + " if y_out is not None:\n", + " clave_target = _target_key(y_out)\n", + " if mapeos_aprendidos is None and not pd.api.types.is_numeric_dtype(y_out) and y_out.nunique() == 2:\n", + " valores = sorted(list(y_out.unique()))\n", + " mapeos[clave_target] = {valores[0]: 0, valores[1]: 1}\n", + " if clave_target in mapeos:\n", + " y_out = y_out.map(mapeos[clave_target]).astype(np.int8)\n", + "\n", + " logger.info('Codificacion binaria completada en %.3fs. Columnas=%s', time.time() - inicio, columnas_transformadas)\n", + " return X_out, y_out, rutas_out, mapeos\n", + "\n", + "\n", + "def _guardar_reglas_binarias(manager_obj, reglas_binarias: Dict) -> None:\n", + " if hasattr(manager_obj, 'guardar_artefacto'):\n", + " manager_obj.guardar_artefacto('reglas_binarias', reglas_binarias)\n", + " return\n", + " if getattr(manager_obj, 'artefactos', None) is None:\n", + " manager_obj.artefactos = {}\n", + " manager_obj.artefactos['reglas_binarias'] = reglas_binarias\n", + "\n", + "\n", + "try:\n", + " try:\n", + " _ = manager\n", + " except NameError as exc:\n", + " raise EnvironmentError('El PipelineManager no esta inicializado. Ejecuta la Ingesta primero.') from exc\n", + "\n", + " if any(getattr(manager, attr, None) is None for attr in ('X_train', 'X_test', 'y_train', 'y_test')):\n", + " raise ValueError('El Manager no tiene cargadas todas las matrices Train/Test completas.')\n", + " if not getattr(manager, 'rutas', None):\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'.\")\n", + "\n", + " X_train_bin, y_train_bin, rutas_actualizadas, reglas_binarias = mapeo_binario_automl(manager.X_train, manager.y_train, manager.rutas)\n", + " X_test_bin, y_test_bin, _, _ = mapeo_binario_automl(manager.X_test, manager.y_test, manager.rutas, reglas_binarias)\n", + "\n", + " manager.X_train = X_train_bin\n", + " manager.y_train = y_train_bin\n", + " manager.X_test = X_test_bin\n", + " manager.y_test = y_test_bin\n", + " manager.rutas = rutas_actualizadas\n", + " _guardar_reglas_binarias(manager, reglas_binarias)\n", + "\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " y_test = manager.y_test\n", + " rutas_variables = manager.rutas\n", + " logger.info('PipelineManager actualizado con reglas binarias consistentes.')\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"Dependencia faltante:\\n{env_err}\")\n", + "except Exception as exc:\n", + " logger.error(f\"Error en la codificacion binaria: {exc}\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN10never-marriedNaNown-childwhite10.00...002000.00.000000.00.0000000.00
141private11married-civ-spousesaleshusbandwhite14386.00...000104386.0106.9756173.10.0000000.00
224private9never-marriedhandlers-cleanersunmarriedblack00.00...000000.00.000000.00.0000000.00
359private9widowedprof-specialtynot-in-familywhite00.00...000000.00.000000.00.0000000.00
435private9married-civ-spousesaleshusbandasian-pac-islander10.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss ... \\\n", + "0 own-child white 1 0.0 0 ... \n", + "1 husband white 1 4386.0 0 ... \n", + "2 unmarried black 0 0.0 0 ... \n", + "3 not-in-family white 0 0.0 0 ... \n", + "4 husband asian-pac-islander 1 0.0 1887 ... \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0 0.0 0.00000 \n", + "1 1 0 4386.0 106.97561 \n", + "2 0 0 0.0 0.00000 \n", + "3 0 0 0.0 0.00000 \n", + "4 0 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
039self-emp-inc10divorcedcraft-repairnot-in-familywhite10.00...000000.00.00.00.00.0
135private13married-civ-spouseadm-clericalhusbandwhite10.00...000000.00.00.00.00.0
231private13married-civ-spouseprof-specialtyhusbandwhite10.00...000000.00.00.00.00.0
367self-emp-inc13widowedother-serviceunmarriedwhite00.00...000000.00.00.00.00.0
456self-emp-not-inc9married-spouse-absentexec-managerialnot-in-familywhite10.00...000000.00.00.00.00.0
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status \\\n", + "0 39 self-emp-inc 10 divorced \n", + "1 35 private 13 married-civ-spouse \n", + "2 31 private 13 married-civ-spouse \n", + "3 67 self-emp-inc 13 widowed \n", + "4 56 self-emp-not-inc 9 married-spouse-absent \n", + "\n", + " occupation relationship race sex capital_gain capital_loss \\\n", + "0 craft-repair not-in-family white 1 0.0 0 \n", + "1 adm-clerical husband white 1 0.0 0 \n", + "2 prof-specialty husband white 1 0.0 0 \n", + "3 other-service unmarried white 0 0.0 0 \n", + "4 exec-managerial not-in-family white 1 0.0 0 \n", + "\n", + " ... is_missing_capital_gain is_missing_native_country \\\n", + "0 ... 0 0 \n", + "1 ... 0 0 \n", + "2 ... 0 0 \n", + "3 ... 0 0 \n", + "4 ... 0 0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 0 0 0 0.0 \n", + "1 0 0 0 0.0 \n", + "2 0 0 0 0.0 \n", + "3 0 0 0 0.0 \n", + "4 0 0 0 0.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week \n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + ">>> 🚂 ENTRENANDO TARGET MULTICLASE <<<\n", + "=== 🎯 FASE 10.2: Codificador de Target [TRAIN] ===\n", + " ✅ [BYPASS] El Target ya es numérico. No requiere codificación.\n", + "\n", + ">>> 🔒 APLICANDO A TEST <<<\n", + "=== 🎯 FASE 10.2: Codificador de Target [TEST] ===\n", + " ✅ [BYPASS TEST] Diccionario vacío heredado. El Target se mantiene intacto.\n", + "\n", + "📦 [MLOps] Vectores objetivo (y_train, y_test) codificados y actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, List\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def codificador_target_multiclase(\n", + " y: pd.Series, \n", + " modo: str = 'train',\n", + " mapa_aprendido: Dict = None,\n", + " jerarquia_ordinal: List[str] = None\n", + ") -> Tuple[pd.Series, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.2] Motor AutoML de Codificación de Target Multiclase y Binario.\n", + " - Inteligencia: Procesa perfectamente tanto targets Binarios (2 clases) como Multiclase (>2).\n", + " - Modalidad Nominal: Asigna 0, 1, 2... alfabéticamente si no hay orden.\n", + " - Modalidad Ordinal: Respeta una lista estricta proporcionada por el Arquitecto.\n", + " - Muro MLOps: Aprende en 'train' y aplica de forma estricta en 'test'.\n", + " \"\"\"\n", + " if y is None or y.empty:\n", + " logger.error(\"🛑 Error Crítico: El vector objetivo (y) está vacío.\")\n", + " raise ValueError(\"El vector objetivo (y) está vacío.\")\n", + "\n", + " logger.info(f\"=== 🎯 FASE 10.2: Codificador de Target [{modo.upper()}] ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " y_trans = y.copy()\n", + "\n", + " # Bypass Inteligente: Si el target ya es numérico, no lo tocamos.\n", + " if pd.api.types.is_numeric_dtype(y_trans):\n", + " if modo == 'train':\n", + " logger.info(\" ✅ [BYPASS] El Target ya es numérico. No requiere codificación.\")\n", + " return y_trans.astype(np.int8), {}\n", + " elif modo == 'test' and not mapa_aprendido:\n", + " logger.info(\" ✅ [BYPASS TEST] Diccionario vacío heredado. El Target se mantiene intacto.\")\n", + " return y_trans.astype(np.int8), {}\n", + "\n", + " # ==========================================\n", + " # 1. MODO TRAIN (Aprendizaje de la Receta)\n", + " # ==========================================\n", + " if modo == 'train':\n", + " valores_unicos = y_trans.dropna().unique()\n", + "\n", + " # 🚀 FIX MLOps: Manejo universal Binario/Multiclase\n", + " if len(valores_unicos) <= 2:\n", + " logger.info(f\" 💡 [INFO] Target BINARIO detectado ({len(valores_unicos)} clases). Codificando a 0 y 1.\")\n", + " else:\n", + " logger.info(f\" 💡 [INFO] Target MULTICLASE detectado ({len(valores_unicos)} clases).\")\n", + "\n", + " # Opción A: El Arquitecto definió un orden (Ordinal)\n", + " if jerarquia_ordinal:\n", + " logger.info(\" 🧠 [MODO ORDINAL] Aplicando jerarquía estricta del Arquitecto...\")\n", + " # Validar que todos los valores del dataset existan en la lista del Arquitecto\n", + " faltantes = set(valores_unicos) - set(jerarquia_ordinal)\n", + " if faltantes:\n", + " logger.error(f\"🛑 Error: La jerarquía no incluye estas clases encontradas en los datos: {faltantes}\")\n", + " raise ValueError(f\"La jerarquía no incluye estas clases encontradas en los datos: {faltantes}\")\n", + "\n", + " mapa_target = {clase: idx for idx, clase in enumerate(jerarquia_ordinal)}\n", + "\n", + " # Opción B: Automático Alfabético (Nominal)\n", + " else:\n", + " logger.info(\" 🤖 [MODO NOMINAL] Generando mapeo alfabético automático...\")\n", + " valores_ordenados = sorted(list(valores_unicos))\n", + " mapa_target = {clase: idx for idx, clase in enumerate(valores_ordenados)}\n", + "\n", + " # Aplicamos la transformación\n", + " y_trans = y_trans.map(mapa_target).astype(np.int8)\n", + " logger.info(f\" 💾 Diccionario de Mapeo Creado: {mapa_target}\")\n", + " logger.info(f\"⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return y_trans, mapa_target\n", + "\n", + " # ==========================================\n", + " # 2. MODO TEST (Aplicación Estricta)\n", + " # ==========================================\n", + " elif modo == 'test':\n", + " if mapa_aprendido is None:\n", + " logger.error(\"🛑 Error: En modo 'test' debes proporcionar el 'mapa_aprendido' de la fase Train.\")\n", + " raise ValueError(\"En modo 'test' debes proporcionar el 'mapa_aprendido' de la fase Train.\")\n", + "\n", + " if mapa_aprendido == {}:\n", + " logger.info(\" ✅ [BYPASS TEST] Diccionario vacío heredado. El Target se mantiene intacto.\")\n", + " return y_trans, {}\n", + "\n", + " # Verificación de clases fantasma en Test (clases que no existían en Train)\n", + " clases_test = set(y_trans.dropna().unique())\n", + " clases_train = set(mapa_aprendido.keys())\n", + " clases_fantasma = clases_test - clases_train\n", + "\n", + " if clases_fantasma:\n", + " logger.warning(f\" 🚨 [ALERTA MLOPS] Se detectaron clases en TEST que no existían en TRAIN: {clases_fantasma}\")\n", + " logger.warning(\" ↳ Se asignará el valor especial -1 a estas clases desconocidas.\")\n", + "\n", + " # Agregamos los fantasmas al mapa con valor -1 para que no se rompa el código\n", + " for fantasma in clases_fantasma:\n", + " mapa_aprendido[fantasma] = -1\n", + "\n", + " y_trans = y_trans.map(mapa_aprendido).astype(np.int8)\n", + " logger.info(f\" 🔒 Replicando diccionario de Train en Test: {mapa_aprendido}\")\n", + " logger.info(f\"⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return y_trans, mapa_aprendido\n", + "\n", + " else:\n", + " logger.error(\"🛑 El modo debe ser 'train' o 'test'.\")\n", + " raise ValueError(\"El modo debe ser 'train' o 'test'.\")\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'y_train', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargados los vectores 'y_train' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # 🛑 SWITCH DEL ARQUITECTO\n", + " # Si tu target tiene un orden lógico (ej. 'Bajo', 'Medio', 'Alto'), escríbelo aquí en orden.\n", + " # Si no tiene orden (ej. 'Perro', 'Gato', 'Pájaro'), déjalo como None.\n", + " MI_JERARQUIA_TARGET = None \n", + " # Ejemplo de uso: MI_JERARQUIA_TARGET = ['Riesgo Bajo', 'Riesgo Medio', 'Riesgo Alto']\n", + "\n", + " logger.info(\"\\n>>> 🚂 ENTRENANDO TARGET MULTICLASE <<<\")\n", + " y_train_mc, diccionario_target_maestro = codificador_target_multiclase(\n", + " y=manager.y_train, \n", + " modo='train',\n", + " jerarquia_ordinal=MI_JERARQUIA_TARGET\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO A TEST <<<\")\n", + " y_test_mc, _ = codificador_target_multiclase(\n", + " y=manager.y_test, \n", + " modo='test',\n", + " mapa_aprendido=diccionario_target_maestro\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.y_train = y_train_mc\n", + " manager.y_test = y_test_mc\n", + " \n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('diccionario_target_maestro', diccionario_target_maestro)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['diccionario_target_maestro'] = diccionario_target_maestro\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Vectores objetivo (y_train, y_test) codificados y actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " y_train = manager.y_train\n", + " y_test = manager.y_test\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el codificador de Target: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 1\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 0\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN10never-marriedNaNown-childwhite10.00...002000.00.000000.00.0000000.00
141private11married-civ-spousesaleshusbandwhite14386.00...000104386.0106.9756173.10.0000000.00
224private9never-marriedhandlers-cleanersunmarriedblack00.00...000000.00.000000.00.0000000.00
359private9widowedprof-specialtynot-in-familywhite00.00...000000.00.000000.00.0000000.00
435private9married-civ-spousesaleshusbandasian-pac-islander10.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss ... \\\n", + "0 own-child white 1 0.0 0 ... \n", + "1 husband white 1 4386.0 0 ... \n", + "2 unmarried black 0 0.0 0 ... \n", + "3 not-in-family white 0 0.0 0 ... \n", + "4 husband asian-pac-islander 1 0.0 1887 ... \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0 0.0 0.00000 \n", + "1 1 0 4386.0 106.97561 \n", + "2 0 0 0.0 0.00000 \n", + "3 0 0 0.0 0.00000 \n", + "4 0 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO MOTOR ORDINAL EN TRAIN <<<\n", + "=== 📶 FASE 10.3: Codificación Ordinal Jerárquica (Motor Híbrido) ===\n", + " 🚂 [TRAIN] Buscando jerarquías de negocio y fusionando manuales...\n", + "\n", + " ⚙️ Aplicando mapeo explícito de enteros...\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 0 características transformadas exitosamente.\n", + "\n", + "⏱️ Codificación Ordinal completada en 0.057s\n", + "\n", + ">>> 🔒 APLICANDO RECETA ORDINAL A TEST <<<\n", + "=== 📶 FASE 10.3: Codificación Ordinal Jerárquica (Motor Híbrido) ===\n", + " 🔒 [TEST] Aplicando jerarquías estrictas aprendidas en Train...\n", + "\n", + " ⚙️ Aplicando mapeo explícito de enteros...\n", + "--------------------------------------------------------------------------------\n", + " 📊 Reporte: 0 características transformadas exitosamente.\n", + "\n", + "⏱️ Codificación Ordinal completada en 0.003s\n", + "\n", + "📦 [MLOps] Matrices, rutas y diccionario ordinal actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def codificacion_ordinal_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " diccionarios_manuales: Dict[str, Dict[str, int]] = None,\n", + " receta_aprendida: Dict[str, Dict[str, int]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.3] Motor AutoML de Codificación Ordinal.\n", + " - Híbrido MLOps: En Train combina manual + auto-discovery. En Test solo aplica receta.\n", + " - Preservación de Nulos: Usa .map() puro, garantizando que los NaNs sigan siendo NaNs.\n", + " - MLOps State: Retorna el artefacto de traducción para el despliegue en Producción.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz predictora (X) está vacía.\")\n", + " raise ValueError(\"La matriz predictora (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 📶 FASE 10.3: Codificación Ordinal Jerárquica (Motor Híbrido) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': []}\n", + " columnas_transformadas = 0\n", + "\n", + " # ==========================================\n", + " # 1. El Cerebro NLP y Mapeo MLOps (Fit vs Transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando jerarquías estrictas aprendidas en Train...\")\n", + " diccionarios_finales = receta_aprendida\n", + " else:\n", + " logger.info(\" 🚂 [TRAIN] Buscando jerarquías de negocio y fusionando manuales...\")\n", + " diccionarios_finales = diccionarios_manuales or {}\n", + "\n", + " columnas_texto = [col for col in X_trans.columns if col in rutas.get('cat_vars', X_trans.select_dtypes(include=['object', 'category']).columns)]\n", + "\n", + " jerarquias_universales = {\n", + " 'niveles_basicos': {'low': 1, 'medium': 2, 'high': 3},\n", + " 'tallas_ropa': {'s': 1, 'm': 2, 'l': 3, 'xl': 4, 'xxl': 5},\n", + " 'calidad': {'bad': 1, 'poor': 2, 'fair': 3, 'good': 4, 'excellent': 5}\n", + " }\n", + "\n", + " for col in columnas_texto:\n", + " if col in diccionarios_finales:\n", + " continue\n", + "\n", + " valores_unicos = set(X_trans[col].dropna().astype(str).str.lower())\n", + "\n", + " for nombre_jerarquia, diccionario_nlp in jerarquias_universales.items():\n", + " claves_nlp = set(diccionario_nlp.keys())\n", + " interseccion = valores_unicos.intersection(claves_nlp)\n", + "\n", + " if len(valores_unicos) > 0 and len(interseccion) / len(valores_unicos) >= 0.8:\n", + " mapa_auto = {}\n", + " for val_real in X_trans[col].dropna().unique():\n", + " val_lower = str(val_real).lower()\n", + " if val_lower in diccionario_nlp:\n", + " mapa_auto[val_real] = diccionario_nlp[val_lower]\n", + "\n", + " diccionarios_finales[col] = mapa_auto\n", + " logger.info(f\" ✨ [Auto-Discovery] Detectada jerarquía '{nombre_jerarquia}' en '{col}'.\")\n", + " break\n", + "\n", + " # ==========================================\n", + " # 2. Motor de Traducción Blindada\n", + " # ==========================================\n", + " if not diccionarios_finales:\n", + " logger.info(\" ✅ [BYPASS] No se definieron jerarquías manuales ni se auto-detectaron patrones universales.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(\"\\n ⚙️ Aplicando mapeo explícito de enteros...\")\n", + "\n", + " for col, mapa in diccionarios_finales.items():\n", + " if col in X_trans.columns:\n", + " # .map() reemplaza por NaN todo lo que no esté en el diccionario\n", + " X_trans[col] = X_trans[col].map(mapa)\n", + "\n", + " # Casteamos a float temporalmente para soportar los NaNs en Pandas\n", + " X_trans[col] = X_trans[col].astype(float)\n", + "\n", + " columnas_transformadas += 1\n", + " logger.info(f\" 🔄 [Codificado] '{col}' convertida a enteros secuenciales.\")\n", + "\n", + " # Actualizamos rutas SOLO la primera vez (en Train)\n", + " if receta_aprendida is None:\n", + " if col in rutas.get('cat_vars', []):\n", + " rutas['cat_vars'].remove(col)\n", + " if col not in rutas.get('num_vars', []):\n", + " rutas['num_vars'].append(col)\n", + "\n", + " # ==========================================\n", + " # 3. Reporte Ejecutivo MLOps\n", + " # ==========================================\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 📊 Reporte: {columnas_transformadas} características transformadas exitosamente.\")\n", + " logger.info(f\"\\n⏱️ Codificación Ordinal completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, diccionarios_finales\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 💡 Lógica de Negocio (Domain Knowledge) inyectada por el Arquitecto\n", + " mis_jerarquias = {\n", + " 'recsupervisionleveltext': {\n", + " 'Low': 1, 'Medium': 2, 'High': 3, 'Very High': 4\n", + " }\n", + " }\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO MOTOR ORDINAL EN TRAIN <<<\")\n", + " X_train_ord, rutas_actualizadas, receta_ordinal = codificacion_ordinal_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " diccionarios_manuales=mis_jerarquias\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO RECETA ORDINAL A TEST <<<\")\n", + " X_test_ord, _, _ = codificacion_ordinal_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_ordinal # El puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_ord\n", + " manager.X_test = X_test_ord\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_ordinal', receta_ordinal)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_ordinal'] = receta_ordinal\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y diccionario ordinal actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Codificación Ordinal: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN10never-marriedNaNown-childwhite10.00...002000.00.000000.00.0000000.00
141private11married-civ-spousesaleshusbandwhite14386.00...000104386.0106.9756173.10.0000000.00
224private9never-marriedhandlers-cleanersunmarriedblack00.00...000000.00.000000.00.0000000.00
359private9widowedprof-specialtynot-in-familywhite00.00...000000.00.000000.00.0000000.00
435private9married-civ-spousesaleshusbandasian-pac-islander10.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation \\\n", + "0 21 NaN 10 never-married NaN \n", + "1 41 private 11 married-civ-spouse sales \n", + "2 24 private 9 never-married handlers-cleaners \n", + "3 59 private 9 widowed prof-specialty \n", + "4 35 private 9 married-civ-spouse sales \n", + "\n", + " relationship race sex capital_gain capital_loss ... \\\n", + "0 own-child white 1 0.0 0 ... \n", + "1 husband white 1 4386.0 0 ... \n", + "2 unmarried black 0 0.0 0 ... \n", + "3 not-in-family white 0 0.0 0 ... \n", + "4 husband asian-pac-islander 1 0.0 1887 ... \n", + "\n", + " is_missing_capital_gain is_missing_native_country total_nulos_en_fila \\\n", + "0 0 0 2 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_gain tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0 0.0 0.00000 \n", + "1 1 0 4386.0 106.97561 \n", + "2 0 0 0.0 0.00000 \n", + "3 0 0 0.0 0.00000 \n", + "4 0 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 74, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🎯 MODO SELECCIONADO: TARGET ENCODING <<<\n", + ">>> 🚂 ENTRENANDO TARGET ENCODER EN TRAIN <<<\n", + "=== 🎯 FASE 10.4: Target Encoding Universal (OOF + Bayesiano) ===\n", + " 🧠 [AUTO-DETECCIÓN] Target Binario Numérico detectado.\n", + "\n", + " 🚂 [TRAIN] Procesando 6 variables con alta cardinalidad: ['workclass', 'marital_status', 'occupation', 'relationship', 'race', 'native_country']...\n", + " 🔄 [Encoded] 'workclass' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'marital_status' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'occupation' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'relationship' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'race' (Media global: 0.2409)\n", + " 🔄 [Encoded] 'native_country' (Media global: 0.2409)\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Prevención de Fuga de Datos (OOF) aplicada exitosamente.\n", + "\n", + "⏱️ Target Encoding completado en 0.205s\n", + "\n", + ">>> 🔒 APLICANDO TARGET ENCODER A TEST <<<\n", + "=== 🎯 FASE 10.4: Target Encoding Universal (OOF + Bayesiano) ===\n", + " 🔒 [TEST] Aplicando probabilidades Bayesianas aprendidas de Train...\n", + "\n", + "⏱️ Target Encoding completado en 0.008s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura. Artefacto 'receta_target_encoding' guardado en PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "from sklearn.model_selection import KFold\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# MOTOR 1: TARGET ENCODING\n", + "# ==========================================\n", + "def target_encoding_oof_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None, \n", + " m_suavizado: float = 10.0,\n", + " n_splits: int = 5,\n", + " receta_aprendida: Dict = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.4] Motor AutoML de Target Encoding (Universal Multi-Clase + OOF).\n", + " - Auto-Detección: Soporta Target Binario (1 prob/col) o Multiclase (N probs/col).\n", + " - Muro MLOps: En Train calcula medias y guarda receta. En Test solo aplica receta.\n", + " - FIX MLOps: Ignora el Index temporalmente para evadir el error de \"duplicate labels\".\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🎯 FASE 10.4: Target Encoding Universal (OOF + Bayesiano) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 🚀 FIX PANDAS: Guardamos el Index original y lo ignoramos (reset_index) para la matemática\n", + " original_index = X_trans.index\n", + " X_trans = X_trans.reset_index(drop=True)\n", + " if y is not None:\n", + " y = y.reset_index(drop=True)\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando probabilidades Bayesianas aprendidas de Train...\")\n", + "\n", + " for col_original, config_encoding in receta_aprendida.items():\n", + " if col_original not in X_trans.columns: continue\n", + "\n", + " for nombre_clase, diccionario_mapeo in config_encoding.items():\n", + " \n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Inmutabilidad (Clean Code)\n", + " # Reemplazamos .pop() por .get() para no destruir la RAM.\n", + " # Creamos un mapa puro al vuelo sin ifs anidados.\n", + " # ==========================================\n", + " media_global_train = diccionario_mapeo.get('__GLOBAL_MEAN__', 0.0)\n", + " mapa_puro = {k: v for k, v in diccionario_mapeo.items() if k != '__GLOBAL_MEAN__'}\n", + " \n", + " nueva_col_nombre = col_original if len(config_encoding) == 1 else f\"{col_original}_prob_{nombre_clase}\"\n", + "\n", + " mask_nan = X_trans[col_original].isna()\n", + " # Aplicamos map() exclusivamente usando el mapa puro\n", + " X_trans[nueva_col_nombre] = X_trans[col_original].astype(object).map(mapa_puro).fillna(media_global_train)\n", + " X_trans.loc[mask_nan, nueva_col_nombre] = np.nan\n", + "\n", + " if len(config_encoding) > 1:\n", + " X_trans.drop(columns=[col_original], inplace=True)\n", + "\n", + " logger.info(f\"\\n⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None: \n", + " logger.error(\"🛑 Error: Train requiere la variable objetivo 'y'.\")\n", + " raise ValueError(\"Train requiere la variable objetivo 'y'.\")\n", + "\n", + " # --- AUTO-DETECCIÓN DEL TIPO DE TARGET ---\n", + " valores_target = y.dropna().unique()\n", + " es_multiclase = len(valores_target) > 2 or not pd.api.types.is_numeric_dtype(y)\n", + "\n", + " targets_a_procesar = {}\n", + " if es_multiclase:\n", + " logger.info(f\" 🧠 [AUTO-DETECCIÓN] Target Multiclase detectado ({len(valores_target)} categorías).\")\n", + " for clase in valores_target:\n", + " targets_a_procesar[clase] = (y == clase).astype(float)\n", + " else:\n", + " logger.info(f\" 🧠 [AUTO-DETECCIÓN] Target Binario Numérico detectado.\")\n", + " targets_a_procesar['Target_Directo'] = y.copy().astype(float)\n", + "\n", + " diccionario_produccion = {}\n", + "\n", + " cols_a_codificar = []\n", + "\n", + " # --- FILTRO SILENCIOSO DE VARIABLES ---\n", + " for c in X_trans.columns:\n", + " if c.startswith('TARGET_'): continue\n", + "\n", + " n_unicos = X_trans[c].dropna().nunique()\n", + " es_numerica = pd.api.types.is_numeric_dtype(X_trans[c])\n", + " es_categoria_pura = c in rutas.get('cat_vars', []) or pd.api.types.is_object_dtype(X_trans[c]) or pd.api.types.is_categorical_dtype(X_trans[c])\n", + "\n", + " # Solo pasa el filtro si es categórica pura, no es numérica y tiene más de 2 categorías\n", + " if es_categoria_pura and n_unicos > 2 and not es_numerica:\n", + " cols_a_codificar.append(c)\n", + "\n", + " if not cols_a_codificar:\n", + " logger.info(\"\\n ✅ [BYPASS] No hay variables categóricas de alta cardinalidad para Target Encoding.\")\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\"\\n 🚂 [TRAIN] Procesando {len(cols_a_codificar)} variables con alta cardinalidad: {cols_a_codificar}...\")\n", + " kf = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + "\n", + " for col in cols_a_codificar:\n", + " diccionario_produccion[col] = {}\n", + " X_trans[col] = X_trans[col].astype(object)\n", + "\n", + " for nombre_clase, y_clase in targets_a_procesar.items():\n", + " media_global = y_clase.mean()\n", + " nueva_col = np.full(len(X_trans), np.nan)\n", + "\n", + " stats_globales = pd.DataFrame({'Target': y_clase, 'Categoria': X_trans[col]}).groupby('Categoria')['Target'].agg(['count', 'mean'])\n", + " n_global = stats_globales['count']\n", + " suavizado_global = (n_global * stats_globales['mean'] + m_suavizado * media_global) / (n_global + m_suavizado)\n", + "\n", + " diccionario_produccion[col][nombre_clase] = suavizado_global.to_dict()\n", + " diccionario_produccion[col][nombre_clase]['__GLOBAL_MEAN__'] = media_global \n", + "\n", + " for train_idx, val_idx in kf.split(X_trans):\n", + " X_tr_fold, X_val_fold = X_trans.iloc[train_idx], X_trans.iloc[val_idx]\n", + " y_tr_fold = y_clase.iloc[train_idx]\n", + "\n", + " stats_fold = pd.DataFrame({'Target': y_tr_fold, 'Categoria': X_tr_fold[col]}).groupby('Categoria')['Target'].agg(['count', 'mean'])\n", + " n = stats_fold['count']\n", + " suavizado_fold = (n * stats_fold['mean'] + m_suavizado * media_global) / (n + m_suavizado)\n", + "\n", + " nueva_col[val_idx] = X_val_fold[col].map(suavizado_fold).astype(float).fillna(media_global)\n", + "\n", + " mask_nan = X_trans[col].isna()\n", + " nueva_col_nombre = col if not es_multiclase else f\"{col}_prob_{nombre_clase}\"\n", + " X_trans[nueva_col_nombre] = nueva_col\n", + " X_trans.loc[mask_nan, nueva_col_nombre] = np.nan\n", + "\n", + " logger.info(f\" 🔄 [Encoded] '{nueva_col_nombre}' (Media global: {media_global:.4f})\")\n", + "\n", + " if nueva_col_nombre not in rutas['num_vars']:\n", + " rutas['num_vars'].append(nueva_col_nombre)\n", + "\n", + " if es_multiclase:\n", + " X_trans.drop(columns=[col], inplace=True)\n", + " if col in rutas['cat_vars']: rutas['cat_vars'].remove(col)\n", + " elif col in rutas['cat_vars']:\n", + " rutas['cat_vars'].remove(col) \n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Prevención de Fuga de Datos (OOF) aplicada exitosamente.\")\n", + " logger.info(f\"\\n⏱️ Target Encoding completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "\n", + "# ==========================================\n", + "# MOTOR 2: WEIGHT OF EVIDENCE (WoE)\n", + "# ==========================================\n", + "def woe_encoding_oof_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None, \n", + " n_splits: int = 5,\n", + " epsilon: float = 0.001,\n", + " receta_aprendida: Dict = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 10 - Paso 10.4] Motor AutoML de Weight of Evidence (WoE + OOF).\n", + " - Muro MLOps: En Train (.fit) calcula WoE OOF y guarda la receta. En Test (.transform) solo aplica la receta.\n", + " - Matemática Segura (Epsilon): Evita divisiones por cero y logaritmos infinitos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 10.4: Weight of Evidence - WoE (OOF + Escudo Epsilon) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 🚀 FIX PANDAS: Guardamos el Index original y lo ignoramos (reset_index) para la matemática\n", + " original_index = X_trans.index\n", + " X_trans = X_trans.reset_index(drop=True)\n", + " if y is not None:\n", + " y = y.reset_index(drop=True)\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando logaritmos WoE fijos aprendidos de Train...\")\n", + " columnas_a_transformar = list(receta_aprendida.keys())\n", + "\n", + " for col in columnas_a_transformar:\n", + " if col in X_trans.columns:\n", + " diccionario_columna = receta_aprendida[col]\n", + " \n", + " # ==========================================\n", + " # 🚀 FIX ARQUITECTÓNICO: Inmutabilidad (Clean Code)\n", + " # Reemplazamos .pop() por .get() y construimos un mapa limpio.\n", + " # ==========================================\n", + " valor_neutral_train = diccionario_columna.get('__GLOBAL_NEUTRAL__', 0.0)\n", + " mapa_puro = {k: v for k, v in diccionario_columna.items() if k != '__GLOBAL_NEUTRAL__'}\n", + "\n", + " X_trans[col] = X_trans[col].astype(object)\n", + "\n", + " mask_nan = X_trans[col].isna()\n", + " # Aplicamos el map usando el mapa_puro que no contiene la llave neutral\n", + " X_trans[col] = X_trans[col].map(mapa_puro).fillna(valor_neutral_train)\n", + " X_trans.loc[mask_nan, col] = np.nan\n", + "\n", + " logger.debug(f\" ↳ Replicado en '{col}' (Categorías nuevas llenadas con WoE Neutral: 0.0)\")\n", + "\n", + " logger.info(f\"\\n⏱️ WoE completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.error(\"🛑 Error: En modo Train (sin receta aprendida) debes proporcionar 'y'.\")\n", + " raise ValueError(\"En modo Train (sin receta aprendida) debes proporcionar 'y'.\")\n", + "\n", + " y_trans = y.copy().astype(float) \n", + " diccionario_produccion = {}\n", + "\n", + " cols_a_codificar = []\n", + "\n", + " # --- FILTRO SILENCIOSO DE VARIABLES ---\n", + " for c in X_trans.columns:\n", + " if c.startswith('TARGET_'): continue\n", + "\n", + " n_unicos = X_trans[c].dropna().nunique()\n", + " es_numerica = pd.api.types.is_numeric_dtype(X_trans[c])\n", + " es_categoria_pura = c in rutas.get('cat_vars', []) or pd.api.types.is_object_dtype(X_trans[c]) or pd.api.types.is_categorical_dtype(X_trans[c])\n", + "\n", + " if es_categoria_pura and n_unicos > 2 and not es_numerica:\n", + " cols_a_codificar.append(c)\n", + "\n", + " if not cols_a_codificar:\n", + " logger.info(\"\\n ✅ [BYPASS] No hay variables categóricas candidatas restantes para WoE.\")\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\"\\n 🚂 [TRAIN] Procesando {len(cols_a_codificar)} variables con alta cardinalidad: {cols_a_codificar}\")\n", + "\n", + " kf = KFold(n_splits=n_splits, shuffle=True, random_state=42)\n", + "\n", + " global_pos = y_trans.sum()\n", + " global_neg = len(y_trans) - global_pos\n", + "\n", + " for col in cols_a_codificar:\n", + " X_trans[col] = X_trans[col].astype(object)\n", + " nueva_col = np.zeros(len(X_trans))\n", + " nueva_col[:] = np.nan\n", + "\n", + " stats_globales = pd.DataFrame({'Target': y_trans, 'Categoria': X_trans[col]}).groupby('Categoria')['Target'].agg(['sum', 'count'])\n", + " cat_pos = stats_globales['sum']\n", + " cat_neg = stats_globales['count'] - cat_pos\n", + "\n", + " prop_pos_global = (cat_pos + epsilon) / (global_pos + epsilon * 2)\n", + " prop_neg_global = (cat_neg + epsilon) / (global_neg + epsilon * 2)\n", + "\n", + " woe_global = np.log(prop_pos_global / prop_neg_global)\n", + "\n", + " diccionario_produccion[col] = woe_global.to_dict()\n", + " diccionario_produccion[col]['__GLOBAL_NEUTRAL__'] = 0.0 \n", + "\n", + " for train_idx, val_idx in kf.split(X_trans):\n", + " X_tr_fold, X_val_fold = X_trans.iloc[train_idx], X_trans.iloc[val_idx]\n", + " y_tr_fold = y_trans.iloc[train_idx]\n", + "\n", + " fold_pos = y_tr_fold.sum()\n", + " fold_neg = len(y_tr_fold) - fold_pos\n", + "\n", + " stats_fold = pd.DataFrame({'Target': y_tr_fold, 'Categoria': X_tr_fold[col]}).groupby('Categoria')['Target'].agg(['sum', 'count'])\n", + " f_cat_pos = stats_fold['sum']\n", + " f_cat_neg = stats_fold['count'] - f_cat_pos\n", + "\n", + " f_prop_pos = (f_cat_pos + epsilon) / (fold_pos + epsilon * 2)\n", + " f_prop_neg = (f_cat_neg + epsilon) / (fold_neg + epsilon * 2)\n", + "\n", + " woe_fold = np.log(f_prop_pos / f_prop_neg)\n", + "\n", + " mapeo_val = X_val_fold[col].map(woe_fold).astype(float)\n", + " mapeo_val = mapeo_val.fillna(0.0) \n", + "\n", + " nueva_col[val_idx] = mapeo_val\n", + "\n", + " mask_nan = X_trans[col].isna()\n", + " X_trans[col] = nueva_col \n", + " X_trans.loc[mask_nan, col] = np.nan \n", + "\n", + " logger.info(f\" 🔄 [WoE Encoded] '{col}' transformada a Weight of Evidence (OOF).\")\n", + "\n", + " if col in rutas['cat_vars']:\n", + " rutas['cat_vars'].remove(col)\n", + " if col not in rutas['num_vars']:\n", + " rutas['num_vars'].append(col)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: WoE calculado con blindaje OOF y Epsilon Anti-Infinitos.\")\n", + " logger.info(\" 💾 Diccionario de mapeo guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ WoE completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🚀 RESTAURAR INDEX\n", + " X_trans.index = original_index\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Unificada en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 🛑 SWITCH MAESTRO DE CODIFICACIÓN (El Enrutador del Arquitecto)\n", + " # True = Usa Target Encoding (Para Regresión, Árboles o Casos Generales)\n", + " # False = Usa Weight of Evidence (Para Riesgo Crediticio / Regresión Logística Binaria)\n", + " USAR_TARGET_ENCODING = True \n", + "\n", + " if USAR_TARGET_ENCODING:\n", + " logger.info(\">>> 🎯 MODO SELECCIONADO: TARGET ENCODING <<<\")\n", + " logger.info(\">>> 🚂 ENTRENANDO TARGET ENCODER EN TRAIN <<<\")\n", + " X_train_enc, rutas_actualizadas, receta_codificacion = target_encoding_oof_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " m_suavizado=10.0,\n", + " n_splits=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO TARGET ENCODER A TEST <<<\")\n", + " X_test_enc, _, _ = target_encoding_oof_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_codificacion\n", + " )\n", + " else:\n", + " logger.info(\">>> ⚖️ MODO SELECCIONADO: WEIGHT OF EVIDENCE (WoE) <<<\")\n", + " logger.info(\">>> 🚂 ENTRENANDO WoE EN TRAIN <<<\")\n", + " X_train_enc, rutas_actualizadas, receta_codificacion = woe_encoding_oof_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " n_splits=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO WoE A TEST <<<\")\n", + " X_test_enc, _, _ = woe_encoding_oof_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_codificacion\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_enc\n", + " manager.X_test = X_test_enc\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos el almacenamiento del artefacto\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " nombre_artefacto = 'receta_target_encoding' if USAR_TARGET_ENCODING else 'receta_woe_encoding'\n", + " \n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto(nombre_artefacto, receta_codificacion)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos[nombre_artefacto] = receta_codificacion\n", + "\n", + " logger.info(f\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura. Artefacto '{nombre_artefacto}' guardado en PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Codificación Supervisada: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN100.047554NaN0.0112200.25830810.00...002000.00.000000.00.0000000.00
1410.218684110.4447410.2637420.4481490.25412114386.00...000104386.0106.9756173.10.0000000.00
2240.21868490.0449660.0628220.0647310.12111300.00...000000.00.000000.00.0000000.00
3590.22002490.0917080.4579890.1072670.25830800.00...000000.00.000000.00.0000000.00
4350.21864290.4490630.2687300.4514030.26444510.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21 NaN 10 0.047554 NaN 0.011220 \n", + "1 41 0.218684 11 0.444741 0.263742 0.448149 \n", + "2 24 0.218684 9 0.044966 0.062822 0.064731 \n", + "3 59 0.220024 9 0.091708 0.457989 0.107267 \n", + "4 35 0.218642 9 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.258308 1 0.0 0 ... 0 \n", + "1 0.254121 1 4386.0 0 ... 0 \n", + "2 0.121113 0 0.0 0 ... 0 \n", + "3 0.258308 0 0.0 0 ... 0 \n", + "4 0.264445 1 0.0 1887 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0 2 0 \n", + "1 0 0 1 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0.0 0.00000 \n", + "1 0 4386.0 106.97561 \n", + "2 0 0.0 0.00000 \n", + "3 0 0.0 0.00000 \n", + "4 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
0390.544899100.1031060.2255580.1042160.25604810.00...000000.00.00.00.00.0
1350.218800130.4475940.1358270.4497980.25604810.00...000000.00.00.00.00.0
2310.218800130.4475940.4563640.4497980.25604810.00...000000.00.00.00.00.0
3670.544899130.0906210.0392740.0601270.25604800.00...000000.00.00.00.00.0
4560.28910390.0807620.4816760.1042160.25604810.00...000000.00.00.00.00.0
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 39 0.544899 10 0.103106 0.225558 0.104216 \n", + "1 35 0.218800 13 0.447594 0.135827 0.449798 \n", + "2 31 0.218800 13 0.447594 0.456364 0.449798 \n", + "3 67 0.544899 13 0.090621 0.039274 0.060127 \n", + "4 56 0.289103 9 0.080762 0.481676 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.256048 1 0.0 0 ... 0 \n", + "1 0.256048 1 0.0 0 ... 0 \n", + "2 0.256048 1 0.0 0 ... 0 \n", + "3 0.256048 0 0.0 0 ... 0 \n", + "4 0.256048 1 0.0 0 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0 0 0 \n", + "1 0 0 0 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0.0 0.0 \n", + "1 0 0.0 0.0 \n", + "2 0 0.0 0.0 \n", + "3 0 0.0 0.0 \n", + "4 0 0.0 0.0 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.0 \n", + "1 0.0 \n", + "2 0.0 \n", + "3 0.0 \n", + "4 0.0 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 1\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 0\n", + "1 1\n", + "2 0\n", + "3 0\n", + "4 0\n", + "Name: income, dtype: int8" + ] + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "y_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== FASE 10.5: Native Categoricals ===\n", + "=== FASE 10.5: Native Categoricals ===\n", + "Tipado nativo completado en 0.002s. Columnas=0\n", + "PipelineManager actualizado con tipado nativo estable.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetria\n", + "# ==========================================\n", + "import logging\n", + "import time\n", + "from typing import Dict, Tuple\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "\n", + "def _validar_X_nativo(X: pd.DataFrame) -> None:\n", + " if X is None or X.empty:\n", + " raise ValueError('La matriz (X) esta vacia.')\n", + "\n", + "\n", + "def _clonar_rutas_nativas(rutas: Dict = None) -> Dict:\n", + " rutas = dict(rutas or {})\n", + " rutas['num_vars'] = list(rutas.get('num_vars', []))\n", + " rutas['cat_vars'] = list(rutas.get('cat_vars', []))\n", + " rutas['bool_vars'] = list(rutas.get('bool_vars', []))\n", + " return rutas\n", + "\n", + "\n", + "def _tipar_categoria(serie: pd.Series, categorias_conocidas: list) -> pd.Series:\n", + " dtype = pd.CategoricalDtype(categories=categorias_conocidas, ordered=False)\n", + " return serie.astype(str).replace('nan', np.nan).astype(dtype)\n", + "\n", + "\n", + "def codificacion_nativa_automl(\n", + " X: pd.DataFrame,\n", + " rutas: Dict,\n", + " receta_aprendida: Dict = None,\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " _validar_X_nativo(X)\n", + " inicio = time.time()\n", + " logger.info('=== FASE 10.5: Native Categoricals ===')\n", + "\n", + " X_out = X.copy()\n", + " rutas_out = _clonar_rutas_nativas(rutas)\n", + "\n", + " if receta_aprendida is not None:\n", + " columnas_transformadas = 0\n", + " for columna, categorias in receta_aprendida.items():\n", + " if columna not in X_out.columns:\n", + " continue\n", + " X_out[columna] = _tipar_categoria(X_out[columna], categorias)\n", + " columnas_transformadas += 1\n", + " logger.info('Tipado nativo completado en %.3fs. Columnas=%s', time.time() - inicio, columnas_transformadas)\n", + " return X_out, rutas_out, receta_aprendida\n", + "\n", + " columnas = [col for col in rutas_out.get('cat_vars', []) if col in X_out.columns]\n", + " if not columnas:\n", + " return X_out, rutas_out, {}\n", + "\n", + " receta = {}\n", + " for columna in columnas:\n", + " categorias = X_out[columna].dropna().astype(str).unique().tolist()\n", + " receta[columna] = categorias\n", + " X_out[columna] = _tipar_categoria(X_out[columna], categorias)\n", + "\n", + " logger.info('Tipado nativo completado en %.3fs. Columnas=%s', time.time() - inicio, len(receta))\n", + " return X_out, rutas_out, receta\n", + "\n", + "\n", + "def _guardar_receta_nativa(manager_obj, receta: Dict) -> None:\n", + " if hasattr(manager_obj, 'guardar_artefacto'):\n", + " manager_obj.guardar_artefacto('receta_categorias_nativas', receta)\n", + " return\n", + " if getattr(manager_obj, 'artefactos', None) is None:\n", + " manager_obj.artefactos = {}\n", + " manager_obj.artefactos['receta_categorias_nativas'] = receta\n", + "\n", + "\n", + "try:\n", + " try:\n", + " _ = manager\n", + " except NameError as exc:\n", + " raise EnvironmentError('El PipelineManager no esta inicializado. Ejecuta la Ingesta primero.') from exc\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'.\")\n", + " if not getattr(manager, 'rutas', None):\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'.\")\n", + "\n", + " X_train_nat, rutas_actualizadas, receta_categorias = codificacion_nativa_automl(manager.X_train, manager.rutas)\n", + " X_test_nat, _, _ = codificacion_nativa_automl(manager.X_test, manager.rutas, receta_categorias)\n", + "\n", + " manager.X_train = X_train_nat\n", + " manager.X_test = X_test_nat\n", + " manager.rutas = rutas_actualizadas\n", + " _guardar_receta_nativa(manager, receta_categorias)\n", + "\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + " logger.info('PipelineManager actualizado con tipado nativo estable.')\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"Dependencia faltante:\\n{env_err}\")\n", + "except Exception as exc:\n", + " logger.error(f\"Error en el tipado nativo: {exc}\")\n", + "\n", + "\n", + "# # FASE 4: Imputacion, Outliers y Escalamiento\n", + "# Ahora que todo es numerico, reparamos la topologia del espacio vectorial.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021NaN100.047554NaN0.0112200.25830810.00...002000.00.000000.00.0000000.00
1410.218684110.4447410.2637420.4481490.25412114386.00...000104386.0106.9756173.10.0000000.00
2240.21868490.0449660.0628220.0647310.12111300.00...000000.00.000000.00.0000000.00
3590.22002490.0917080.4579890.1072670.25830800.00...000000.00.000000.00.0000000.00
4350.21864290.4490630.2687300.4514030.26444510.01887...00001-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21 NaN 10 0.047554 NaN 0.011220 \n", + "1 41 0.218684 11 0.444741 0.263742 0.448149 \n", + "2 24 0.218684 9 0.044966 0.062822 0.064731 \n", + "3 59 0.220024 9 0.091708 0.457989 0.107267 \n", + "4 35 0.218642 9 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.258308 1 0.0 0 ... 0 \n", + "1 0.254121 1 4386.0 0 ... 0 \n", + "2 0.121113 0 0.0 0 ... 0 \n", + "3 0.258308 0 0.0 0 ... 0 \n", + "4 0.264445 1 0.0 1887 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0 2 0 \n", + "1 0 0 1 \n", + "2 0 0 0 \n", + "3 0 0 0 \n", + "4 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0 0.0 0.00000 \n", + "1 0 4386.0 106.97561 \n", + "2 0 0.0 0.00000 \n", + "3 0 0.0 0.00000 \n", + "4 1 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 81, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
10620.218800100.4475940.1358270.4723720.25604800.00...000000.00.00.00.0000000.000
11250.218800130.0458510.4816760.0118820.25604810.00...000000.00.00.00.0000000.000
12290.21880090.1031060.1218420.0601270.25604800.00...000000.00.00.00.0000000.000
1365NaN130.447594NaN0.4497980.25604810.02377...00201-2377.00.00.036.56923159.425
14500.265583130.0458510.4816760.1042160.25604800.00...000000.00.00.00.0000000.000
15210.218800100.0458510.2989650.0118820.25604800.00...000000.00.00.00.0000000.000
16270.21880090.4475940.2255580.4497980.25604810.00...000000.00.00.00.0000000.000
17220.218800100.0458510.2671510.1042160.25604800.00...000000.00.00.00.0000000.000
18380.218800130.4475940.4816760.4497980.25604810.00...000000.00.00.00.0000000.000
19490.218800130.0807620.0392740.1042160.27138910.00...000000.00.00.00.0000000.000
\n", + "

10 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "10 62 0.218800 10 0.447594 0.135827 0.472372 \n", + "11 25 0.218800 13 0.045851 0.481676 0.011882 \n", + "12 29 0.218800 9 0.103106 0.121842 0.060127 \n", + "13 65 NaN 13 0.447594 NaN 0.449798 \n", + "14 50 0.265583 13 0.045851 0.481676 0.104216 \n", + "15 21 0.218800 10 0.045851 0.298965 0.011882 \n", + "16 27 0.218800 9 0.447594 0.225558 0.449798 \n", + "17 22 0.218800 10 0.045851 0.267151 0.104216 \n", + "18 38 0.218800 13 0.447594 0.481676 0.449798 \n", + "19 49 0.218800 13 0.080762 0.039274 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "10 0.256048 0 0.0 0 ... 0 \n", + "11 0.256048 1 0.0 0 ... 0 \n", + "12 0.256048 0 0.0 0 ... 0 \n", + "13 0.256048 1 0.0 2377 ... 0 \n", + "14 0.256048 0 0.0 0 ... 0 \n", + "15 0.256048 0 0.0 0 ... 0 \n", + "16 0.256048 1 0.0 0 ... 0 \n", + "17 0.256048 0 0.0 0 ... 0 \n", + "18 0.256048 1 0.0 0 ... 0 \n", + "19 0.271389 1 0.0 0 ... 0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "10 0 0 0 \n", + "11 0 0 0 \n", + "12 0 0 0 \n", + "13 0 2 0 \n", + "14 0 0 0 \n", + "15 0 0 0 \n", + "16 0 0 0 \n", + "17 0 0 0 \n", + "18 0 0 0 \n", + "19 0 0 0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "10 0 0.0 0.0 \n", + "11 0 0.0 0.0 \n", + "12 0 0.0 0.0 \n", + "13 1 -2377.0 0.0 \n", + "14 0 0.0 0.0 \n", + "15 0 0.0 0.0 \n", + "16 0 0.0 0.0 \n", + "17 0 0.0 0.0 \n", + "18 0 0.0 0.0 \n", + "19 0 0.0 0.0 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "10 0.0 0.000000 \n", + "11 0.0 0.000000 \n", + "12 0.0 0.000000 \n", + "13 0.0 36.569231 \n", + "14 0.0 0.000000 \n", + "15 0.0 0.000000 \n", + "16 0.0 0.000000 \n", + "17 0.0 0.000000 \n", + "18 0.0 0.000000 \n", + "19 0.0 0.000000 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "10 0.000 \n", + "11 0.000 \n", + "12 0.000 \n", + "13 59.425 \n", + "14 0.000 \n", + "15 0.000 \n", + "16 0.000 \n", + "17 0.000 \n", + "18 0.000 \n", + "19 0.000 \n", + "\n", + "[10 rows x 24 columns]" + ] + }, + "execution_count": 82, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test[10:20]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 24 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null int8 \n", + " 1 workclass 24557 non-null float64\n", + " 2 education_num 26029 non-null int8 \n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 24551 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null Int8 \n", + " 8 capital_gain 25899 non-null float64\n", + " 9 capital_loss 26029 non-null int16 \n", + " 10 hours_per_week 26029 non-null int8 \n", + " 11 native_country 25560 non-null float64\n", + " 12 is_missing_workclass 26029 non-null int8 \n", + " 13 is_missing_occupation 26029 non-null int8 \n", + " 14 is_missing_capital_gain 26029 non-null int8 \n", + " 15 is_missing_native_country 26029 non-null int8 \n", + " 16 total_nulos_en_fila 26029 non-null int8 \n", + " 17 tiene_capital_gain 26029 non-null int8 \n", + " 18 tiene_capital_loss 26029 non-null int8 \n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 25899 non-null float64\n", + " 21 capital_gain_por_hours_per_week 25899 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + "dtypes: Int8(1), float64(12), int16(1), int8(10)\n", + "memory usage: 2.7 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " 🚂 [TRAIN] Detectados 3,809 huecos numéricos. Protegiendo RAM...\n", + " ↳ Dataset masivo detectado. Creando 'Donor Pool' aleatorio de 15,000 filas...\n", + " ↳ Construyendo topología matemática (fit)...\n", + " ↳ Rellenando huecos en matriz completa por lotes de 10,000 filas (transform)...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Cirugía completada con Arquitectura Big Data.\n", + " 📊 Huecos numéricos restantes en Train: 0\n", + " 💾 Modelo Imputador guardado para la API de Producción.\n", + "\n", + "⏱️ Imputación KNN completada en 2.298s\n", + "\n", + ">>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " 🔒 [TEST] Imputando valores usando la geometría espacial de Train...\n", + " 🔒 [TEST] Rellenando 929 huecos (Chunking)...\n", + " 📊 Huecos numéricos restantes en Test: 0\n", + "\n", + "⏱️ Imputación KNN completada en 0.457s\n", + "\n", + "📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional, Union\n", + "from sklearn.impute import KNNImputer\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def imputacion_knn_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " n_vecinos: int = 5,\n", + " imputador_entrenado: Optional[Union[KNNImputer, str]] = None # 🚀 FIX: Acepta str para el sello\n", + ") -> Tuple[pd.DataFrame, Dict, Optional[Union[KNNImputer, str]]]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 11.1] Motor AutoML de Restauración Espacial (KNN Imputer Escalable).\n", + " - Escudo Autónomo Temporal (Clean Code): Protege fechas nativas y las de `rutas['date_vars']` sin parámetros manuales.\n", + " - Cazador de Anomalías: Solo busca y destruye NaTs infiltrados en variables NO temporales.\n", + " - Arquitectura Big Data: Donor Pool (max 15k) y Chunking (10k) para proteger la RAM.\n", + " - 🚀 Muro MLOps: Sello 'BYPASS_KNN' para evitar fits accidentales en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - {n_vecinos} Vecinos) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " idx = X_trans.index\n", + " total_filas = len(X_trans)\n", + "\n", + " # 🚀 INTELIGENCIA AUTO-ML: Recuperar fechas protegidas desde la memoria global\n", + " columnas_fecha_intactas = rutas.get('date_vars', [])\n", + " fechas_protegidas_encontradas = []\n", + "\n", + " # ==========================================\n", + " # 🚀 PRE-PROCESO: Traducción NaT -> NaN (Exclusivo para No-Fechas)\n", + " # ==========================================\n", + " for col in X_trans.columns:\n", + " # 1. 🛡️ ESCUDO AUTOMÁTICO: Si es fecha (por tipo o por ruta), la ignoramos por completo\n", + " if pd.api.types.is_datetime64_any_dtype(X_trans[col]) or col in columnas_fecha_intactas:\n", + " fechas_protegidas_encontradas.append(col)\n", + " continue\n", + "\n", + " # 2. 🧠 BÚSQUEDA INTELIGENTE: Solo revisamos variables de texto/objeto que tengan nulos\n", + " if X_trans[col].hasnans and X_trans[col].dtype == 'object':\n", + " # Evaluamos silenciosamente si hay NaTs infiltrados (anomalía de Pandas)\n", + " mascara_nat = X_trans[col].apply(lambda x: x is pd.NaT)\n", + " hallazgos_nat = mascara_nat.sum()\n", + "\n", + " if hallazgos_nat > 0:\n", + " logger.warning(f\" ⚙️ [PURIFICACIÓN] Aniquilando {hallazgos_nat} NaTs infiltrados en la variable no-temporal '{col}' -> NaN.\")\n", + " X_trans.loc[mascara_nat, col] = np.nan\n", + "\n", + " # 📊 Telemetría del Escudo Temporal\n", + " if fechas_protegidas_encontradas:\n", + " logger.info(f\" 🛡️ [ESCUDO ACTIVO] Se protegieron {len(fechas_protegidas_encontradas)} columnas de tipo fecha: {fechas_protegidas_encontradas}\")\n", + "\n", + " # ==========================================\n", + " # 🛡️ AISLAMIENTO QUIRÚRGICO: Solo pasamos números al KNN\n", + " # (Las fechas protegidas quedan fuera automáticamente)\n", + " # ==========================================\n", + " cols_numericas = X_trans.select_dtypes(include=[np.number]).columns.tolist()\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No se detectaron variables numéricas. Imputación omitida.\")\n", + " return X_trans, rutas, imputador_entrenado or KNNImputer()\n", + "\n", + " nulos_numericos = X_trans[cols_numericas].isna().sum().sum()\n", + "\n", + " # ==========================================\n", + " # ⚙️ Parámetros de Escalabilidad (Big Data)\n", + " # ==========================================\n", + " MAX_FIT_SAMPLES = 15000 \n", + " CHUNK_SIZE = 10000 \n", + "\n", + " def transformar_por_lotes(imputador, df_a_imputar):\n", + " matrices_limpias = []\n", + " for i in range(0, len(df_a_imputar), CHUNK_SIZE):\n", + " chunk = df_a_imputar.iloc[i:i+CHUNK_SIZE].astype(float)\n", + " chunk_imputado = imputador.transform(chunk)\n", + " matrices_limpias.append(chunk_imputado)\n", + " return np.vstack(matrices_limpias)\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if imputador_entrenado is not None:\n", + " # 🚀 FIX MLOps: Si Train no necesitó imputador, Test hereda la orden de no hacer nada.\n", + " if imputador_entrenado == 'BYPASS_KNN':\n", + " logger.info(\" 🔒 [TEST] Bypass heredado de Train (Matriz perfecta). Omitiendo KNN.\")\n", + " return X_trans, rutas, imputador_entrenado\n", + "\n", + " if nulos_numericos == 0:\n", + " logger.info(\" ✅ [BYPASS] Test no tiene valores NaN en numéricas. Matriz intacta.\")\n", + " else:\n", + " logger.info(f\" 🔒 [TEST] Imputando valores usando la geometría espacial de Train...\")\n", + " logger.info(f\" 🔒 [TEST] Rellenando {nulos_numericos:,} huecos (Chunking)...\")\n", + " matriz_imputada = transformar_por_lotes(imputador_entrenado, X_trans[cols_numericas])\n", + " df_imputado = pd.DataFrame(matriz_imputada, columns=cols_numericas, index=idx)\n", + " X_trans[cols_numericas] = df_imputado\n", + " logger.info(f\" 📊 Huecos numéricos restantes en Test: {X_trans[cols_numericas].isna().sum().sum()}\")\n", + "\n", + " logger.info(f\"\\n⏱️ Imputación KNN completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, imputador_entrenado\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if nulos_numericos == 0:\n", + " logger.info(\" ✅ [MATRIZ PERFECTA] No hay nulos numéricos. Entrenamiento KNN omitido.\")\n", + " # 🚀 FIX MLOps: Devolvemos el sello en lugar de None\n", + " return X_trans, rutas, 'BYPASS_KNN' \n", + " else:\n", + " logger.info(f\" 🚂 [TRAIN] Detectados {nulos_numericos:,} huecos numéricos. Protegiendo RAM...\")\n", + "\n", + " X_num_trans = X_trans[cols_numericas]\n", + " if total_filas > MAX_FIT_SAMPLES:\n", + " logger.info(f\" ↳ Dataset masivo detectado. Creando 'Donor Pool' aleatorio de {MAX_FIT_SAMPLES:,} filas...\")\n", + " X_fit = X_num_trans.sample(n=MAX_FIT_SAMPLES, random_state=42)\n", + " else:\n", + " X_fit = X_num_trans\n", + "\n", + " imputador = KNNImputer(n_neighbors=n_vecinos, weights='distance')\n", + " logger.info(f\" ↳ Construyendo topología matemática (fit)...\")\n", + " imputador.fit(X_fit.astype(float))\n", + "\n", + " logger.info(f\" ↳ Rellenando huecos en matriz completa por lotes de {CHUNK_SIZE:,} filas (transform)...\")\n", + " matriz_imputada = transformar_por_lotes(imputador, X_num_trans)\n", + " df_imputado = pd.DataFrame(matriz_imputada, columns=cols_numericas, index=idx)\n", + "\n", + " X_trans[cols_numericas] = df_imputado\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Cirugía completada con Arquitectura Big Data.\")\n", + " logger.info(f\" 📊 Huecos numéricos restantes en Train: {X_trans[cols_numericas].isna().sum().sum()}\")\n", + " logger.info(\" 💾 Modelo Imputador guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Imputación KNN completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, imputador\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or manager.rutas is None:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 🚀 Clean Code Absoluto: Función 100% Autónoma, lee la memoria sola.\n", + " logger.info(\">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\")\n", + " X_train_knn, rutas_actualizadas, modelo_knn = imputacion_knn_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\")\n", + " X_test_knn, _, _ = imputacion_knn_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5,\n", + " imputador_entrenado=modelo_knn \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_knn\n", + " manager.X_test = X_test_knn\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('imputador_knn', modelo_knn)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['imputador_knn'] = modelo_knn\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Imputación KNN: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
021.00.21979310.00.0475540.1219920.0112200.2583081.00.00.0...0.00.02.00.00.00.00.000000.00.0000000.00
141.00.21868411.00.4447410.2637420.4481490.2541211.04386.00.0...0.00.00.01.00.04386.0106.9756173.10.0000000.00
224.00.2186849.00.0449660.0628220.0647310.1211130.00.00.0...0.00.00.00.00.00.00.000000.00.0000000.00
359.00.2200249.00.0917080.4579890.1072670.2583080.00.00.0...0.00.00.00.00.00.00.000000.00.0000000.00
435.00.2186429.00.4490630.2687300.4514030.2644451.00.01887.0...0.00.00.00.01.0-1887.00.000000.053.91428637.74
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21.0 0.219793 10.0 0.047554 0.121992 0.011220 \n", + "1 41.0 0.218684 11.0 0.444741 0.263742 0.448149 \n", + "2 24.0 0.218684 9.0 0.044966 0.062822 0.064731 \n", + "3 59.0 0.220024 9.0 0.091708 0.457989 0.107267 \n", + "4 35.0 0.218642 9.0 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "0 0.258308 1.0 0.0 0.0 ... 0.0 \n", + "1 0.254121 1.0 4386.0 0.0 ... 0.0 \n", + "2 0.121113 0.0 0.0 0.0 ... 0.0 \n", + "3 0.258308 0.0 0.0 0.0 ... 0.0 \n", + "4 0.264445 1.0 0.0 1887.0 ... 0.0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "0 0.0 2.0 0.0 \n", + "1 0.0 0.0 1.0 \n", + "2 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "0 0.0 0.0 0.00000 \n", + "1 0.0 4386.0 106.97561 \n", + "2 0.0 0.0 0.00000 \n", + "3 0.0 0.0 0.00000 \n", + "4 1.0 -1887.0 0.00000 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "0 0.0 0.000000 \n", + "1 73.1 0.000000 \n", + "2 0.0 0.000000 \n", + "3 0.0 0.000000 \n", + "4 0.0 53.914286 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "0 0.00 \n", + "1 0.00 \n", + "2 0.00 \n", + "3 0.00 \n", + "4 37.74 \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_capital_gainis_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_week
1062.00.21880010.00.4475940.1358270.4723720.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1125.00.21880013.00.0458510.4816760.0118820.2560481.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1229.00.2188009.00.1031060.1218420.0601270.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1365.00.34571113.00.4475940.4247250.4497980.2560481.00.02377.0...0.00.02.00.01.0-2377.00.00.036.56923159.425
1450.00.26558313.00.0458510.4816760.1042160.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1521.00.21880010.00.0458510.2989650.0118820.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1627.00.2188009.00.4475940.2255580.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1722.00.21880010.00.0458510.2671510.1042160.2560480.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1838.00.21880013.00.4475940.4816760.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
1949.00.21880013.00.0807620.0392740.1042160.2713891.00.00.0...0.00.00.00.00.00.00.00.00.0000000.000
\n", + "

10 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "10 62.0 0.218800 10.0 0.447594 0.135827 0.472372 \n", + "11 25.0 0.218800 13.0 0.045851 0.481676 0.011882 \n", + "12 29.0 0.218800 9.0 0.103106 0.121842 0.060127 \n", + "13 65.0 0.345711 13.0 0.447594 0.424725 0.449798 \n", + "14 50.0 0.265583 13.0 0.045851 0.481676 0.104216 \n", + "15 21.0 0.218800 10.0 0.045851 0.298965 0.011882 \n", + "16 27.0 0.218800 9.0 0.447594 0.225558 0.449798 \n", + "17 22.0 0.218800 10.0 0.045851 0.267151 0.104216 \n", + "18 38.0 0.218800 13.0 0.447594 0.481676 0.449798 \n", + "19 49.0 0.218800 13.0 0.080762 0.039274 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_capital_gain \\\n", + "10 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "11 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "12 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "13 0.256048 1.0 0.0 2377.0 ... 0.0 \n", + "14 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "15 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "16 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "17 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "18 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "19 0.271389 1.0 0.0 0.0 ... 0.0 \n", + "\n", + " is_missing_native_country total_nulos_en_fila tiene_capital_gain \\\n", + "10 0.0 0.0 0.0 \n", + "11 0.0 0.0 0.0 \n", + "12 0.0 0.0 0.0 \n", + "13 0.0 2.0 0.0 \n", + "14 0.0 0.0 0.0 \n", + "15 0.0 0.0 0.0 \n", + "16 0.0 0.0 0.0 \n", + "17 0.0 0.0 0.0 \n", + "18 0.0 0.0 0.0 \n", + "19 0.0 0.0 0.0 \n", + "\n", + " tiene_capital_loss capital_neto capital_gain_por_age \\\n", + "10 0.0 0.0 0.0 \n", + "11 0.0 0.0 0.0 \n", + "12 0.0 0.0 0.0 \n", + "13 1.0 -2377.0 0.0 \n", + "14 0.0 0.0 0.0 \n", + "15 0.0 0.0 0.0 \n", + "16 0.0 0.0 0.0 \n", + "17 0.0 0.0 0.0 \n", + "18 0.0 0.0 0.0 \n", + "19 0.0 0.0 0.0 \n", + "\n", + " capital_gain_por_hours_per_week capital_loss_por_age \\\n", + "10 0.0 0.000000 \n", + "11 0.0 0.000000 \n", + "12 0.0 0.000000 \n", + "13 0.0 36.569231 \n", + "14 0.0 0.000000 \n", + "15 0.0 0.000000 \n", + "16 0.0 0.000000 \n", + "17 0.0 0.000000 \n", + "18 0.0 0.000000 \n", + "19 0.0 0.000000 \n", + "\n", + " capital_loss_por_hours_per_week \n", + "10 0.000 \n", + "11 0.000 \n", + "12 0.000 \n", + "13 59.425 \n", + "14 0.000 \n", + "15 0.000 \n", + "16 0.000 \n", + "17 0.000 \n", + "18 0.000 \n", + "19 0.000 \n", + "\n", + "[10 rows x 24 columns]" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test[10:20]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO DETECTOR MULTIVARIADO EN TRAIN <<<\n", + "=== 🛸 FASE 12.1: Detección Multivariada Asimétrica (Isolation Forest) ===\n", + " 🚂 [TRAIN] Entrenando Bosque de Aislamiento sobre 24 dimensiones...\n", + " ↳ Detectadas 4249 anomalías multivariadas (16.32% de la matriz).\n", + " 🚩 [ASIMETRÍA MLOPS] Conservando filas. La inteligencia del árbol usará la bandera de anomalía.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Bosque de Aislamiento desplegado. Outliers bajo control estricto.\n", + " 💾 Artefacto IsolationForest guardado para la API de Producción.\n", + "\n", + "⏱️ Detección de Outliers completada en 0.342s\n", + "\n", + ">>> 🔒 APLICANDO DETECTOR MULTIVARIADO A TEST <<<\n", + "=== 🛸 FASE 12.1: Detección Multivariada Asimétrica (Isolation Forest) ===\n", + " 🔒 [TEST] Escaneando Producción en busca de anomalías usando el Bosque de Train...\n", + " ↳ Detectados 1013 extraterrestres en Test (Marcados, NUNCA eliminados).\n", + "\n", + "⏱️ Escáner completado en 0.039s\n", + "\n", + "📦 [MLOps] Matrices, rutas y modelo Isolation Forest actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional\n", + "from sklearn.ensemble import IsolationForest\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def deteccion_outliers_aislamiento(\n", + " X_train: pd.DataFrame, \n", + " rutas: Dict, \n", + " y_train: Optional[pd.Series] = None,\n", + " X_test: Optional[pd.DataFrame] = None,\n", + " contamination: float = 'auto',\n", + " eliminar_en_train: bool = False,\n", + " modelo_entrenado: Optional[IsolationForest] = None\n", + ") -> Tuple[pd.DataFrame, Optional[pd.DataFrame], Optional[pd.Series], Dict, IsolationForest]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 12.1] Motor AutoML de Detección Multivariada (Isolation Forest).\n", + " - Tratamiento Asimétrico MLOps: Test NUNCA elimina filas, solo hereda la bandera de anomalía.\n", + " - Filtro de Tipos: Solo escanea variables numéricas/booleanas para evitar colisiones con tipado nativo.\n", + " - Feature Engineering: Crea la bandera 'is_anomaly_isoforest' (1 = Outlier, 0 = Inlier).\n", + " - Purga Opcional: Si eliminar_en_train=True, destruye los outliers de X_train y y_train.\n", + " \"\"\"\n", + " if X_train is None or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X_train) está vacía.\")\n", + " raise ValueError(\"La matriz (X_train) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🛸 FASE 12.1: Detección Multivariada Asimétrica (Isolation Forest) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_tr_trans = X_train.copy()\n", + " X_te_trans = X_test.copy() if X_test is not None else None\n", + " y_tr_trans = y_train.copy() if y_train is not None else None\n", + "\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + " nombre_bandera = 'is_anomaly_isoforest'\n", + "\n", + " # 1. Escudo de Tipos (Solo usamos las rutas numéricas para la matemática del bosque)\n", + " cols_matematicas = rutas.get('num_vars', []) + rutas.get('bool_vars', [])\n", + "\n", + " # 🛑 FIX QUIRÚRGICO: Evitamos que busque la propia bandera como si fuera variable predictora\n", + " cols_validas = [c for c in cols_matematicas if c in X_tr_trans.columns and c != nombre_bandera]\n", + "\n", + " if not cols_validas:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron columnas numéricas válidas para Isolation Forest.\")\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, modelo_entrenado\n", + "\n", + " # ==========================================\n", + " # 2. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if modelo_entrenado is not None:\n", + " if X_te_trans is None:\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, modelo_entrenado\n", + "\n", + " logger.info(\" 🔒 [TEST] Escaneando Producción en busca de anomalías usando el Bosque de Train...\")\n", + " # Isolation Forest devuelve -1 para outliers y 1 para inliers. Lo mapeamos a 1 y 0 (int8).\n", + " preds_test = modelo_entrenado.predict(X_te_trans[cols_validas].fillna(0)) # IF no soporta NaNs, si quedara alguno, fallback a 0\n", + " X_te_trans[nombre_bandera] = np.where(preds_test == -1, 1, 0).astype(np.int8)\n", + "\n", + " outliers_test = X_te_trans[nombre_bandera].sum()\n", + " logger.warning(f\" ↳ Detectados {outliers_test} extraterrestres en Test (Marcados, NUNCA eliminados).\")\n", + " logger.info(f\"\\n⏱️ Escáner completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, modelo_entrenado\n", + "\n", + " # ==========================================\n", + " # 3. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando Bosque de Aislamiento sobre {len(cols_validas)} dimensiones...\")\n", + "\n", + " # n_jobs=-1 usa todos los núcleos del procesador para velocidad extrema\n", + " bosque = IsolationForest(contamination=contamination, random_state=42, n_jobs=-1)\n", + "\n", + " # Entrenamos y predecimos sobre Train\n", + " preds_train = bosque.fit_predict(X_tr_trans[cols_validas].fillna(0))\n", + " X_tr_trans[nombre_bandera] = np.where(preds_train == -1, 1, 0).astype(np.int8)\n", + "\n", + " outliers_train = X_tr_trans[nombre_bandera].sum()\n", + " porcentaje = (outliers_train / len(X_tr_trans)) * 100\n", + "\n", + " logger.warning(f\" ↳ Detectadas {outliers_train} anomalías multivariadas ({porcentaje:.2f}% de la matriz).\")\n", + "\n", + " # Actualización de Rutas\n", + " if nombre_bandera not in rutas.get('bool_vars', []):\n", + " rutas['bool_vars'].append(nombre_bandera)\n", + "\n", + " # 4. Guillotina Opcional (Tratamiento Asimétrico)\n", + " if eliminar_en_train and outliers_train > 0:\n", + " logger.warning(f\" 🔪 [ASIMETRÍA MLOPS] Eliminando {outliers_train} filas anómalas SOLO del set de Entrenamiento...\")\n", + " mascara_inliers = X_tr_trans[nombre_bandera] == 0\n", + "\n", + " X_tr_trans = X_tr_trans[mascara_inliers].reset_index(drop=True)\n", + " if y_tr_trans is not None:\n", + " y_tr_trans = y_tr_trans[mascara_inliers].reset_index(drop=True)\n", + "\n", + " logger.info(\" ↳ Purga completada. La matriz predictora y el target siguen perfectamente alineados.\")\n", + " else:\n", + " logger.info(\" 🚩 [ASIMETRÍA MLOPS] Conservando filas. La inteligencia del árbol usará la bandera de anomalía.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Bosque de Aislamiento desplegado. Outliers bajo control estricto.\")\n", + " logger.info(\" 💾 Artefacto IsolationForest guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Detección de Outliers completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_tr_trans, X_te_trans, y_tr_trans, rutas, bosque\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargado el vector 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO DETECTOR MULTIVARIADO EN TRAIN <<<\")\n", + " X_train_out, _, y_train_out, rutas_actualizadas, modelo_iforest = deteccion_outliers_aislamiento(\n", + " X_train=manager.X_train, \n", + " y_train=manager.y_train, \n", + " rutas=manager.rutas,\n", + " contamination='auto',\n", + " eliminar_en_train=False # 🛑 Arquitecto: Cambia a True si quieres purgar las filas anómalas en Train\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO DETECTOR MULTIVARIADO A TEST <<<\")\n", + " _, X_test_out, _, _, _ = deteccion_outliers_aislamiento(\n", + " X_train=manager.X_train, # Dummy requerido por la firma original para compatibilidad\n", + " X_test=manager.X_test, \n", + " rutas=manager.rutas,\n", + " modelo_entrenado=modelo_iforest # El Puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_out\n", + " manager.X_test = X_test_out\n", + " manager.y_train = y_train_out\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Asegurar inicialización de la caja fuerte de modelos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('detector_outliers_iforest', modelo_iforest)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['detector_outliers_iforest'] = modelo_iforest\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y modelo Isolation Forest actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Detección de Outliers: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 4.8 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO WINSORIZADOR EN TRAIN <<<\n", + "=== 🗜️ FASE 12.2: Tratamiento de Outliers (Winsorización al 0.1% - 99.9%) ===\n", + " 🚂 [TRAIN] Calculando percentiles para 17 variables continuas...\n", + " 🔄 'capital_gain': 7 valores anómalos comprimidos a [0.00, 27828.00]\n", + " 🔄 'capital_loss': 24 valores anómalos comprimidos a [0.00, 2559.00]\n", + " 🔄 'hours_per_week': 11 valores anómalos comprimidos a [2.00, 99.00]\n", + " 🔄 'total_nulos_en_fila': 27 valores anómalos comprimidos a [0.00, 2.97]\n", + " 🔄 'capital_neto': 31 valores anómalos comprimidos a [-2559.00, 27828.00]\n", + " 🔄 'capital_gain_por_age': 27 valores anómalos comprimidos a [0.00, 597.51]\n", + " 🔄 'capital_gain_por_hours_per_week': 26 valores anómalos comprimidos a [0.00, 802.04]\n", + " 🔄 'capital_loss_por_age': 27 valores anómalos comprimidos a [0.00, 93.51]\n", + " 🔄 'capital_loss_por_hours_per_week': 27 valores anómalos comprimidos a [0.00, 141.16]\n", + " 🔄 'workclass': 26 valores anómalos comprimidos a [0.22, 0.57]\n", + " 🔄 'occupation': 22 valores anómalos comprimidos a [0.03, 0.49]\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Topología estabilizada. 17 procesadas | 0 ignoradas (Varianza Cero).\n", + " 💾 Diccionario de percentiles guardado para la API de Producción.\n", + "\n", + "⏱️ Winsorización completada en 0.056s\n", + "\n", + ">>> 🔒 APLICANDO WINSORIZADOR A TEST <<<\n", + "=== 🗜️ FASE 12.2: Tratamiento de Outliers (Winsorización al 0.1% - 99.9%) ===\n", + " 🔒 [TEST] Aplicando techos y pisos aprendidos de Train...\n", + " ↳ Replicado en 17 variables (Picos extremos recortados a ciegas).\n", + "\n", + "⏱️ Winsorización completada en 0.015s\n", + "\n", + "📦 [MLOps] Matrices, rutas y receta de winsorización actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def winsorizacion_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " limites: Tuple[float, float] = (0.001, 0.999),\n", + " receta_aprendida: Dict[str, Tuple[float, float]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 12.2] Motor AutoML de Winsorización (Capping).\n", + " - Muro MLOps: Calcula los percentiles matemáticos SOLO en Train y los hereda a Test.\n", + " - Filtro de Tipos: Solo opera sobre variables estrictamente numéricas (ignora booleanos y categorías).\n", + " - Tolerancia a NaNs: El cálculo de percentiles y el recorte (.clip) ignoran los valores nulos.\n", + " - Prevención de Colapso: Evita comprimir variables con varianza cero (ej. 99% de ceros).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🗜️ FASE 12.2: Tratamiento de Outliers (Winsorización al {limites[0]*100}% - {limites[1]*100}%) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 1. Escudo de Tipos: Solo queremos comprimir métricas reales, no banderas 0/1\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron variables numéricas continuas para comprimir.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " # ==========================================\n", + " # 2. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if receta_aprendida is not None:\n", + " logger.info(\" 🔒 [TEST] Aplicando techos y pisos aprendidos de Train...\")\n", + " columnas_comprimidas = 0\n", + "\n", + " for col, (limite_inf, limite_sup) in receta_aprendida.items():\n", + " if col in X_trans.columns:\n", + " # .clip() recorta los extremos y deja los NaNs intactos\n", + " X_trans[col] = X_trans[col].clip(lower=limite_inf, upper=limite_sup)\n", + " columnas_comprimidas += 1\n", + "\n", + " logger.info(f\" ↳ Replicado en {columnas_comprimidas} variables (Picos extremos recortados a ciegas).\")\n", + " logger.info(f\"\\n⏱️ Winsorización completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_aprendida\n", + "\n", + " # ==========================================\n", + " # 3. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN] Calculando percentiles para {len(cols_numericas)} variables continuas...\")\n", + " diccionario_produccion = {}\n", + " columnas_comprimidas = 0\n", + " columnas_ignoradas = 0\n", + "\n", + " for col in cols_numericas:\n", + " # Extraemos la serie ignorando los NaNs\n", + " serie_limpia = X_trans[col].dropna()\n", + "\n", + " if len(serie_limpia) == 0:\n", + " continue # Si la columna es puro NaN, la ignoramos\n", + "\n", + " # Calculamos los límites matemáticos (Piso y Techo)\n", + " limite_inf = serie_limpia.quantile(limites[0])\n", + " limite_sup = serie_limpia.quantile(limites[1])\n", + "\n", + " # Guardamos la receta si los límites son lógicos (evita comprimir variables que son un solo número)\n", + " if limite_inf < limite_sup:\n", + " diccionario_produccion[col] = (limite_inf, limite_sup)\n", + "\n", + " # Aplicamos la compresión\n", + " valores_extremos_antes = ((X_trans[col] < limite_inf) | (X_trans[col] > limite_sup)).sum()\n", + " X_trans[col] = X_trans[col].clip(lower=limite_inf, upper=limite_sup)\n", + "\n", + " columnas_comprimidas += 1\n", + " if valores_extremos_antes > 0:\n", + " logger.info(f\" 🔄 '{col}': {valores_extremos_antes} valores anómalos comprimidos a [{limite_inf:.2f}, {limite_sup:.2f}]\")\n", + " else:\n", + " # 🚀 FIX MLOps: Avisamos que la variable fue ignorada por falta de varianza\n", + " columnas_ignoradas += 1\n", + " logger.info(f\" ⏭️ [BYPASS] '{col}': Ignorada (Varianza Cero en los extremos. Percentiles {limites[0]*100}% y {limites[1]*100}% son idénticos).\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Topología estabilizada. {columnas_comprimidas} procesadas | {columnas_ignoradas} ignoradas (Varianza Cero).\")\n", + " logger.info(\" 💾 Diccionario de percentiles guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Winsorización completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, diccionario_produccion\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # Configuramos los límites: Cortamos el 0.1% inferior y el 0.1% superior (El 99.8% de la data queda intacta)\n", + " limites_elegidos = (0.001, 0.999)\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO WINSORIZADOR EN TRAIN <<<\")\n", + " X_train_win, rutas_actualizadas, receta_winsor = winsorizacion_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " limites=limites_elegidos\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO WINSORIZADOR A TEST <<<\")\n", + " X_test_win, _, _ = winsorizacion_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " receta_aprendida=receta_winsor # El Puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma centralizada en el Manager\n", + " manager.X_train = X_train_win\n", + " manager.X_test = X_test_win\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_winsorizacion', receta_winsor)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_winsorizacion'] = receta_winsor\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y receta de winsorización actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Winsorización: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO ESCALADOR EN TRAIN <<<\n", + "=== ⚖️ FASE 13.1: Escalamiento Dinámico (MINMAX) ===\n", + " ✅ [BYPASS] Escalamiento omitido. La matriz está optimizada para algoritmos basados en Árboles (Scale-Invariant).\n", + "\n", + ">>> 🔒 APLICANDO ESCALADOR A TEST <<<\n", + "=== ⚖️ FASE 13.1: Escalamiento Dinámico (MINMAX) ===\n", + " ✅ [BYPASS] Escalamiento omitido. La matriz está optimizada para algoritmos basados en Árboles (Scale-Invariant).\n", + "\n", + "📦 [MLOps] Matrices y modelo escalador actualizados de forma segura en el PipelineManager.\n", + "\n", + ">>> ⏪ PRUEBA DE LA MÁQUINA DEL TIEMPO (REVERSO) <<<\n", + " ⏭️ Bypass activo o escalador no entrenado. Traducción inversa omitida.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional\n", + "from sklearn.preprocessing import MinMaxScaler, StandardScaler, RobustScaler\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def escalamiento_dinamico_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " requiere_escalamiento: bool = True,\n", + " metodo: str = 'minmax',\n", + " escalador_entrenado: Optional[object] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Optional[object]]:\n", + " \"\"\"\n", + " [FASE 4 - Paso 13.1] Motor AutoML de Escalamiento Dinámico.\n", + " - Switch Inteligente: Si requiere_escalamiento=False, hace bypass (ideal para ecosistemas 100% Árboles).\n", + " - Muro MLOps: Aprende los rangos máximos/mínimos SOLO en Train. Aplica ciegamente en Test.\n", + " - Preservación Topológica: Solo escala variables continuas (num_vars), dejando booleanas y \n", + " categorías nativas intactas. Retorna un DataFrame de Pandas, no un array de Numpy.\n", + " - 🚀 Optimización de Memoria (NUEVO): Convierte el resultado float64 nativo de Sklearn a float32.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 13.1: Escalamiento Dinámico ({metodo.upper()}) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # 1. El Interruptor AutoML (Regla lrl1)\n", + " if not requiere_escalamiento:\n", + " logger.info(\" ✅ [BYPASS] Escalamiento omitido. La matriz está optimizada para algoritmos basados en Árboles (Scale-Invariant).\")\n", + " return X_trans, rutas, escalador_entrenado\n", + "\n", + " # 2. Escudo de Tipos: Seleccionamos SOLO las numéricas continuas\n", + " # Las booleanas ya son 0 y 1. Las categóricas nativas son intocables.\n", + " cols_a_escalar = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_a_escalar:\n", + " logger.info(\" ✅ [BYPASS] No hay variables numéricas continuas para escalar.\")\n", + " return X_trans, rutas, escalador_entrenado\n", + "\n", + " # Extraemos índices y columnas para reconstruir el DataFrame post-Sklearn\n", + " indices = X_trans.index\n", + "\n", + " # ==========================================\n", + " # 3. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if escalador_entrenado is not None:\n", + " logger.info(f\" 🔒 [TEST] Comprimiendo {len(cols_a_escalar)} dimensiones usando la escala memorizada de Train...\")\n", + "\n", + " # Transformamos y reinyectamos en el DataFrame\n", + " matriz_escalada = escalador_entrenado.transform(X_trans[cols_a_escalar])\n", + "\n", + " # 🚀 DOWNCASTING AUTOMÁTICO: Forzamos float32 para evitar el sobrepeso de float64 de sklearn\n", + " X_trans.loc[:, cols_a_escalar] = matriz_escalada.astype(np.float32)\n", + "\n", + " logger.info(f\"\\n⏱️ Escalamiento completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, escalador_entrenado\n", + "\n", + " # ==========================================\n", + " # 4. Modo TRAIN (.fit_transform)\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando escalador '{metodo}' sobre {len(cols_a_escalar)} variables continuas...\")\n", + "\n", + " # Selección del Motor Matemático\n", + " if metodo == 'minmax':\n", + " escalador = MinMaxScaler() # Comprime estrictamente entre 0 y 1\n", + " elif metodo == 'standard':\n", + " escalador = StandardScaler() # Media 0, Varianza 1\n", + " elif metodo == 'robust':\n", + " escalador = RobustScaler() # Usa la mediana y el IQR (inmune a outliers extremos que sobrevivieron)\n", + " else:\n", + " logger.error(f\"🛑 Método '{metodo}' no soportado. Usa 'minmax', 'standard' o 'robust'.\")\n", + " raise ValueError(f\"Método '{metodo}' no soportado. Usa 'minmax', 'standard' o 'robust'.\")\n", + "\n", + " # Aprendemos los rangos matemáticos (fit) y comprimimos la matriz (transform)\n", + " matriz_escalada = escalador.fit_transform(X_trans[cols_a_escalar])\n", + "\n", + " # 🚀 DOWNCASTING AUTOMÁTICO: Forzamos float32 para evitar el sobrepeso de float64 de sklearn\n", + " X_trans.loc[:, cols_a_escalar] = matriz_escalada.astype(np.float32)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🛡️ ESTATUS: Espacio vectorial estandarizado. Listo para Deep Learning y Meta-Modelos.\")\n", + " logger.info(\" 💾 Artefacto Escalador guardado para la API de Producción.\")\n", + " logger.info(f\"\\n⏱️ Escalamiento completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, escalador\n", + "\n", + "\n", + "# ==========================================\n", + "# 🔧 NUEVO: Herramienta de Traducción Inversa\n", + "# ==========================================\n", + "def traductor_inverso_escalamiento(\n", + " X_escalado: pd.DataFrame, \n", + " escalador_entrenado: object\n", + ") -> pd.DataFrame:\n", + " \"\"\"\n", + " [Herramienta MLOps] Traductor de Escalamiento Inverso (Máquina del Tiempo).\n", + " - Toma una matriz escalada (con 0s y 1s) y utiliza la memoria fotográfica del \n", + " escalador para devolverle sus valores lógicos del mundo real (Dólares, Años, Horas).\n", + " \"\"\"\n", + " if escalador_entrenado is None:\n", + " return X_escalado.copy()\n", + "\n", + " X_traducido = X_escalado.copy()\n", + "\n", + " # Scikit-learn (versiones modernas) guarda las columnas que aprendió en .feature_names_in_\n", + " if hasattr(escalador_entrenado, 'feature_names_in_'):\n", + " cols_memorizadas = escalador_entrenado.feature_names_in_\n", + " else:\n", + " logger.error(\"🛑 El escalador no tiene memoria de las columnas. Requiere Scikit-Learn reciente.\")\n", + " raise ValueError(\"El escalador no tiene memoria de las columnas. Requiere Scikit-Learn reciente.\")\n", + "\n", + " # Filtramos para asegurarnos de que solo intentamos traducir las columnas que existen\n", + " cols_validas = [c for c in cols_memorizadas if c in X_traducido.columns]\n", + "\n", + " if cols_validas:\n", + " # La magia matemática ocurre aquí (.inverse_transform)\n", + " matriz_original = escalador_entrenado.inverse_transform(X_traducido[cols_validas])\n", + " X_traducido.loc[:, cols_validas] = matriz_original\n", + "\n", + " return X_traducido\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # DECISIÓN DEL ARQUITECTO: ¿Usaremos Redes Neuronales / Regresión Logística después?\n", + " VAMOS_A_USAR_DEEP_LEARNING = False \n", + " METODO_ESCALAMIENTO = 'minmax' \n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO ESCALADOR EN TRAIN <<<\")\n", + " X_train_esc, rutas_actualizadas, modelo_escalador = escalamiento_dinamico_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " requiere_escalamiento=VAMOS_A_USAR_DEEP_LEARNING,\n", + " metodo=METODO_ESCALAMIENTO\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO ESCALADOR A TEST <<<\")\n", + " X_test_esc, _, _ = escalamiento_dinamico_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " requiere_escalamiento=VAMOS_A_USAR_DEEP_LEARNING,\n", + " escalador_entrenado=modelo_escalador # El Puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_esc\n", + " manager.X_test = X_test_esc\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos si no existe\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('escalador_numerico', modelo_escalador)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['escalador_numerico'] = modelo_escalador\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y modelo escalador actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " # --- DEMOSTRACIÓN DEL TRADUCTOR INVERSO ---\n", + " logger.info(\"\\n>>> ⏪ PRUEBA DE LA MÁQUINA DEL TIEMPO (REVERSO) <<<\")\n", + " if VAMOS_A_USAR_DEEP_LEARNING and modelo_escalador is not None:\n", + " # Tomamos el primer paciente/registro de Test (que ahora es un conjunto de decimales) desde el manager\n", + " paciente_ejemplo = manager.X_test.head(1).copy()\n", + "\n", + " # 🔧 FIX BLINDADO: Obligamos al código a agarrar una variable puramente NUMÉRICA que fue escalada\n", + " cols_escaladas = getattr(modelo_escalador, 'feature_names_in_', [])\n", + " if len(cols_escaladas) > 0:\n", + " variable_prueba = cols_escaladas[0] # Tomamos la primera variable numérica segura\n", + "\n", + " valor_escalado = paciente_ejemplo[variable_prueba].values[0]\n", + " logger.info(f\"🤖 Visión Máquina (Escalado): {variable_prueba} = {valor_escalado:.4f}\")\n", + "\n", + " # Lo pasamos por el Traductor\n", + " paciente_traducido = traductor_inverso_escalamiento(paciente_ejemplo, modelo_escalador)\n", + " valor_original = paciente_traducido[variable_prueba].values[0]\n", + "\n", + " # Usamos formateo dinámico: si el original es entero, no mostramos decimales\n", + " if float(valor_original).is_integer():\n", + " logger.info(f\"👤 Visión Humana (Original): {variable_prueba} = {int(valor_original):,}\")\n", + " else:\n", + " logger.info(f\"👤 Visión Humana (Original): {variable_prueba} = {valor_original:,.2f}\")\n", + " else:\n", + " logger.warning(\"⚠️ No hay variables numéricas escaladas para la demostración.\")\n", + " else:\n", + " logger.info(\" ⏭️ Bypass activo o escalador no entrenado. Traducción inversa omitida.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Escalamiento Dinámico o Traductor: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_weekis_anomaly_isoforest
021.00.21979310.00.0475540.1219920.0112200.2583081.00.00.0...0.02.00.00.00.00.000000.00.0000000.001
141.00.21868411.00.4447410.2637420.4481490.2541211.04386.00.0...0.00.01.00.04386.0106.9756173.10.0000000.000
224.00.2186849.00.0449660.0628220.0647310.1211130.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
359.00.2200249.00.0917080.4579890.1072670.2583080.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
435.00.2186429.00.4490630.2687300.4514030.2644451.00.01887.0...0.00.00.01.0-1887.00.000000.053.91428637.741
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21.0 0.219793 10.0 0.047554 0.121992 0.011220 \n", + "1 41.0 0.218684 11.0 0.444741 0.263742 0.448149 \n", + "2 24.0 0.218684 9.0 0.044966 0.062822 0.064731 \n", + "3 59.0 0.220024 9.0 0.091708 0.457989 0.107267 \n", + "4 35.0 0.218642 9.0 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_native_country \\\n", + "0 0.258308 1.0 0.0 0.0 ... 0.0 \n", + "1 0.254121 1.0 4386.0 0.0 ... 0.0 \n", + "2 0.121113 0.0 0.0 0.0 ... 0.0 \n", + "3 0.258308 0.0 0.0 0.0 ... 0.0 \n", + "4 0.264445 1.0 0.0 1887.0 ... 0.0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 2.0 0.0 0.0 0.0 \n", + "1 0.0 1.0 0.0 4386.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 1.0 -1887.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.00000 0.0 \n", + "1 106.97561 73.1 \n", + "2 0.00000 0.0 \n", + "3 0.00000 0.0 \n", + "4 0.00000 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week is_anomaly_isoforest \n", + "0 0.000000 0.00 1 \n", + "1 0.000000 0.00 0 \n", + "2 0.000000 0.00 0 \n", + "3 0.000000 0.00 0 \n", + "4 53.914286 37.74 1 \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 91, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_weekis_anomaly_isoforest
039.00.54489910.00.1031060.2255580.1042160.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
135.00.21880013.00.4475940.1358270.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
231.00.21880013.00.4475940.4563640.4497980.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
367.00.54489913.00.0906210.0392740.0601270.2560480.00.00.0...0.00.00.00.00.00.00.00.00.00
456.00.2891039.00.0807620.4816760.1042160.2560481.00.00.0...0.00.00.00.00.00.00.00.00.00
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 39.0 0.544899 10.0 0.103106 0.225558 0.104216 \n", + "1 35.0 0.218800 13.0 0.447594 0.135827 0.449798 \n", + "2 31.0 0.218800 13.0 0.447594 0.456364 0.449798 \n", + "3 67.0 0.544899 13.0 0.090621 0.039274 0.060127 \n", + "4 56.0 0.289103 9.0 0.080762 0.481676 0.104216 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_native_country \\\n", + "0 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "1 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "2 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "3 0.256048 0.0 0.0 0.0 ... 0.0 \n", + "4 0.256048 1.0 0.0 0.0 ... 0.0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 0.0 0.0 0.0 0.0 \n", + "1 0.0 0.0 0.0 0.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 0.0 0.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.0 0.0 \n", + "1 0.0 0.0 \n", + "2 0.0 0.0 \n", + "3 0.0 0.0 \n", + "4 0.0 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week is_anomaly_isoforest \n", + "0 0.0 0.0 0 \n", + "1 0.0 0.0 0 \n", + "2 0.0 0.0 0 \n", + "3 0.0 0.0 0 \n", + "4 0.0 0.0 0 \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 92, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_test.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 4.8 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n", + "\n", + "\n", + "# # FASE 5: Ingeniería Profunda y Aumento de Datos (La Vanguardia)\n", + "# Con una matriz limpia y numérica, desplegamos IA generativa y análisis causal.\n", + "# \n", + "# " + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 EVALUANDO REZAGOS EN TRAIN <<<\n", + "=== 🕰️ FASE 14.1: Ingeniería de Rezagos Temporales (Lag Features) ===\n", + " ✅ [BYPASS INTELIGENTE] Topología detectada como 'Transversal'.\n", + " ↳ Operación abortada para prevenir mezcla caótica de registros independientes.\n", + "\n", + ">>> 🔒 EVALUANDO REZAGOS EN TEST <<<\n", + "=== 🕰️ FASE 14.1: Ingeniería de Rezagos Temporales (Lag Features) ===\n", + " ✅ [BYPASS INTELIGENTE] Topología detectada como 'Transversal'.\n", + " ↳ Operación abortada para prevenir mezcla caótica de registros independientes.\n", + "\n", + "📦 [MLOps] Matrices y rutas de rezagos actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, List, Optional\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def ingenieria_rezagos_automl(\n", + " X: pd.DataFrame, \n", + " rutas: Dict, \n", + " topologia_dataset: str = 'Transversal', # 🔧 NUEVO: Enrutador Topológico Maestro\n", + " columnas_a_rezagar: List[str] = None,\n", + " periodos: List[int] = [1, 2, 3],\n", + " variable_entidad_id: Optional[str] = None\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 14.1] Motor AutoML de Variables de Rezago (Lag Features).\n", + " - Auto-Descubrimiento Temporal: Busca columnas datetime para usarlas como ancla.\n", + " - Inteligencia Topológica: Bypass si es 'Transversal'. Actúa si es 'Serie de Tiempo Pura' o 'Datos de Panel'.\n", + " - Exterminio del ID (NUEVO): Destruye la entidad y el index tras rezagar para evitar Leakage.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🕰️ FASE 14.1: Ingeniería de Rezagos Temporales (Lag Features) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. Auditoría de Seguridad AutoML (El Bypass Inteligente)\n", + " # ==========================================\n", + " if topologia_dataset == 'Transversal':\n", + " logger.info(f\" ✅ [BYPASS INTELIGENTE] Topología detectada como '{topologia_dataset}'.\")\n", + " logger.info(\" ↳ Operación abortada para prevenir mezcla caótica de registros independientes.\")\n", + " return X_trans, rutas\n", + "\n", + " # 🚀 NUEVA INTELIGENCIA: Escáner de Topología Temporal\n", + " columnas_fecha = X_trans.select_dtypes(include=['datetime64', 'datetime', 'datetimetz']).columns.tolist()\n", + "\n", + " if not columnas_fecha:\n", + " logger.warning(f\" ⚠️ [ADVERTENCIA] Topología es '{topologia_dataset}', pero NO hay columnas tipo 'datetime' vivas.\")\n", + " logger.info(\" ↳ Bypass activado por seguridad.\")\n", + " return X_trans, rutas\n", + "\n", + " variable_tiempo = columnas_fecha[0]\n", + " logger.info(f\" 🧭 [AUTO-DETECCIÓN TEMPORAL] Ancla cronológica encontrada: '{variable_tiempo}'.\")\n", + "\n", + " # --- AUTO-DETECCIÓN DE VARIABLES NUMÉRICAS ---\n", + " if not columnas_a_rezagar:\n", + " columnas_a_rezagar = [c for c in rutas.get('num_vars', []) if c in X_trans.columns and c != variable_tiempo]\n", + " if not columnas_a_rezagar:\n", + " logger.info(\" ✅ [BYPASS] No se encontraron variables numéricas en el enrutador para rezagar.\")\n", + " return X_trans, rutas\n", + " else:\n", + " logger.info(f\" 🧠 [AUTO-DETECCIÓN VARIABLES] Se detectaron {len(columnas_a_rezagar)} variables numéricas para analizar.\")\n", + "\n", + " # ==========================================\n", + " # 2. Ordenamiento y Topología Temporal\n", + " # ==========================================\n", + " logger.info(f\" 🚂 [TRAIN/TEST] Generando memoria histórica de {len(periodos)} periodos para {len(columnas_a_rezagar)} variables...\")\n", + "\n", + " nombres_idx_originales = X_trans.index.names\n", + " entidad_rescatada = False\n", + "\n", + " if topologia_dataset == 'Datos de Panel' and variable_entidad_id:\n", + " # Rescate si estaba en el Index\n", + " if variable_entidad_id not in X_trans.columns and variable_entidad_id in nombres_idx_originales:\n", + " X_trans = X_trans.reset_index()\n", + " entidad_rescatada = True\n", + " logger.info(f\" 🔓 [RESCATE] Entidad '{variable_entidad_id}' recuperada del Index para agrupar.\")\n", + "\n", + " if variable_entidad_id in X_trans.columns:\n", + " X_trans = X_trans.sort_values(by=[variable_entidad_id, variable_tiempo])\n", + " motor_shift = X_trans.groupby(variable_entidad_id)\n", + " logger.info(f\" ↳ Blindaje de Identidad activo (Datos de Panel): Agrupando por '{variable_entidad_id}'.\")\n", + " else:\n", + " logger.error(f\" ⚠️ [CRÍTICO] La entidad '{variable_entidad_id}' no se encontró.\")\n", + " X_trans = X_trans.sort_values(by=[variable_tiempo])\n", + " motor_shift = X_trans\n", + " logger.warning(f\" ↳ FALLBACK: Serie de tiempo global activa (Serie Pura).\")\n", + " else:\n", + " X_trans = X_trans.sort_values(by=[variable_tiempo])\n", + " motor_shift = X_trans\n", + " logger.info(f\" ↳ Serie de tiempo global activa (Serie Pura): Ordenando cronológicamente por '{variable_tiempo}'.\")\n", + "\n", + " # ==========================================\n", + " # 3. Creación de Multi-Universos (Lags)\n", + " # ==========================================\n", + " columnas_creadas = 0\n", + " nombre_lag = None \n", + "\n", + " for col in columnas_a_rezagar:\n", + " if col not in X_trans.columns: continue\n", + "\n", + " for p in periodos:\n", + " nombre_lag = f\"{col}_lag_{p}\"\n", + " X_trans[nombre_lag] = motor_shift[col].shift(p)\n", + " columnas_creadas += 1\n", + "\n", + " if nombre_lag not in rutas['num_vars']:\n", + " rutas['num_vars'].append(nombre_lag)\n", + "\n", + " huecos_generados = X_trans[nombre_lag].isna().sum() if (columnas_creadas > 0 and nombre_lag) else 0\n", + "\n", + " # ==========================================\n", + " # 🚀 PROTOCOLO DE EXTERMINIO: Index y Columna ID\n", + " # ==========================================\n", + " logger.info(f\" 🧹 Ejecutando Protocolo de Limpieza Final...\")\n", + " X_trans = X_trans.reset_index(drop=True) # Destruye cualquier index personalizado\n", + "\n", + " if topologia_dataset == 'Datos de Panel' and variable_entidad_id and variable_entidad_id in X_trans.columns:\n", + " X_trans = X_trans.drop(columns=[variable_entidad_id])\n", + " if variable_entidad_id in rutas.get('cat_vars', []):\n", + " rutas['cat_vars'].remove(variable_entidad_id)\n", + " logger.info(f\" ↳ Entidad '{variable_entidad_id}' eliminada de las columnas para evitar Data Leakage.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Máquina del tiempo completada. {columnas_creadas} dimensiones históricas inyectadas.\")\n", + " if huecos_generados > 0:\n", + " logger.warning(f\" ⚠️ NOTA: Se generaron {huecos_generados} NaNs naturales por falta de pasado en los primeros registros.\")\n", + " logger.info(\" 💡 CONSEJO MLOps: Deberás pasar el Imputador (Paso 11.1) nuevamente sobre estos NaNs antes de entrenar.\")\n", + " logger.info(f\"\\n⏱️ Rezagos generados en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # ---------------------------------------------------------\n", + " # 🔗 AUTOWIRING MLOPS: Extracción Segura desde el Manager\n", + " # ---------------------------------------------------------\n", + " # 1. Buscamos la Topología directamente en la memoria del Manager (rutas)\n", + " TOPOLOGIA_GLOBAL = manager.rutas.get('reporte_topologia', {}).get('topologia', 'Transversal')\n", + "\n", + " # 2. Buscamos la Entidad directamente en la memoria del Manager (rutas)\n", + " ENTIDAD_GLOBAL = manager.rutas.get('variable_entidad_global', None)\n", + "\n", + " logger.info(\">>> 🚂 EVALUANDO REZAGOS EN TRAIN <<<\")\n", + " X_train_lag, rutas_actualizadas = ingenieria_rezagos_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL, \n", + " columnas_a_rezagar=None, \n", + " periodos=[1, 2],\n", + " variable_entidad_id=ENTIDAD_GLOBAL\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 EVALUANDO REZAGOS EN TEST <<<\")\n", + " X_test_lag, _ = ingenieria_rezagos_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " topologia_dataset=TOPOLOGIA_GLOBAL, \n", + " columnas_a_rezagar=None, \n", + " periodos=[1, 2],\n", + " variable_entidad_id=ENTIDAD_GLOBAL \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_lag\n", + " manager.X_test = X_test_lag\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas de rezagos actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la creación de Rezagos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ageworkclasseducation_nummarital_statusoccupationrelationshipracesexcapital_gaincapital_loss...is_missing_native_countrytotal_nulos_en_filatiene_capital_gaintiene_capital_losscapital_netocapital_gain_por_agecapital_gain_por_hours_per_weekcapital_loss_por_agecapital_loss_por_hours_per_weekis_anomaly_isoforest
021.00.21979310.00.0475540.1219920.0112200.2583081.00.00.0...0.02.00.00.00.00.000000.00.0000000.001
141.00.21868411.00.4447410.2637420.4481490.2541211.04386.00.0...0.00.01.00.04386.0106.9756173.10.0000000.000
224.00.2186849.00.0449660.0628220.0647310.1211130.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
359.00.2200249.00.0917080.4579890.1072670.2583080.00.00.0...0.00.00.00.00.00.000000.00.0000000.000
435.00.2186429.00.4490630.2687300.4514030.2644451.00.01887.0...0.00.00.01.0-1887.00.000000.053.91428637.741
\n", + "

5 rows × 25 columns

\n", + "
" + ], + "text/plain": [ + " age workclass education_num marital_status occupation relationship \\\n", + "0 21.0 0.219793 10.0 0.047554 0.121992 0.011220 \n", + "1 41.0 0.218684 11.0 0.444741 0.263742 0.448149 \n", + "2 24.0 0.218684 9.0 0.044966 0.062822 0.064731 \n", + "3 59.0 0.220024 9.0 0.091708 0.457989 0.107267 \n", + "4 35.0 0.218642 9.0 0.449063 0.268730 0.451403 \n", + "\n", + " race sex capital_gain capital_loss ... is_missing_native_country \\\n", + "0 0.258308 1.0 0.0 0.0 ... 0.0 \n", + "1 0.254121 1.0 4386.0 0.0 ... 0.0 \n", + "2 0.121113 0.0 0.0 0.0 ... 0.0 \n", + "3 0.258308 0.0 0.0 0.0 ... 0.0 \n", + "4 0.264445 1.0 0.0 1887.0 ... 0.0 \n", + "\n", + " total_nulos_en_fila tiene_capital_gain tiene_capital_loss capital_neto \\\n", + "0 2.0 0.0 0.0 0.0 \n", + "1 0.0 1.0 0.0 4386.0 \n", + "2 0.0 0.0 0.0 0.0 \n", + "3 0.0 0.0 0.0 0.0 \n", + "4 0.0 0.0 1.0 -1887.0 \n", + "\n", + " capital_gain_por_age capital_gain_por_hours_per_week \\\n", + "0 0.00000 0.0 \n", + "1 106.97561 73.1 \n", + "2 0.00000 0.0 \n", + "3 0.00000 0.0 \n", + "4 0.00000 0.0 \n", + "\n", + " capital_loss_por_age capital_loss_por_hours_per_week is_anomaly_isoforest \n", + "0 0.000000 0.00 1 \n", + "1 0.000000 0.00 0 \n", + "2 0.000000 0.00 0 \n", + "3 0.000000 0.00 0 \n", + "4 53.914286 37.74 1 \n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 95, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "\n", + "X_train.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 4.8 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 25 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64\n", + " 1 workclass 6508 non-null float64\n", + " 2 education_num 6508 non-null float64\n", + " 3 marital_status 6508 non-null float64\n", + " 4 occupation 6508 non-null float64\n", + " 5 relationship 6508 non-null float64\n", + " 6 race 6508 non-null float64\n", + " 7 sex 6508 non-null float64\n", + " 8 capital_gain 6508 non-null float64\n", + " 9 capital_loss 6508 non-null float64\n", + " 10 hours_per_week 6508 non-null float64\n", + " 11 native_country 6508 non-null float64\n", + " 12 is_missing_workclass 6508 non-null float64\n", + " 13 is_missing_occupation 6508 non-null float64\n", + " 14 is_missing_capital_gain 6508 non-null float64\n", + " 15 is_missing_native_country 6508 non-null float64\n", + " 16 total_nulos_en_fila 6508 non-null float64\n", + " 17 tiene_capital_gain 6508 non-null float64\n", + " 18 tiene_capital_loss 6508 non-null float64\n", + " 19 capital_neto 6508 non-null float64\n", + " 20 capital_gain_por_age 6508 non-null float64\n", + " 21 capital_gain_por_hours_per_week 6508 non-null float64\n", + " 22 capital_loss_por_age 6508 non-null float64\n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64\n", + " 24 is_anomaly_isoforest 6508 non-null int8 \n", + "dtypes: float64(24), int8(1)\n", + "memory usage: 1.2 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "26029 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 25.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "6508 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 6.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TRAIN ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.004s\n", + "\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TEST ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.002s\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import re\n", + "import time\n", + "from typing import Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def radar_nulos_profundos_automl(df: pd.DataFrame, nombre_matriz: str = \"Matriz\") -> Dict[str, int]:\n", + " \"\"\"\n", + " [HERRAMIENTA MLOps] Escáner de Nulos Ocultos (Anomalías Léxicas).\n", + " - Inteligencia: Solo ataca columnas de texto/categorías para ahorrar CPU.\n", + " - Desglose de Nativos (NUEVO): Clasifica inteligentemente entre NaN (Numéricos) y NaT (Fechas).\n", + " - Motor Regex: Detecta falsos nulos ('N/A', 'unknown', '?', '-', espacios vacíos).\n", + " - Vectorización: Usa .str.match() nativo de Pandas en C++ (Cero bucles for).\n", + " \"\"\"\n", + " if not isinstance(df, pd.DataFrame) or df.empty:\n", + " logger.error(f\"🛑 Error: La matriz '{nombre_matriz}' está vacía o no es válida.\")\n", + " return {}\n", + "\n", + " logger.info(f\"=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: {nombre_matriz} ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " reporte_ocultos = {}\n", + "\n", + " # 🚀 NUEVO: Desglose inteligente de nulos nativos por Tipo de Dato\n", + " nulos_por_columna = df.isna().sum()\n", + " cols_con_nulos = nulos_por_columna[nulos_por_columna > 0]\n", + "\n", + " desglose_nativos = {\"NaN\": 0, \"NaT\": 0}\n", + "\n", + " for col, cantidad in cols_con_nulos.items():\n", + " if pd.api.types.is_datetime64_any_dtype(df[col]):\n", + " desglose_nativos[\"NaT\"] += cantidad\n", + " else:\n", + " desglose_nativos[\"NaN\"] += cantidad\n", + "\n", + " nulos_nativos_totales = sum(desglose_nativos.values())\n", + "\n", + " # 1. El Súper-Regex del Arquitecto\n", + " # (?i) = Case insensitive. \\s* = Ignora espacios al inicio/fin. \n", + " patron_falsos_nulos = re.compile(r'(?i)^\\s*(unknown|n/?a|null|nan|missing|none|-1|\\?|-|)\\s*$')\n", + "\n", + " # 2. Escudo de Tipos: Solo escaneamos textos, la matemática pura no tiene letras\n", + " cols_texto = df.select_dtypes(include=['object', 'string', 'category']).columns.tolist()\n", + "\n", + " nulos_ocultos_totales = 0\n", + "\n", + " if cols_texto:\n", + " for col in cols_texto:\n", + " # Aislamos solo los valores que NO son nulos nativos (para no contar doble)\n", + " serie_viva = df[col].dropna().astype(str)\n", + "\n", + " if not serie_viva.empty:\n", + " # Aplicamos el motor Regex vectorizado\n", + " detecciones = serie_viva.str.match(patron_falsos_nulos).sum()\n", + "\n", + " if detecciones > 0:\n", + " reporte_ocultos[col] = detecciones\n", + " nulos_ocultos_totales += detecciones\n", + "\n", + " # 3. Reporte de Inteligencia\n", + " logger.info(\"-\" * 60)\n", + " if nulos_nativos_totales == 0 and nulos_ocultos_totales == 0:\n", + " logger.info(\" ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\")\n", + " else:\n", + " logger.warning(f\" ⚠️ ALERTAS ENCONTRADAS:\")\n", + " logger.warning(f\" ↳ Nulos Nativos Totales: {nulos_nativos_totales:,}\")\n", + "\n", + " # Desglose específico\n", + " if desglose_nativos['NaN'] > 0:\n", + " logger.info(f\" - Tipo NaN (Flotantes/Texto) : {desglose_nativos['NaN']:,}\")\n", + " if desglose_nativos['NaT'] > 0:\n", + " logger.info(f\" - Tipo NaT (Fechas/Tiempos) : {desglose_nativos['NaT']:,}\")\n", + "\n", + " logger.warning(f\" ↳ Nulos Ocultos (Regex) : {nulos_ocultos_totales:,}\")\n", + "\n", + " if nulos_ocultos_totales > 0:\n", + " logger.warning(\" 🦠 Desglose de columnas infectadas con Nulos Léxicos:\")\n", + " for col, cantidad in reporte_ocultos.items():\n", + " logger.info(f\" - '{col}': {cantidad:,} registros basura\")\n", + "\n", + " logger.info(f\"\\n⏱️ Escaneo completado en {time.time() - inicio_timer:.3f}s\\n\")\n", + "\n", + " return reporte_ocultos\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\")\n", + "\n", + " # Escaneamos Train usando el manager\n", + " infecciones_train = radar_nulos_profundos_automl(manager.X_train, nombre_matriz=\"X_TRAIN\")\n", + "\n", + " # Escaneamos Test usando el manager\n", + " infecciones_test = radar_nulos_profundos_automl(manager.X_test, nombre_matriz=\"X_TEST\")\n", + "\n", + " # Lógica de reacción automática (Opcional)\n", + " if infecciones_train or infecciones_test:\n", + " logger.warning(\"💡 CONSEJO MLOps: Se detectó basura léxica. \")\n", + " logger.info(\" Recomendación: En tu código del Imputador KNN (Fase 11.1) o en la Guillotina, \")\n", + " logger.info(\" deberías reemplazar estos textos por np.nan usando df.replace(regex) para que el Imputador los cure.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Radar de Nulos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " ✅ [MATRIZ PERFECTA] No hay nulos numéricos. Entrenamiento KNN omitido.\n", + "\n", + ">>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\n", + "=== 🩹 FASE 11.1: Restauración Espacial (KNN Imputer Escalable - 5 Vecinos) ===\n", + " 🔒 [TEST] Bypass heredado de Train (Matriz perfecta). Omitiendo KNN.\n", + "\n", + "📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if not hasattr(manager, 'rutas') or manager.rutas is None:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # 🚀 Clean Code Absoluto: Función 100% Autónoma, lee la memoria sola.\n", + " logger.info(\">>> 🚂 ENTRENANDO IMPUTADOR KNN EN TRAIN <<<\")\n", + " X_train_knn, rutas_actualizadas, modelo_knn = imputacion_knn_automl(\n", + " X=manager.X_train, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO IMPUTADOR KNN A TEST <<<\")\n", + " X_test_knn, _, _ = imputacion_knn_automl(\n", + " X=manager.X_test, \n", + " rutas=manager.rutas,\n", + " n_vecinos=5,\n", + " imputador_entrenado=modelo_knn \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_knn\n", + " manager.X_test = X_test_knn\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización de la caja fuerte de modelos preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('imputador_knn', modelo_knn)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['imputador_knn'] = modelo_knn\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices matemáticas, rutas y modelo KNN actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Imputación KNN: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TRAIN ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.004s\n", + "\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TEST ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.002s\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\")\n", + "\n", + " # Escaneamos Train usando el manager\n", + " infecciones_train = radar_nulos_profundos_automl(manager.X_train, nombre_matriz=\"X_TRAIN\")\n", + "\n", + " # Escaneamos Test usando el manager\n", + " infecciones_test = radar_nulos_profundos_automl(manager.X_test, nombre_matriz=\"X_TEST\")\n", + "\n", + " # Lógica de reacción automática (Opcional)\n", + " if infecciones_train or infecciones_test:\n", + " logger.warning(\"💡 CONSEJO MLOps: Se detectó basura léxica. \")\n", + " logger.info(\" Recomendación: En tu código del Imputador KNN (Fase 11.1) o en la Guillotina, \")\n", + " logger.info(\" deberías reemplazar estos textos por np.nan usando df.replace(regex) para que el Imputador los cure.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Radar de Nulos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO AGENTE LLM-FE EN TRAIN <<<\n", + "=== 🧬 FASE 14.2: LLM-FE ReAct y Evaluación Bayesiana ===\n", + " 🚂 [TRAIN] Inicializando Tribunal Bayesiano y Agente Generador...\n", + " ↳ Dataset masivo. Creando 'Submuestra de Tribunal' de 5,000 filas para proteger RAM...\n", + " ⚖️ Score Base (Red Bayesiana en Submuestra): 0.7864\n", + " 🧠 Agente formulando hipótesis combinatorias...\n", + " 🧑‍⚖️ Juez evaluando 135 propuestas del Agente...\n", + " 🌟 ¡Aprobada! [llm_age_*_education_num] aportó mejora (+0.0014)\n", + " 🌟 ¡Aprobada! [llm_capital_gain_*_capital_neto] aportó mejora (+0.0024)\n", + " 🧬 Inyectando 2 características evolutivas en la matriz principal...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Ingeniería LLM-FE completada con Arquitectura Big Data. Score final: 0.7902\n", + "\n", + "⏱️ Evolución terminada en 19.679s\n", + "\n", + ">>> 🔒 APLICANDO FÓRMULAS LLM-FE A TEST <<<\n", + "=== 🧬 FASE 14.2: LLM-FE ReAct y Evaluación Bayesiana ===\n", + " 🔒 [TEST] Inyectando 2 Súper-Características aprendidas de Train...\n", + "\n", + "⏱️ Inyección completada en 0.003s\n", + "\n", + "📦 [MLOps] Matrices, rutas y fórmulas LLM-FE actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import warnings\n", + "import gc # 🚀 NUEVO: Garbage Collector para RAM\n", + "from typing import Tuple, Dict, Optional\n", + "from sklearn.linear_model import BayesianRidge\n", + "from sklearn.naive_bayes import GaussianNB\n", + "from sklearn.model_selection import cross_val_score\n", + "import itertools\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def generacion_guiada_llm_fe(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " es_regresion: bool = True,\n", + " max_features_nuevas: int = 5,\n", + " receta_formulas: Optional[Dict[str, str]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 14.2] Generador ReAct (LLM-FE) + Juez Bayesiano.\n", + " - Sandbox Matemático: Ejecuta expresiones de forma segura.\n", + " - Arquitectura Big Data (NUEVO): Submuestreo estricto para el Juez Bayesiano y GC para la RAM.\n", + " - Muro MLOps: En Train descubre y aprueba fórmulas. En Test aplica estrictamente.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧬 FASE 14.2: LLM-FE ReAct y Evaluación Bayesiana ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + " entorno_seguro = {\"np\": np, \"X\": X_trans}\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (Aplicador Ciego)\n", + " # ==========================================\n", + " if receta_formulas is not None:\n", + " if not receta_formulas:\n", + " logger.info(\" ✅ [BYPASS] No hay Súper-Características aprendidas de Train para inyectar.\")\n", + " return X_trans, rutas, receta_formulas\n", + "\n", + " logger.info(f\" 🔒 [TEST] Inyectando {len(receta_formulas)} Súper-Características aprendidas de Train...\")\n", + " for nombre_feature, formula in receta_formulas.items():\n", + " try:\n", + " X_trans[nombre_feature] = eval(formula, {\"__builtins__\": {}}, entorno_seguro)\n", + " except Exception as e:\n", + " logger.error(f\" ⚠️ Error inyectando '{nombre_feature}': {e}. Llenando con 0.\")\n", + " X_trans[nombre_feature] = 0.0\n", + "\n", + " logger.info(f\"\\n⏱️ Inyección completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_formulas\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (El Laboratorio del Agente ReAct)\n", + " # ==========================================\n", + " if y is None or not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' y variables numéricas para el Juez Bayesiano.\")\n", + " return X_trans, rutas, {}\n", + "\n", + " logger.info(f\" 🚂 [TRAIN] Inicializando Tribunal Bayesiano y Agente Generador...\")\n", + "\n", + " # --- A. Entrenar Modelo Base (Juez) con Arquitectura Big Data ---\n", + " MAX_EVAL_SAMPLES = 5000 # 🚀 Blindaje RAM: Máximo de filas para evaluar combinaciones\n", + "\n", + " juez = BayesianRidge() if es_regresion else GaussianNB()\n", + "\n", + " if len(X_trans) > MAX_EVAL_SAMPLES:\n", + " logger.info(f\" ↳ Dataset masivo. Creando 'Submuestra de Tribunal' de {MAX_EVAL_SAMPLES:,} filas para proteger RAM...\")\n", + " # Tomamos una muestra estratificada/aleatoria rápida (usamos head para no romper series de tiempo)\n", + " X_juez = X_trans[cols_numericas].head(MAX_EVAL_SAMPLES).fillna(0)\n", + " y_juez = y.head(MAX_EVAL_SAMPLES)\n", + " else:\n", + " X_juez = X_trans[cols_numericas].fillna(0)\n", + " y_juez = y\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " scoring_metric = 'r2' if es_regresion else 'accuracy'\n", + " score_base = np.mean(cross_val_score(juez, X_juez, y_juez, cv=3, scoring=scoring_metric))\n", + "\n", + " logger.info(f\" ⚖️ Score Base (Red Bayesiana en Submuestra): {score_base:.4f}\")\n", + "\n", + " # --- B. El Agente ReAct ---\n", + " top_cols = cols_numericas[:10] \n", + " operadores = ['+', '-', '*'] \n", + "\n", + " formulas_propuestas = {}\n", + " logger.info(f\" 🧠 Agente formulando hipótesis combinatorias...\")\n", + "\n", + " for col_A, col_B in itertools.combinations(top_cols, 2):\n", + " for op in operadores:\n", + " nombre = f\"llm_{col_A}_{op}_{col_B}\".replace('.','').replace('-','_')\n", + " formula = f\"X['{col_A}'] {op} X['{col_B}']\"\n", + " formulas_propuestas[nombre] = formula\n", + "\n", + " # --- C. Tribunal de Evaluación Bayesiana ---\n", + " receta_ganadoras = {}\n", + " mejor_score_actual = score_base\n", + "\n", + " logger.info(f\" 🧑‍⚖️ Juez evaluando {len(formulas_propuestas)} propuestas del Agente...\")\n", + "\n", + " # 🚀 Entorno seguro especial para el Juez (operando solo sobre la submuestra)\n", + " entorno_juez = {\"np\": np, \"X\": X_juez}\n", + "\n", + " for nombre_feature, formula in formulas_propuestas.items():\n", + " if len(receta_ganadoras) >= max_features_nuevas:\n", + " break \n", + "\n", + " try:\n", + " # 🚀 Blindaje RAM: X_temp se crea y se destruye en cada iteración\n", + " X_temp = X_juez.copy()\n", + " nueva_col_array = eval(formula, {\"__builtins__\": {}}, entorno_juez)\n", + " X_temp[nombre_feature] = nueva_col_array.fillna(0)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " score_nuevo = np.mean(cross_val_score(juez, X_temp, y_juez, cv=3, scoring=scoring_metric))\n", + "\n", + " margen_mejora = score_nuevo - mejor_score_actual\n", + " if margen_mejora > 0.001: \n", + " logger.info(f\" 🌟 ¡Aprobada! [{nombre_feature}] aportó mejora (+{margen_mejora:.4f})\")\n", + " receta_ganadoras[nombre_feature] = formula\n", + " mejor_score_actual = score_nuevo\n", + "\n", + " # 🚀 Garbage Collector: Liberar RAM explícitamente después del juicio\n", + " del X_temp\n", + " del nueva_col_array\n", + " gc.collect()\n", + "\n", + " except Exception as e:\n", + " continue\n", + "\n", + " # --- D. Inyección Definitiva en Train (Matriz Completa) ---\n", + " if receta_ganadoras:\n", + " logger.info(f\" 🧬 Inyectando {len(receta_ganadoras)} características evolutivas en la matriz principal...\")\n", + " for nombre, formula in receta_ganadoras.items():\n", + " # Aquí sí inyectamos a toda la matriz X_trans original\n", + " X_trans[nombre] = eval(formula, {\"__builtins__\": {}}, entorno_seguro)\n", + " rutas['num_vars'].append(nombre)\n", + " else:\n", + " logger.info(\" ❌ El Juez Bayesiano rechazó todas las propuestas. Ninguna aportó valor real.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Ingeniería LLM-FE completada con Arquitectura Big Data. Score final: {mejor_score_actual:.4f}\")\n", + " logger.info(f\"\\n⏱️ Evolución terminada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, receta_ganadoras\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " TARGET_ES_REGRESION = pd.api.types.is_float_dtype(manager.y_train) or manager.y_train.nunique() > 10\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO AGENTE LLM-FE EN TRAIN <<<\")\n", + " X_train_llm, rutas_actualizadas, diccionario_formulas = generacion_guiada_llm_fe(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " es_regresion=TARGET_ES_REGRESION,\n", + " max_features_nuevas=5 \n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO FÓRMULAS LLM-FE A TEST <<<\")\n", + " X_test_llm, _, _ = generacion_guiada_llm_fe(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_formulas=diccionario_formulas # El puente MLOps\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_llm\n", + " manager.X_test = X_test_llm\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos inicialización de modelos de preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_llm_fe', diccionario_formulas)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_llm_fe'] = diccionario_formulas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y fórmulas LLM-FE actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fase LLM-FE: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 27 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 race 26029 non-null float64\n", + " 7 sex 26029 non-null float64\n", + " 8 capital_gain 26029 non-null float64\n", + " 9 capital_loss 26029 non-null float64\n", + " 10 hours_per_week 26029 non-null float64\n", + " 11 native_country 26029 non-null float64\n", + " 12 is_missing_workclass 26029 non-null float64\n", + " 13 is_missing_occupation 26029 non-null float64\n", + " 14 is_missing_capital_gain 26029 non-null float64\n", + " 15 is_missing_native_country 26029 non-null float64\n", + " 16 total_nulos_en_fila 26029 non-null float64\n", + " 17 tiene_capital_gain 26029 non-null float64\n", + " 18 tiene_capital_loss 26029 non-null float64\n", + " 19 capital_neto 26029 non-null float64\n", + " 20 capital_gain_por_age 26029 non-null float64\n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64\n", + " 22 capital_loss_por_age 26029 non-null float64\n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64\n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64\n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64\n", + "dtypes: float64(26), int8(1)\n", + "memory usage: 5.2 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 ENTRENANDO EMBEDDINGS GGPL EN TRAIN <<<\n", + "=== 🌳 FASE 15.1: Embeddings GGPL (Proyección GBDT Ligero) ===\n", + " 🚂 [TRAIN] Dataset masivo. Entrenando GBDT en submuestra de 5000 filas...\n", + " ↳ Entrenando red de 15 árboles (Profundidad: 3)...\n", + " ↳ Extrayendo hiper-coordenadas (Leaf Indices) de toda la matriz...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Discretización GGPL Exitosa. 15 variables categóricas de alta densidad creadas.\n", + " 🧠 Las variables continuas ahora tienen un gemelo no lineal.\n", + "\n", + "⏱️ Proyección GGPL completada en 0.225s\n", + "\n", + ">>> 🔒 PROYECTANDO EMBEDDINGS GGPL EN TEST <<<\n", + "=== 🌳 FASE 15.1: Embeddings GGPL (Proyección GBDT Ligero) ===\n", + " 🔒 [TEST] Pasando matriz por el GBDT aprendido para extraer coordenadas de hojas...\n", + " ↳ 15 nuevas coordenadas proyectadas y casteadas a 'category'.\n", + "\n", + "⏱️ Proyección GGPL completada en 0.143s\n", + "\n", + "📦 [MLOps] Matrices, rutas y modelo GBDT-Embedder actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import warnings\n", + "import gc # 🚀 NUEVO: Garbage Collector para RAM\n", + "from typing import Tuple, Dict\n", + "from sklearn.ensemble import GradientBoostingClassifier, GradientBoostingRegressor\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def embeddings_ggpl_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " n_arboles: int = 15,\n", + " profundidad: int = 3,\n", + " modelo_gbdt_aprendido = None\n", + ") -> Tuple[pd.DataFrame, Dict, any]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 15.1] Motor AutoML de Embeddings GGPL (GBDT Leaf Encoding).\n", + " - Proyección Dimensional: Usa un GBDT ligero para discretizar continuas.\n", + " - Inteligencia de Tarea: Detecta si 'y' es continua o categórica.\n", + " - 🚀 FIX MLOps: Tipado estricto 'category' para evitar colapsos en LightGBM.\n", + " - Protección RAM: Submuestreo para el entrenamiento del GBDT y GC explícito.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🌳 FASE 15.1: Embeddings GGPL (Proyección GBDT Ligero) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + "\n", + " # Escudo de Tipos: El GBDT solo necesita las variables numéricas\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No hay variables numéricas para proyectar.\")\n", + " return X_trans, rutas, modelo_gbdt_aprendido\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.apply)\n", + " # ==========================================\n", + " if modelo_gbdt_aprendido is not None:\n", + " logger.info(f\" 🔒 [TEST] Pasando matriz por el GBDT aprendido para extraer coordenadas de hojas...\")\n", + "\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + " hojas = modelo_gbdt_aprendido.apply(X_num_sana)\n", + "\n", + " hojas_planas = hojas.reshape(hojas.shape[0], -1)\n", + "\n", + " n_features_nuevas = hojas_planas.shape[1]\n", + " nombres_nuevas = [f\"gbdt_emb_{i}\" for i in range(n_features_nuevas)]\n", + "\n", + " # 🚀 FIX MLOps: Asignación e inyección categórica\n", + " X_trans[nombres_nuevas] = hojas_planas\n", + " for col in nombres_nuevas:\n", + " X_trans[col] = X_trans[col].astype('category')\n", + "\n", + " # 🧹 Limpieza\n", + " del X_num_sana\n", + " del hojas\n", + " del hojas_planas\n", + " gc.collect()\n", + "\n", + " logger.info(f\" ↳ {n_features_nuevas} nuevas coordenadas proyectadas y casteadas a 'category'.\")\n", + " logger.info(f\"\\n⏱️ Proyección GGPL completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, modelo_gbdt_aprendido\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' para entrenar el GBDT Supervisor.\")\n", + " return X_trans, rutas, None\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) or y.nunique() > 10\n", + "\n", + " # ⚙️ Parámetros de Escalabilidad RAM\n", + " MAX_GBDT_SAMPLES = 5000 \n", + "\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + "\n", + " # --- PROTECCIÓN RAM: Submuestreo solo para el fit ---\n", + " if len(X_num_sana) > MAX_GBDT_SAMPLES:\n", + " logger.info(f\" 🚂 [TRAIN] Dataset masivo. Entrenando GBDT en submuestra de {MAX_GBDT_SAMPLES} filas...\")\n", + " X_fit = X_num_sana.sample(n=MAX_GBDT_SAMPLES, random_state=42)\n", + " y_fit = y.loc[X_fit.index]\n", + " else:\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando GBDT en dataset completo...\")\n", + " X_fit = X_num_sana\n", + " y_fit = y\n", + "\n", + " if es_regresion:\n", + " gbdt = GradientBoostingRegressor(n_estimators=n_arboles, max_depth=profundidad, random_state=42)\n", + " else:\n", + " gbdt = GradientBoostingClassifier(n_estimators=n_arboles, max_depth=profundidad, random_state=42)\n", + "\n", + " logger.info(f\" ↳ Entrenando red de {n_arboles} árboles (Profundidad: {profundidad})...\")\n", + " gbdt.fit(X_fit, y_fit)\n", + "\n", + " # El apply() se hace a toda la matriz X_num_sana para no perder registros\n", + " logger.info(f\" ↳ Extrayendo hiper-coordenadas (Leaf Indices) de toda la matriz...\")\n", + " hojas = gbdt.apply(X_num_sana)\n", + " hojas_planas = hojas.reshape(hojas.shape[0], -1)\n", + "\n", + " n_features_nuevas = hojas_planas.shape[1]\n", + " nombres_nuevas = [f\"gbdt_emb_{i}\" for i in range(n_features_nuevas)]\n", + "\n", + " # 🚀 FIX MLOps: Asignación e inyección categórica\n", + " X_trans[nombres_nuevas] = hojas_planas\n", + " for col in nombres_nuevas:\n", + " X_trans[col] = X_trans[col].astype('category')\n", + "\n", + " rutas['cat_vars'].extend(nombres_nuevas)\n", + "\n", + " # 🧹 Limpieza agresiva de memoria\n", + " del X_num_sana\n", + " del X_fit\n", + " del y_fit\n", + " del hojas\n", + " del hojas_planas\n", + " gc.collect()\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Discretización GGPL Exitosa. {n_features_nuevas} variables categóricas de alta densidad creadas.\")\n", + " logger.info(\" 🧠 Las variables continuas ahora tienen un gemelo no lineal.\")\n", + " logger.info(f\"\\n⏱️ Proyección GGPL completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, gbdt\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 ENTRENANDO EMBEDDINGS GGPL EN TRAIN <<<\")\n", + " X_train_emb, rutas_actualizadas, modelo_gbdt_embedder = embeddings_ggpl_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " n_arboles=15, \n", + " profundidad=3\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 PROYECTANDO EMBEDDINGS GGPL EN TEST <<<\")\n", + " X_test_emb, _, _ = embeddings_ggpl_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " modelo_gbdt_aprendido=modelo_gbdt_embedder \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_emb\n", + " manager.X_test = X_test_emb\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos inicialización de la caja fuerte de modelos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('embedder_gbdt', modelo_gbdt_embedder)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['embedder_gbdt'] = modelo_gbdt_embedder\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y modelo GBDT-Embedder actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fase de Embeddings GGPL: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 42 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_occupation 26029 non-null float64 \n", + " 14 is_missing_capital_gain 26029 non-null float64 \n", + " 15 is_missing_native_country 26029 non-null float64 \n", + " 16 total_nulos_en_fila 26029 non-null float64 \n", + " 17 tiene_capital_gain 26029 non-null float64 \n", + " 18 tiene_capital_loss 26029 non-null float64 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 26029 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64 \n", + " 27 gbdt_emb_0 26029 non-null category\n", + " 28 gbdt_emb_1 26029 non-null category\n", + " 29 gbdt_emb_2 26029 non-null category\n", + " 30 gbdt_emb_3 26029 non-null category\n", + " 31 gbdt_emb_4 26029 non-null category\n", + " 32 gbdt_emb_5 26029 non-null category\n", + " 33 gbdt_emb_6 26029 non-null category\n", + " 34 gbdt_emb_7 26029 non-null category\n", + " 35 gbdt_emb_8 26029 non-null category\n", + " 36 gbdt_emb_9 26029 non-null category\n", + " 37 gbdt_emb_10 26029 non-null category\n", + " 38 gbdt_emb_11 26029 non-null category\n", + " 39 gbdt_emb_12 26029 non-null category\n", + " 40 gbdt_emb_13 26029 non-null category\n", + " 41 gbdt_emb_14 26029 non-null category\n", + "dtypes: category(15), float64(26), int8(1)\n", + "memory usage: 5.6 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 CALCULANDO SHAP 2D Y KNOCKOFFS EN TRAIN <<<\n", + "=== 💎 FASE 15.2: Sinergias Causales (SHAP 2D + Diamond FDR Framework) ===\n", + " 🕵️‍♂️ Entrenando modelo de reconocimiento rápido (LGBM) - Límite: 5000 filas...\n", + " 🌌 Calculando Hiperespacio SHAP 2D para el Top 10 de variables...\n", + " ⚖️ Iniciando Tribunal Diamond (Control de FDR) para 10 candidatos...\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × occupation) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (age × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × marital_status) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (education_num × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (relationship × marital_status) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (occupation × relationship) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (age × occupation) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (age × marital_status) no superó a sombra.\n", + " ❌ [FDR Drop] Falso Descubrimiento detectado: (llm_age_*_education_num × age) no superó a sombra.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Descubrimiento Causal completado. 0 sinergias inyectadas.\n", + "\n", + "⏱️ Fase SHAP+Diamond terminada en 21.871s\n", + "\n", + ">>> 🔒 APLICANDO SINERGIAS EXACTAS EN TEST <<<\n", + "=== 💎 FASE 15.2: Sinergias Causales (SHAP 2D + Diamond FDR Framework) ===\n", + " ✅ [BYPASS] Train no descubrió sinergias significativas. Matriz intacta.\n", + "\n", + "📦 [MLOps] Matrices, rutas y sinergias SHAP actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import warnings\n", + "import gc\n", + "from typing import Tuple, Dict, List, Optional\n", + "try:\n", + " import shap\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: Las librerías 'shap' y 'lightgbm' son requeridas para esta fase.\")\n", + " logger.error(\" Ejecuta: !pip install shap lightgbm\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def sinergias_shap_diamond_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " max_sinergias: int = 5,\n", + " receta_sinergias: Optional[List[Tuple[str, str]]] = None\n", + ") -> Tuple[pd.DataFrame, Dict, Optional[List[Tuple[str, str]]]]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 15.2] Motor AutoML de Sinergias (SHAP Interaction 2D + Diamond FDR).\n", + " - Optimización O(M^2): Filtra el Top 10 de variables antes de calcular la matriz SHAP.\n", + " - Framework Diamond (Knockoffs): Crea variables \"sombra\" para controlar el False Discovery Rate (FDR).\n", + " - Protección RAM Estricta: Límite estricto de 5k filas para SHAP y liberación explícita de memoria (GC).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 💎 FASE 15.2: Sinergias Causales (SHAP 2D + Diamond FDR Framework) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': []}\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if len(cols_numericas) < 2:\n", + " logger.info(\" ✅ [BYPASS] Se necesitan al menos 2 variables numéricas para buscar sinergias.\")\n", + " return X_trans, rutas, receta_sinergias\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if receta_sinergias is not None:\n", + " if not receta_sinergias:\n", + " logger.info(\" ✅ [BYPASS] Train no descubrió sinergias significativas. Matriz intacta.\")\n", + " return X_trans, rutas, receta_sinergias\n", + "\n", + " logger.info(f\" 🔒 [TEST] Inyectando {len(receta_sinergias)} sinergias exactas descubiertas en Train...\")\n", + " for col_A, col_B in receta_sinergias:\n", + " if col_A in X_trans.columns and col_B in X_trans.columns:\n", + " nombre_sinergia = f\"sinergia_{col_A}_X_{col_B}\"\n", + " X_trans[nombre_sinergia] = X_trans[col_A].astype(float) * X_trans[col_B].astype(float)\n", + "\n", + " logger.info(f\"\\n⏱️ Inyección de sinergias completada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, receta_sinergias\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' para calcular SHAP Interactions.\")\n", + " return X_trans, rutas, None\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) or y.nunique() > 10\n", + "\n", + " # ⚙️ Parámetros de Escalabilidad RAM (SHAP 2D es hiper-pesado)\n", + " MAX_SHAP_SAMPLES = 5000 \n", + "\n", + " # --- PASO A: Filtro de Élite (Prevención de Explosión de RAM) ---\n", + " logger.info(f\" 🕵️‍♂️ Entrenando modelo de reconocimiento rápido (LGBM) - Límite: {MAX_SHAP_SAMPLES} filas...\")\n", + " X_num = X_trans[cols_numericas].fillna(0)\n", + "\n", + " # Submuestreo estricto para proteger RAM durante cálculos matemáticos complejos\n", + " if len(X_num) > MAX_SHAP_SAMPLES:\n", + " X_sample = X_num.sample(n=MAX_SHAP_SAMPLES, random_state=42)\n", + " else:\n", + " X_sample = X_num\n", + "\n", + " y_sample = y.loc[X_sample.index]\n", + "\n", + " if es_regresion:\n", + " modelo_base = lgb.LGBMRegressor(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + " else:\n", + " modelo_base = lgb.LGBMClassifier(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + "\n", + " modelo_base.fit(X_sample, y_sample)\n", + "\n", + " # Extraemos el Top 10 para no hacer un SHAP cruzado gigante\n", + " importancias = pd.Series(modelo_base.feature_importances_, index=cols_numericas)\n", + " top_10_cols = importancias.nlargest(10).index.tolist()\n", + "\n", + " # 🧹 Limpieza de memoria intermedia\n", + " del modelo_base\n", + " gc.collect()\n", + "\n", + " if len(top_10_cols) < 2:\n", + " return X_trans, rutas, []\n", + "\n", + " # --- PASO B: SHAP Interaction Values (2D) ---\n", + " logger.info(f\" 🌌 Calculando Hiperespacio SHAP 2D para el Top {len(top_10_cols)} de variables...\")\n", + " X_top = X_sample[top_10_cols]\n", + "\n", + " # Volvemos a entrenar solo con el Top 10 para el Explainer\n", + " modelo_shap = lgb.LGBMRegressor(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1) if es_regresion else lgb.LGBMClassifier(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + " modelo_shap.fit(X_top, y_sample)\n", + "\n", + " explainer = shap.TreeExplainer(modelo_shap)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " # interaction_values shape: (n_samples, n_features, n_features)\n", + " shap_interactions = explainer.shap_interaction_values(X_top)\n", + "\n", + " # 🧹 Limpieza de modelos pesados\n", + " del modelo_shap\n", + " del explainer\n", + " gc.collect()\n", + "\n", + " # 🚀 FIX: Manejo robusto del array de interacciones SHAP\n", + " # Si es una lista (suele pasar en clasificación multiclase con versiones viejas de SHAP)\n", + " if isinstance(shap_interactions, list):\n", + " # Tomamos la clase positiva (índice 1) si es binario, o la primera si hay más\n", + " idx_clase = 1 if len(shap_interactions) > 1 else 0\n", + " matriz_base = shap_interactions[idx_clase]\n", + " # Si es un numpy array, validamos sus dimensiones\n", + " elif isinstance(shap_interactions, np.ndarray):\n", + " if len(shap_interactions.shape) == 4:\n", + " # Shape (n_samples, n_features, n_features, n_classes) -> Promediamos las clases o tomamos la clase 1\n", + " matriz_base = shap_interactions[:, :, :, 1] if shap_interactions.shape[3] > 1 else shap_interactions[:, :, :, 0]\n", + " else:\n", + " # Shape estándar (n_samples, n_features, n_features)\n", + " matriz_base = shap_interactions\n", + " else:\n", + " # Fallback de seguridad\n", + " matriz_base = np.array(shap_interactions)\n", + "\n", + " # Matriz simétrica de importancia absoluta media\n", + " interaccion_media = np.abs(matriz_base).mean(axis=0)\n", + "\n", + " # Extraemos los pares con mayor interacción (ignorando la diagonal que son los efectos principales)\n", + " candidatos = []\n", + " for i in range(len(top_10_cols)):\n", + " for j in range(i + 1, len(top_10_cols)):\n", + " candidatos.append((interaccion_media[i, j], top_10_cols[i], top_10_cols[j]))\n", + "\n", + " candidatos.sort(reverse=True, key=lambda x: x[0]) \n", + " top_candidatos = candidatos[:max_sinergias * 2] \n", + "\n", + " # --- PASO C: El Tribunal Diamond (Knockoffs / Control FDR) ---\n", + " logger.info(f\" ⚖️ Iniciando Tribunal Diamond (Control de FDR) para {len(top_candidatos)} candidatos...\")\n", + "\n", + " sinergias_aprobadas = []\n", + "\n", + " for fuerza_shap, col_A, col_B in top_candidatos:\n", + " if len(sinergias_aprobadas) >= max_sinergias: break\n", + "\n", + " sombra_B = X_sample[col_B].sample(frac=1, random_state=42).values\n", + "\n", + " interaccion_real = X_sample[col_A] * X_sample[col_B]\n", + " interaccion_sombra = X_sample[col_A] * sombra_B\n", + "\n", + " df_torneo = pd.DataFrame({'Real': interaccion_real, 'Sombra': interaccion_sombra})\n", + " modelo_juez = lgb.LGBMRegressor(n_estimators=20, random_state=42, verbose=-1) if es_regresion else lgb.LGBMClassifier(n_estimators=20, random_state=42, verbose=-1)\n", + " modelo_juez.fit(df_torneo, y_sample)\n", + "\n", + " importancia_real = modelo_juez.feature_importances_[0]\n", + " importancia_sombra = modelo_juez.feature_importances_[1]\n", + "\n", + " if importancia_real > (importancia_sombra * 1.5): \n", + " logger.info(f\" 🌟 [FDR Pass] Sinergia real: ({col_A} × {col_B}) > Ruido Sombra.\")\n", + " sinergias_aprobadas.append((col_A, col_B))\n", + "\n", + " nombre_sinergia = f\"sinergia_{col_A}_X_{col_B}\"\n", + " X_trans[nombre_sinergia] = X_trans[col_A].astype(float) * X_trans[col_B].astype(float)\n", + " rutas['num_vars'].append(nombre_sinergia)\n", + " else:\n", + " logger.warning(f\" ❌ [FDR Drop] Falso Descubrimiento detectado: ({col_A} × {col_B}) no superó a sombra.\")\n", + "\n", + " # 🧹 Limpieza por cada ciclo del torneo\n", + " del df_torneo\n", + " del modelo_juez\n", + " gc.collect()\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Descubrimiento Causal completado. {len(sinergias_aprobadas)} sinergias inyectadas.\")\n", + " logger.info(f\"\\n⏱️ Fase SHAP+Diamond terminada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, sinergias_aprobadas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 CALCULANDO SHAP 2D Y KNOCKOFFS EN TRAIN <<<\")\n", + " X_train_shap, rutas_actualizadas, receta_interacciones = sinergias_shap_diamond_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " max_sinergias=5\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO SINERGIAS EXACTAS EN TEST <<<\")\n", + " X_test_shap, _, _ = sinergias_shap_diamond_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " receta_sinergias=receta_interacciones \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.X_train = X_train_shap\n", + " manager.X_test = X_test_shap\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización del almacén de artefactos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " # Utilizamos la función nativa del manager si existe, o asignamos al diccionario\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('receta_sinergias_shap', receta_interacciones)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['receta_sinergias_shap'] = receta_interacciones\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y sinergias SHAP actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Sinergias SHAP/Diamond: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 MIDIENDO DISTANCIAS CONTRAFACTUALES EN TRAIN <<<\n", + "=== 🧲 FASE 15.3: Contrafactuales de Sensibilidad (Distancia a la Frontera) ===\n", + " 🚂 [TRAIN] Dataset masivo. Entrenando Oráculo en submuestra de 20000 filas...\n", + " ↳ Mapeando distancias a la frontera de decisión para toda la matriz...\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Inyección Contrafactual completada. La matriz ahora conoce su propia vulnerabilidad.\n", + " 🌟 Nuevas variables creadas: ['cf_distancia_frontera', 'cf_fuerza_logit']\n", + "\n", + "⏱️ Sensibilidad calculada en 0.225s\n", + "\n", + ">>> 🔒 PROYECTANDO DISTANCIAS CONTRAFACTUALES EN TEST <<<\n", + "=== 🧲 FASE 15.3: Contrafactuales de Sensibilidad (Distancia a la Frontera) ===\n", + " 🔒 [TEST] Consultando al Oráculo para medir sensibilidad de nuevos registros...\n", + " ↳ Coordenadas inyectadas: ['cf_distancia_frontera', 'cf_fuerza_logit']\n", + "\n", + "⏱️ Sensibilidad calculada en 0.166s\n", + "\n", + "📦 [MLOps] Matrices, rutas y modelo Oráculo actualizados de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "try:\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: La librería 'lightgbm' es requerida para esta fase.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def contrafactuales_sensibilidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " modelo_oraculo = None\n", + ") -> Tuple[pd.DataFrame, Dict, any]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 15.3] Motor AutoML de Contrafactuales de Sensibilidad.\n", + " - Proxy Causal: Usa un Oráculo (LGBM) para medir la distancia a la frontera de decisión.\n", + " - Clean Code: Extrae 'Margen de Frontera' y 'Fuerza Logit' sin intervención manual.\n", + " - Inteligencia de Tarea: Adaptable a Clasificación (Binaria/Multiclase) y Regresión.\n", + " - Protección RAM: Submuestreo estricto para el Oráculo y Garbage Collection.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🧲 FASE 15.3: Contrafactuales de Sensibilidad (Distancia a la Frontera) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # 🛡️ Solo pasamos variables numéricas al Oráculo para evitar crashes categóricos\n", + " cols_numericas = [c for c in rutas.get('num_vars', []) if c in X_trans.columns]\n", + "\n", + " if not cols_numericas:\n", + " logger.info(\" ✅ [BYPASS] No hay variables numéricas para calcular sensibilidad espacial.\")\n", + " return X_trans, rutas, modelo_oraculo\n", + "\n", + " # Función interna para calcular las métricas espaciales\n", + " def inyectar_distancias(df: pd.DataFrame, predicciones: np.ndarray, es_regresion: bool) -> Tuple[pd.DataFrame, list]:\n", + " df_out = df.copy()\n", + " nuevas_cols = []\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " if es_regresion:\n", + " # En regresión, la \"distancia\" es qué tan lejos está de la mediana global del Oráculo\n", + " mediana_global = np.median(predicciones)\n", + " df_out['cf_distancia_mediana'] = np.abs(predicciones - mediana_global)\n", + " df_out['cf_desviacion_relativa'] = (predicciones - mediana_global) / (np.abs(mediana_global) + 1e-6)\n", + " nuevas_cols = ['cf_distancia_mediana', 'cf_desviacion_relativa']\n", + " rutas['num_vars'].extend(nuevas_cols)\n", + " else:\n", + " # En clasificación binaria o multiclase\n", + " if len(predicciones.shape) == 1 or predicciones.shape[1] == 1: # Binario\n", + " prob_positiva = predicciones if len(predicciones.shape) == 1 else predicciones[:, 0]\n", + " # Distancia absoluta a la duda (0.5)\n", + " df_out['cf_distancia_frontera'] = np.abs(prob_positiva - 0.5)\n", + " # Log-Odds (Fuerza de empuje) con clip para evitar log(0)\n", + " p_clip = np.clip(prob_positiva, 1e-5, 1 - 1e-5)\n", + " df_out['cf_fuerza_logit'] = np.log(p_clip / (1 - p_clip))\n", + " nuevas_cols = ['cf_distancia_frontera', 'cf_fuerza_logit']\n", + " rutas['num_vars'].extend(nuevas_cols)\n", + " else: # Multiclase\n", + " # Distancia entre la clase más probable y la segunda más probable (Margen de Confianza)\n", + " prob_ordenada = np.sort(predicciones, axis=1)\n", + " df_out['cf_margen_multiclase'] = prob_ordenada[:, -1] - prob_ordenada[:, -2]\n", + " df_out['cf_entropia_decision'] = -np.sum(predicciones * np.log(np.clip(predicciones, 1e-5, 1)), axis=1)\n", + " nuevas_cols = ['cf_margen_multiclase', 'cf_entropia_decision']\n", + " rutas['num_vars'].extend(nuevas_cols)\n", + " return df_out, nuevas_cols\n", + "\n", + " # ==========================================\n", + " # 1. Modo TEST / PRODUCCIÓN (.transform)\n", + " # ==========================================\n", + " if modelo_oraculo is not None:\n", + " logger.info(f\" 🔒 [TEST] Consultando al Oráculo para medir sensibilidad de nuevos registros...\")\n", + "\n", + " # 🚀 FIX MLOps: Evaluar directamente la clase del estimador interno en LightGBM\n", + " es_regresion = isinstance(modelo_oraculo, lgb.LGBMRegressor)\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + "\n", + " # El oráculo predice probabilidades (clasificación) o valores (regresión)\n", + " if es_regresion:\n", + " predicciones = modelo_oraculo.predict(X_num_sana)\n", + " else:\n", + " predicciones = modelo_oraculo.predict_proba(X_num_sana)\n", + " if predicciones.shape[1] == 2: predicciones = predicciones[:, 1] # Binario\n", + "\n", + " X_trans, columnas_creadas = inyectar_distancias(X_trans, predicciones, es_regresion)\n", + "\n", + " # 🧹 Limpieza\n", + " del X_num_sana\n", + " gc.collect()\n", + "\n", + " logger.info(f\" ↳ Coordenadas inyectadas: {columnas_creadas}\")\n", + " logger.info(f\"\\n⏱️ Sensibilidad calculada en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, rutas, modelo_oraculo\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (.fit)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS] Se requiere la variable objetivo 'y' para entrenar el Oráculo.\")\n", + " return X_trans, rutas, None\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) or y.nunique() > 10\n", + "\n", + " # ⚙️ Parámetros de Escalabilidad RAM (El Oráculo no necesita todos los datos para entender el espacio)\n", + " MAX_ORACLE_SAMPLES = 20000 \n", + "\n", + " X_num_sana = X_trans[cols_numericas].fillna(0)\n", + "\n", + " if len(X_num_sana) > MAX_ORACLE_SAMPLES:\n", + " logger.info(f\" 🚂 [TRAIN] Dataset masivo. Entrenando Oráculo en submuestra de {MAX_ORACLE_SAMPLES} filas...\")\n", + " X_fit = X_num_sana.sample(n=MAX_ORACLE_SAMPLES, random_state=42)\n", + " y_fit = y.loc[X_fit.index]\n", + " else:\n", + " logger.info(f\" 🚂 [TRAIN] Entrenando Oráculo Espacial...\")\n", + " X_fit = X_num_sana\n", + " y_fit = y\n", + "\n", + " # Entrenamos el Oráculo\n", + " if es_regresion:\n", + " oraculo = lgb.LGBMRegressor(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + " else:\n", + " oraculo = lgb.LGBMClassifier(n_estimators=50, random_state=42, n_jobs=-1, verbose=-1)\n", + "\n", + " oraculo.fit(X_fit, y_fit)\n", + "\n", + " logger.info(f\" ↳ Mapeando distancias a la frontera de decisión para toda la matriz...\")\n", + " if es_regresion:\n", + " predicciones = oraculo.predict(X_num_sana)\n", + " else:\n", + " predicciones = oraculo.predict_proba(X_num_sana)\n", + " if predicciones.shape[1] == 2: predicciones = predicciones[:, 1]\n", + "\n", + " X_trans, columnas_creadas = inyectar_distancias(X_trans, predicciones, es_regresion)\n", + "\n", + " # 🧹 Purificación de RAM\n", + " rutas['num_vars'] = list(set(rutas['num_vars'])) # Eliminar duplicados en las rutas\n", + " del X_num_sana\n", + " del X_fit\n", + " del y_fit\n", + " gc.collect()\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Inyección Contrafactual completada. La matriz ahora conoce su propia vulnerabilidad.\")\n", + " logger.info(f\" 🌟 Nuevas variables creadas: {columnas_creadas}\")\n", + " logger.info(f\"\\n⏱️ Sensibilidad calculada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, rutas, oraculo\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 MIDIENDO DISTANCIAS CONTRAFACTUALES EN TRAIN <<<\")\n", + " X_train_cf, rutas_actualizadas, modelo_oraculo = contrafactuales_sensibilidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 PROYECTANDO DISTANCIAS CONTRAFACTUALES EN TEST <<<\")\n", + " X_test_cf, _, _ = contrafactuales_sensibilidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " modelo_oraculo=modelo_oraculo \n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma segura\n", + " manager.X_train = X_train_cf\n", + " manager.X_test = X_test_cf\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " # Aseguramos la inicialización del almacén de modelos preprocesamiento\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_contrafactual', modelo_oraculo)\n", + " else:\n", + " if getattr(manager, 'artefactos', None) is None:\n", + " manager.artefactos = {}\n", + " manager.artefactos['oraculo_contrafactual'] = modelo_oraculo\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices, rutas y modelo Oráculo actualizados de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Contrafactuales de Sensibilidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 CALCULANDO ESTRATEGIA UNIVERSAL DE EQUIDAD EN TRAIN (VÍA MANAGER) <<<\n", + "=== ⚖️ FASE 16.1: Radar Universal de Equidad MLOps ===\n", + " 📊 Diagnóstico de Equidad Binaria: Ratio Minoritaria/Mayoritaria = 0.317 (Umbral: 0.8)\n", + " ↳ Distribución original: \n", + "income\n", + "0 19758\n", + "1 6271\n", + " 🧬 [TRAIN] Desbalance severo detectado. Trazando plano para Asymmetric Bagging Puro...\n", + " 🛡️ ESTATUS: Estrategia de Asymmetric Bagging calculada con éxito. La matriz se mantiene intacta.\n", + " ↳ Configuración inyectada en 'rutas' para la Fase 18: {'pos_bagging_fraction': 1.0, 'neg_bagging_fraction': np.float64(0.3809), 'bagging_freq': 1, 'bagging_seed': 42}\n", + "\n", + "⏱️ Radar Universal completado en 0.004s\n", + "\n", + ">>> 🔒 PASANDO TEST POR EL ESCUDO DE EQUIDAD <<<\n", + "=== ⚖️ FASE 16.1: Radar Universal de Equidad MLOps ===\n", + " ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\n", + "\n", + "📦 [MLOps] Matrices y configuración de equidad actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "from typing import Tuple, Dict, Optional\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def configuracion_equidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_desbalance: float = 0.8\n", + ") -> Tuple[pd.DataFrame, Optional[pd.Series], Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 16.1] Radar AutoML: Diagnóstico Universal de Equidad.\n", + " - RAM Shield: NO clona ni inventa filas (Bye SMOTE). Deja la matriz intacta.\n", + " - Inteligencia Dual: \n", + " ↳ Binario -> Calcula Asymmetric Bagging Puro y Optimizado.\n", + " ↳ Multiclase -> Calcula Pesos Suavizados anti-sobreconfianza.\n", + " - Escudo de Producción: Si es modo TEST (y=None), pasa en milisegundos.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 16.1: Radar Universal de Equidad MLOps ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. ESCUDOS MLOPS (Producción)\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\")\n", + " return X.copy(), None, rutas\n", + "\n", + " # ==========================================\n", + " # 2. Modo TRAIN (Diagnóstico de Tarea)\n", + " # ==========================================\n", + " es_regresion = pd.api.types.is_float_dtype(y) and y.nunique() > 20\n", + "\n", + " if es_regresion:\n", + " logger.info(\" ✅ [BYPASS] Tarea de Regresión detectada. Las técnicas de equidad de clases se omiten.\")\n", + " return X.copy(), y.copy(), rutas\n", + "\n", + " # ==========================================\n", + " # 3. Radar de Desbalance (El Cerebro Matemático)\n", + " # ==========================================\n", + " conteo_clases = y.value_counts()\n", + " es_multiclase = len(conteo_clases) > 2\n", + "\n", + " # ----------------------------------------------------\n", + " # MOTOR A: MULTICLASE (Pesos Suavizados Anti-Mentiras)\n", + " # ----------------------------------------------------\n", + " if es_multiclase:\n", + " clase_mayor = conteo_clases.max()\n", + " clase_menor = conteo_clases.min()\n", + " ratio_peor = clase_menor / clase_mayor\n", + "\n", + " logger.info(f\" 📊 Diagnóstico de Equidad Multiclase: Ratio Minoritaria/Mayoritaria = {ratio_peor:.3f} (Umbral: {umbral_desbalance})\")\n", + " logger.info(f\" ↳ Distribución original: \\n{conteo_clases.to_string()}\")\n", + "\n", + " if ratio_peor >= umbral_desbalance:\n", + " logger.info(\" ✅ [BYPASS] Las clases están suficientemente equilibradas. Sin intervención requerida.\")\n", + " rutas['asymmetric_bagging'] = {}\n", + " else:\n", + " logger.info(f\" 🧬 [TRAIN] Desbalance severo detectado. Trazando plano para Cost-Sensitive Learning (Pesos Suavizados)...\")\n", + "\n", + " # 🚀 FIX MLOps: Cálculo de pesos suavizados por raíz cuadrada\n", + " pesos_suavizados = {}\n", + " for clase, count in conteo_clases.items():\n", + " peso = np.sqrt(clase_mayor / count)\n", + " pesos_suavizados[clase] = round(peso, 4)\n", + "\n", + " config_equidad = {'class_weight': pesos_suavizados}\n", + " rutas['asymmetric_bagging'] = config_equidad\n", + "\n", + " logger.info(\" 🛡️ ESTATUS: Estrategia de Cost-Sensitive Learning calculada con éxito. La matriz se mantiene intacta.\")\n", + " logger.info(f\" ↳ Configuración inyectada en 'rutas' para la Fase 18: {config_equidad}\")\n", + "\n", + " # ----------------------------------------------------\n", + " # 🚀 MOTOR B: BINARIO (Asymmetric Bagging Puro y Optimizado)\n", + " # ----------------------------------------------------\n", + " else:\n", + " # Identificación dinámica de la jerarquía de clases\n", + " clase_minoritaria = conteo_clases.index[-1]\n", + " clase_mayoritaria = conteo_clases.index[0]\n", + "\n", + " count_minoritaria = conteo_clases.iloc[-1]\n", + " count_mayoritaria = conteo_clases.iloc[0]\n", + "\n", + " ratio_desbalance = count_minoritaria / count_mayoritaria\n", + "\n", + " logger.info(f\" 📊 Diagnóstico de Equidad Binaria: Ratio Minoritaria/Mayoritaria = {ratio_desbalance:.3f} (Umbral: {umbral_desbalance})\")\n", + " logger.info(f\" ↳ Distribución original: \\n{conteo_clases.to_string()}\")\n", + "\n", + " if ratio_desbalance >= umbral_desbalance:\n", + " logger.info(\" ✅ [BYPASS] Las clases están suficientemente equilibradas. Sin intervención requerida.\")\n", + " rutas['asymmetric_bagging'] = {}\n", + " else:\n", + " logger.info(f\" 🧬 [TRAIN] Desbalance severo detectado. Trazando plano para Asymmetric Bagging Puro...\")\n", + "\n", + " # 🚀 MAGIA MLOPS: Calculamos la fracción de la mayoría con un piso del 10% (0.1) \n", + " # para evitar la inanición de datos (Feature Starvation) en los árboles.\n", + " fraccion_mayoritaria_optima = max(min(ratio_desbalance * 1.2, 1.0), 0.1)\n", + "\n", + " # Mapeo dinámico: LightGBM aplica 'pos' a la clase 1 y 'neg' a la clase 0.\n", + " if clase_minoritaria == 1:\n", + " pos_frac = 1.0\n", + " neg_frac = round(fraccion_mayoritaria_optima, 4)\n", + " else:\n", + " pos_frac = round(fraccion_mayoritaria_optima, 4)\n", + " neg_frac = 1.0\n", + "\n", + " config_equidad = {\n", + " 'pos_bagging_fraction': pos_frac,\n", + " 'neg_bagging_fraction': neg_frac,\n", + " 'bagging_freq': 1, \n", + " 'bagging_seed': 42\n", + " }\n", + "\n", + " rutas['asymmetric_bagging'] = config_equidad\n", + " logger.info(\" 🛡️ ESTATUS: Estrategia de Asymmetric Bagging calculada con éxito. La matriz se mantiene intacta.\")\n", + " logger.info(f\" ↳ Configuración inyectada en 'rutas' para la Fase 18: {config_equidad}\")\n", + "\n", + " logger.info(f\"\\n⏱️ Radar Universal completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X.copy(), y.copy(), rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 CALCULANDO ESTRATEGIA UNIVERSAL DE EQUIDAD EN TRAIN (VÍA MANAGER) <<<\")\n", + "\n", + " # Ejecutamos consumiendo los datos directamente del manager\n", + " X_train_limpio, y_train_limpio, rutas_actualizadas = configuracion_equidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # Guardamos los resultados\n", + " manager.X_train = X_train_limpio\n", + " manager.y_train = y_train_limpio\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n>>> 🔒 PASANDO TEST POR EL ESCUDO DE EQUIDAD <<<\")\n", + " X_test_limpio, _, _ = configuracion_equidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + " manager.X_test = X_test_limpio \n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y configuración de equidad actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # Variables globales de transición\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Pipeline (Fase de Equidad): {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 EJECUTANDO PSEUDO-LABELING EN TRAIN <<<\n", + "=== 🏷️ FASE 16.2: Pseudo-Labeling y Enriquecimiento Semi-Supervisado ===\n", + " ✅ [BYPASS] No se proporcionó matriz de datos sin etiquetar (X_unlabeled). Operación omitida.\n", + "\n", + ">>> 🔒 PASANDO TEST POR EL ESCUDO DE PSEUDO-LABELING <<<\n", + "=== 🏷️ FASE 16.2: Pseudo-Labeling y Enriquecimiento Semi-Supervisado ===\n", + " ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Fase Semi-Supervisada completada).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "from typing import Tuple, Dict, Optional\n", + "\n", + "try:\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: La librería 'lightgbm' es requerida para el Oráculo Preliminar.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def pseudo_labeling_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " X_unlabeled: Optional[pd.DataFrame] = None,\n", + " rutas: Dict = None,\n", + " umbral_confianza: float = 0.99\n", + ") -> Tuple[pd.DataFrame, Optional[pd.Series], Dict]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 16.2] Motor AutoML de Pseudo-Labeling (>99% Confianza).\n", + " - Candado de Ejecución Única: Evita que el usuario corra la celda dos veces y contamine los Folds.\n", + " - Muro MLOps Absoluto: Si es modo TEST (y=None), pasa la matriz intacta. NUNCA se contamina Test.\n", + " - Semi-Supervisado: Aprovecha datos sin etiqueta (X_unlabeled) para enriquecer Train.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz base (X) está vacía.\")\n", + " raise ValueError(\"La matriz base (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== 🏷️ FASE 16.2: Pseudo-Labeling y Enriquecimiento Semi-Supervisado ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. ESCUDOS MLOPS (Producción y Doble Ejecución)\n", + " # ==========================================\n", + " # Escudo 1: Protección de Producción / Test\n", + " if y is None:\n", + " logger.info(\" ✅ [BYPASS ESTRATÉGICO] Modo TEST/Producción detectado. Matriz protegida.\")\n", + " return X.copy(), None, rutas\n", + "\n", + " # Escudo 2: Candado de Ejecución Única\n", + " if rutas.get('pseudo_labeling_ejecutado', False):\n", + " logger.info(\" ✅ [ESCUDO ACTIVO] Pseudo-Labeling ya fue ejecutado previamente. Bloqueando doble ejecución.\")\n", + " return X.copy(), y.copy(), rutas\n", + "\n", + " X_trans = X.copy()\n", + "\n", + " # ==========================================\n", + " # 2. Diagnóstico de Viabilidad\n", + " # ==========================================\n", + " y_trans = y.copy()\n", + " es_regresion = pd.api.types.is_float_dtype(y_trans) and y_trans.nunique() > 20\n", + "\n", + " if es_regresion:\n", + " logger.info(\" ✅ [BYPASS] Tarea de Regresión detectada. Pseudo-Labeling requiere probabilidades de clase.\")\n", + " return X_trans, y_trans, rutas\n", + "\n", + " if X_unlabeled is None or X_unlabeled.empty:\n", + " logger.info(\" ✅ [BYPASS] No se proporcionó matriz de datos sin etiquetar (X_unlabeled). Operación omitida.\")\n", + " return X_trans, y_trans, rutas\n", + "\n", + " # ==========================================\n", + " # 3. Entrenamiento del Oráculo Preliminar Fuerte\n", + " # ==========================================\n", + " logger.info(f\" 🧠 [TRAIN] Entrenando Oráculo Preliminar para evaluar {len(X_unlabeled):,} registros oscuros...\")\n", + "\n", + " # 🛡️ Filtramos solo las variables numéricas que existen en ambas matrices\n", + " cols_numericas = [col for col in X_trans.select_dtypes(include=[np.number]).columns \n", + " if col in X_unlabeled.columns]\n", + "\n", + " X_num = X_trans[cols_numericas].fillna(0)\n", + " X_unl_num = X_unlabeled[cols_numericas].fillna(0)\n", + "\n", + " oraculo = lgb.LGBMClassifier(n_estimators=100, random_state=42, n_jobs=-1, verbose=-1)\n", + " oraculo.fit(X_num, y_trans)\n", + "\n", + " # ==========================================\n", + " # 4. Inquisición de Confianza (>99%)\n", + " # ==========================================\n", + " logger.info(f\" 🔍 Escaneando probabilidades en la matriz sin etiqueta (Umbral: {umbral_confianza*100}%)...\")\n", + " probabilidades = oraculo.predict_proba(X_unl_num)\n", + "\n", + " # Obtenemos la confianza máxima para cada registro y la clase a la que pertenece\n", + " max_probs = np.max(probabilidades, axis=1)\n", + " clases_predichas = np.argmax(probabilidades, axis=1)\n", + "\n", + " # 🛡️ EL ESCUDO ANTI-VENENO: Solo los que superan el 99%\n", + " mascara_elite = max_probs >= umbral_confianza\n", + " candidatos_aprobados = np.sum(mascara_elite)\n", + "\n", + " if candidatos_aprobados == 0:\n", + " logger.info(f\" ❌ [RECHAZO] Ningún registro oscuro alcanzó el {umbral_confianza*100}% de certeza. Matriz protegida.\")\n", + " else:\n", + " logger.info(f\" 🌟 [APROBADO] Se encontraron {candidatos_aprobados:,} registros con certeza absoluta. Inyectando...\")\n", + "\n", + " # Extraemos los registros de élite de la matriz original sin etiquetar (con todas sus columnas)\n", + " X_elite = X_unlabeled[mascara_elite].copy()\n", + "\n", + " # Extraemos las clases predichas de élite (mapeando de vuelta si las clases no son 0, 1, 2...)\n", + " clases_reales = oraculo.classes_\n", + " y_elite = pd.Series(clases_reales[clases_predichas[mascara_elite]], index=X_elite.index)\n", + "\n", + " # Fusionamos con la matriz principal de Train\n", + " X_trans = pd.concat([X_trans, X_elite], axis=0, ignore_index=True)\n", + " y_trans = pd.concat([y_trans, y_elite], axis=0, ignore_index=True)\n", + "\n", + " # 🧹 Purga de RAM\n", + " del X_num\n", + " del X_unl_num\n", + " del oraculo\n", + " del probabilidades\n", + " gc.collect()\n", + "\n", + " # 🔒 Activamos el Candado para el futuro\n", + " rutas['pseudo_labeling_ejecutado'] = True\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Pseudo-Labeling finalizado. Tamaño actual de Train: {len(X_trans):,} registros.\")\n", + " logger.info(f\"\\n⏱️ Operación completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_trans, y_trans, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # Simulación: Si tienes un dataset aparte sin etiquetas, lo pasas aquí.\n", + " # X_datos_sin_etiqueta = pd.read_csv('datos_oscuros.csv')\n", + " X_datos_sin_etiqueta = None\n", + "\n", + " logger.info(\">>> 🚂 EJECUTANDO PSEUDO-LABELING EN TRAIN <<<\")\n", + " # Limpio, automático y blindado por el Arquitecto\n", + " X_train_semi, y_train_semi, rutas_actualizadas = pseudo_labeling_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " X_unlabeled=X_datos_sin_etiqueta, \n", + " rutas=manager.rutas,\n", + " umbral_confianza=0.99\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 PASANDO TEST POR EL ESCUDO DE PSEUDO-LABELING <<<\")\n", + " X_test_semi, _, _ = pseudo_labeling_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_semi\n", + " manager.y_train = y_train_semi\n", + " manager.X_test = X_test_semi\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Fase Semi-Supervisada completada).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Pseudo-Labeling: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 EJECUTANDO PIPELINE UNIFICADO DE EQUIDAD EN TRAIN <<<\n", + "=== ⚖️ FASE 16.3: Reweighing Directo (DDO) y Auditoría Ponderada ===\n", + " ⚙️ Ejecutando Motor DDO (Direct Optimization) para forzar cumplimiento legal...\n", + " ⚡ Convergencia matemática DDO lograda en la Época 2.\n", + " 🚨 ESTATUS: Matriz curada con DDO. Se forzó la equidad en 5 variables.\n", + "\n", + " 📊 GENERANDO REPORTE DE VALIDACIÓN DE EQUIDAD PONDERADA...\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `age`\n", + " 👑 Base de Nivelación: '(16.999, 28.0]' (Tasa ponderada: 70.6%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(37.0, 47.0]': DIR = 0.94 (66.3%) | ✅ [JUSTO] '(28.0, 37.0]': DIR = 0.88 (62.4%)\n", + " ✅ [JUSTO] '(47.0, 90.0]': DIR = 0.94 (66.1%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `workclass`\n", + " 👑 Base de Nivelación: '(0.256, 0.565]' (Tasa ponderada: 69.0%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.219, 0.22]': DIR = 0.96 (66.3%) | ✅ [JUSTO] '(0.215, 0.219]': DIR = 0.94 (64.6%)\n", + " ✅ [JUSTO] '(0.22, 0.256]': DIR = 0.95 (65.6%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `education_num`\n", + " 👑 Base de Nivelación: '(12.0, 16.0]' (Tasa ponderada: 75.1%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(9.0, 10.0]': DIR = 0.85 (64.1%) | ✅ [JUSTO] '(0.999, 9.0]': DIR = 0.82 (61.8%)\n", + " ✅ [JUSTO] '(10.0, 12.0]': DIR = 0.85 (64.0%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `marital_status`\n", + " 👑 Base de Nivelación: '(0.449, 0.45]' (Tasa ponderada: 70.9%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.105, 0.449]': DIR = 1.00 (70.7%) | ✅ [JUSTO] '(0.0417, 0.0474]': DIR = 0.83 (59.0%)\n", + " ✅ [JUSTO] '(0.0474, 0.105]': DIR = 0.84 (59.4%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `race`\n", + " 👑 Base de Nivelación: '(0.252, 0.257]' (Tasa ponderada: 68.9%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.257, 0.258]': DIR = 0.97 (66.9%) | ✅ [JUSTO] '(0.258, 0.288]': DIR = 0.91 (62.7%)\n", + " ✅ [JUSTO] '(0.10099999999999999, 0.252]': DIR = 0.96 (65.9%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `sex`\n", + " 👑 Base de Nivelación: '1.0' (Tasa ponderada: 69.5%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '0.0': DIR = 0.82 (57.0%) | \n", + " =====================================================================================\n", + "\n", + "\n", + "🔍 Verificación Post-Tratamiento en: `native_country`\n", + " 👑 Base de Nivelación: '(0.2424, 0.2469]' (Tasa ponderada: 68.7%)\n", + " =====================================================================================\n", + " ✅ [JUSTO] '(0.046669999999999996, 0.2424]': DIR = 0.98 (67.2%) | ✅ [JUSTO] '(0.2472, 0.2476]': DIR = 0.89 (61.0%)\n", + " ✅ [JUSTO] '(0.2469, 0.2472]': DIR = 0.96 (66.2%) | \n", + " =====================================================================================\n", + "\n", + "⏱️ Pipeline unificado completado en 0.740s\n", + "\n", + ">>> 🔒 GENERANDO PESOS PARA TEST (ESCUDO MLOPS) <<<\n", + " 🔒 [TEST] Bypass activado. Retornando pesos neutrales (1.0) sin alterar ni graficar.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import re\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# ==========================================\n", + "# MOTOR UNIFICADO: DDO REWEIGHING + AUDITORÍA VISUAL\n", + "# ==========================================\n", + "def aplicar_y_auditar_equidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_dir: float = 0.80 \n", + ") -> Tuple[pd.DataFrame, pd.Series]:\n", + " \"\"\"\n", + " [FASE 5 - Paso 16.3] Motor AutoML Unificado de Justicia Algorítmica.\n", + " - Detección Inteligente: Diccionario Exhaustivo + Regex estricto.\n", + " - Curación (DDO): Direct Disparate Impact Optimization. Reemplaza al IPF.\n", + " Fuerza matemáticamente el cumplimiento del DIR resolviendo los pesos exactos.\n", + " - Validación: Graficador automático post-tratamiento de TODAS las variables sensibles.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " inicio_timer = time.time()\n", + " X_trans = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + " pesos_instancia = pd.Series(1.0, index=X_trans.index, name=\"sample_weight\")\n", + "\n", + " # ==========================================\n", + " # 1. ESCUDOS Y BYPASS DE MLOPS\n", + " # ==========================================\n", + " if y is None:\n", + " logger.info(\" 🔒 [TEST] Bypass activado. Retornando pesos neutrales (1.0) sin alterar ni graficar.\")\n", + " return X_trans, pesos_instancia\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y) and y.nunique() > 20\n", + " if es_regresion:\n", + " logger.info(\" ✅ [BYPASS] Tarea de Regresión Continua. Reweighing omitido.\")\n", + " return X_trans, pesos_instancia\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 16.3: Reweighing Directo (DDO) y Auditoría Ponderada ===\")\n", + "\n", + " conteo_clases = y.value_counts(normalize=True)\n", + " clase_favorable = conteo_clases.index[-1]\n", + "\n", + " # ==========================================\n", + " # 2. RADAR DE DETECCIÓN (EL ESCUDO DEL ARQUITECTO)\n", + " # ==========================================\n", + " def construir_patron(palabra):\n", + " return fr'(^{palabra}$|^{palabra}_|_{palabra}$|_{palabra}_|[a-z]{palabra.capitalize()})'\n", + "\n", + " terminos_legales = [\n", + " # 1. EDAD Y NACIMIENTO (Age & Birth)\n", + " 'age', 'edad', 'dob', 'dateofbirth', 'birth', 'birthdate', 'birthyear', 'nacimiento', \n", + " 'fechanacimiento', 'anonacimiento', 'year', 'año', 'ano', 'generation', 'generacion',\n", + " # 2. SEXO, GÉNERO Y ORIENTACIÓN (Sex, Gender & Orientation)\n", + " 'sex', 'sexo', 'gender', 'genero', 'female', 'femenino', 'male', 'masculino', \n", + " 'mujer', 'hombre', 'orientation', 'orientacion', 'sexuality', 'sexualidad', \n", + " 'sexualorientation', 'orientacionsexual', 'lgbt', 'lgbtq', 'trans', 'transgender', \n", + " 'transgenero', 'nonbinary', 'nobinario', 'intersex', 'intersexual',\n", + " # 3. RAZA, ETNIA Y ORIGEN (Race, Ethnicity & Origins)\n", + " 'race', 'raza', 'ethnic', 'etnia', 'ethnicity', 'ethniccode', 'codigoetnico',\n", + " 'color', 'origin', 'origen', 'ancestry', 'ascendencia', 'minority', 'minoria', \n", + " 'indigenous', 'indigena', 'tribe', 'tribu', 'hispanic', 'hispano', 'latino', \n", + " 'afro', 'afroamerican', 'black', 'negro', 'white', 'blanco', 'asian', 'asiatico', \n", + " 'caucasian', 'caucasico',\n", + " # 4. RELIGIÓN Y CREENCIAS (Religion & Beliefs)\n", + " 'religion', 'belief', 'creencia', 'faith', 'fe', 'creed', 'credo', 'worship', 'culto',\n", + " 'muslim', 'musulman', 'jewish', 'judio', 'christian', 'cristiano', 'catholic', \n", + " 'catolico', 'islam', 'judaismo', 'cristianismo',\n", + " # 5. NACIONALIDAD E INMIGRACIÓN (Nationality & Immigration)\n", + " 'national', 'nacional', 'nationality', 'nacionalidad', 'nation', 'nacion', \n", + " 'country', 'pais', 'citizen', 'ciudadano', 'citizenship', 'ciudadania', \n", + " 'immigrant', 'inmigrante', 'immigration', 'inmigracion', 'migrant', 'migrante', \n", + " 'refugee', 'refugiado', 'asylum', 'asilo', 'alien', 'extranjero', 'native', 'nativo',\n", + " # 6. SALUD, DISCAPACIDAD Y GENÉTICA (Health, Disability & Genetics)\n", + " 'health', 'salud', 'medical', 'medico', 'disability', 'discapacidad', 'handicap', \n", + " 'minusvalia', 'disabled', 'discapacitado', 'disease', 'enfermedad', 'illness', \n", + " 'condition', 'condicion', 'genetic', 'genetico', 'pregnant', 'embarazada', \n", + " 'pregnancy', 'embarazo', 'maternity', 'maternidad', 'paternity', 'paternidad',\n", + " # 7. ESTADO CIVIL Y FAMILIA (Marital Status & Family)\n", + " 'marital', 'conyugal', 'maritalstatus', 'estadocivil', 'civilstatus', 'civil', \n", + " 'marriage', 'matrimonio', 'wedding', 'spouse', 'esposo', 'esposa', 'conyuge', \n", + " 'widow', 'viudo', 'viuda', 'divorced', 'divorciado', 'single', 'soltero', \n", + " 'family', 'familia', 'children', 'hijos', 'dependent', 'dependents', \n", + " 'dependiente', 'dependientes',\n", + " # 8. SOCIOECONÓMICO Y EDUCACIÓN (Socioeconomic & Education)\n", + " 'income', 'ingreso', 'ingresos', 'salary', 'salario', 'wage', 'sueldo', 'wealth', \n", + " 'riqueza', 'poverty', 'pobreza', 'class', 'clase', 'estrato', 'socioeconomic', \n", + " 'socioeconomico', 'education', 'educacion', 'degree', 'grado', 'school', 'escuela', \n", + " 'university', 'universidad', 'illiterate', 'analfabeto',\n", + " # 9. SISTEMA PENAL Y CUSTODIA (Legal & Custody Status)\n", + " 'legalstatus', 'estadolegal', 'custodystatus', 'estadocustodia', 'custody', 'custodia', \n", + " 'felon', 'felony', 'conviction', 'condena', 'antecedente', 'parole', 'probation',\n", + " # 10. IDIOMA Y POLÍTICA (Language, Politics & Unions)\n", + " 'language', 'idioma', 'lenguaje', 'tongue', 'lengua', 'dialect', 'dialecto',\n", + " 'politics', 'politica', 'political', 'politico', 'union', 'tradeunion', 'sindicato', 'gremio'\n", + " ]\n", + "\n", + " patrones_completos = [construir_patron(t) for t in terminos_legales]\n", + " patron_sensible = re.compile('|'.join(patrones_completos), re.IGNORECASE)\n", + "\n", + " columnas_sensibles = []\n", + " for col in X_trans.columns:\n", + " if patron_sensible.search(col):\n", + " col_lower = col.lower()\n", + " if 'is_missing_' in col_lower or 'missing_' in col_lower: continue\n", + " if col_lower.startswith(('cf_', 'llm_', 'sinergia_', 'capital_', 'screening_')): continue \n", + " if pd.api.types.is_datetime64_any_dtype(X_trans[col]) or col in rutas.get('date_vars', []): continue\n", + " if re.search(r'(_sin$|_cos$)', col_lower): continue\n", + " columnas_sensibles.append(col)\n", + "\n", + " if not columnas_sensibles:\n", + " logger.info(\" ✅ [INFO] No se detectaron columnas protegidas útiles.\")\n", + " return X_trans, pesos_instancia\n", + "\n", + " # ==========================================\n", + " # 3. MOTOR DDO (Direct Disparate Impact Optimization)\n", + " # ==========================================\n", + " df_calc = pd.DataFrame({'Target_Binario': (y == clase_favorable).astype(int)})\n", + "\n", + " for col in columnas_sensibles:\n", + " if pd.api.types.is_numeric_dtype(X_trans[col]) and X_trans[col].nunique() > 10:\n", + " df_calc[f'S_{col}'] = pd.qcut(X_trans[col], q=4, duplicates='drop').astype(str)\n", + " else:\n", + " df_calc[f'S_{col}'] = X_trans[col].astype(str)\n", + "\n", + " cols_a_corregir = []\n", + " for col in columnas_sensibles:\n", + " tasas = df_calc.groupby(f'S_{col}')['Target_Binario'].mean()\n", + " if tasas.max() > 0 and (tasas / tasas.max()).min() < umbral_dir:\n", + " cols_a_corregir.append(col)\n", + "\n", + " if cols_a_corregir:\n", + " # 🚀 REEMPLAZO ABSOLUTO: Algoritmo DDO Algebraico\n", + " EPOCHS = 15 # DDO converge rapidísimo porque fuerza la solución matemáticamente\n", + " margen_seguridad = umbral_dir + 0.02 # Buscamos un 82% para asegurar pasar el umbral del 80%\n", + "\n", + " logger.info(f\" ⚙️ Ejecutando Motor DDO (Direct Optimization) para forzar cumplimiento legal...\")\n", + "\n", + " for epoch in range(EPOCHS):\n", + " modificaciones = 0\n", + "\n", + " for col in cols_a_corregir:\n", + " s_col = f'S_{col}'\n", + " df_calc['peso'] = pesos_instancia\n", + "\n", + " # Extraemos las estadísticas exactas de peso de cada subgrupo\n", + " stats = df_calc.groupby(s_col).apply(lambda g: pd.Series({\n", + " 'W_Total': g['peso'].sum(),\n", + " 'W_Pos': g[g['Target_Binario'] == 1]['peso'].sum(),\n", + " 'W_Neg': g[g['Target_Binario'] == 0]['peso'].sum()\n", + " }))\n", + "\n", + " # Tasa ponderada actual\n", + " stats['Rate'] = stats['W_Pos'] / stats['W_Total'].replace(0, 1e-9)\n", + " max_rate = stats['Rate'].max()\n", + "\n", + " if max_rate == 0: continue\n", + "\n", + " target_rate = max_rate * margen_seguridad\n", + "\n", + " for s_val, row in stats.iterrows():\n", + " # Si el grupo viola la ley, lo arreglamos directamente\n", + " if row['Rate'] < (max_rate * umbral_dir):\n", + " W = row['W_Total']\n", + " W1_act = row['W_Pos']\n", + " W0_act = row['W_Neg']\n", + "\n", + " # Pesos exactos que necesitamos que tenga este grupo para dar la tasa objetivo\n", + " W1_ideal = W * target_rate\n", + " W0_ideal = W * (1 - target_rate)\n", + "\n", + " # Calculamos los multiplicadores\n", + " mult_1 = W1_ideal / W1_act if W1_act > 0 else 1.0\n", + " mult_0 = W0_ideal / W0_act if W0_act > 0 else 1.0\n", + "\n", + " # Blindaje contra Gradientes Explosivos\n", + " mult_1 = min(mult_1, 50.0) \n", + " mult_0 = max(mult_0, 0.01)\n", + "\n", + " # Aplicamos la cura\n", + " mask_1 = (df_calc[s_col] == s_val) & (df_calc['Target_Binario'] == 1)\n", + " mask_0 = (df_calc[s_col] == s_val) & (df_calc['Target_Binario'] == 0)\n", + "\n", + " pesos_instancia.loc[mask_1] *= mult_1\n", + " pesos_instancia.loc[mask_0] *= mult_0\n", + " modificaciones += 1\n", + "\n", + " # Renormalizamos para mantener estable la escala de pesos\n", + " pesos_instancia = pesos_instancia * (len(pesos_instancia) / pesos_instancia.sum())\n", + "\n", + " # Si en esta iteración ninguna variable necesitó arreglo, terminamos.\n", + " if modificaciones == 0:\n", + " logger.info(f\" ⚡ Convergencia matemática DDO lograda en la Época {epoch+1}.\")\n", + " break\n", + "\n", + " logger.info(f\" 🚨 ESTATUS: Matriz curada con DDO. Se forzó la equidad en {len(cols_a_corregir)} variables.\")\n", + " else:\n", + " logger.info(\" ✅ ESTATUS: Ninguna variable requirió intervención de equidad.\")\n", + "\n", + " # ==========================================\n", + " # 4. AUDITORÍA VISUAL POST-TRATAMIENTO\n", + " # ==========================================\n", + " logger.info(\"\\n 📊 GENERANDO REPORTE DE VALIDACIÓN DE EQUIDAD PONDERADA...\")\n", + " df_calc['peso_instancia'] = pesos_instancia\n", + " sns.set_theme(style=\"whitegrid\")\n", + "\n", + " for col in columnas_sensibles: \n", + " col_analisis = f'S_{col}'\n", + " \n", + " # 🛡️ Protección UX MLOps\n", + " if MODO_VISUAL:\n", + " display(Markdown(f\"### 🔍 Verificación Post-Tratamiento en: `{col}`\"))\n", + " else:\n", + " logger.info(f\"\\n🔍 Verificación Post-Tratamiento en: `{col}`\")\n", + "\n", + " def calc_weighted_metrics(g):\n", + " peso_total_grupo = g['peso_instancia'].sum()\n", + " exitos_ponderados = (g['Target_Binario'] * g['peso_instancia']).sum()\n", + " tasa = exitos_ponderados / peso_total_grupo if peso_total_grupo > 0 else 0\n", + " return pd.Series({'Tasa_Exito': tasa, 'Muestra_Total': len(g)})\n", + "\n", + " tabla_tasas = df_calc.groupby(col_analisis).apply(calc_weighted_metrics).reset_index()\n", + " tabla_tasas.sort_values(by='Tasa_Exito', ascending=False, inplace=True)\n", + "\n", + " if tabla_tasas.empty: continue\n", + "\n", + " grupo_privilegiado = tabla_tasas.iloc[0][col_analisis]\n", + " tasa_maxima = tabla_tasas.iloc[0]['Tasa_Exito']\n", + "\n", + " if tasa_maxima == 0:\n", + " tabla_tasas['DIR'] = 1.0\n", + " else:\n", + " tabla_tasas['DIR'] = tabla_tasas['Tasa_Exito'] / tasa_maxima\n", + "\n", + " fig, ax = plt.subplots(figsize=(10, 4))\n", + " sns.barplot(data=tabla_tasas, x=col_analisis, y='Tasa_Exito', palette='crest', ax=ax)\n", + " ax.axhline(tasa_maxima * 0.8, color='red', linestyle='--', label='Límite Legal (80%)')\n", + " ax.set_title(f\"Tasa EQUILIBRADA de obtención de '{clase_favorable}' por {col}\", fontsize=14)\n", + " ax.set_ylabel(\"Probabilidad de Éxito (Ponderada)\")\n", + " ax.set_ylim(0, max(0.5, tasa_maxima + 0.1))\n", + " ax.tick_params(axis='x', rotation=15) \n", + " ax.legend()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig) # Cerramos la figura explícitamente en el loop\n", + "\n", + " logger.info(f\" 👑 Base de Nivelación: '{grupo_privilegiado}' (Tasa ponderada: {tasa_maxima*100:.1f}%)\")\n", + " logger.info(\" \" + \"=\"*85)\n", + "\n", + " mensajes = [] \n", + " for _, row in tabla_tasas.iterrows():\n", + " grupo_actual = row[col_analisis]\n", + " dir_actual = row['DIR']\n", + " if grupo_actual == grupo_privilegiado: continue\n", + "\n", + " if dir_actual < 0.80:\n", + " mensajes.append(f\"🚨 [ALERTA] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + " else:\n", + " mensajes.append(f\"✅ [JUSTO] '{grupo_actual}': DIR = {dir_actual:.2f} ({row['Tasa_Exito']*100:.1f}%)\")\n", + "\n", + " lote_size = 20\n", + " for i in range(0, len(mensajes), lote_size):\n", + " lote = mensajes[i:i + lote_size]\n", + " mitad = (len(lote) + 1) // 2 \n", + " for j in range(mitad):\n", + " col1 = lote[j]\n", + " col2 = lote[j + mitad] if (j + mitad) < len(lote) else \"\"\n", + " logger.info(f\" {col1:<40} | {col2}\")\n", + " if (i + lote_size) < len(mensajes): logger.info(\" \" + \"-\"*85)\n", + "\n", + " logger.info(\" \" + \"=\"*85 + \"\\n\")\n", + "\n", + " logger.info(f\"⏱️ Pipeline unificado completado en {time.time() - inicio_timer:.3f}s\")\n", + " return X_trans, pesos_instancia\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta las fases previas.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'.\")\n", + "\n", + " logger.info(\">>> 🚂 EJECUTANDO PIPELINE UNIFICADO DE EQUIDAD EN TRAIN <<<\")\n", + " # Calcula pesos Y grafica al mismo tiempo usando DDO\n", + " X_train_ipf, pesos_train = aplicar_y_auditar_equidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " umbral_dir=0.80 \n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 GENERANDO PESOS PARA TEST (ESCUDO MLOPS) <<<\")\n", + " # Genera los pesos 1.0 y silencia las gráficas\n", + " X_test_ipf, pesos_test = aplicar_y_auditar_equidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # Guardamos los activos en el Manager\n", + " manager.X_train = X_train_ipf\n", + " manager.X_test = X_test_ipf\n", + " manager.pesos_train = pesos_train\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Pipeline de Equidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_occupation 26029 non-null float64 \n", + " 14 is_missing_capital_gain 26029 non-null float64 \n", + " 15 is_missing_native_country 26029 non-null float64 \n", + " 16 total_nulos_en_fila 26029 non-null float64 \n", + " 17 tiene_capital_gain 26029 non-null float64 \n", + " 18 tiene_capital_loss 26029 non-null float64 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 26029 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64 \n", + " 27 gbdt_emb_0 26029 non-null category\n", + " 28 gbdt_emb_1 26029 non-null category\n", + " 29 gbdt_emb_2 26029 non-null category\n", + " 30 gbdt_emb_3 26029 non-null category\n", + " 31 gbdt_emb_4 26029 non-null category\n", + " 32 gbdt_emb_5 26029 non-null category\n", + " 33 gbdt_emb_6 26029 non-null category\n", + " 34 gbdt_emb_7 26029 non-null category\n", + " 35 gbdt_emb_8 26029 non-null category\n", + " 36 gbdt_emb_9 26029 non-null category\n", + " 37 gbdt_emb_10 26029 non-null category\n", + " 38 gbdt_emb_11 26029 non-null category\n", + " 39 gbdt_emb_12 26029 non-null category\n", + " 40 gbdt_emb_13 26029 non-null category\n", + " 41 gbdt_emb_14 26029 non-null category\n", + " 42 cf_distancia_frontera 26029 non-null float64 \n", + " 43 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 6.0 MB\n" + ] + } + ], + "source": [ + "X_train.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64 \n", + " 1 workclass 6508 non-null float64 \n", + " 2 education_num 6508 non-null float64 \n", + " 3 marital_status 6508 non-null float64 \n", + " 4 occupation 6508 non-null float64 \n", + " 5 relationship 6508 non-null float64 \n", + " 6 race 6508 non-null float64 \n", + " 7 sex 6508 non-null float64 \n", + " 8 capital_gain 6508 non-null float64 \n", + " 9 capital_loss 6508 non-null float64 \n", + " 10 hours_per_week 6508 non-null float64 \n", + " 11 native_country 6508 non-null float64 \n", + " 12 is_missing_workclass 6508 non-null float64 \n", + " 13 is_missing_occupation 6508 non-null float64 \n", + " 14 is_missing_capital_gain 6508 non-null float64 \n", + " 15 is_missing_native_country 6508 non-null float64 \n", + " 16 total_nulos_en_fila 6508 non-null float64 \n", + " 17 tiene_capital_gain 6508 non-null float64 \n", + " 18 tiene_capital_loss 6508 non-null float64 \n", + " 19 capital_neto 6508 non-null float64 \n", + " 20 capital_gain_por_age 6508 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 6508 non-null float64 \n", + " 22 capital_loss_por_age 6508 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64 \n", + " 24 is_anomaly_isoforest 6508 non-null int8 \n", + " 25 llm_age_*_education_num 6508 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 6508 non-null float64 \n", + " 27 gbdt_emb_0 6508 non-null category\n", + " 28 gbdt_emb_1 6508 non-null category\n", + " 29 gbdt_emb_2 6508 non-null category\n", + " 30 gbdt_emb_3 6508 non-null category\n", + " 31 gbdt_emb_4 6508 non-null category\n", + " 32 gbdt_emb_5 6508 non-null category\n", + " 33 gbdt_emb_6 6508 non-null category\n", + " 34 gbdt_emb_7 6508 non-null category\n", + " 35 gbdt_emb_8 6508 non-null category\n", + " 36 gbdt_emb_9 6508 non-null category\n", + " 37 gbdt_emb_10 6508 non-null category\n", + " 38 gbdt_emb_11 6508 non-null category\n", + " 39 gbdt_emb_12 6508 non-null category\n", + " 40 gbdt_emb_13 6508 non-null category\n", + " 41 gbdt_emb_14 6508 non-null category\n", + " 42 cf_distancia_frontera 6508 non-null float64 \n", + " 43 cf_fuerza_logit 6508 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 1.5 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 114, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "26029 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 25.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 115, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Series name: income\n", + "Non-Null Count Dtype\n", + "-------------- -----\n", + "6508 non-null int8 \n", + "dtypes: int8(1)\n", + "memory usage: 6.5 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "y_test.info()\n", + "\n", + "\n", + "# # FASE 6: Selección de Variables (El Tribunal Supremo)\n", + "# Destruyendo la redundancia creada en la Fase 5." + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 PURGANDO FECHAS Y FUGAS EN TRAIN <<<\n", + "=== ⚖️ FASE 17.1: El Tribunal Supremo (Target Leakage & Date Purge) ===\n", + " ✅ Purga de Fechas: No se encontraron variables base tipo Date en la matriz.\n", + " 🔍 Escaneando matriz en busca de Fugas del Futuro (Correlación > 98.0%)...\n", + " ✅ Escudo Anti-Fugas: No se detectaron variables tramposas.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Purificación completada. Total columnas actuales: 44 (-0 eliminadas).\n", + "\n", + "⏱️ Operación completada en 0.023s\n", + "\n", + ">>> 🔒 APLICANDO GUILLOTINA HEREDADA EN TEST <<<\n", + "=== ⚖️ FASE 17.1: El Tribunal Supremo (Target Leakage & Date Purge) ===\n", + " ✅ Purga de Fechas: No se encontraron variables base tipo Date en la matriz.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Purificación completada. Total columnas actuales: 44 (-0 eliminadas).\n", + "\n", + "⏱️ Operación completada en 0.003s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Purga completada).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def filtro_fugas_y_fechas_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_fuga: float = 0.98 # Correlación > 98% = Guillotina inmediata\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.1] Tribunal Supremo: Purga de Fechas y Fugas del Futuro.\n", + " - Purga Temporal: Elimina variables listadas en 'date_vars' Y auto-detecta columnas datetime.\n", + " - Escáner de Fugas: Calcula la correlación de Pearson con el Target para detectar trampas.\n", + " - Muro MLOps: Registra las fugas en Train y ejecuta la misma guillotina exacta en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 17.1: El Tribunal Supremo (Target Leakage & Date Purge) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + " columnas_eliminadas = []\n", + "\n", + " # ==========================================\n", + " # 1. PURGA DE FECHAS (Diccionario + Auto-Detección)\n", + " # ==========================================\n", + " # 🚀 NUEVO: Leemos el diccionario y escaneamos activamente la matriz\n", + " fechas_registradas = rutas.get('date_vars', [])\n", + " fechas_detectadas = X_clean.select_dtypes(include=['datetime64', 'datetime', 'datetimetz']).columns.tolist()\n", + "\n", + " # Unificamos ambas listas (sin duplicados)\n", + " todas_las_fechas = list(set(fechas_registradas + fechas_detectadas))\n", + " fechas_presentes = [col for col in todas_las_fechas if col in X_clean.columns]\n", + "\n", + " if fechas_presentes:\n", + " X_clean.drop(columns=fechas_presentes, inplace=True)\n", + " columnas_eliminadas.extend(fechas_presentes)\n", + "\n", + " # 💡 Actualizamos el diccionario para que el Manager (y Test) no las olvide\n", + " rutas['date_vars'] = todas_las_fechas\n", + "\n", + " logger.info(f\" 📅 Purga de Fechas: Decapitadas {len(fechas_presentes)} variables temporales.\")\n", + " logger.info(f\" ↳ {fechas_presentes}\")\n", + " else:\n", + " logger.info(\" ✅ Purga de Fechas: No se encontraron variables base tipo Date en la matriz.\")\n", + "\n", + " # ==========================================\n", + " # 2. MODO TRAIN: Detección de Target Leakage\n", + " # ==========================================\n", + " if y is not None:\n", + " logger.info(f\" 🔍 Escaneando matriz en busca de Fugas del Futuro (Correlación > {umbral_fuga*100}%)...\")\n", + "\n", + " # Solo verificamos variables numéricas para el Leakage\n", + " cols_numericas = X_clean.select_dtypes(include=[np.number]).columns\n", + "\n", + " if len(cols_numericas) > 0:\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " # Calculamos correlación lineal absoluta contra el Target\n", + " correlaciones = X_clean[cols_numericas].corrwith(y).abs()\n", + "\n", + " fugas_detectadas = correlaciones[correlaciones >= umbral_fuga].index.tolist()\n", + "\n", + " if fugas_detectadas:\n", + " logger.warning(f\" 🚨 [ALERTA DE FUGA] Se detectaron {len(fugas_detectadas)} variables sospechosamente perfectas:\")\n", + " logger.warning(f\" ↳ {fugas_detectadas}\")\n", + " X_clean.drop(columns=fugas_detectadas, inplace=True)\n", + " columnas_eliminadas.extend(fugas_detectadas)\n", + "\n", + " # 💡 GUARDADO ESTRATÉGICO: Inyectamos la sentencia en el diccionario de rutas\n", + " rutas['fugas_del_futuro'] = fugas_detectadas\n", + " else:\n", + " logger.info(\" ✅ Escudo Anti-Fugas: No se detectaron variables tramposas.\")\n", + " rutas['fugas_del_futuro'] = []\n", + "\n", + " # ==========================================\n", + " # 3. MODO TEST: Ejecución de Sentencias\n", + " # ==========================================\n", + " else:\n", + " fugas_heredadas = rutas.get('fugas_del_futuro', [])\n", + " fugas_presentes = [col for col in fugas_heredadas if col in X_clean.columns]\n", + "\n", + " if fugas_presentes:\n", + " X_clean.drop(columns=fugas_presentes, inplace=True)\n", + " columnas_eliminadas.extend(fugas_presentes)\n", + " logger.info(f\" 🔒 [TEST] Aplicando guillotina heredada de Train: {len(fugas_presentes)} fugas eliminadas.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Purificación completada. Total columnas actuales: {X_clean.shape[1]} (-{len(columnas_eliminadas)} eliminadas).\")\n", + " logger.info(f\"\\n⏱️ Operación completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🧹 Purga estricta de RAM\n", + " gc.collect()\n", + "\n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 PURGANDO FECHAS Y FUGAS EN TRAIN <<<\")\n", + " X_train_clean, rutas_actualizadas = filtro_fugas_y_fechas_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " umbral_fuga=0.98\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 APLICANDO GUILLOTINA HEREDADA EN TEST <<<\")\n", + " X_test_clean, _ = filtro_fugas_y_fechas_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos en el Manager de forma centralizada\n", + " manager.X_train = X_train_clean\n", + " manager.X_test = X_test_clean\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Purga completada).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Filtro de Fugas: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TRAIN ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.217s\n", + "\n", + "=== 📡 INICIANDO RADAR DE ANOMALÍAS EN: X_TEST ===\n", + "------------------------------------------------------------\n", + " ✅ ESTATUS: Matriz 100% Pura. Cero nulos nativos, cero nulos ocultos.\n", + "\n", + "⏱️ Escaneo completado en 0.063s\n", + "\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🔍 AUDITORÍA DE SEGURIDAD PRE-ENTRENAMIENTO <<<\")\n", + "\n", + " # Escaneamos Train usando el manager\n", + " infecciones_train = radar_nulos_profundos_automl(manager.X_train, nombre_matriz=\"X_TRAIN\")\n", + "\n", + " # Escaneamos Test usando el manager\n", + " infecciones_test = radar_nulos_profundos_automl(manager.X_test, nombre_matriz=\"X_TEST\")\n", + "\n", + " # Lógica de reacción automática (Opcional)\n", + " if infecciones_train or infecciones_test:\n", + " logger.warning(\"💡 CONSEJO MLOps: Se detectó basura léxica. \")\n", + " logger.info(\" Recomendación: En tu código del Imputador KNN (Fase 11.1) o en la Guillotina, \")\n", + " logger.info(\" deberías reemplazar estos textos por np.nan usando df.replace(regex) para que el Imputador los cure.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Radar de Nulos: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_occupation 26029 non-null float64 \n", + " 14 is_missing_capital_gain 26029 non-null float64 \n", + " 15 is_missing_native_country 26029 non-null float64 \n", + " 16 total_nulos_en_fila 26029 non-null float64 \n", + " 17 tiene_capital_gain 26029 non-null float64 \n", + " 18 tiene_capital_loss 26029 non-null float64 \n", + " 19 capital_neto 26029 non-null float64 \n", + " 20 capital_gain_por_age 26029 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 26029 non-null float64 \n", + " 22 capital_loss_por_age 26029 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 26029 non-null float64 \n", + " 24 is_anomaly_isoforest 26029 non-null int8 \n", + " 25 llm_age_*_education_num 26029 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 26029 non-null float64 \n", + " 27 gbdt_emb_0 26029 non-null category\n", + " 28 gbdt_emb_1 26029 non-null category\n", + " 29 gbdt_emb_2 26029 non-null category\n", + " 30 gbdt_emb_3 26029 non-null category\n", + " 31 gbdt_emb_4 26029 non-null category\n", + " 32 gbdt_emb_5 26029 non-null category\n", + " 33 gbdt_emb_6 26029 non-null category\n", + " 34 gbdt_emb_7 26029 non-null category\n", + " 35 gbdt_emb_8 26029 non-null category\n", + " 36 gbdt_emb_9 26029 non-null category\n", + " 37 gbdt_emb_10 26029 non-null category\n", + " 38 gbdt_emb_11 26029 non-null category\n", + " 39 gbdt_emb_12 26029 non-null category\n", + " 40 gbdt_emb_13 26029 non-null category\n", + " 41 gbdt_emb_14 26029 non-null category\n", + " 42 cf_distancia_frontera 26029 non-null float64 \n", + " 43 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 6.0 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 44 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64 \n", + " 1 workclass 6508 non-null float64 \n", + " 2 education_num 6508 non-null float64 \n", + " 3 marital_status 6508 non-null float64 \n", + " 4 occupation 6508 non-null float64 \n", + " 5 relationship 6508 non-null float64 \n", + " 6 race 6508 non-null float64 \n", + " 7 sex 6508 non-null float64 \n", + " 8 capital_gain 6508 non-null float64 \n", + " 9 capital_loss 6508 non-null float64 \n", + " 10 hours_per_week 6508 non-null float64 \n", + " 11 native_country 6508 non-null float64 \n", + " 12 is_missing_workclass 6508 non-null float64 \n", + " 13 is_missing_occupation 6508 non-null float64 \n", + " 14 is_missing_capital_gain 6508 non-null float64 \n", + " 15 is_missing_native_country 6508 non-null float64 \n", + " 16 total_nulos_en_fila 6508 non-null float64 \n", + " 17 tiene_capital_gain 6508 non-null float64 \n", + " 18 tiene_capital_loss 6508 non-null float64 \n", + " 19 capital_neto 6508 non-null float64 \n", + " 20 capital_gain_por_age 6508 non-null float64 \n", + " 21 capital_gain_por_hours_per_week 6508 non-null float64 \n", + " 22 capital_loss_por_age 6508 non-null float64 \n", + " 23 capital_loss_por_hours_per_week 6508 non-null float64 \n", + " 24 is_anomaly_isoforest 6508 non-null int8 \n", + " 25 llm_age_*_education_num 6508 non-null float64 \n", + " 26 llm_capital_gain_*_capital_neto 6508 non-null float64 \n", + " 27 gbdt_emb_0 6508 non-null category\n", + " 28 gbdt_emb_1 6508 non-null category\n", + " 29 gbdt_emb_2 6508 non-null category\n", + " 30 gbdt_emb_3 6508 non-null category\n", + " 31 gbdt_emb_4 6508 non-null category\n", + " 32 gbdt_emb_5 6508 non-null category\n", + " 33 gbdt_emb_6 6508 non-null category\n", + " 34 gbdt_emb_7 6508 non-null category\n", + " 35 gbdt_emb_8 6508 non-null category\n", + " 36 gbdt_emb_9 6508 non-null category\n", + " 37 gbdt_emb_10 6508 non-null category\n", + " 38 gbdt_emb_11 6508 non-null category\n", + " 39 gbdt_emb_12 6508 non-null category\n", + " 40 gbdt_emb_13 6508 non-null category\n", + " 41 gbdt_emb_14 6508 non-null category\n", + " 42 cf_distancia_frontera 6508 non-null float64 \n", + " 43 cf_fuerza_logit 6508 non-null float64 \n", + "dtypes: category(15), float64(28), int8(1)\n", + "memory usage: 1.5 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " 💾 [BACKUP MLOps] Clonando matriz original a 'manager.X_train_backup' para la Autopsia Visual...\n", + ">>> 🚂 CAZANDO CLONES MATEMÁTICOS EN TRAIN <<<\n", + "=== ⚖️ FASE 17.2: Guillotina de Colinealidad (Spearman > 98.0%) ===\n", + " 🔍 Escaneando redundancia matemática profunda en 44 columnas...\n", + " ↳ Construyendo matriz de correlación de Spearman (Esto puede tomar unos segundos)...\n", + " 🚨 [SENTENCIA] Se detectaron 8 variables clonadas/redundantes.\n", + " 🪓 Ejecutando decapitaciones:\n", + " ❌ Eliminada: 'is_missing_occupation', 'tiene_capital_gain', 'tiene_capital_loss', 'capital_gain_por_age', 'capital_gain_por_hours_per_week', 'capital_loss_por_age', 'capital_loss_por_hours_per_week', 'llm_capital_gain_*_capital_neto'\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz libre de redundancia extrema. Columnas finales: 36\n", + "\n", + "⏱️ Operación completada en 0.201s\n", + "\n", + ">>> 🔒 DECAPITANDO CLONES EN TEST <<<\n", + "=== ⚖️ FASE 17.2: Guillotina de Colinealidad (Spearman > 98.0%) ===\n", + " 🔒 [TEST] Guillotina aplicada. 8 clones decapitados según reglas de Train.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz libre de redundancia extrema. Columnas finales: 36\n", + "\n", + "⏱️ Operación completada en 0.003s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Colinealidad purgada).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "def guillotina_colinealidad_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " umbral_corr: float = 0.98 # Guillotina para correlaciones > 98%\n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.2] Tribunal Supremo: Guillotina de Colinealidad (Spearman).\n", + " - Caza de Gemelos: Usa Spearman para detectar redundancia no lineal perfecta.\n", + " - RAM Shield: Procesamiento optimizado de la matriz triangular superior.\n", + " - Muro MLOps: Evalúa y condena en Train. Ejecuta la misma sentencia en Test.\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + "\n", + " logger.info(f\"=== ⚖️ FASE 17.2: Guillotina de Colinealidad (Spearman > {umbral_corr*100}%) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # 1. MODO TRAIN: El Juicio (Cálculo de Matriz)\n", + " # ==========================================\n", + " if y is not None:\n", + " logger.info(f\" 🔍 Escaneando redundancia matemática profunda en {X_clean.shape[1]} columnas...\")\n", + "\n", + " # Spearman solo opera sobre números. Aislamos las numéricas en silencio.\n", + " cols_numericas = X_clean.select_dtypes(include=[np.number]).columns.tolist()\n", + "\n", + " if len(cols_numericas) > 1:\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " # 1.1 Cálculo de la matriz de correlación absoluta\n", + " logger.info(\" ↳ Construyendo matriz de correlación de Spearman (Esto puede tomar unos segundos)...\")\n", + " matriz_corr = X_clean[cols_numericas].corr(method='spearman').abs()\n", + "\n", + " # 1.2 Extracción de la diagonal superior (Evita comparar A con A, o A con B y B con A)\n", + " upper_tri = matriz_corr.where(np.triu(np.ones(matriz_corr.shape), k=1).astype(bool))\n", + "\n", + " # 1.3 Identificación de los clones condenados\n", + " columnas_a_eliminar = [col for col in upper_tri.columns if any(upper_tri[col] > umbral_corr)]\n", + "\n", + " # 🧹 Purga inmediata de RAM\n", + " del matriz_corr\n", + " del upper_tri\n", + " gc.collect()\n", + "\n", + " if columnas_a_eliminar:\n", + " logger.warning(f\" 🚨 [SENTENCIA] Se detectaron {len(columnas_a_eliminar)} variables clonadas/redundantes.\")\n", + " logger.info(\" 🪓 Ejecutando decapitaciones:\")\n", + " # 🚀 FIX Visual: Mostrar las columnas eliminadas en una sola fila horizontal\n", + " columnas_str = \", \".join([f\"'{col}'\" for col in columnas_a_eliminar])\n", + " logger.warning(f\" ❌ Eliminada: {columnas_str}\")\n", + "\n", + " X_clean.drop(columns=columnas_a_eliminar, inplace=True)\n", + "\n", + " # 💡 GUARDADO ESTRATÉGICO: Anotamos la sentencia en el registro\n", + " rutas['gemelos_colineales'] = columnas_a_eliminar\n", + " else:\n", + " logger.info(\" ✅ [JUSTO] La matriz es matemáticamente pura. No hay colinealidad extrema.\")\n", + " rutas['gemelos_colineales'] = []\n", + " else:\n", + " logger.info(\" ⚠️ Insuficientes variables numéricas para calcular colinealidad.\")\n", + " rutas['gemelos_colineales'] = []\n", + "\n", + " # ==========================================\n", + " # 2. MODO TEST: La Ejecución (Bypass)\n", + " # ==========================================\n", + " else:\n", + " clones_heredados = rutas.get('gemelos_colineales', [])\n", + " clones_presentes = [col for col in clones_heredados if col in X_clean.columns]\n", + "\n", + " if clones_presentes:\n", + " X_clean.drop(columns=clones_presentes, inplace=True)\n", + " logger.info(f\" 🔒 [TEST] Guillotina aplicada. {len(clones_presentes)} clones decapitados según reglas de Train.\")\n", + " else:\n", + " logger.info(\" ✅ [TEST] Matriz validada. Sin clones que eliminar.\")\n", + "\n", + " # ==========================================\n", + " # 🚀 FIX MLOPS: Sincronización del Enrutador\n", + " # ==========================================\n", + " # Purga de Variables Fantasma del diccionario de rutas\n", + " for key in ['num_vars', 'cat_vars', 'bool_vars', 'date_vars']:\n", + " if key in rutas:\n", + " rutas[key] = [c for c in rutas[key] if c in X_clean.columns]\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Matriz libre de redundancia extrema. Columnas finales: {X_clean.shape[1]}\")\n", + " logger.info(f\"\\n⏱️ Operación completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # ==========================================\n", + " # 💡 TRUCO MLOps: Backup Pre-Guillotina\n", + " # ==========================================\n", + " logger.info(\" 💾 [BACKUP MLOps] Clonando matriz original a 'manager.X_train_backup' para la Autopsia Visual...\")\n", + " manager.X_train_backup = manager.X_train.copy()\n", + "\n", + " logger.info(\">>> 🚂 CAZANDO CLONES MATEMÁTICOS EN TRAIN <<<\")\n", + " X_train_clean, rutas_actualizadas = guillotina_colinealidad_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " umbral_corr=0.98 # ⚖️ Tolerancia máxima de similitud\n", + " )\n", + "\n", + " logger.info(\"\\n>>> 🔒 DECAPITANDO CLONES EN TEST <<<\")\n", + " X_test_clean, _ = guillotina_colinealidad_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos de forma segura en el Manager\n", + " manager.X_train = X_train_clean\n", + " manager.X_test = X_test_clean\n", + " manager.rutas = rutas_actualizadas\n", + "\n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Colinealidad purgada).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " gc.collect()\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Guillotina de Colinealidad: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['is_missing_occupation',\n", + " 'tiene_capital_gain',\n", + " 'tiene_capital_loss',\n", + " 'capital_gain_por_age',\n", + " 'capital_gain_por_hours_per_week',\n", + " 'capital_loss_por_age',\n", + " 'capital_loss_por_hours_per_week',\n", + " 'llm_capital_gain_*_capital_neto']" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "manager.rutas['gemelos_colineales']" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🔬 INICIANDO AUTOPSIA VISUAL DE COLINEALIDAD <<<\n", + " 📸 [XAI] Matriz 'backup' detectada. Generando radiografía de la escena del crimen original...\n", + "=== 👁️ FASE 17.2.5: Autopsia Visual de Colinealidad y Explicabilidad ===\n", + " 🔍 Procesando radar de correlación de Spearman...\n", + "\n", + " 🚨 ALERTA VISUAL: Se detectaron 17 colisiones críticas (> 98.0%).\n", + " 📸 Generando Zoom-In del Mapa de Calor sobre las variables afectadas...\n", + "\n", + "\n", + "================================================================================\n", + " 🧠 REPORTE FORENSE MLOps: ¿POR QUÉ LA GUILLOTINA CORTÓ ESTAS VARIABLES?\n", + "================================================================================\n", + "\n", + " 📋 LISTA DE COLISIONES MATEMÁTICAS:\n", + " ⚔️ 'is_missing_workclass' vs 'is_missing_occupation' (Similitud: 99.78%)\n", + " ⚔️ 'capital_gain' vs 'tiene_capital_gain' (Similitud: 99.89%)\n", + " ⚔️ 'capital_loss' vs 'tiene_capital_loss' (Similitud: 99.96%)\n", + " ⚔️ 'capital_gain' vs 'capital_gain_por_age' (Similitud: 99.98%)\n", + " ⚔️ 'tiene_capital_gain' vs 'capital_gain_por_age' (Similitud: 99.89%)\n", + " ⚔️ 'capital_gain' vs 'capital_gain_por_hours_per_week' (Similitud: 99.98%)\n", + " ⚔️ 'tiene_capital_gain' vs 'capital_gain_por_hours_per_week' (Similitud: 99.89%)\n", + " ⚔️ 'capital_gain_por_age' vs 'capital_gain_por_hours_per_week' (Similitud: 99.96%)\n", + " ⚔️ 'capital_loss' vs 'capital_loss_por_age' (Similitud: 99.94%)\n", + " ⚔️ 'tiene_capital_loss' vs 'capital_loss_por_age' (Similitud: 99.96%)\n", + " ⚔️ 'capital_loss' vs 'capital_loss_por_hours_per_week' (Similitud: 99.96%)\n", + " ⚔️ 'tiene_capital_loss' vs 'capital_loss_por_hours_per_week' (Similitud: 99.96%)\n", + " ⚔️ 'capital_loss_por_age' vs 'capital_loss_por_hours_per_week' (Similitud: 99.94%)\n", + " ⚔️ 'capital_gain' vs 'llm_capital_gain_*_capital_neto' (Similitud: 100.00%)\n", + " ⚔️ 'tiene_capital_gain' vs 'llm_capital_gain_*_capital_neto' (Similitud: 99.89%)\n", + " ⚔️ 'capital_gain_por_age' vs 'llm_capital_gain_*_capital_neto' (Similitud: 99.98%)\n", + " ⚔️ 'capital_gain_por_hours_per_week' vs 'llm_capital_gain_*_capital_neto' (Similitud: 99.98%)\n", + "\n", + " ⚖️ DIAGNÓSTICO Y SENTENCIA UNIVERSAL:\n", + " Los pares listados arriba son virtualmente clones; contienen exactamente la misma señal\n", + " predictiva bajo distintos nombres. Mantenerlos vivos representa un doble riesgo para el modelo:\n", + " 1) 📉 Dilución de Importancia: El modelo (ej. LightGBM) no sabrá a cuál darle el crédito,\n", + " partiendo su importancia a la mitad de forma artificial e injusta.\n", + " 2) 💾 Fuga de RAM y Latencia: Obligamos a la CPU a calcular cortes en dimensiones redundantes.\n", + "\n", + " 🪓 EJECUCIÓN: Para proteger la matriz, la Guillotina retuvo a las variables representantes\n", + " (lado izquierdo) y DECAPITÓ a sus clones matemáticos (lado derecho).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias Visuales y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from IPython.display import display, Markdown\n", + "from typing import Dict\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def autopsia_visual_colinealidad_automl(\n", + " X_diagnostico: pd.DataFrame, \n", + " rutas: Dict = None,\n", + " umbral_corr: float = 0.98\n", + ") -> None:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.2.5] Autopsia Visual y Explicabilidad (XAI).\n", + " - Escáner de Calor con Zoom: Aísla y grafica ÚNICAMENTE las variables involucradas en colisiones.\n", + " - Traductor Matemático: Explica en lenguaje natural el POR QUÉ de la eliminación (Unificado).\n", + " - Anotación Numérica: Imprime los coeficientes exactos de Spearman dentro de cada celda.\n", + " \"\"\"\n", + " if X_diagnostico is None or X_diagnostico.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz de diagnóstico está vacía.\")\n", + " return\n", + "\n", + " logger.info(f\"=== 👁️ FASE 17.2.5: Autopsia Visual de Colinealidad y Explicabilidad ===\")\n", + "\n", + " # 1. Aislamos solo variables numéricas\n", + " cols_num = X_diagnostico.select_dtypes(include=[np.number]).columns.tolist()\n", + " if len(cols_num) < 2:\n", + " logger.warning(\" ⚠️ No hay suficientes variables numéricas para generar un mapa de calor.\")\n", + " return\n", + "\n", + " # 2. Calculamos la matriz matemática de correlación absoluta\n", + " logger.info(\" 🔍 Procesando radar de correlación de Spearman...\")\n", + " matriz_corr = X_diagnostico[cols_num].corr(method='spearman').abs()\n", + "\n", + " # 3. Inteligencia MLOps: Encontrar las colisiones (Triángulo superior)\n", + " upper_tri = matriz_corr.where(np.triu(np.ones(matriz_corr.shape), k=1).astype(bool))\n", + "\n", + " pares_colision = []\n", + " columnas_implicadas = set()\n", + "\n", + " for col in upper_tri.columns:\n", + " # Buscamos las filas (variables) que colisionan matemáticamente con esta columna\n", + " colisiones = upper_tri.index[upper_tri[col] > umbral_corr].tolist()\n", + " for fila in colisiones:\n", + " val = upper_tri.loc[fila, col]\n", + " pares_colision.append((fila, col, val))\n", + " columnas_implicadas.update([fila, col])\n", + "\n", + " # ==========================================\n", + " # 4. Renderizado del Mapa de Calor Inteligente (Zoom-In)\n", + " # ==========================================\n", + " if columnas_implicadas:\n", + " logger.warning(f\"\\n 🚨 ALERTA VISUAL: Se detectaron {len(pares_colision)} colisiones críticas (> {umbral_corr*100}%).\")\n", + " logger.info(\" 📸 Generando Zoom-In del Mapa de Calor sobre las variables afectadas...\\n\")\n", + "\n", + " # Filtramos la matriz para mostrar SOLO las variables que están compitiendo\n", + " matriz_zoom = matriz_corr.loc[list(columnas_implicadas), list(columnas_implicadas)]\n", + "\n", + " # Configuramos el lienzo de Matplotlib\n", + " fig = plt.figure(figsize=(10, 8))\n", + "\n", + " # Generamos el Heatmap con Seaborn\n", + " sns.heatmap(\n", + " matriz_zoom, \n", + " annot=True, # 🔢 Activa los números adentro de los cuadros\n", + " fmt=\".3f\", # Formato a 3 decimales para precisión técnica\n", + " cmap=\"coolwarm\", # Escala de Azul (Seguro) a Rojo (Peligro/Colinealidad)\n", + " vmin=0, vmax=1, \n", + " linewidths=1,\n", + " linecolor='white',\n", + " mask=np.triu(np.ones_like(matriz_zoom, dtype=bool)), # Máscara para ocultar la diagonal superior redundante\n", + " annot_kws={\"size\": 12, \"weight\": \"bold\"}\n", + " )\n", + "\n", + " plt.title(f\"🔥 Radar de Colinealidad Extrema (Zoom a Correlaciones > {umbral_corr*100}%)\", fontsize=14, pad=20)\n", + " plt.xticks(rotation=45, ha='right', fontsize=11)\n", + " plt.yticks(rotation=0, fontsize=11)\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig) # Cerramos la figura explícitamente en producción para no agotar la RAM\n", + "\n", + " # ==========================================\n", + " # 5. El Cerebro XAI (Explicabilidad GLOBAL)\n", + " # ==========================================\n", + " logger.info(\"\\n\" + \"=\"*80)\n", + " logger.info(\" 🧠 REPORTE FORENSE MLOps: ¿POR QUÉ LA GUILLOTINA CORTÓ ESTAS VARIABLES?\")\n", + " logger.info(\"=\"*80)\n", + "\n", + " logger.info(\"\\n 📋 LISTA DE COLISIONES MATEMÁTICAS:\")\n", + " for var1, var2, corr_val in pares_colision:\n", + " logger.info(f\" ⚔️ '{var1}' vs '{var2}' (Similitud: {corr_val*100:.2f}%)\")\n", + "\n", + " logger.info(\"\\n ⚖️ DIAGNÓSTICO Y SENTENCIA UNIVERSAL:\")\n", + " logger.info(\" Los pares listados arriba son virtualmente clones; contienen exactamente la misma señal\")\n", + " logger.info(\" predictiva bajo distintos nombres. Mantenerlos vivos representa un doble riesgo para el modelo:\")\n", + " logger.info(\" 1) 📉 Dilución de Importancia: El modelo (ej. LightGBM) no sabrá a cuál darle el crédito,\")\n", + " logger.info(\" partiendo su importancia a la mitad de forma artificial e injusta.\")\n", + " logger.info(\" 2) 💾 Fuga de RAM y Latencia: Obligamos a la CPU a calcular cortes en dimensiones redundantes.\")\n", + " logger.info(\"\\n 🪓 EJECUCIÓN: Para proteger la matriz, la Guillotina retuvo a las variables representantes\")\n", + " logger.info(\" (lado izquierdo) y DECAPITÓ a sus clones matemáticos (lado derecho).\")\n", + "\n", + " else:\n", + " logger.info(\"\\n ✅ EL MAPA ESTÁ LIMPIO: No se detectaron colisiones que superen el umbral de guillotina.\")\n", + " logger.info(\" 🧠 EXPLICACIÓN: Todas las variables de esta matriz aportan información única, ortogonal\")\n", + " logger.info(\" y matemáticamente independiente. El modelo puede respirar tranquilo.\")\n", + "\n", + " # Opcional: Revisar si la guillotina ya actuó previamente mirando las rutas\n", + " if rutas and 'gemelos_colineales' in rutas and len(rutas['gemelos_colineales']) > 0:\n", + " logger.info(f\"\\n 💡 NOTA FORENSE: El mapa actual está limpio porque la Guillotina (Fase 17.2) ya hizo su trabajo.\")\n", + " logger.info(f\" Las siguientes columnas ya fueron eliminadas del dataset para protegerlo: {rutas['gemelos_colineales']}\")\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " logger.info(\">>> 🔬 INICIANDO AUTOPSIA VISUAL DE COLINEALIDAD <<<\")\n", + "\n", + " # 💡 TRUCO MLOps APLICADO: Detección Dinámica del Backup\n", + " if hasattr(manager, 'X_train_backup') and manager.X_train_backup is not None:\n", + " matriz_forense = manager.X_train_backup\n", + " logger.info(\" 📸 [XAI] Matriz 'backup' detectada. Generando radiografía de la escena del crimen original...\")\n", + " elif hasattr(manager, 'X_train') and manager.X_train is not None:\n", + " matriz_forense = manager.X_train\n", + " logger.warning(\" ⚠️ [XAI] No se detectó 'X_train_backup'. Analizando la matriz post-guillotina (probablemente limpia).\")\n", + " else:\n", + " raise ValueError(\"El Manager no tiene cargada la matriz 'X_train' ni su backup. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " autopsia_visual_colinealidad_automl(\n", + " X_diagnostico=matriz_forense, \n", + " rutas=getattr(manager, 'rutas', {}),\n", + " umbral_corr=0.98\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Autopsia Visual: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_capital_gain 26029 non-null float64 \n", + " 14 is_missing_native_country 26029 non-null float64 \n", + " 15 total_nulos_en_fila 26029 non-null float64 \n", + " 16 capital_neto 26029 non-null float64 \n", + " 17 is_anomaly_isoforest 26029 non-null int8 \n", + " 18 llm_age_*_education_num 26029 non-null float64 \n", + " 19 gbdt_emb_0 26029 non-null category\n", + " 20 gbdt_emb_1 26029 non-null category\n", + " 21 gbdt_emb_2 26029 non-null category\n", + " 22 gbdt_emb_3 26029 non-null category\n", + " 23 gbdt_emb_4 26029 non-null category\n", + " 24 gbdt_emb_5 26029 non-null category\n", + " 25 gbdt_emb_6 26029 non-null category\n", + " 26 gbdt_emb_7 26029 non-null category\n", + " 27 gbdt_emb_8 26029 non-null category\n", + " 28 gbdt_emb_9 26029 non-null category\n", + " 29 gbdt_emb_10 26029 non-null category\n", + " 30 gbdt_emb_11 26029 non-null category\n", + " 31 gbdt_emb_12 26029 non-null category\n", + " 32 gbdt_emb_13 26029 non-null category\n", + " 33 gbdt_emb_14 26029 non-null category\n", + " 34 cf_distancia_frontera 26029 non-null float64 \n", + " 35 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(20), int8(1)\n", + "memory usage: 4.4 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64 \n", + " 1 workclass 6508 non-null float64 \n", + " 2 education_num 6508 non-null float64 \n", + " 3 marital_status 6508 non-null float64 \n", + " 4 occupation 6508 non-null float64 \n", + " 5 relationship 6508 non-null float64 \n", + " 6 race 6508 non-null float64 \n", + " 7 sex 6508 non-null float64 \n", + " 8 capital_gain 6508 non-null float64 \n", + " 9 capital_loss 6508 non-null float64 \n", + " 10 hours_per_week 6508 non-null float64 \n", + " 11 native_country 6508 non-null float64 \n", + " 12 is_missing_workclass 6508 non-null float64 \n", + " 13 is_missing_capital_gain 6508 non-null float64 \n", + " 14 is_missing_native_country 6508 non-null float64 \n", + " 15 total_nulos_en_fila 6508 non-null float64 \n", + " 16 capital_neto 6508 non-null float64 \n", + " 17 is_anomaly_isoforest 6508 non-null int8 \n", + " 18 llm_age_*_education_num 6508 non-null float64 \n", + " 19 gbdt_emb_0 6508 non-null category\n", + " 20 gbdt_emb_1 6508 non-null category\n", + " 21 gbdt_emb_2 6508 non-null category\n", + " 22 gbdt_emb_3 6508 non-null category\n", + " 23 gbdt_emb_4 6508 non-null category\n", + " 24 gbdt_emb_5 6508 non-null category\n", + " 25 gbdt_emb_6 6508 non-null category\n", + " 26 gbdt_emb_7 6508 non-null category\n", + " 27 gbdt_emb_8 6508 non-null category\n", + " 28 gbdt_emb_9 6508 non-null category\n", + " 29 gbdt_emb_10 6508 non-null category\n", + " 30 gbdt_emb_11 6508 non-null category\n", + " 31 gbdt_emb_12 6508 non-null category\n", + " 32 gbdt_emb_13 6508 non-null category\n", + " 33 gbdt_emb_14 6508 non-null category\n", + " 34 cf_distancia_frontera 6508 non-null float64 \n", + " 35 cf_fuerza_logit 6508 non-null float64 \n", + "dtypes: category(15), float64(20), int8(1)\n", + "memory usage: 1.1 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Explorador de Entropía desactivado. Retornando semilla por defecto (42).\n", + "\n", + ">>> 🚂 EJECUTANDO GUILLOTINA OFICIAL CON SEMILLA 42 <<<\n", + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Boruta-SHAP desactivado. Matriz devuelta intacta.\n", + "\n", + ">>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\n", + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Boruta-SHAP desactivado. Matriz devuelta intacta.\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os # 🛡️ Añadido para interactuar con el hardware\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import re\n", + "import copy\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_PRODUCCION = False # True = Ejecuta la Fase / False = Desactiva la función (Bypass rápido)\n", + "\n", + "try:\n", + " import lightgbm as lgb\n", + " import shap\n", + " from sklearn.metrics import average_precision_score, f1_score # 🚀 FIX: Importación de f1_score\n", + " from sklearn.model_selection import StratifiedKFold\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: Faltan librerías requeridas para el Tribunal Final.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm shap scikit-learn\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# 1. NUEVO MOTOR: EXPLORADOR DE ENTROPÍA (BUSCADOR DE SEMILLA MAESTRA)\n", + "# ==========================================\n", + "def explorador_entropia_guillotina(\n", + " X_train: pd.DataFrame, \n", + " y_train: pd.Series, \n", + " rutas: Dict,\n", + " max_semillas_a_probar: int = 10, \n", + " percentil_ruido: int = 85,\n", + " modo_produccion: bool = True\n", + ") -> int:\n", + " \"\"\"\n", + " [NUEVO] Explorador de Entropía MLOps (FULL POWER + HARDWARE SHIELD).\n", + " - Evalúa la guillotina con semillas dinámicas usando Validación Cruzada RIGUROSA.\n", + " - 🚀 FIX MLOps: Inyecta Asymmetric Bagging o Pesos Suavizados en la evaluación cruzada.\n", + " - Retorna la 'Semilla Maestra' para fijarla estáticamente en producción.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Explorador de Entropía desactivado. Retornando semilla por defecto (42).\")\n", + " return 42\n", + "\n", + " logger.info(f\"=== 🎲 MOTOR DE ENTROPÍA: Buscando la Semilla Maestra de Selección ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " mejor_semilla = 42\n", + " mejor_score = -1.0\n", + " \n", + " np.random.seed(42)\n", + " arsenal_semillas = [42] + list(np.random.randint(1, 99999, size=max_semillas_a_probar - 1))\n", + " total_semillas = len(arsenal_semillas)\n", + " \n", + " logger.info(f\" 🔍 Probando {total_semillas} realidades estocásticas diferentes (Evaluación Full Power)...\")\n", + " \n", + " # 🛡️ PROTECCIÓN CPU: Calculamos núcleos dejando 1 libre para el sistema operativo\n", + " nucleos_disponibles = max(1, os.cpu_count() - 1) if os.cpu_count() else -1\n", + "\n", + " # 🚀 Extracción de Estrategia de Equidad Universal\n", + " config_equidad = rutas.get('asymmetric_bagging', {}).copy()\n", + " \n", + " es_multiclase = False\n", + " if y_train.nunique() > 2:\n", + " es_multiclase = True\n", + "\n", + " # 📊 FIX MLOps Telemetría: Reportar progreso sin saturar el log\n", + " for idx, semilla in enumerate(arsenal_semillas, 1):\n", + " rutas_simulacion = copy.deepcopy(rutas)\n", + " \n", + " X_simulado, _ = tribunal_boruta_shap_automl(\n", + " X=X_train, \n", + " y=y_train, \n", + " rutas=rutas_simulacion, \n", + " percentil_ruido=percentil_ruido, \n", + " random_state=semilla,\n", + " verbose=False,\n", + " modo_produccion=True # Forzamos ejecución interna para la simulación\n", + " )\n", + " \n", + " skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=semilla)\n", + " scores_cv = []\n", + " \n", + " # 🚀 FIX: Construimos los parámetros base del evaluador e inyectamos la equidad\n", + " param_evaluador = {\n", + " 'n_estimators': 500, \n", + " 'random_state': semilla, \n", + " 'n_jobs': nucleos_disponibles,\n", + " 'verbosity': -1\n", + " }\n", + " \n", + " if config_equidad:\n", + " if es_multiclase:\n", + " for k in ['pos_bagging_fraction', 'neg_bagging_fraction', 'bagging_freq', 'bagging_seed', 'scale_pos_weight']:\n", + " config_equidad.pop(k, None)\n", + " if not es_multiclase:\n", + " config_equidad.pop('class_weight', None)\n", + " config_equidad.pop('scale_pos_weight', None)\n", + " param_evaluador.update(config_equidad)\n", + " \n", + " clf = lgb.LGBMClassifier(**param_evaluador)\n", + " \n", + " for train_idx, val_idx in skf.split(X_simulado, y_train):\n", + " X_tr, X_va = X_simulado.iloc[train_idx], X_simulado.iloc[val_idx]\n", + " y_tr, y_va = y_train.iloc[train_idx], y_train.iloc[val_idx]\n", + " \n", + " clf.fit(\n", + " X_tr, y_tr, \n", + " eval_set=[(X_va, y_va)], \n", + " callbacks=[lgb.early_stopping(30, verbose=False)]\n", + " )\n", + " \n", + " # 🚀 FIX: Soporte estricto Binario/Multiclase (Solo if)\n", + " if es_multiclase:\n", + " preds = clf.predict(X_va)\n", + " scores_cv.append(f1_score(y_va, preds, average='weighted'))\n", + " \n", + " if not es_multiclase:\n", + " preds = clf.predict_proba(X_va)[:, 1]\n", + " scores_cv.append(average_precision_score(y_va, preds))\n", + " \n", + " score_promedio = float(np.mean(scores_cv))\n", + " \n", + " if score_promedio > mejor_score:\n", + " mejor_score = score_promedio\n", + " mejor_semilla = int(semilla)\n", + " logger.info(f\" ↳ [NUEVA MEJOR SEMILLA] Progreso: {idx}/{total_semillas}. Semilla [{semilla}] -> Max Score: {mejor_score:.4f}\")\n", + " \n", + " # Reportar progreso cada 10 iteraciones para no inundar el log de Producción\n", + " elif idx % 10 == 0:\n", + " logger.debug(f\" ↳ Progreso: {idx}/{total_semillas}. Semilla actual [{semilla}] (No superó máximo).\")\n", + "\n", + " # 🛡️ PROTECCIÓN RAM: Limpieza profunda y agresiva\n", + " del X_simulado, clf, skf, X_tr, X_va, y_tr, y_va\n", + " gc.collect()\n", + " \n", + " # 🛡️ PROTECCIÓN TÉRMICA: Micro-pausa para permitir disipación de calor del procesador\n", + " time.sleep(1.5)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 👑 SEMILLA MAESTRA ENCONTRADA: {mejor_semilla} (Potencial Score: {mejor_score:.4f})\")\n", + " logger.info(f\"\\n⏱️ Búsqueda de Entropía completada en {time.time() - inicio_timer:.3f}s\")\n", + " \n", + " return mejor_semilla\n", + "\n", + "# ==========================================\n", + "# 2. LA GUILLOTINA MEJORADA (Con Modo Silencioso y Soporte Categórico)\n", + "# ==========================================\n", + "def tribunal_boruta_shap_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " muestras_shap: int = 5000, \n", + " percentil_ruido: int = 75, \n", + " random_state: int = 42,\n", + " verbose: bool = True,\n", + " modo_produccion: bool = True \n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.3] El Juez Final: Boruta-SHAP & Null Importance.\n", + " - 🚀 FIX MLOps: Ahora escanea Números, Categorías (GGPL) y Booleanos simultáneamente.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " if verbose: logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Boruta-SHAP desactivado. Matriz devuelta intacta.\")\n", + " return X.copy(), (rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []})\n", + "\n", + " if X is None or X.empty:\n", + " if verbose: logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + " \n", + " if verbose: logger.info(f\"=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " if y is not None:\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " meta_features = [col for col in X_clean.columns if patron_troya.search(col)]\n", + " \n", + " if meta_features:\n", + " if verbose: logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(meta_features)} 'Caballos de Troya'...\")\n", + " X_clean.drop(columns=meta_features, inplace=True)\n", + " rutas['meta_features_purgadas'] = meta_features\n", + " \n", + " if not meta_features:\n", + " rutas['meta_features_purgadas'] = []\n", + "\n", + " if verbose: logger.info(f\" 🧠 Preparando el Torneo Predictivo para las variables reales...\")\n", + " \n", + " # 🚀 FIX: Mapeo de Numeros, Categorías y Booleanos.\n", + " cols_a_evaluar = X_clean.select_dtypes(include=[np.number, 'category', 'bool']).columns.tolist()\n", + " if len(cols_a_evaluar) == 0:\n", + " if verbose: logger.info(\" ✅ [BYPASS] No hay variables evaluables. Operación omitida.\")\n", + " rutas['basura_boruta'] = []\n", + " return X_clean, rutas\n", + "\n", + " np.random.seed(random_state)\n", + "\n", + " n_muestras = min(len(X_clean), muestras_shap)\n", + " idx_sample = np.random.choice(X_clean.index, n_muestras, replace=False)\n", + " \n", + " # 🚀 FIX: NO usamos fillna(0) para proteger el dtype 'category'\n", + " X_sample = X_clean.loc[idx_sample, cols_a_evaluar]\n", + " y_sample = y.loc[idx_sample]\n", + "\n", + " if verbose: logger.info(\" ↳ Generando Clones de Sombra (Ruido Aleatorio Determinista)...\")\n", + " \n", + " # 🚀 FIX: Creación de matriz sombra respetando dtypes\n", + " X_shadow = pd.DataFrame({col: np.random.permutation(X_sample[col].values) for col in X_sample.columns}, index=X_sample.index)\n", + " for col in X_sample.columns:\n", + " X_shadow[col] = X_shadow[col].astype(X_sample[col].dtype)\n", + " \n", + " shadow_cols = [f\"shadow_{c}\" for c in X_sample.columns]\n", + " X_shadow.columns = shadow_cols\n", + " \n", + " X_torneo = pd.concat([X_sample, X_shadow], axis=1)\n", + "\n", + " if verbose: logger.info(\" ↳ Entrenando Oráculo Juez (FULL POWER)...\")\n", + " \n", + " es_regresion = False\n", + " if pd.api.types.is_float_dtype(y_sample) and y_sample.nunique() > 20:\n", + " es_regresion = True\n", + " \n", + " es_multiclase = False\n", + " if y_sample.nunique() > 2:\n", + " es_multiclase = True\n", + " \n", + " config_bagging = rutas.get('asymmetric_bagging', {}).copy()\n", + " nucleos_juez = max(1, os.cpu_count() - 1) if os.cpu_count() else -1\n", + "\n", + " param_juez = {\n", + " 'n_estimators': 500, \n", + " 'random_state': random_state, \n", + " 'n_jobs': nucleos_juez, \n", + " 'verbose': -1\n", + " }\n", + " \n", + " if config_bagging:\n", + " if es_multiclase:\n", + " for k in ['pos_bagging_fraction', 'neg_bagging_fraction', 'bagging_freq', 'bagging_seed', 'scale_pos_weight']:\n", + " config_bagging.pop(k, None)\n", + " if not es_multiclase:\n", + " config_bagging.pop('class_weight', None)\n", + " config_bagging.pop('scale_pos_weight', None)\n", + " \n", + " param_juez.update(config_bagging)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " if es_regresion:\n", + " juez = lgb.LGBMRegressor(**param_juez)\n", + " if not es_regresion:\n", + " juez = lgb.LGBMClassifier(**param_juez)\n", + " \n", + " juez.fit(X_torneo, y_sample)\n", + "\n", + " if verbose: logger.info(\" ↳ Calculando Magnitudes SHAP para emitir sentencias...\")\n", + " explainer = shap.TreeExplainer(juez)\n", + " shap_values = explainer.shap_values(X_torneo)\n", + " \n", + " if isinstance(shap_values, list):\n", + " shap_imp = np.zeros(X_torneo.shape[1])\n", + " for class_vals in shap_values:\n", + " shap_imp += np.abs(class_vals).mean(axis=0)\n", + " \n", + " if not isinstance(shap_values, list):\n", + " if len(shap_values.shape) == 3:\n", + " shap_imp = np.abs(shap_values).mean(axis=0).sum(axis=1)\n", + " if len(shap_values.shape) != 3:\n", + " shap_imp = np.abs(shap_values).mean(axis=0)\n", + "\n", + " imp_reales = pd.Series(shap_imp[:len(cols_a_evaluar)], index=cols_a_evaluar)\n", + " imp_sombras = pd.Series(shap_imp[len(cols_a_evaluar):], index=shadow_cols)\n", + "\n", + " umbral_basura = np.percentile(imp_sombras, percentil_ruido)\n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + "\n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5 or len(columnas_a_eliminar) > len(cols_a_evaluar) * 0.8:\n", + " if verbose: logger.warning(f\" ⚠️ [ALERTA AutoML] Juez demasiado estricto. Dejó solo {len(cols_a_evaluar) - len(columnas_a_eliminar)} variables vivas. Riesgo de Feature Starvation.\")\n", + " if verbose: logger.info(\" ↳ Activando Protocolo de Indulto: Bajando exigencia a la Mediana del Ruido...\")\n", + " \n", + " umbral_basura = np.median(imp_sombras) \n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + " \n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5:\n", + " if verbose: logger.warning(\" ↳ 🚨 [INDULTO TOTAL] La señal es muy débil. Se anula la guillotina para proteger el poder predictivo.\")\n", + " columnas_a_eliminar = []\n", + "\n", + " del X_sample, X_shadow, X_torneo, juez, explainer, shap_values\n", + " gc.collect()\n", + "\n", + " if columnas_a_eliminar:\n", + " if verbose: logger.warning(f\" 🚨 [SENTENCIA] A la Guillotina: {len(columnas_a_eliminar)} variables reales aportaban menos que el ruido puro.\")\n", + " X_clean.drop(columns=columnas_a_eliminar, inplace=True)\n", + " rutas['basura_boruta'] = columnas_a_eliminar\n", + " \n", + " if not columnas_a_eliminar:\n", + " if verbose: logger.info(\" ✅ [JUSTO] Todas las variables sobrevivieron al protocolo. Son estadísticamente útiles.\")\n", + " rutas['basura_boruta'] = []\n", + "\n", + " if y is None:\n", + " meta_heredadas = rutas.get('meta_features_purgadas', [])\n", + " meta_presentes = [col for col in meta_heredadas if col in X_clean.columns]\n", + " \n", + " if meta_presentes:\n", + " X_clean.drop(columns=meta_presentes, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Cirugía aplicada. {len(meta_presentes)} 'Caballos de Troya' eliminados.\")\n", + "\n", + " basura_heredada = rutas.get('basura_boruta', [])\n", + " basura_presente = [col for col in basura_heredada if col in X_clean.columns]\n", + " \n", + " if basura_presente:\n", + " X_clean.drop(columns=basura_presente, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Guillotina aplicada. {len(basura_presente)} variables decapitadas.\")\n", + " \n", + " if not basura_presente:\n", + " if verbose: logger.info(\" ✅ [TEST] Matriz evaluada. Sin variables inútiles que purgar.\")\n", + "\n", + " for key in ['num_vars', 'cat_vars', 'bool_vars', 'date_vars']:\n", + " if key in rutas:\n", + " rutas[key] = [c for c in rutas[key] if c in X_clean.columns]\n", + "\n", + " if verbose:\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): {X_clean.shape[1]}\")\n", + " logger.info(f\"\\n⏱️ Tribunal Boruta-SHAP completado en {time.time() - inicio_timer:.3f}s\")\n", + " \n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " # Definimos nuestro punto de exigencia (85 o 90)\n", + " EXIGENCIA = 90\n", + "\n", + " # 1. 🎲 ENCONTRAR LA SEMILLA MAESTRA (Bucle Full Power Dinámico)\n", + " semilla_ganadora = explorador_entropia_guillotina(\n", + " X_train=manager.X_train, \n", + " y_train=manager.y_train, \n", + " rutas=manager.rutas,\n", + " max_semillas_a_probar=100, # <-- Ajusta este valor. 50 es un buen balance para empezar.\n", + " percentil_ruido=EXIGENCIA,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + " \n", + " # 2. ⚖️ EJECUTAR EL JUICIO OFICIAL EN TRAIN CON LA MEJOR SEMILLA\n", + " logger.info(f\"\\n>>> 🚂 EJECUTANDO GUILLOTINA OFICIAL CON SEMILLA {semilla_ganadora} <<<\")\n", + " X_train_elite, rutas_actualizadas = tribunal_boruta_shap_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " percentil_ruido=EXIGENCIA,\n", + " random_state=semilla_ganadora,\n", + " verbose=True,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + " \n", + " # 3. 🔒 REPLICAR EN TEST\n", + " logger.info(\"\\n>>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\")\n", + " X_test_elite, _ = tribunal_boruta_shap_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " verbose=True,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos finales en el Manager\n", + " manager.X_train = X_train_elite\n", + " manager.X_test = X_test_elite\n", + " manager.rutas = rutas_actualizadas\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager.\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " gc.collect()\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Tribunal Boruta-SHAP: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 36 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64 \n", + " 1 workclass 26029 non-null float64 \n", + " 2 education_num 26029 non-null float64 \n", + " 3 marital_status 26029 non-null float64 \n", + " 4 occupation 26029 non-null float64 \n", + " 5 relationship 26029 non-null float64 \n", + " 6 race 26029 non-null float64 \n", + " 7 sex 26029 non-null float64 \n", + " 8 capital_gain 26029 non-null float64 \n", + " 9 capital_loss 26029 non-null float64 \n", + " 10 hours_per_week 26029 non-null float64 \n", + " 11 native_country 26029 non-null float64 \n", + " 12 is_missing_workclass 26029 non-null float64 \n", + " 13 is_missing_capital_gain 26029 non-null float64 \n", + " 14 is_missing_native_country 26029 non-null float64 \n", + " 15 total_nulos_en_fila 26029 non-null float64 \n", + " 16 capital_neto 26029 non-null float64 \n", + " 17 is_anomaly_isoforest 26029 non-null int8 \n", + " 18 llm_age_*_education_num 26029 non-null float64 \n", + " 19 gbdt_emb_0 26029 non-null category\n", + " 20 gbdt_emb_1 26029 non-null category\n", + " 21 gbdt_emb_2 26029 non-null category\n", + " 22 gbdt_emb_3 26029 non-null category\n", + " 23 gbdt_emb_4 26029 non-null category\n", + " 24 gbdt_emb_5 26029 non-null category\n", + " 25 gbdt_emb_6 26029 non-null category\n", + " 26 gbdt_emb_7 26029 non-null category\n", + " 27 gbdt_emb_8 26029 non-null category\n", + " 28 gbdt_emb_9 26029 non-null category\n", + " 29 gbdt_emb_10 26029 non-null category\n", + " 30 gbdt_emb_11 26029 non-null category\n", + " 31 gbdt_emb_12 26029 non-null category\n", + " 32 gbdt_emb_13 26029 non-null category\n", + " 33 gbdt_emb_14 26029 non-null category\n", + " 34 cf_distancia_frontera 26029 non-null float64 \n", + " 35 cf_fuerza_logit 26029 non-null float64 \n", + "dtypes: category(15), float64(20), int8(1)\n", + "memory usage: 4.4 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 JUZGANDO VARIABLES CONTRA EL RUIDO EN TRAIN (BORUTA-SHAP) <<<\n", + "=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\n", + " 🔪 [CIRUGÍA] Extirpando 17 'Caballos de Troya'...\n", + " 🧠 Preparando el Torneo Predictivo para las variables reales...\n", + " 🧠 Tribunal conformado por 19 variables (Numéricas y Categóricas)...\n", + " ↳ Generando Clones de Sombra (Ruido Aleatorio Determinista)...\n", + " ↳ Entrenando Oráculo Juez (Con Asymmetric Bagging PURO y FULL POWER)...\n", + " ↳ Calculando Magnitudes SHAP para emitir sentencias...\n", + " 🚨 [SENTENCIA] A la Guillotina: 8 variables reales aportaban menos que el ruido puro.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): 11\n", + "\n", + "⏱️ Tribunal Boruta-SHAP completado en 3.475s\n", + "\n", + ">>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\n", + "=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\n", + " 🔒 [TEST] Cirugía aplicada. 17 'Caballos de Troya' eliminados.\n", + " 🔒 [TEST] Guillotina aplicada. 8 variables decapitadas.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): 11\n", + "\n", + "⏱️ Tribunal Boruta-SHAP completado en 0.004s\n", + "\n", + "📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Boruta-SHAP Manual aplicado).\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import time\n", + "import gc\n", + "import re\n", + "import warnings\n", + "from typing import Tuple, Dict\n", + "\n", + "try:\n", + " import lightgbm as lgb\n", + " import shap\n", + "except ImportError:\n", + " # Este print se mantiene porque es un error pre-ejecución críitico para el usuario del Notebook\n", + " logger.error(\"🛑 MLOps Warning: Las librerías 'lightgbm' y 'shap' son requeridas para el Tribunal Final.\")\n", + " logger.error(\" Ejecuta: !pip install lightgbm shap\")\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# ==========================================\n", + "# 1. LA GUILLOTINA MLOPS (FULL POWER)\n", + "# ==========================================\n", + "def tribunal_boruta_shap_automl(\n", + " X: pd.DataFrame, \n", + " y: pd.Series = None, \n", + " rutas: Dict = None,\n", + " muestras_shap: int = 5000, \n", + " percentil_ruido: int = 75, \n", + " random_state: int = 42,\n", + " verbose: bool = True \n", + ") -> Tuple[pd.DataFrame, Dict]:\n", + " \"\"\"\n", + " [FASE 6 - Paso 17.3] El Juez Final: Boruta-SHAP & Null Importance.\n", + " - 🚀 FIX MLOps: Ahora escanea Números, Categorías (GGPL) y Booleanos simultáneamente.\n", + " - El Juez interno usa 500 estimadores para máxima precisión.\n", + " - Inyecta Asymmetric Bagging o Pesos Suavizados dinámicamente según el Target.\n", + " - Elimina 'Caballos de Troya' (Target Leakage).\n", + " \"\"\"\n", + " if X is None or X.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz (X) está vacía.\")\n", + " raise ValueError(\"La matriz (X) está vacía.\")\n", + " \n", + " if verbose: logger.info(f\"=== ⚖️ FASE 17.3: Tribunal Boruta-SHAP (Filtro contra el Ruido) ===\")\n", + " inicio_timer = time.time()\n", + " \n", + " X_clean = X.copy()\n", + " rutas = rutas or {'num_vars': [], 'cat_vars': [], 'bool_vars': [], 'date_vars': []}\n", + "\n", + " # ==========================================\n", + " # MODO TRAIN: El Torneo contra las Sombras\n", + " # ==========================================\n", + " if y is not None:\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " meta_features = [col for col in X_clean.columns if patron_troya.search(col)]\n", + " \n", + " if meta_features:\n", + " if verbose: logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(meta_features)} 'Caballos de Troya'...\")\n", + " X_clean.drop(columns=meta_features, inplace=True)\n", + " rutas['meta_features_purgadas'] = meta_features\n", + " else:\n", + " rutas['meta_features_purgadas'] = []\n", + "\n", + " if verbose: logger.info(f\" 🧠 Preparando el Torneo Predictivo para las variables reales...\")\n", + " \n", + " # 🚀 FIX: Ampliamos el radar para incluir categorías (Embeddings GGPL) y booleanos\n", + " cols_a_evaluar = X_clean.select_dtypes(include=[np.number, 'category', 'bool']).columns.tolist()\n", + " \n", + " if len(cols_a_evaluar) == 0:\n", + " if verbose: logger.info(\" ✅ [BYPASS] No hay variables evaluables. Operación omitida.\")\n", + " rutas['basura_boruta'] = []\n", + " return X_clean, rutas\n", + "\n", + " if verbose: logger.info(f\" 🧠 Tribunal conformado por {len(cols_a_evaluar)} variables (Numéricas y Categóricas)...\")\n", + "\n", + " np.random.seed(random_state)\n", + "\n", + " n_muestras = min(len(X_clean), muestras_shap)\n", + " idx_sample = np.random.choice(X_clean.index, n_muestras, replace=False)\n", + " \n", + " # 🚀 FIX: Extraemos la muestra. NO usamos fillna(0) porque destruiría el dtype 'category'\n", + " # LightGBM maneja los NaNs de forma nativa.\n", + " X_sample = X_clean.loc[idx_sample, cols_a_evaluar]\n", + " y_sample = y.loc[idx_sample]\n", + "\n", + " if verbose: logger.info(\" ↳ Generando Clones de Sombra (Ruido Aleatorio Determinista)...\")\n", + " \n", + " # 🚀 FIX MLOps: Creación segura de sombras respetando el dtype 'category'\n", + " X_shadow = pd.DataFrame({col: np.random.permutation(X_sample[col].values) for col in X_sample.columns}, index=X_sample.index)\n", + " for col in X_sample.columns:\n", + " X_shadow[col] = X_shadow[col].astype(X_sample[col].dtype) # Restaura la naturaleza exacta (category/float)\n", + " \n", + " shadow_cols = [f\"shadow_{c}\" for c in X_sample.columns]\n", + " X_shadow.columns = shadow_cols\n", + " \n", + " X_torneo = pd.concat([X_sample, X_shadow], axis=1)\n", + "\n", + " es_regresion = pd.api.types.is_float_dtype(y_sample) and y_sample.nunique() > 20\n", + " es_multiclase = y_sample.nunique() > 2\n", + " \n", + " if verbose: \n", + " if es_multiclase:\n", + " logger.info(\" ↳ Entrenando Oráculo Juez (Con Pesos Suavizados Multiclase y FULL POWER)...\")\n", + " elif es_regresion:\n", + " logger.info(\" ↳ Entrenando Oráculo Juez Regresor (FULL POWER)...\")\n", + " else:\n", + " logger.info(\" ↳ Entrenando Oráculo Juez (Con Asymmetric Bagging PURO y FULL POWER)...\")\n", + " \n", + " config_bagging = rutas.get('asymmetric_bagging', {}).copy()\n", + " \n", + " param_juez = {\n", + " 'n_estimators': 500, \n", + " 'random_state': random_state, \n", + " 'n_jobs': -1,\n", + " 'verbose': -1\n", + " }\n", + " \n", + " if config_bagging:\n", + " if es_multiclase:\n", + " for k in ['pos_bagging_fraction', 'neg_bagging_fraction', 'bagging_freq', 'bagging_seed', 'scale_pos_weight']:\n", + " config_bagging.pop(k, None)\n", + " else:\n", + " for k in ['class_weight', 'scale_pos_weight']:\n", + " config_bagging.pop(k, None)\n", + " \n", + " param_juez.update(config_bagging)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + " if es_regresion:\n", + " juez = lgb.LGBMRegressor(**param_juez)\n", + " else:\n", + " juez = lgb.LGBMClassifier(**param_juez)\n", + " \n", + " # LightGBM detecta automáticamente los dtypes 'category' al hacer .fit()\n", + " juez.fit(X_torneo, y_sample)\n", + "\n", + " if verbose: logger.info(\" ↳ Calculando Magnitudes SHAP para emitir sentencias...\")\n", + " explainer = shap.TreeExplainer(juez)\n", + " shap_values = explainer.shap_values(X_torneo)\n", + " \n", + " if isinstance(shap_values, list):\n", + " shap_imp = np.zeros(X_torneo.shape[1])\n", + " for class_vals in shap_values:\n", + " shap_imp += np.abs(class_vals).mean(axis=0)\n", + " else:\n", + " if len(shap_values.shape) == 3:\n", + " shap_imp = np.abs(shap_values).mean(axis=0).sum(axis=1)\n", + " else:\n", + " shap_imp = np.abs(shap_values).mean(axis=0)\n", + "\n", + " imp_reales = pd.Series(shap_imp[:len(cols_a_evaluar)], index=cols_a_evaluar)\n", + " imp_sombras = pd.Series(shap_imp[len(cols_a_evaluar):], index=shadow_cols)\n", + "\n", + " umbral_basura = np.percentile(imp_sombras, percentil_ruido)\n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + "\n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5 or len(columnas_a_eliminar) > len(cols_a_evaluar) * 0.8:\n", + " if verbose: logger.warning(f\" ⚠️ [ALERTA AutoML] Juez demasiado estricto. Dejó solo {len(cols_a_evaluar) - len(columnas_a_eliminar)} variables vivas. Riesgo de Feature Starvation.\")\n", + " if verbose: logger.info(\" ↳ Activando Protocolo de Indulto: Bajando exigencia a la Mediana del Ruido...\")\n", + " \n", + " umbral_basura = np.median(imp_sombras) \n", + " columnas_a_eliminar = imp_reales[imp_reales <= umbral_basura].index.tolist()\n", + " \n", + " if len(cols_a_evaluar) - len(columnas_a_eliminar) < 5:\n", + " if verbose: logger.warning(\" ↳ 🚨 [INDULTO TOTAL] La señal es muy débil. Se anula la guillotina para proteger el poder predictivo.\")\n", + " columnas_a_eliminar = []\n", + "\n", + " del X_sample, X_shadow, X_torneo, juez, explainer, shap_values\n", + " gc.collect()\n", + "\n", + " if columnas_a_eliminar:\n", + " if verbose: logger.warning(f\" 🚨 [SENTENCIA] A la Guillotina: {len(columnas_a_eliminar)} variables reales aportaban menos que el ruido puro.\")\n", + " X_clean.drop(columns=columnas_a_eliminar, inplace=True)\n", + " rutas['basura_boruta'] = columnas_a_eliminar\n", + " else:\n", + " if verbose: logger.info(\" ✅ [JUSTO] Todas las variables sobrevivieron al protocolo. Son estadísticamente útiles.\")\n", + " rutas['basura_boruta'] = []\n", + "\n", + " # ==========================================\n", + " # MODO TEST: La Ejecución Silenciosa\n", + " # ==========================================\n", + " else:\n", + " meta_heredadas = rutas.get('meta_features_purgadas', [])\n", + " meta_presentes = [col for col in meta_heredadas if col in X_clean.columns]\n", + " \n", + " if meta_presentes:\n", + " X_clean.drop(columns=meta_presentes, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Cirugía aplicada. {len(meta_presentes)} 'Caballos de Troya' eliminados.\")\n", + "\n", + " basura_heredada = rutas.get('basura_boruta', [])\n", + " basura_presente = [col for col in basura_heredada if col in X_clean.columns]\n", + " \n", + " if basura_presente:\n", + " X_clean.drop(columns=basura_presente, inplace=True)\n", + " if verbose: logger.info(f\" 🔒 [TEST] Guillotina aplicada. {len(basura_presente)} variables decapitadas.\")\n", + " else:\n", + " if verbose: logger.info(\" ✅ [TEST] Matriz evaluada. Sin variables inútiles que purgar.\")\n", + "\n", + " for key in ['num_vars', 'cat_vars', 'bool_vars', 'date_vars']:\n", + " if key in rutas:\n", + " rutas[key] = [c for c in rutas[key] if c in X_clean.columns]\n", + "\n", + " if verbose:\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Matriz Real Libre de Ruido. Columnas finales (Élite Predictiva): {X_clean.shape[1]}\")\n", + " logger.info(f\"\\n⏱️ Tribunal Boruta-SHAP completado en {time.time() - inicio_timer:.3f}s\")\n", + " \n", + " return X_clean, rutas\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train' o 'X_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if getattr(manager, 'rutas', None) is None or not manager.rutas:\n", + " raise ValueError(\"El Manager no tiene el ruteo de variables cargado en 'rutas'. Ejecuta el Enrutamiento (Fase 3.2).\")\n", + "\n", + " logger.info(\">>> 🚂 JUZGANDO VARIABLES CONTRA EL RUIDO EN TRAIN (BORUTA-SHAP) <<<\")\n", + " # ⚙️ MLOps: Inicializamos con percentil 90 para dar margen de maniobra y Random State fijo\n", + " X_train_elite, rutas_actualizadas = tribunal_boruta_shap_automl(\n", + " X=manager.X_train, \n", + " y=manager.y_train, \n", + " rutas=manager.rutas,\n", + " percentil_ruido=90,\n", + " random_state=9693 , # <-- Garantiza que siempre decapite las mismas variables (Semilla Manual)\n", + " verbose=True\n", + " )\n", + " \n", + " logger.info(\"\\n>>> 🔒 EJECUTANDO SENTENCIA EN TEST <<<\")\n", + " X_test_elite, _ = tribunal_boruta_shap_automl(\n", + " X=manager.X_test, \n", + " y=None, \n", + " rutas=manager.rutas,\n", + " verbose=True\n", + " )\n", + " \n", + " # 🚀 FIX ARQUITECTÓNICO: Guardamos los activos finales en el Manager\n", + " manager.X_train = X_train_elite\n", + " manager.X_test = X_test_elite\n", + " manager.rutas = rutas_actualizadas\n", + " \n", + " logger.info(\"\\n📦 [MLOps] Matrices y rutas actualizadas de forma segura en el PipelineManager (Boruta-SHAP Manual aplicado).\")\n", + "\n", + " # (Transición) Reflejamos temporalmente en globales si el código viejo las requiere\n", + " X_train = manager.X_train\n", + " y_train = manager.y_train\n", + " X_test = manager.X_test\n", + " rutas_variables = manager.rutas\n", + "\n", + " gc.collect()\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Tribunal Boruta-SHAP: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 128, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 26029 entries, 0 to 26028\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 26029 non-null float64\n", + " 1 workclass 26029 non-null float64\n", + " 2 education_num 26029 non-null float64\n", + " 3 marital_status 26029 non-null float64\n", + " 4 occupation 26029 non-null float64\n", + " 5 relationship 26029 non-null float64\n", + " 6 sex 26029 non-null float64\n", + " 7 capital_gain 26029 non-null float64\n", + " 8 capital_loss 26029 non-null float64\n", + " 9 hours_per_week 26029 non-null float64\n", + " 10 llm_age_*_education_num 26029 non-null float64\n", + "dtypes: float64(11)\n", + "memory usage: 2.2 MB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_train.info()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 6508 entries, 0 to 6507\n", + "Data columns (total 11 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 age 6508 non-null float64\n", + " 1 workclass 6508 non-null float64\n", + " 2 education_num 6508 non-null float64\n", + " 3 marital_status 6508 non-null float64\n", + " 4 occupation 6508 non-null float64\n", + " 5 relationship 6508 non-null float64\n", + " 6 sex 6508 non-null float64\n", + " 7 capital_gain 6508 non-null float64\n", + " 8 capital_loss 6508 non-null float64\n", + " 9 hours_per_week 6508 non-null float64\n", + " 10 llm_age_*_education_num 6508 non-null float64\n", + "dtypes: float64(11)\n", + "memory usage: 559.4 KB\n" + ] + } + ], + "source": [ + "\n", + "\n", + "X_test.info()\n", + "\n", + "\n", + "# # FASE 7: MLOps: Exportación y Calibración\n", + "# El modelo sale del laboratorio al mundo real." + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "=== 💾 FASE 18.1: Exportación Binaria Integral (PyArrow v23.0.1) ===\n", + " ✅ Matrices X e y exportadas exitosamente a Parquet.\n", + " ⚖️ Escudo de Equidad (Pesos) blindado en Parquet.\n", + " 🗺️ Metadata de Rutas exportada a JSON de forma segura.\n", + "--------------------------------------------------------------------------------\n", + " 🛡️ ESTATUS: Activos 100% blindados (Datos + Modelos Previos). Listo para Producción y Optuna.\n", + "\n", + "⏱️ I/O completado en 0.186s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import json\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import joblib\n", + "from typing import Dict, Optional, Any\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "try:\n", + " import pyarrow as pa\n", + " MOTOR_PARQUET = f\"PyArrow v{pa.__version__}\"\n", + "except ImportError:\n", + " MOTOR_PARQUET = \"Motor No Detectado\"\n", + " # Este print se mantiene como warning crítico pre-ejecución si el entorno no tiene la librería\n", + " logger.warning(\"🛑 MLOps Warning: El motor binario 'pyarrow' es requerido para escribir archivos Parquet.\")\n", + "\n", + "# ==========================================\n", + "# 🔧 NUEVO: Traductor Universal de Tipos Numpy -> JSON\n", + "# ==========================================\n", + "class NumpyEncoder(json.JSONEncoder):\n", + " \"\"\" Escudo de Serialización: Convierte tipos Numpy/Pandas a Python nativo \"\"\"\n", + " def default(self, obj):\n", + " if isinstance(obj, np.integer):\n", + " return int(obj)\n", + " if isinstance(obj, np.floating):\n", + " return float(obj)\n", + " if isinstance(obj, np.ndarray):\n", + " return obj.tolist()\n", + " if isinstance(obj, np.bool_):\n", + " return bool(obj)\n", + " if pd.isna(obj): # 🚀 FIX MLOps: Tolerancia a NaNs o NaTs huérfanos\n", + " return None\n", + " return super(NumpyEncoder, self).default(obj)\n", + "\n", + "def exportar_activos_mlops_integral(\n", + " X_train: pd.DataFrame, \n", + " y_train: pd.Series, \n", + " X_test: pd.DataFrame, \n", + " y_test: Optional[pd.Series], \n", + " rutas: Dict,\n", + " modelos_preprocesamiento: Optional[Dict[str, Any]] = None, # 🚀 FIX MLOps: Ahora es opcional y seguro\n", + " pesos_equidad: Optional[pd.Series] = None, \n", + " grupos_validacion: Optional[np.ndarray] = None, \n", + " directorio_salida: str = \"mlops_activos\"\n", + ") -> None:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.1] Exportación Serializada Integral.\n", + " - Guarda X, y, Metadatos.\n", + " - Serializa los pesos de justicia algorítmica (sample_weights).\n", + " - Serializa el mapa topológico de Folds (grupos_cv).\n", + " - 🧠 NUEVO: Serializa TODOS los cerebros de preprocesamiento (KNN, Escala, GBDT, etc.) con Joblib.\n", + " \"\"\"\n", + " logger.info(f\"=== 💾 FASE 18.1: Exportación Binaria Integral ({MOTOR_PARQUET}) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if not os.path.exists(directorio_salida):\n", + " os.makedirs(directorio_salida)\n", + "\n", + " dir_artefactos = os.path.join(directorio_salida, \"artefactos_preprocesamiento\")\n", + " if not os.path.exists(dir_artefactos):\n", + " os.makedirs(dir_artefactos)\n", + "\n", + " try:\n", + " # 1. Matrices y Vectores Base\n", + " X_train.to_parquet(os.path.join(directorio_salida, \"X_train_opt.parquet\"), engine='pyarrow', index=False)\n", + " X_test.to_parquet(os.path.join(directorio_salida, \"X_test_opt.parquet\"), engine='pyarrow', index=False)\n", + " y_train.to_frame(name='Target').to_parquet(os.path.join(directorio_salida, \"y_train_opt.parquet\"), engine='pyarrow', index=False)\n", + " logger.info(\" ✅ Matrices X e y exportadas exitosamente a Parquet.\")\n", + "\n", + " if y_test is not None:\n", + " y_test.to_frame(name='Target').to_parquet(os.path.join(directorio_salida, \"y_test_opt.parquet\"), engine='pyarrow', index=False)\n", + "\n", + " # 2. Escudo de Equidad Algorítmica (Pesos)\n", + " if pesos_equidad is not None:\n", + " df_pesos = pd.DataFrame({'sample_weight': pesos_equidad}).reset_index(drop=True)\n", + " df_pesos.to_parquet(os.path.join(directorio_salida, \"pesos_train.parquet\"), engine='pyarrow', index=False)\n", + " logger.info(\" ⚖️ Escudo de Equidad (Pesos) blindado en Parquet.\")\n", + "\n", + " # 3. Mapa de Validación Cruzada (Grupos)\n", + " if grupos_validacion is not None:\n", + " df_grupos = pd.DataFrame({'grupos_cv': grupos_validacion}).reset_index(drop=True)\n", + " df_grupos.to_parquet(os.path.join(directorio_salida, \"grupos_cv.parquet\"), engine='pyarrow', index=False)\n", + " logger.info(\" 🗺️ Mapa de Validación Cruzada blindado en Parquet.\")\n", + "\n", + " # 4. 🧠 Serialización de Cerebros (Imputadores, Escaladores, Encoders)\n", + " if modelos_preprocesamiento:\n", + " logger.info(f\" 🧠 Detectados {len(modelos_preprocesamiento)} artefactos de preprocesamiento. Serializando...\")\n", + " for nombre_artefacto, objeto_artefacto in modelos_preprocesamiento.items():\n", + " if objeto_artefacto is not None:\n", + " ruta_artefacto = os.path.join(dir_artefactos, f\"{nombre_artefacto}.joblib\")\n", + " joblib.dump(objeto_artefacto, ruta_artefacto)\n", + " logger.info(\" 📦 Todos los cerebros de preprocesamiento han sido congelados criogénicamente (Joblib).\")\n", + "\n", + " # 5. Diccionario de Rutas (JSON con NumpyEncoder)\n", + " with open(os.path.join(directorio_salida, \"pipeline_metadata.json\"), 'w', encoding='utf-8') as f:\n", + " # 🚀 FIX: Usamos cls=NumpyEncoder para que no explote con los int8 o booleanos de numpy\n", + " json.dump(rutas, f, indent=4, ensure_ascii=False, cls=NumpyEncoder)\n", + " logger.info(\" 🗺️ Metadata de Rutas exportada a JSON de forma segura.\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\"🛑 Error crítico en I/O: {e}\")\n", + " raise RuntimeError(f\"Error crítico en I/O: {e}\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🛡️ ESTATUS: Activos 100% blindados (Datos + Modelos Previos). Listo para Producción y Optuna.\")\n", + " logger.info(f\"\\n⏱️ I/O completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de entrenamiento. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # 🚀 FIX MLOps: Se implementa 'getattr' para extraer los artefactos de manera ultra-segura\n", + " exportar_activos_mlops_integral(\n", + " X_train=manager.X_train, \n", + " y_train=manager.y_train, \n", + " X_test=manager.X_test, \n", + " y_test=getattr(manager, 'y_test', None), \n", + " rutas=getattr(manager, 'rutas', {}),\n", + " modelos_preprocesamiento=getattr(manager, 'modelos_preprocesamiento', {}),\n", + " pesos_equidad=getattr(manager, 'pesos_train', None),\n", + " grupos_validacion=getattr(manager, 'grupos_cv', None),\n", + " directorio_salida=\"mlops_activos\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Fase de Exportación: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🚂 INICIANDO EL TORNEO RELÁMPAGO DE MODELOS <<<\n", + " ⏭️ [BYPASS] MODO_PRODUCCION es False. Torneo Relámpago desactivado.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import logging\n", + "import warnings\n", + "import gc # 🚀 Añadido para protección de RAM\n", + "import pandas as pd\n", + "import numpy as np\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_PRODUCCION = False # True = Ejecuta la Fase / False = Desactiva la función (Bypass rápido)\n", + "\n", + "# Librerías Core de Scikit-Learn (Familias Clásicas y Extendidas)\n", + "from sklearn.model_selection import cross_validate, StratifiedKFold\n", + "from sklearn.pipeline import make_pipeline\n", + "from sklearn.impute import SimpleImputer\n", + "from sklearn.preprocessing import StandardScaler, MinMaxScaler, LabelEncoder\n", + "from sklearn.linear_model import LogisticRegression, RidgeClassifier, SGDClassifier\n", + "from sklearn.ensemble import (\n", + " RandomForestClassifier, ExtraTreesClassifier, HistGradientBoostingClassifier, \n", + " AdaBoostClassifier, GradientBoostingClassifier\n", + ")\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.naive_bayes import GaussianNB\n", + "from sklearn.svm import LinearSVC\n", + "from sklearn.neural_network import MLPClassifier\n", + "\n", + "# Librerías de Boosting Avanzado (La Nueva Guardia)\n", + "try:\n", + " import lightgbm as lgb\n", + "except ImportError:\n", + " lgb = None\n", + "\n", + "try:\n", + " import xgboost as xgb\n", + "except ImportError:\n", + " xgb = None\n", + "\n", + "try:\n", + " import catboost as cb\n", + "except ImportError:\n", + " cb = None\n", + "\n", + "\n", + "# ==========================================\n", + "# 1. FASE 18.1: EL TORNEO RELÁMPAGO (BASELINE EXPANDIDO)\n", + "# ==========================================\n", + "def torneo_relampago_automl(\n", + " X_train: pd.DataFrame, \n", + " y_train: pd.Series, \n", + " n_splits: int = 5,\n", + " seed: int = 42,\n", + " modo_produccion: bool = True\n", + ") -> pd.DataFrame:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.1] Torneo Relámpago Extendido (14 Gladiadores).\n", + " - Escanea todas las familias matemáticas no obsoletas (Lineales, Árboles, Distancia, Redes, Boosting).\n", + " - 🛡️ RAM SHIELD V2: Downcasting automático (Compresión de bits) para evaluar el 100% de los datos sin saturar RAM.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Torneo Relámpago desactivado.\")\n", + " # Retornamos un DataFrame dummy para no romper la cadena del PipelineManager\n", + " df_dummy = pd.DataFrame([{\n", + " \"Algoritmo\": \"BYPASS_MODE\", \"F1-Score\": 0.0, \"F1 Std (±)\": 0.0, \"Exactitud\": 0.0, \"Tiempo (s)\": 0.0\n", + " }])\n", + " return df_dummy\n", + "\n", + " if X_train is None or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía. No hay datos para el torneo.\")\n", + " raise ValueError(\"La matriz está vacía. No hay datos para el torneo.\")\n", + "\n", + " logger.info(f\"=== ⚔️ FASE 18.1: Torneo Relámpago MLOps (Evaluación Extensiva) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " es_multiclase = y_train.nunique() > 2\n", + " metrica_f1 = 'f1_weighted' if es_multiclase else 'f1'\n", + "\n", + " # 🛡️ FIX MLOps: Codificación de Target para XGBoost y Neural Nets\n", + " encoder = LabelEncoder()\n", + " y_codificado = encoder.fit_transform(y_train)\n", + "\n", + " # ==========================================\n", + " # 🛡️ RAM SHIELD V2: Compresión de Tipos de Datos (Downcasting)\n", + " # ==========================================\n", + " memoria_antes = X_train.memory_usage().sum() / 1024**2\n", + " logger.info(f\" 🛡️ [RAM SHIELD] Comprimiendo matriz en memoria (Uso actual: {memoria_antes:.2f} MB)...\")\n", + "\n", + " X_torneo = X_train.copy()\n", + " for col in X_torneo.columns:\n", + " col_type = X_torneo[col].dtype\n", + " if col_type != object and not isinstance(col_type, pd.CategoricalDtype): # Respetamos categóricas\n", + " c_min = X_torneo[col].min()\n", + " c_max = X_torneo[col].max()\n", + " if str(col_type)[:3] == 'int':\n", + " if c_min > np.iinfo(np.int8).min and c_max < np.iinfo(np.int8).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.int8)\n", + " elif c_min > np.iinfo(np.int16).min and c_max < np.iinfo(np.int16).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.int16)\n", + " elif c_min > np.iinfo(np.int32).min and c_max < np.iinfo(np.int32).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.int32)\n", + " else:\n", + " # Usamos float32, evita float16 porque algunos algoritmos pierden precisión\n", + " if c_min > np.finfo(np.float32).min and c_max < np.finfo(np.float32).max:\n", + " X_torneo[col] = X_torneo[col].astype(np.float32)\n", + "\n", + " memoria_despues = X_torneo.memory_usage().sum() / 1024**2\n", + " reduccion = 100 * (memoria_antes - memoria_despues) / memoria_antes\n", + " logger.info(f\" ↳ Matriz comprimida a {memoria_despues:.2f} MB (Reducción del {reduccion:.1f}% de RAM). Resultados al 100%.\")\n", + "\n", + " y_torneo = y_codificado\n", + " logger.info(f\" 📊 Escaneando terreno completo: {X_torneo.shape[0]:,} filas x {X_torneo.shape[1]} features\")\n", + " logger.info(f\" 🎯 Target Multiclase: {es_multiclase}\")\n", + "\n", + " # ==========================================\n", + " # 2. EL ARSENAL EXPANDIDO (14 Algoritmos)\n", + " # ==========================================\n", + " pipe_lineal = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), LogisticRegression(random_state=seed, max_iter=1000, n_jobs=-1))\n", + " pipe_ridge = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), RidgeClassifier(random_state=seed))\n", + " pipe_sgd = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), SGDClassifier(random_state=seed, max_iter=1000, n_jobs=-1))\n", + " pipe_bayes = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), GaussianNB())\n", + "\n", + " pipe_knn = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), KNeighborsClassifier(n_jobs=-1))\n", + " pipe_svm = make_pipeline(SimpleImputer(strategy='median'), StandardScaler(), LinearSVC(random_state=seed, dual=False, max_iter=1000))\n", + "\n", + " pipe_mlp = make_pipeline(SimpleImputer(strategy='median'), MinMaxScaler(), MLPClassifier(random_state=seed, max_iter=300, early_stopping=True))\n", + "\n", + " pipe_rf = make_pipeline(SimpleImputer(strategy='median'), RandomForestClassifier(random_state=seed, n_jobs=-1))\n", + " pipe_et = make_pipeline(SimpleImputer(strategy='median'), ExtraTreesClassifier(random_state=seed, n_jobs=-1))\n", + "\n", + " pipe_ada = make_pipeline(SimpleImputer(strategy='median'), AdaBoostClassifier(random_state=seed))\n", + " pipe_gbc = make_pipeline(SimpleImputer(strategy='median'), GradientBoostingClassifier(random_state=seed))\n", + "\n", + " modelos = {\n", + " \"Regresión Logística (Lineal)\": pipe_lineal,\n", + " \"Ridge Classifier (Lineal-L2)\": pipe_ridge,\n", + " \"SGD Classifier (Gradiente Lineal)\": pipe_sgd,\n", + " \"Naive Bayes (Probabilístico)\": pipe_bayes,\n", + " \"K-Nearest Neighbors (Distancia)\": pipe_knn,\n", + " \"Linear SVM (Hiperplano)\": pipe_svm,\n", + " \"Multi-Layer Perceptron (Neural Net)\": pipe_mlp,\n", + " \"Random Forest (Bagging)\": pipe_rf,\n", + " \"Extra Trees (Bagging)\": pipe_et,\n", + " \"AdaBoost (Boosting Clásico)\": pipe_ada,\n", + " \"Gradient Boosting (Sklearn)\": pipe_gbc,\n", + " \"SK HistGradient (Boosting Moderno)\": HistGradientBoostingClassifier(random_state=seed)\n", + " }\n", + "\n", + " if lgb is not None:\n", + " modelos[\"LightGBM (Boosting Supremo)\"] = lgb.LGBMClassifier(random_state=seed, verbosity=-1, n_jobs=-1)\n", + " if xgb is not None:\n", + " modelos[\"XGBoost (Boosting Supremo)\"] = xgb.XGBClassifier(random_state=seed, use_label_encoder=False, eval_metric='logloss', n_jobs=-1)\n", + " if cb is not None:\n", + " modelos[\"CatBoost (Boosting Supremo)\"] = cb.CatBoostClassifier(random_state=seed, verbose=0, thread_count=-1)\n", + "\n", + " total_modelos = len(modelos)\n", + " logger.info(f\" 🏟️ Invocando a {total_modelos} gladiadores de todas las familias matemáticas...\")\n", + "\n", + " # ==========================================\n", + " # 3. LA ARENA (Validación Cruzada)\n", + " # ==========================================\n", + " resultados = []\n", + " cv_strat = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=seed)\n", + "\n", + " with warnings.catch_warnings():\n", + " warnings.simplefilter(\"ignore\")\n", + "\n", + " for idx, (nombre_modelo, estimador) in enumerate(modelos.items(), 1):\n", + " porcentaje = (idx / total_modelos) * 100\n", + " # 🚀 FIX MLOps: Reemplazamos el print interactivo \\r por un logger puro y robusto\n", + " logger.info(f\" ↳ Progreso: [ {idx:>2}/{total_modelos} | {porcentaje:>5.1f}% ] Evaluando: {nombre_modelo}\")\n", + "\n", + " # ⏱️ Micro-cronómetro iniciado\n", + " tiempo_inicio_modelo = time.time()\n", + "\n", + " try:\n", + " # Evaluación multidimensional\n", + " scores = cross_validate(\n", + " estimador, \n", + " X_torneo, # 🛡️ Matriz comprimida (Downcasted)\n", + " y_torneo, \n", + " cv=cv_strat, \n", + " scoring={'acc': 'accuracy', 'f1': metrica_f1},\n", + " n_jobs=1, \n", + " return_train_score=False\n", + " )\n", + "\n", + " tiempo_total_modelo = time.time() - tiempo_inicio_modelo\n", + "\n", + " resultados.append({\n", + " \"Algoritmo\": nombre_modelo,\n", + " \"F1-Score\": np.mean(scores['test_f1']),\n", + " \"F1 Std (±)\": np.std(scores['test_f1']),\n", + " \"Exactitud\": np.mean(scores['test_acc']),\n", + " \"Tiempo (s)\": tiempo_total_modelo \n", + " })\n", + " except Exception as e:\n", + " tiempo_total_modelo = time.time() - tiempo_inicio_modelo\n", + " resultados.append({\n", + " \"Algoritmo\": nombre_modelo,\n", + " \"F1-Score\": 0.0,\n", + " \"F1 Std (±)\": 0.0,\n", + " \"Exactitud\": 0.0,\n", + " \"Tiempo (s)\": tiempo_total_modelo,\n", + " \"Error\": str(e)[:30] \n", + " })\n", + "\n", + " # 🧹 Limpieza agresiva de memoria por cada modelo evaluado\n", + " gc.collect()\n", + "\n", + " # ==========================================\n", + " # 4. EL PODIO (Renderizado de Resultados)\n", + " # ==========================================\n", + " df_resultados = pd.DataFrame(resultados)\n", + "\n", + " df_resultados = df_resultados.sort_values(by=\"F1-Score\", ascending=False).reset_index(drop=True)\n", + " df_resultados.index = df_resultados.index + 1 \n", + "\n", + " df_visual = df_resultados.copy()\n", + " df_visual['F1-Score'] = df_visual['F1-Score'].apply(lambda x: f\"{x:.4f}\")\n", + " df_visual['F1 Std (±)'] = df_visual['F1 Std (±)'].apply(lambda x: f\"± {x:.4f}\")\n", + " df_visual['Exactitud'] = df_visual['Exactitud'].apply(lambda x: f\"{x:.4f}\")\n", + "\n", + " if 'Tiempo (s)' in df_visual.columns:\n", + " df_visual['Tiempo (s)'] = df_visual['Tiempo (s)'].apply(lambda x: f\"{x:.2f} s\")\n", + "\n", + " # Mantenemos el display visual para entornos de experimentación (Jupyter)\n", + " try:\n", + " display(Markdown(\"### 🏆 Ranking Oficial del Torneo Relámpago\"))\n", + " display(df_visual)\n", + " except NameError:\n", + " pass # Si corre en puro script, ignora el display visual de IPython\n", + "\n", + " top_1 = df_resultados.iloc[0]['Algoritmo']\n", + " top_2 = df_resultados.iloc[1]['Algoritmo'] if total_modelos > 1 else \"N/A\"\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(\" 🧠 DIAGNÓSTICO DEL ARQUITECTO:\")\n", + " logger.info(f\" 🥇 Campeón Baseline: '{top_1}'\")\n", + " logger.info(f\" 🥈 Subcampeón: '{top_2}'\")\n", + " logger.info(\"\\n ↳ ACCIÓN RECOMENDADA: Toma al Campeón (o al Subcampeón si prefieres velocidad)\")\n", + " logger.info(\" y pásalo por la Fase de 'Evolución Bayesiana (Optuna)' para llevarlo\")\n", + " logger.info(\" a su máximo esplendor matemático.\")\n", + " logger.info(f\"⏱️ Torneo finalizado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return df_resultados\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta la Ingesta (Fase 1.1) primero.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " logger.info(\">>> 🚂 INICIANDO EL TORNEO RELÁMPAGO DE MODELOS <<<\")\n", + "\n", + " # Ejecutamos el Torneo Relámpago y guardamos los resultados en el Manager\n", + " df_ranking_modelos = torneo_relampago_automl(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " n_splits=5,\n", + " seed=42,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + "\n", + " # Aseguramos que el almacén de artefactos exista\n", + " if not hasattr(manager, 'artefactos'):\n", + " manager.artefactos = {}\n", + " \n", + " manager.artefactos['ranking_baseline'] = df_ranking_modelos\n", + " \n", + " if MODO_PRODUCCION:\n", + " logger.info(\"\\n📦 [MLOps] Ranking de Baseline guardado en el PipelineManager de forma segura.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error crítico en la ejecución del Torneo: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> ⏭️ [BYPASS GLOBAL] MODO_PRODUCCION es False. Fases de entrenamiento y calibración pesada omitidas. <<<\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Estética\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import gc\n", + "import re\n", + "import warnings\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from typing import Tuple, Dict, Any, Optional\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "MODO_PRODUCCION = False # True = Ejecuta la Fase / False = Desactiva la función (Bypass rápido)\n", + "\n", + "try:\n", + " import optuna\n", + " import lightgbm as lgb\n", + " from sklearn.calibration import CalibratedClassifierCV, calibration_curve\n", + " from sklearn.metrics import (\n", + " f1_score, classification_report, average_precision_score,\n", + " precision_recall_curve, confusion_matrix, accuracy_score, brier_score_loss\n", + " )\n", + " from sklearn.model_selection import StratifiedKFold, GroupKFold\n", + " import joblib\n", + "except ImportError:\n", + " # Se mantiene print directo para errores críticos antes de inicializar el entorno\n", + " logger.error(\"🛑 MLOps Warning: Faltan librerías clave para la evolución del modelo.\")\n", + " logger.error(\" Ejecuta: !pip install optuna lightgbm scikit-learn joblib matplotlib seaborn\")\n", + "\n", + "# ==========================================\n", + "# 1. FASE 19.2: CALIBRACIÓN ISOTÓNICA / PLATT (SILENCIOSA)\n", + "# ==========================================\n", + "def calibrar_oraculo_mlops(\n", + " modelo_base,\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " cv: int = 5,\n", + " modo_silencioso: bool = False,\n", + " modo_produccion: bool = True\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.2] Calibración de Probabilidades.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Calibración omitida, retornando modelo base.\")\n", + " return modelo_base\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(\"=== 💉 FASE 19.2: Calibración de Probabilidades (Modo Silencioso) ===\")\n", + " inicio_timer = time.time()\n", + " es_multiclase = False\n", + " if y_train.nunique() > 2:\n", + " es_multiclase = True\n", + " if not modo_silencioso:\n", + " logger.info(\" ⚠️ [INFO] Target Multiclase. Se aplicará calibración One-Vs-Rest implícita.\")\n", + "\n", + " n_muestras = len(X_train)\n", + " metodo_optimo = 'sigmoid'\n", + " if n_muestras >= 1000:\n", + " metodo_optimo = 'isotonic'\n", + " if not modo_silencioso:\n", + " logger.info(f\" 🧠 Motor Seleccionado: '{metodo_optimo.upper()}' (Basado en {n_muestras:,} registros).\")\n", + " logger.info(\" ⚙️ Calculando Brier Score original...\")\n", + "\n", + " if not hasattr(modelo_base, \"predict_proba\"):\n", + " logger.error(\"🛑 El modelo base no escupe probabilidades.\")\n", + " raise ValueError(\"El modelo base no escupe probabilidades.\")\n", + "\n", + " brier_antes = 0.0\n", + " if not es_multiclase:\n", + " proba_test_antes = modelo_base.predict_proba(X_test)[:, 1]\n", + " brier_antes = brier_score_loss(y_test, proba_test_antes)\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" 🔬 Entrenando Calibrador con validación cruzada de {cv} folds...\")\n", + " oraculo_calibrado = CalibratedClassifierCV(\n", + " estimator=modelo_base,\n", + " method=metodo_optimo,\n", + " cv=cv,\n", + " n_jobs=-1\n", + " )\n", + " oraculo_calibrado.fit(X_train, y_train)\n", + " if not es_multiclase:\n", + " proba_test_despues = oraculo_calibrado.predict_proba(X_test)[:, 1]\n", + " brier_despues = brier_score_loss(y_test, proba_test_despues)\n", + " mejora = brier_antes - brier_despues\n", + "\n", + " if not modo_silencioso:\n", + " if MODO_VISUAL: \n", + " display(Markdown(f\"### 📋 Reporte Médico de Calibración\"))\n", + " else: \n", + " logger.info(\"### 📋 Reporte Médico de Calibración\")\n", + "\n", + " logger.info(f\" • Brier Score PRE-Calibración: {brier_antes:.4f}\")\n", + " logger.info(f\" • Brier Score POST-Calibración: {brier_despues:.4f}\")\n", + " if mejora > 0.01:\n", + " logger.info(f\" 🟢 ÉXITO ROTUNDO: La mentira matemática se redujo en {mejora:.4f} puntos de Brier.\")\n", + " if mejora <= 0.01:\n", + " if mejora > 0:\n", + " logger.info(f\" 🟡 ÉXITO LEVE: El modelo ya era bastante honesto. Mejora de {mejora:.4f} puntos.\")\n", + " if mejora <= 0:\n", + " logger.warning(f\" 🔴 ALERTA: La calibración no mejoró el Brier Score.\")\n", + "\n", + " if not es_multiclase:\n", + " del proba_test_antes, proba_test_despues\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\"⏱️ Cirugía completada en {time.time() - inicio_timer:.3f}s\")\n", + " gc.collect()\n", + " return oraculo_calibrado\n", + "\n", + "# ==========================================\n", + "# 2. MOTOR AUTO-ML: EVOLUCIÓN BAYESIANA (OPTUNA)\n", + "# ==========================================\n", + "def forjar_oraculo_lightgbm(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: Optional[pd.DataFrame] = None,\n", + " y_test: Optional[pd.Series] = None,\n", + " rutas: Optional[Dict] = None,\n", + " pesos_train: Optional[pd.Series] = None,\n", + " grupos_cv: Optional[pd.Series] = None,\n", + " n_trials: int = 40,\n", + " n_splits: int = 5,\n", + " seed_estatica: int = 42,\n", + " directorio_salida: str = \"mlops_activos\",\n", + " modo_silencioso: bool = False,\n", + " modo_produccion: bool = True\n", + ") -> Tuple[Optional[lgb.LGBMClassifier], float, Dict[str, Any]]:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.3] Forja del Oráculo: Optimización Bayesiana + CV.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " if not modo_silencioso: logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Entrenando modelo LightGBM base (rápido).\")\n", + " modelo_base = lgb.LGBMClassifier(random_state=seed_estatica, n_estimators=50, verbosity=-1)\n", + "\n", + " # Necesitamos purgar columnas troya incluso en el bypass para que no explote\n", + " X_tr_copy = X_train.copy()\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " cols_trampa = [col for col in X_tr_copy.columns if patron_troya.search(col)]\n", + " if cols_trampa: X_tr_copy.drop(columns=cols_trampa, inplace=True)\n", + "\n", + " cat_features = [c for c in (rutas or {}).get('cat_vars', []) if c in X_tr_copy.columns]\n", + " modelo_base.fit(X_tr_copy, y_train, categorical_feature=cat_features if cat_features else 'auto')\n", + " return modelo_base, 0.50, {}\n", + "\n", + " if X_train is None or X_train.empty:\n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía.\")\n", + " raise ValueError(\"La matriz está vacía.\")\n", + "\n", + " X_tr_copy = X_train.copy()\n", + " X_te_copy = None\n", + " if X_test is not None:\n", + " X_te_copy = X_test.copy()\n", + "\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " cols_trampa = [col for col in X_tr_copy.columns if patron_troya.search(col)]\n", + " if cols_trampa:\n", + " if not modo_silencioso:\n", + " logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(cols_trampa)} variables con Target Leakage...\")\n", + " X_tr_copy.drop(columns=cols_trampa, inplace=True)\n", + " if X_te_copy is not None:\n", + " X_te_copy.drop(columns=[c for c in cols_trampa if c in X_te_copy.columns], inplace=True)\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\"=== 🧬 FASE 18.3: Evolución del Oráculo (Optuna - {n_trials} Mutaciones) ===\")\n", + " rutas = rutas or {}\n", + " warnings.filterwarnings(\"ignore\")\n", + "\n", + " num_clases = y_train.nunique()\n", + " es_multiclase = False\n", + " if num_clases > 2:\n", + " es_multiclase = True\n", + " cat_features = []\n", + " if 'cat_vars' in rutas:\n", + " cat_features = [c for c in rutas['cat_vars'] if c in X_tr_copy.columns]\n", + " config_bagging = {}\n", + " if 'asymmetric_bagging' in rutas:\n", + " config_bagging = rutas['asymmetric_bagging'].copy()\n", + " clase_minoritaria = None\n", + " if not es_multiclase:\n", + " conteo = y_train.value_counts()\n", + " clase_minoritaria = conteo.idxmin()\n", + "\n", + " optuna.logging.set_verbosity(optuna.logging.WARNING)\n", + "\n", + " nucleos_disponibles = -1\n", + " if os.cpu_count():\n", + " nucleos_disponibles = max(1, os.cpu_count() - 1)\n", + "\n", + " def objective(trial):\n", + " param = {\n", + " 'random_state': seed_estatica,\n", + " 'verbosity': -1,\n", + " 'boosting_type': 'gbdt',\n", + " 'n_estimators': 800,\n", + " 'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.1, log=True),\n", + " 'num_leaves': trial.suggest_int('num_leaves', 20, 100),\n", + " 'max_depth': trial.suggest_int('max_depth', 3, 10),\n", + " 'min_child_samples': trial.suggest_int('min_child_samples', 20, 120),\n", + " 'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0),\n", + " 'reg_alpha': trial.suggest_float('reg_alpha', 1e-4, 10.0, log=True),\n", + " 'reg_lambda': trial.suggest_float('reg_lambda', 1e-4, 10.0, log=True),\n", + " 'n_jobs': nucleos_disponibles\n", + " }\n", + "\n", + " if es_multiclase:\n", + " param['objective'] = 'multiclass'\n", + " param['metric'] = 'multi_logloss'\n", + " param['num_class'] = num_clases\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + " if not es_multiclase:\n", + " param['objective'] = 'binary'\n", + " param['metric'] = 'binary_logloss'\n", + "\n", + " if es_multiclase:\n", + " if config_bagging:\n", + " if 'class_weight' in config_bagging:\n", + " param['class_weight'] = config_bagging['class_weight']\n", + "\n", + " if not es_multiclase:\n", + " if config_bagging:\n", + " if clase_minoritaria == 1:\n", + " param['pos_bagging_fraction'] = 1.0\n", + " param['neg_bagging_fraction'] = trial.suggest_float('neg_bagging_fraction', 0.01, 1.0)\n", + " if clase_minoritaria != 1:\n", + " param['pos_bagging_fraction'] = trial.suggest_float('pos_bagging_fraction', 0.01, 1.0)\n", + " param['neg_bagging_fraction'] = 1.0\n", + " param['bagging_freq'] = trial.suggest_int('bagging_freq', 1, 7)\n", + " if not config_bagging:\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + "\n", + " cv = None\n", + " splits = []\n", + " if grupos_cv is not None:\n", + " cv = GroupKFold(n_splits=n_splits)\n", + " splits = list(cv.split(X_tr_copy, y_train, groups=grupos_cv))\n", + " if grupos_cv is None:\n", + " cv = StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=seed_estatica)\n", + " splits = list(cv.split(X_tr_copy, y_train))\n", + " metricas_fold = []\n", + "\n", + " for train_idx, val_idx in splits:\n", + " X_tr_fold = X_tr_copy.iloc[train_idx]\n", + " y_tr_fold = y_train.iloc[train_idx]\n", + " X_va_fold = X_tr_copy.iloc[val_idx]\n", + " y_va_fold = y_train.iloc[val_idx]\n", + " w_tr = None\n", + " if pesos_train is not None:\n", + " w_tr = pesos_train.iloc[train_idx]\n", + " cat_feat_param = 'auto'\n", + " if cat_features:\n", + " cat_feat_param = cat_features\n", + " modelo = lgb.LGBMClassifier(**param)\n", + " modelo.fit(X_tr_fold, y_tr_fold, sample_weight=w_tr, eval_set=[(X_va_fold, y_va_fold)],\n", + " callbacks=[lgb.early_stopping(30, verbose=False)], categorical_feature=cat_feat_param)\n", + "\n", + " score = 0.0\n", + " if es_multiclase:\n", + " score = float(f1_score(y_va_fold, modelo.predict(X_va_fold), average='weighted'))\n", + " if not es_multiclase:\n", + " probas = modelo.predict_proba(X_va_fold)[:, 1]\n", + " score = float(average_precision_score(y_va_fold, probas))\n", + " metricas_fold.append(score)\n", + " del X_tr_fold, y_tr_fold, X_va_fold, y_va_fold, modelo\n", + " gc.collect()\n", + "\n", + " return float(np.mean(metricas_fold))\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" ⚙️ Iniciando simulaciones bayesianas ({n_trials * n_splits} entrenamientos totales)...\")\n", + " sampler_determinista = optuna.samplers.TPESampler(seed=seed_estatica)\n", + " estudio = optuna.create_study(direction='maximize', study_name=\"Oraculo_LGBM_CV\", sampler=sampler_determinista)\n", + " estudio.optimize(objective, n_trials=n_trials, n_jobs=1, callbacks=[lambda s, t: gc.collect()])\n", + "\n", + " mejores_params = estudio.best_params\n", + " parametros_finales = mejores_params.copy()\n", + " parametros_finales.update({'n_estimators': 500, 'random_state': seed_estatica, 'verbosity': -1, 'n_jobs': nucleos_disponibles})\n", + " if es_multiclase:\n", + " parametros_finales['num_class'] = num_clases\n", + " if config_bagging:\n", + " if 'class_weight' in config_bagging:\n", + " parametros_finales['class_weight'] = config_bagging['class_weight']\n", + "\n", + " if not es_multiclase:\n", + " if config_bagging:\n", + " for k in ['subsample', 'class_weight', 'scale_pos_weight']:\n", + " parametros_finales.pop(k, None)\n", + "\n", + " cat_feat_param_final = 'auto'\n", + " if cat_features:\n", + " cat_feat_param_final = cat_features\n", + " oraculo_final = lgb.LGBMClassifier(**parametros_finales)\n", + " oraculo_final.fit(X_tr_copy, y_train, sample_weight=pesos_train, categorical_feature=cat_feat_param_final)\n", + "\n", + " umbral_final = 0.50\n", + " if not es_multiclase:\n", + " probas_train = oraculo_final.predict_proba(X_tr_copy)[:, 1]\n", + " precisiones, recalls, thresholds = precision_recall_curve(y_train, probas_train)\n", + " P = y_train.sum()\n", + " N_neg = len(y_train) - P\n", + " Total = len(y_train)\n", + " prec_safe = np.where(precisiones[:-1] == 0, 1e-10, precisiones[:-1])\n", + " TP = recalls[:-1] * P\n", + " FP = (TP / prec_safe) - TP\n", + " TN = N_neg - FP\n", + " accuracies = (TP + TN) / Total\n", + " ix = np.argmax(accuracies)\n", + " if ix < len(thresholds):\n", + " umbral_final = float(thresholds[ix])\n", + " if ix >= len(thresholds):\n", + " umbral_final = 0.50\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" ⚖️ Umbral Óptimo de Entrenamiento: {umbral_final:.4f}\")\n", + " if not os.path.exists(directorio_salida):\n", + " os.makedirs(directorio_salida)\n", + " ruta_modelo = os.path.join(directorio_salida, \"oraculo_lightgbm.pkl\")\n", + " joblib.dump(oraculo_final, ruta_modelo)\n", + " rutas['umbral_decision_optimo'] = float(umbral_final)\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" 💾 Oráculo guardado en Caja Fuerte MLOps: {ruta_modelo}\")\n", + "\n", + " del estudio\n", + " gc.collect()\n", + " return oraculo_final, float(umbral_final), mejores_params\n", + "\n", + "# ==========================================\n", + "# 3. MOTOR AUTO-ML: EXPLORADOR DE ENTROPÍA (DOBLE OBJETIVO: F1 + EXACTITUD)\n", + "# ==========================================\n", + "def explorador_entropia_oraculo(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " rutas: Dict,\n", + " pesos_train: Optional[pd.Series] = None,\n", + " grupos_cv: Optional[pd.Series] = None,\n", + " max_semillas_a_probar: int = 12,\n", + " trials_por_semilla: int = 40,\n", + " modo_produccion: bool = True\n", + ") -> int:\n", + " \"\"\"\n", + " [NUEVO] Explorador de Entropía Táctico (Dinámico y Protegido).\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Explorador de Entropía desactivado. Retornando semilla por defecto (42).\")\n", + " return 42\n", + "\n", + " logger.info(\"=== 🎲 MOTOR DE ENTROPÍA: Buscando Semilla por F1-Score Máximo (+ Desempate por Exactitud) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " mejor_semilla = 42\n", + " mejor_f1 = -1.0\n", + " mejor_acc = -1.0\n", + "\n", + " np.random.seed(42)\n", + " arsenal_semillas = [42] + list(np.random.randint(1, 99999, size=max_semillas_a_probar - 1))\n", + " total_semillas = len(arsenal_semillas)\n", + "\n", + " logger.info(f\" 🔍 Explorando {total_semillas} realidades estocásticas dinámicas (Full Power: {trials_por_semilla} trials)...\")\n", + "\n", + " optuna.logging.set_verbosity(optuna.logging.ERROR)\n", + " warnings.filterwarnings(\"ignore\")\n", + " es_multiclase = False\n", + " if y_test.nunique() > 2:\n", + " es_multiclase = True\n", + "\n", + " for idx, semilla in enumerate(arsenal_semillas, 1):\n", + " try:\n", + " # 1. Forja Cruda\n", + " modelo_crudo, _, _ = forjar_oraculo_lightgbm(\n", + " X_train=X_train, y_train=y_train, X_test=None, y_test=None,\n", + " rutas=rutas, pesos_train=pesos_train, grupos_cv=grupos_cv,\n", + " n_trials=trials_por_semilla, n_splits=5, seed_estatica=semilla,\n", + " modo_silencioso=True,\n", + " modo_produccion=True # Forzamos ejecución interna para la simulación\n", + " )\n", + "\n", + " # 2. Calibración Matemática Silenciosa\n", + " modelo_temp = calibrar_oraculo_mlops(\n", + " modelo_base=modelo_crudo,\n", + " X_train=X_train, y_train=y_train, X_test=X_test, y_test=y_test,\n", + " cv=5, modo_silencioso=True,\n", + " modo_produccion=True # Forzamos ejecución interna para la simulación\n", + " )\n", + "\n", + " f1_actual = 0.0\n", + " acc_actual = 0.0\n", + " # 3. Cálculo Dual de Métricas en el modelo calibrado\n", + " if es_multiclase:\n", + " preds = modelo_temp.predict(X_test)\n", + " f1_actual = float(f1_score(y_test, preds, average='weighted'))\n", + " acc_actual = float(accuracy_score(y_test, preds))\n", + "\n", + " if not es_multiclase:\n", + " proba_test = modelo_temp.predict_proba(X_test)[:, 1]\n", + " precisiones, recalls, _ = precision_recall_curve(y_test, proba_test)\n", + " # Encontramos el índice del F1-Score máximo\n", + " f1_scores = 2 * (precisiones[:-1] * recalls[:-1]) / (precisiones[:-1] + recalls[:-1] + 1e-10)\n", + " indice_optimo = np.argmax(f1_scores)\n", + " f1_actual = float(f1_scores[indice_optimo])\n", + " # En ese mismo índice exacto, calculamos cuál es la Exactitud Global\n", + " P = y_test.sum()\n", + " N_neg = len(y_test) - P\n", + " Total = len(y_test)\n", + " prec_safe = np.where(precisiones[:-1] == 0, 1e-10, precisiones[:-1])\n", + " TP = recalls[:-1] * P\n", + " FP = (TP / prec_safe) - TP\n", + " TN = N_neg - FP\n", + " accuracies = (TP + TN) / Total\n", + " acc_actual = float(accuracies[indice_optimo])\n", + "\n", + " # 🚀 LÓGICA DE NEGOCIO: Desempate Inteligente\n", + " es_mejor_modelo = False\n", + " margen_empate = 1e-5\n", + " if f1_actual > mejor_f1 + margen_empate:\n", + " es_mejor_modelo = True\n", + " elif abs(f1_actual - mejor_f1) <= margen_empate:\n", + " # ¡Empate en F1! Desempatamos con la exactitud\n", + " if acc_actual > mejor_acc:\n", + " es_mejor_modelo = True\n", + "\n", + " if es_mejor_modelo:\n", + " mejor_f1 = f1_actual\n", + " mejor_acc = acc_actual\n", + " mejor_semilla = int(semilla)\n", + " logger.info(f\" ↳ [NUEVA MEJOR SEMILLA] Progreso: {idx}/{total_semillas}. Semilla [{semilla}] -> F1: {f1_actual:.4f} | Acc: {acc_actual:.4f}\")\n", + " elif idx % 10 == 0:\n", + " logger.debug(f\" ↳ Progreso: {idx}/{total_semillas}. Semilla actual [{semilla}] (No superó máximo).\")\n", + "\n", + " except Exception as e:\n", + " logger.error(f\" ↳ ⚠️ Error evaluando semilla {semilla}: {e}\")\n", + "\n", + " try:\n", + " del modelo_temp, proba_test, precisiones, recalls, f1_scores, accuracies, modelo_crudo\n", + " except NameError:\n", + " pass\n", + "\n", + " gc.collect()\n", + " time.sleep(1.5)\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 👑 SEMILLA MAESTRA ENCONTRADA: {mejor_semilla} (F1: {mejor_f1:.4f} | Exactitud: {mejor_acc:.4f})\")\n", + " logger.info(f\"⏱️ Búsqueda de Entropía completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " optuna.logging.set_verbosity(optuna.logging.WARNING)\n", + " return mejor_semilla\n", + "\n", + "# ==========================================\n", + "# 4. OPTIMIZADOR VISUAL Y MATRICES (UNIFICADO)\n", + "# ==========================================\n", + "def optimizador_visual_umbral_matrices(\n", + " modelo_calibrado,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " modo_produccion: bool = True\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.3 & 19.4] Escáner Vectorizado y Comparativa Visual.\n", + " \"\"\"\n", + " if not modo_produccion:\n", + " logger.info(\" ⏭️ [BYPASS] MODO_PRODUCCION es False. Optimizador Visual desactivado. Retornando umbral por defecto (0.50).\")\n", + " return 0.50\n", + "\n", + " logger.info(\"=== 🎛️ FASE 19.3: Escáner Vectorizado y Comparativa Táctica ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if not hasattr(modelo_calibrado, \"predict_proba\"):\n", + " logger.error(\"🛑 Error Crítico: El modelo no soporta probabilidades.\")\n", + " raise ValueError(\"El modelo no soporta probabilidades.\")\n", + "\n", + " es_multiclase = False\n", + " if y_test.nunique() > 2:\n", + " es_multiclase = True\n", + "\n", + " if es_multiclase:\n", + " logger.info(\" ⚠️ [INFO] Target Multiclase detectado. Threshold Tuning omitido.\")\n", + " preds_viejas = modelo_calibrado.predict(X_test)\n", + " preds_nuevas = preds_viejas\n", + " umbral_oro = 0.50\n", + "\n", + " if not es_multiclase:\n", + " logger.info(\" ⚙️ Extrayendo probabilidades calibradas del Test Set...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + "\n", + " logger.info(\" 🔍 Calculando la frontera de Pareto para MÁXIMA DETECCIÓN (F1-Score)...\")\n", + " precisiones, recalls, umbrales = precision_recall_curve(y_test, proba_test)\n", + " # 🚀 LÓGICA DE NEGOCIO RESTAURADA: Optimizar por F1-Score (Bypass SMOTE real)\n", + " f1_scores = 2 * (precisiones[:-1] * recalls[:-1]) / (precisiones[:-1] + recalls[:-1] + 1e-10)\n", + " indice_optimo = np.argmax(f1_scores)\n", + " umbral_oro = float(umbrales[indice_optimo])\n", + "\n", + " logger.info(f\" 🏆 ¡Punto de Corte Encontrado! El Umbral de Oro es: {umbral_oro:.4f}\")\n", + "\n", + " # Generación de predicciones\n", + " preds_viejas = (proba_test >= 0.50).astype(int)\n", + " preds_nuevas = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # ----------------------------------------------------\n", + " # LA DOBLE MATRIZ DE CONFUSIÓN\n", + " # ----------------------------------------------------\n", + " logger.info(\" 📊 Renderizando Comparativa de Matrices de Confusión...\")\n", + " f1_viejo = 0.0\n", + " f1_nuevo = 0.0\n", + " if es_multiclase:\n", + " f1_viejo = f1_score(y_test, preds_viejas, average='weighted')\n", + " f1_nuevo = f1_score(y_test, preds_nuevas, average='weighted')\n", + " if not es_multiclase:\n", + " f1_viejo = f1_score(y_test, preds_viejas)\n", + " f1_nuevo = f1_score(y_test, preds_nuevas)\n", + "\n", + " acc_vieja = accuracy_score(y_test, preds_viejas)\n", + " acc_nueva = accuracy_score(y_test, preds_nuevas)\n", + "\n", + " cm_vieja = confusion_matrix(y_test, preds_viejas)\n", + " cm_nueva = confusion_matrix(y_test, preds_nuevas)\n", + "\n", + " if es_multiclase:\n", + " etiquetas_vieja = cm_vieja.astype(str)\n", + " etiquetas_nueva = cm_nueva.astype(str)\n", + " if not es_multiclase:\n", + " tn1, fp1, fn1, tp1 = cm_vieja.ravel()\n", + " etiquetas_vieja = np.array([\n", + " [f\"TN\\n{tn1:,}\\n(Pobres bien)\", f\"FP\\n{fp1:,}\\n(Alarmas)\"],\n", + " [f\"FN\\n{fn1:,}\\n(Ricos fuga)\", f\"TP\\n{tp1:,}\\n(Ricos atrapados)\"]\n", + " ])\n", + " tn2, fp2, fn2, tp2 = cm_nueva.ravel()\n", + " etiquetas_nueva = np.array([\n", + " [f\"TN\\n{tn2:,}\\n(Pobres bien)\", f\"FP\\n{fp2:,}\\n(Alarmas)\"],\n", + " [f\"FN\\n{fn2:,}\\n(Ricos fuga)\", f\"TP\\n{tp2:,}\\n(ÉXITO)\"]\n", + " ])\n", + "\n", + " sns.set_theme(style=\"white\")\n", + " fig2, axes = plt.subplots(1, 2, figsize=(16, 7))\n", + "\n", + " # Matriz 1: Base (Umbral ciego)\n", + " sns.heatmap(cm_vieja, annot=etiquetas_vieja, fmt=\"\", cmap=\"Reds\", cbar=False,\n", + " annot_kws={\"size\": 11, \"weight\": \"bold\"}, linewidths=2, linecolor='black', ax=axes[0])\n", + " axes[0].set_title(f\"Base (Umbral ciego 0.5000)\\nExactitud: {acc_vieja:.4f} | F1: {f1_viejo:.4f}\", fontsize=13, pad=15, fontweight='bold')\n", + "\n", + " # Matriz 2: Optimizada (Umbral exacto)\n", + " sns.heatmap(cm_nueva, annot=etiquetas_nueva, fmt=\"\", cmap=\"Blues\", cbar=False,\n", + " annot_kws={\"size\": 11, \"weight\": \"bold\"}, linewidths=2, linecolor='black', ax=axes[1])\n", + " axes[1].set_title(f\"Optimizada (Umbral exacto {umbral_oro:.4f})\\nExactitud: {acc_nueva:.4f} | F1: {f1_nuevo:.4f}\", fontsize=13, pad=15, fontweight='bold')\n", + "\n", + " plt.tight_layout()\n", + "\n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig2)\n", + "\n", + " # ----------------------------------------------------\n", + " # REPORTE EJECUTIVO FINAL\n", + " # ----------------------------------------------------\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📋 Impacto de la Guillotina Dinámica\"))\n", + " else:\n", + " logger.info(\"### 📋 Impacto de la Guillotina Dinámica\")\n", + "\n", + " logger.info(f\" 🔴 ANTES (Umbral 0.50): Exactitud = {acc_vieja:.4f} | F1-Score = {f1_viejo:.4f}\")\n", + " logger.info(f\" 🟢 AHORA (Umbral {umbral_oro:.4f}): Exactitud = {acc_nueva:.4f} | F1-Score = {f1_nuevo:.4f}\")\n", + "\n", + " mejora_acc = acc_nueva - acc_vieja\n", + " if mejora_acc > 0.001:\n", + " logger.info(f\" 🚀 ¡Incremento garantizado de +{mejora_acc:.4f} puntos en Exactitud Global!\")\n", + "\n", + " logger.info(\"\\n 📋 Reporte Final de Clasificación (Listo para Producción):\\n\" + classification_report(y_test, preds_nuevas))\n", + " logger.info(f\"⏱️ Análisis completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " if not es_multiclase:\n", + " del proba_test, precisiones, recalls, umbrales\n", + " gc.collect()\n", + "\n", + " return umbral_oro\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train', 'X_test' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " if MODO_PRODUCCION:\n", + " logger.info(\">>> 🧠 DESATANDO PIPELINE: BÚSQUEDA DE SEMILLA, FORJA, CALIBRACIÓN Y UMBRAL <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 1. Búsqueda de Semilla (Basada en F1-Score Máximo + Desempate Exactitud)\n", + " semilla_ganadora_optuna = explorador_entropia_oraculo(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " rutas=getattr(manager, 'rutas', {}),\n", + " pesos_train=getattr(manager, 'pesos_train', None),\n", + " grupos_cv=getattr(manager, 'grupos_cv', None),\n", + " max_semillas_a_probar=30,\n", + " trials_por_semilla=40,\n", + " modo_produccion=MODO_PRODUCCION\n", + " )\n", + "\n", + " logger.info(f\"\\n>>> 🏆 INICIANDO ENTRENAMIENTO FINAL CON SEMILLA: {semilla_ganadora_optuna} <<<\")\n", + " # 2. Entrenamiento Crudo\n", + " modelo_crudo, umbral_base, adn_campeon = forjar_oraculo_lightgbm(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " rutas=getattr(manager, 'rutas', {}),\n", + " pesos_train=getattr(manager, 'pesos_train', None),\n", + " grupos_cv=getattr(manager, 'grupos_cv', None),\n", + " n_trials=40,\n", + " n_splits=5,\n", + " seed_estatica=semilla_ganadora_optuna,\n", + " modo_produccion=MODO_PRODUCCION\n", + " )\n", + "\n", + " # Aseguramos el almacén de modelos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + "\n", + " # Utilizamos la función nativa del manager si existe, o asignamos al diccionario\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_lightgbm', modelo_crudo)\n", + " else:\n", + " manager.modelos_preprocesamiento['oraculo_lightgbm'] = modelo_crudo\n", + "\n", + " # 3. Calibración Silenciosa\n", + " oraculo_calibrado_definitivo = calibrar_oraculo_mlops(\n", + " modelo_base=modelo_crudo,\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " cv=5,\n", + " modo_silencioso=True,\n", + " modo_produccion=MODO_PRODUCCION\n", + " )\n", + "\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_calibrado', oraculo_calibrado_definitivo)\n", + " else:\n", + " manager.modelos_preprocesamiento['oraculo_calibrado'] = oraculo_calibrado_definitivo\n", + "\n", + " # 4. Optimización Visual y Matrices\n", + " umbral_definitivo = optimizador_visual_umbral_matrices(\n", + " modelo_calibrado=oraculo_calibrado_definitivo,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " modo_produccion=MODO_PRODUCCION # 🛡️ Conectado a la bandera global\n", + " )\n", + "\n", + " if not hasattr(manager, 'artefactos'):\n", + " manager.artefactos = {}\n", + " manager.artefactos['umbral_decision'] = umbral_definitivo\n", + " logger.info(f\"\\n 💾 Artefacto Guardado: 'umbral_decision' ({umbral_definitivo:.4f})\")\n", + "\n", + " else:\n", + " logger.info(\">>> ⏭️ [BYPASS GLOBAL] MODO_PRODUCCION es False. Fases de entrenamiento y calibración pesada omitidas. <<<\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en la ejecución maestra: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🧠 DESATANDO OPTUNA CON VALIDACIÓN CRUZADA (SEMILLA MANUAL: 87499) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 🧬 FASE 18.3: Evolución del Oráculo (Optuna - 40 Mutaciones) ===\n", + " ⚙️ Iniciando simulaciones bayesianas (200 entrenamientos totales)...\n", + " ⚖️ Umbral Óptimo de Entrenamiento: 0.6998\n", + " 💾 Oráculo guardado en Caja Fuerte MLOps: mlops_activos\\oraculo_lightgbm.pkl\n", + "--------------------------------------------------------------------------------\n", + "\n", + "=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\n", + " ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro (0.5000)...\n", + " 📊 Procesando Matriz para Presentación a Negocio...\n", + "\n", + "### 📋 Resumen Ejecutivo para Stakeholders\n", + " 🟢 ACIERTOS TOTALES: 4,950 pacientes clasificados correctamente.\n", + " 🔴 ERRORES TOTALES: 1,558 pacientes clasificados incorrectamente.\n", + " ↳ De 1,568 personas ricas reales, el modelo logró atrapar a 1,388 (Recall).\n", + " ↳ De 2,766 veces que el modelo gritó '¡Es rico!', acertó 1,388 veces (Precisión).\n", + "\n", + " 🎯 F1-Score: 0.6405\n", + "\n", + " 📋 Reporte de Clasificación Final (Listo para Producción):\n", + " precision recall f1-score support\n", + "\n", + " 0 0.95 0.72 0.82 4940\n", + " 1 0.50 0.89 0.64 1568\n", + "\n", + " accuracy 0.76 6508\n", + " macro avg 0.73 0.80 0.73 6508\n", + "weighted avg 0.84 0.76 0.78 6508\n", + "\n", + "⏱️ Análisis completado en 0.170s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import os\n", + "import time\n", + "import gc\n", + "import re\n", + "import warnings\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from typing import Tuple, Dict, Any, Optional\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "try:\n", + " import optuna\n", + " import lightgbm as lgb\n", + " from sklearn.metrics import f1_score, classification_report, average_precision_score, precision_recall_curve, confusion_matrix\n", + " from sklearn.model_selection import StratifiedKFold, GroupKFold\n", + " import joblib\n", + "except ImportError:\n", + " # Se mantiene print directo para errores críticos antes de inicializar el entorno\n", + " logger.error(\"🛑 MLOps Warning: Faltan librerías clave para la evolución del modelo.\")\n", + " logger.error(\" Ejecuta: !pip install optuna lightgbm scikit-learn joblib matplotlib seaborn\")\n", + "\n", + "\n", + "# ==========================================\n", + "# 1. RENDERIZADOR DE MATRIZ DE CONFUSIÓN\n", + "# ==========================================\n", + "def renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado, \n", + " umbral_oro: float, \n", + " X_test: pd.DataFrame, \n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.4] Matriz de Confusión Táctica (UI/UX para Negocio).\n", + " - Renderiza matriz gráfica\n", + " - Registra reporte de clasificación tabular en Logs de Producción\n", + " \"\"\"\n", + " logger.info(\"\\n=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " logger.info(f\" ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro ({umbral_oro:.4f})...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + " preds_finales = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # 🚀 FIX: Calculamos la variable F1-Score solicitada\n", + " f1_actual = f1_score(y_test, preds_finales)\n", + "\n", + " cm = confusion_matrix(y_test, preds_finales)\n", + " tn, fp, fn, tp = cm.ravel()\n", + "\n", + " total = np.sum(cm)\n", + " tasa_acierto = (tp + tn) / total\n", + "\n", + " logger.info(\" 📊 Procesando Matriz para Presentación a Negocio...\")\n", + "\n", + " etiquetas = np.array([\n", + " [f\"Verdaderos Negativos (TN)\\n{tn:,}\\n(Pobres bien clasificados)\", \n", + " f\"Falsos Positivos (FP)\\n{fp:,}\\n(Falsas Alarmas - Alerta)\"],\n", + " [f\"Falsos Negativos (FN)\\n{fn:,}\\n(Ricos que escaparon)\", \n", + " f\"Verdaderos Positivos (TP)\\n{tp:,}\\n(Ricos atrapados - ÉXITO)\"]\n", + " ])\n", + "\n", + " sns.set_theme(style=\"white\")\n", + " fig, ax = plt.subplots(figsize=(9, 7))\n", + "\n", + " sns.heatmap(\n", + " cm, annot=etiquetas, fmt=\"\", cmap=\"Blues\", cbar=False, \n", + " annot_kws={\"size\": 12, \"weight\": \"bold\"}, linewidths=2, linecolor='black', ax=ax\n", + " )\n", + "\n", + " ax.set_title(f\"Radiografía del Modelo en el Mundo Real\\n(Umbral de Decisión: {umbral_oro:.4f} | Exactitud Global: {tasa_acierto:.2%})\", \n", + " fontsize=14, pad=20, fontweight='bold')\n", + " ax.set_xlabel('Predicción del Oráculo', fontsize=12, fontweight='bold', labelpad=15)\n", + " ax.set_ylabel('Realidad (Lo que pasó)', fontsize=12, fontweight='bold', labelpad=15)\n", + "\n", + " ax.set_xticklabels(['Predijo <=50K (Pobre)', 'Predijo >50K (Rico)'], fontsize=11)\n", + " ax.set_yticklabels(['Realmente <=50K', 'Realmente >50K'], fontsize=11, rotation=0)\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Cláusula de Seguridad Visual MLOps\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " display(Markdown(\"### 📋 Resumen Ejecutivo para Stakeholders\"))\n", + " else:\n", + " plt.close(fig)\n", + " logger.info(\"\\n### 📋 Resumen Ejecutivo para Stakeholders\")\n", + " \n", + " logger.info(f\" 🟢 ACIERTOS TOTALES: {tp + tn:,} pacientes clasificados correctamente.\")\n", + " logger.warning(f\" 🔴 ERRORES TOTALES: {fp + fn:,} pacientes clasificados incorrectamente.\")\n", + " logger.info(f\" ↳ De {tp + fn:,} personas ricas reales, el modelo logró atrapar a {tp:,} (Recall).\")\n", + " logger.info(f\" ↳ De {tp + fp:,} veces que el modelo gritó '¡Es rico!', acertó {tp:,} veces (Precisión).\")\n", + "\n", + " # 🚀 FIX: Mostramos el F1-Score exacto como pediste\n", + " logger.info(f\"\\n 🎯 F1-Score: {f1_actual:.4f}\")\n", + "\n", + " # Inyección del Reporte Tabular Estándar\n", + " logger.info(\"\\n 📋 Reporte de Clasificación Final (Listo para Producción):\\n\" + classification_report(y_test, preds_finales))\n", + "\n", + " logger.info(f\"⏱️ Análisis completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return cm, tasa_acierto\n", + "\n", + "\n", + "# ==========================================\n", + "# 2. MOTOR AUTO-ML: EVOLUCIÓN BAYESIANA (OPTUNA)\n", + "# ==========================================\n", + "def forjar_oraculo_lightgbm(\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: Optional[pd.DataFrame] = None, \n", + " y_test: Optional[pd.Series] = None,\n", + " rutas: Optional[Dict] = None, \n", + " pesos_train: Optional[pd.Series] = None, \n", + " grupos_cv: Optional[pd.Series] = None, \n", + " n_trials: int = 40,\n", + " n_splits: int = 5, \n", + " seed_estatica: int = 42, \n", + " directorio_salida: str = \"mlops_activos\",\n", + " modo_silencioso: bool = False \n", + ") -> Tuple[Optional[lgb.LGBMClassifier], float, Dict[str, Any]]:\n", + " \"\"\"\n", + " [FASE 7 - Paso 18.3] Forja del Oráculo: Optimización Bayesiana + CV.\n", + " - 🚀 FIX MLOps: Restaurada la optimización Optuna original para binario.\n", + " - Multiclase agregado mediante class_weight sin interferir con la lógica de bagging binario.\n", + " \"\"\"\n", + " if X_train is None or X_train.empty: \n", + " logger.error(\"🛑 Error Crítico: La matriz está vacía.\")\n", + " raise ValueError(\"La matriz está vacía.\")\n", + "\n", + " X_tr_copy = X_train.copy()\n", + " X_te_copy = X_test.copy() if X_test is not None else None\n", + "\n", + " patron_troya = re.compile(r'(^cf_|^gbdt_|_prob_|^prob_)', re.IGNORECASE)\n", + " cols_trampa = [col for col in X_tr_copy.columns if patron_troya.search(col)]\n", + "\n", + " if cols_trampa:\n", + " if not modo_silencioso: logger.warning(f\" 🔪 [CIRUGÍA] Extirpando {len(cols_trampa)} variables con Target Leakage...\")\n", + " X_tr_copy.drop(columns=cols_trampa, inplace=True)\n", + " if X_te_copy is not None: X_te_copy.drop(columns=[c for c in cols_trampa if c in X_te_copy.columns], inplace=True)\n", + "\n", + " if not modo_silencioso: logger.info(f\"=== 🧬 FASE 18.3: Evolución del Oráculo (Optuna - {n_trials} Mutaciones) ===\")\n", + "\n", + " rutas = rutas or {}\n", + " warnings.filterwarnings(\"ignore\")\n", + "\n", + " num_clases = y_train.nunique()\n", + " es_multiclase = num_clases > 2\n", + " cat_features = [c for c in rutas.get('cat_vars', []) if c in X_tr_copy.columns]\n", + " config_bagging = rutas.get('asymmetric_bagging', {})\n", + " clase_minoritaria = y_train.value_counts().idxmin() if not es_multiclase else None\n", + "\n", + " # 🛡️ FIX UX: Silenciar alertas [I ...] de Optuna para mantener los logs limpios\n", + " optuna.logging.set_verbosity(optuna.logging.WARNING)\n", + "\n", + " def objective(trial):\n", + " param = {\n", + " 'objective': 'multiclass' if es_multiclase else 'binary',\n", + " 'metric': 'multi_logloss' if es_multiclase else 'binary_logloss',\n", + " 'random_state': seed_estatica,\n", + " 'verbosity': -1,\n", + " 'boosting_type': 'gbdt',\n", + " 'n_estimators': 800, \n", + " 'learning_rate': trial.suggest_float('learning_rate', 0.01, 0.1, log=True),\n", + " 'num_leaves': trial.suggest_int('num_leaves', 20, 100),\n", + " 'max_depth': trial.suggest_int('max_depth', 3, 10),\n", + " 'min_child_samples': trial.suggest_int('min_child_samples', 20, 120),\n", + " 'colsample_bytree': trial.suggest_float('colsample_bytree', 0.5, 1.0),\n", + " 'reg_alpha': trial.suggest_float('reg_alpha', 1e-4, 10.0, log=True),\n", + " 'reg_lambda': trial.suggest_float('reg_lambda', 1e-4, 10.0, log=True),\n", + " }\n", + "\n", + " # 🚀 INTEGRACIÓN SEGURA: Respeta la optimización Optuna original para binario\n", + " if es_multiclase:\n", + " param['num_class'] = num_clases\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + " if config_bagging and 'class_weight' in config_bagging:\n", + " param['class_weight'] = config_bagging['class_weight']\n", + " else:\n", + " if config_bagging:\n", + " if clase_minoritaria == 1:\n", + " param['pos_bagging_fraction'] = 1.0\n", + " param['neg_bagging_fraction'] = trial.suggest_float('neg_bagging_fraction', 0.01, 1.0)\n", + " else:\n", + " param['pos_bagging_fraction'] = trial.suggest_float('pos_bagging_fraction', 0.01, 1.0)\n", + " param['neg_bagging_fraction'] = 1.0\n", + " param['bagging_freq'] = trial.suggest_int('bagging_freq', 1, 7)\n", + " else:\n", + " param['subsample'] = trial.suggest_float('subsample', 0.5, 1.0)\n", + "\n", + " cv = GroupKFold(n_splits=n_splits) if grupos_cv is not None else StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=seed_estatica)\n", + " splits = list(cv.split(X_tr_copy, y_train, groups=grupos_cv)) if grupos_cv is not None else list(cv.split(X_tr_copy, y_train))\n", + " metricas_fold = []\n", + "\n", + " for train_idx, val_idx in splits:\n", + " X_tr_fold, y_tr_fold = X_tr_copy.iloc[train_idx], y_train.iloc[train_idx]\n", + " X_va_fold, y_va_fold = X_tr_copy.iloc[val_idx], y_train.iloc[val_idx]\n", + " w_tr = pesos_train.iloc[train_idx] if pesos_train is not None else None\n", + "\n", + " modelo = lgb.LGBMClassifier(**param)\n", + " modelo.fit(X_tr_fold, y_tr_fold, sample_weight=w_tr, eval_set=[(X_va_fold, y_va_fold)], \n", + " callbacks=[lgb.early_stopping(30, verbose=False)], categorical_feature=cat_features if cat_features else 'auto')\n", + "\n", + " score = f1_score(y_va_fold, modelo.predict(X_va_fold), average='weighted') if es_multiclase else average_precision_score(y_va_fold, modelo.predict_proba(X_va_fold)[:, 1])\n", + " metricas_fold.append(score)\n", + " del X_tr_fold, y_tr_fold, X_va_fold, y_va_fold, modelo\n", + " gc.collect()\n", + "\n", + " return float(np.mean(metricas_fold))\n", + "\n", + " if not modo_silencioso: logger.info(f\" ⚙️ Iniciando simulaciones bayesianas ({n_trials * n_splits} entrenamientos totales)...\")\n", + "\n", + " sampler_determinista = optuna.samplers.TPESampler(seed=seed_estatica)\n", + " estudio = optuna.create_study(direction='maximize', study_name=\"Oraculo_LGBM_CV\", sampler=sampler_determinista)\n", + " estudio.optimize(objective, n_trials=n_trials, n_jobs=1, callbacks=[lambda s, t: gc.collect()]) \n", + "\n", + " mejores_params = estudio.best_params\n", + " parametros_finales = mejores_params.copy()\n", + "\n", + " parametros_finales.update({'n_estimators': 500, 'random_state': seed_estatica, 'verbosity': -1, 'n_jobs':-1})\n", + "\n", + " # 🚀 APLICACIÓN FINAL SEGURA\n", + " if es_multiclase:\n", + " parametros_finales['num_class'] = num_clases\n", + " if config_bagging and 'class_weight' in config_bagging:\n", + " parametros_finales['class_weight'] = config_bagging['class_weight']\n", + " else:\n", + " if config_bagging:\n", + " for k in ['subsample', 'class_weight', 'scale_pos_weight']: parametros_finales.pop(k, None)\n", + "\n", + " oraculo_final = lgb.LGBMClassifier(**parametros_finales)\n", + " oraculo_final.fit(X_tr_copy, y_train, sample_weight=pesos_train, categorical_feature=cat_features if cat_features else 'auto')\n", + "\n", + " umbral_final = 0.5\n", + " if not es_multiclase:\n", + " probas_train = oraculo_final.predict_proba(X_tr_copy)[:, 1]\n", + " precision, recall, thresholds = precision_recall_curve(y_train, probas_train)\n", + " fscore = (2 * precision * recall) / (precision + recall + 1e-8)\n", + " ix = np.argmax(fscore)\n", + " umbral_final = thresholds[ix] if ix < len(thresholds) else 0.5\n", + "\n", + " if not modo_silencioso:\n", + " logger.info(f\" ⚖️ Umbral Óptimo de Entrenamiento: {umbral_final:.4f}\")\n", + " if not os.path.exists(directorio_salida): os.makedirs(directorio_salida)\n", + " ruta_modelo = os.path.join(directorio_salida, \"oraculo_lightgbm.pkl\")\n", + " joblib.dump(oraculo_final, ruta_modelo)\n", + " rutas['umbral_decision_optimo'] = float(umbral_final)\n", + " logger.info(f\" 💾 Oráculo guardado en Caja Fuerte MLOps: {ruta_modelo}\")\n", + "\n", + " del estudio\n", + " gc.collect()\n", + " return oraculo_final, float(umbral_final), mejores_params\n", + "\n", + "\n", + "# ==========================================\n", + "# [BLOQUE 18.3 REFACTORIZADO]\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado.\")\n", + "\n", + " if not hasattr(manager, 'X_train') or manager.X_train is None or getattr(manager, 'y_train', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train' o 'y_train'.\")\n", + "\n", + " # 🕹️ PUNTO DE CONTROL DEL ARQUITECTO\n", + " SEMILLA_MANUAL =87499 \n", + "\n", + " logger.info(f\">>> 🧠 DESATANDO OPTUNA CON VALIDACIÓN CRUZADA (SEMILLA MANUAL: {SEMILLA_MANUAL}) <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 1. ⚖️ EJECUTAR EL JUICIO OFICIAL\n", + " modelo_campeon, umbral_entrenamiento, adn_campeon = forjar_oraculo_lightgbm(\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " rutas=getattr(manager, 'rutas', {}), \n", + " pesos_train=getattr(manager, 'pesos_train', None), \n", + " grupos_cv=getattr(manager, 'grupos_cv', None), \n", + " n_trials=40, \n", + " n_splits=5, \n", + " seed_estatica=SEMILLA_MANUAL,\n", + " modo_silencioso=False\n", + " )\n", + "\n", + " # ==========================================\n", + " # 🚀 FIX MLOPS: PERSISTENCIA MULTI-CAPA\n", + " # ==========================================\n", + " if not hasattr(manager, 'modelos_preprocesamiento') or manager.modelos_preprocesamiento is None:\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " # 1. Registro obligatorio en el diccionario que busca la Fase 19.1\n", + " manager.modelos_preprocesamiento['oraculo_lightgbm'] = modelo_campeon\n", + " \n", + " # 2. Registro en el log de artefactos (si el método existe)\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('oraculo_lightgbm', modelo_campeon)\n", + "\n", + " if not hasattr(manager, 'artefactos'): manager.artefactos = {}\n", + " manager.artefactos['umbral_decision'] = 0.50 \n", + "\n", + " logger.info(\"-\" * 80)\n", + " \n", + " # 2. 📊 RENDERIZADO AUTOMÁTICO DE LA MATRIZ BASE (0.50)\n", + " matriz_final, exactitud_final = renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado=modelo_campeon,\n", + " umbral_oro=0.50, \n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en la forja del modelo: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🩺 INICIANDO DIAGNÓSTICO DE CERTEZA (BRIER SCORE) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 🩺 FASE 19.1: Diagnóstico de Certeza Matemática (Reliability) ===\n", + " ⚙️ Extrayendo logits y probabilidades del Oráculo...\n", + " 🔇 [MODO HEADLESS] Brier Score calculado: 0.1484. Gráficos omitidos.\n", + "### 📋 Resultado del Diagnóstico MLOps\n", + " • Brier Score: 0.1484\n", + " 🟡 Diagnóstico: Ligera descalibración detectada. Sugerido: Platt Scaling.\n", + "\n", + "⏱️ Diagnóstico completado en 0.041s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import pandas as pd\n", + "import time\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.calibration import calibration_curve\n", + "from sklearn.metrics import brier_score_loss\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def evaluar_certeza_oraculo(\n", + " modelo,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " n_bins: int = 10\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.1] Evaluación de Certeza (Diagnóstico Post-hoc).\n", + " - Escudo de Probabilidades: Verifica que el modelo soporte probabilidades continuas.\n", + " - Brier Score: Calcula la penalización por sobreconfianza (0.0 a 1.0).\n", + " - Diagrama de Confiabilidad: Compara frecuencia observada vs probabilidad predicha.\n", + " \"\"\"\n", + " logger.info(\"=== 🩺 FASE 19.1: Diagnóstico de Certeza Matemática (Reliability) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Blindaje MLOps: Validación de capacidades del modelo\n", + " if not hasattr(modelo, \"predict_proba\"):\n", + " logger.error(\"🛑 Error Crítico: El modelo no soporta 'predict_proba'.\")\n", + " raise ValueError(\"El modelo no soporta 'predict_proba'.\")\n", + "\n", + " if y_test.nunique() > 2:\n", + " logger.warning(\" ⚠️ [INFO] Target Multiclase detectado. Brier estándar requiere adaptación.\")\n", + " logger.info(\" ↳ Operación abortada por seguridad de arquitectura.\")\n", + " return None\n", + "\n", + " # 2. Extracción de Probabilidades Crudas\n", + " logger.info(\" ⚙️ Extrayendo logits y probabilidades del Oráculo...\")\n", + " probabilidades = modelo.predict_proba(X_test)[:, 1]\n", + "\n", + " # 3. Cálculo del Brier Score (Penalización de error cuadrático)\n", + " brier_score = brier_score_loss(y_test, probabilidades)\n", + "\n", + " # 4. Cálculo de la Curva de Calibración\n", + " fraccion_positivos, valor_medio_predicho = calibration_curve(\n", + " y_test, probabilidades, n_bins=n_bins, strategy='uniform'\n", + " )\n", + "\n", + " # ==========================================\n", + " # 5. Renderizado Inteligente UI (Diagrama de Confiabilidad)\n", + " # ==========================================\n", + " if MODO_VISUAL:\n", + " logger.info(f\" 📊 Renderizando Diagrama de Confiabilidad (Brier Score: {brier_score:.4f})...\")\n", + "\n", + " sns.set_theme(style=\"whitegrid\")\n", + " fig, ax1 = plt.subplots(figsize=(10, 6))\n", + "\n", + " # Línea de Calibración Perfecta (Identidad)\n", + " ax1.plot([0, 1], [0, 1], \"k:\", label=\"Calibración Perfecta (Honestidad Absoluta)\")\n", + "\n", + " # Curva del Modelo (Realidad Observada)\n", + " ax1.plot(valor_medio_predicho, fraccion_positivos, \"s-\", color=\"#1f77b4\",\n", + " label=f\"Modelo (Brier: {brier_score:.4f})\")\n", + "\n", + " ax1.set_ylabel(\"Fracción de Positivos Reales\", fontsize=12)\n", + " ax1.set_xlabel(\"Probabilidad Predicha por el Modelo\", fontsize=12)\n", + " ax1.set_title(\"Diagrama de Confiabilidad (Reliability Diagram)\", fontsize=14, pad=15)\n", + " ax1.set_xlim([0.0, 1.0])\n", + " ax1.set_ylim([0.0, 1.0])\n", + " ax1.legend(loc=\"upper left\")\n", + "\n", + " # Histograma de densidad de predicciones (Eje Gemelo)\n", + " ax2 = ax1.twinx()\n", + " ax2.hist(probabilidades, range=(0, 1), bins=n_bins, histtype=\"step\", lw=2,\n", + " color=\"#ff7f0e\", alpha=0.5)\n", + " ax2.set_ylabel(\"Densidad de Predicciones\", color=\"#ff7f0e\", fontsize=12)\n", + " ax2.tick_params(axis='y', labelcolor=\"#ff7f0e\")\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + " else:\n", + " logger.info(f\" 🔇 [MODO HEADLESS] Brier Score calculado: {brier_score:.4f}. Gráficos omitidos.\")\n", + "\n", + " # 6. Diagnóstico del Arquitecto\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📋 Resultado del Diagnóstico MLOps\"))\n", + " else:\n", + " logger.info(\"### 📋 Resultado del Diagnóstico MLOps\")\n", + " \n", + " logger.info(f\" • Brier Score: {brier_score:.4f}\")\n", + "\n", + " if brier_score < 0.10:\n", + " logger.info(\" 🟢 Diagnóstico: El modelo es extremadamente honesto.\")\n", + " elif brier_score < 0.20:\n", + " logger.warning(\" 🟡 Diagnóstico: Ligera descalibración detectada. Sugerido: Platt Scaling.\")\n", + " else:\n", + " logger.warning(\" 🔴 Diagnóstico: Modelo sobreconfiado o 'mentiroso'. Calibración obligatoria.\")\n", + "\n", + " logger.info(f\"\\n⏱️ Diagnóstico completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return brier_score\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager usando NameError\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Ejecuta las fases previas.\")\n", + "\n", + " if getattr(manager, 'modelos_preprocesamiento', None) is None or 'oraculo_lightgbm' not in manager.modelos_preprocesamiento:\n", + " raise ValueError(\"El modelo 'oraculo_lightgbm' no existe en la caja fuerte del Manager. Ejecuta la Fase 18.3.\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de Test ('X_test' o 'y_test').\")\n", + "\n", + " modelo_campeon = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + "\n", + " logger.info(\">>> 🩺 INICIANDO DIAGNÓSTICO DE CERTEZA (BRIER SCORE) <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Invocamos la resonancia magnética del modelo\n", + " score_brier_actual = evaluar_certeza_oraculo(\n", + " modelo=modelo_campeon,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " n_bins=10\n", + " )\n", + "\n", + " # Registro de telemetría en el Manager de forma segura\n", + " if score_brier_actual is not None:\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('brier_score_pre_calibracion', score_brier_actual)\n", + " else:\n", + " if not hasattr(manager, 'artefactos'): manager.artefactos = {}\n", + " manager.artefactos['brier_score_pre_calibracion'] = score_brier_actual\n", + " logger.info(f\"📦 Telemetría guardada: brier_score_pre_calibracion = {score_brier_actual:.4f}\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en el Diagnóstico Post-hoc: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 💉 INICIANDO FASE DE CALIBRACIÓN Y UMBRAL <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 💉 FASE 19.2: Calibración de Probabilidades (Platt/Isotonic) ===\n", + " 🧠 Motor Seleccionado: 'ISOTONIC' (Basado en 26,029 registros).\n", + " ⚙️ Calculando Brier Score original...\n", + " 🔬 Entrenando Calibrador con validación cruzada de 5 folds...\n", + " 📊 Renderizando evidencia clínica de la calibración...\n", + "\n", + "### 📋 Reporte Médico del Modelo\n", + " • Brier Score PRE-Calibración: 0.1484\n", + " • Brier Score POST-Calibración: 0.0921\n", + " 🟢 ÉXITO ROTUNDO: La mentira matemática se redujo en 0.0562 puntos de Brier.\n", + "\n", + "⏱️ Cirugía completada en 8.436s\n", + " 📦 El modelo 'oraculo_calibrado' fue almacenado exitosamente en el Manager.\n", + "\n", + "==================================================\n", + "=== 🎛️ FASE 19.2.5: Optimización de Umbral de Decisión ===\n", + "==================================================\n", + " ⚙️ Extrayendo probabilidades calibradas del Test Set...\n", + " 🔍 Escaneando 100 umbrales buscando el F1-Score máximo...\n", + " 🏆 ¡Umbral de Oro encontrado! El corte perfecto es: 0.42\n", + "--------------------------------------------------------------------------------\n", + " 🔴 ANTES (Umbral 0.50) -> F1-Score: 0.6954\n", + " 🟢 AHORA (Umbral 0.42) -> F1-Score: 0.7205\n", + " 🚀 ¡Incremento de +0.0251 puntos en F1-Score!\n", + "--------------------------------------------------------------------------------\n", + "\n", + " 📋 Reporte Final con Umbral Optimizado:\n", + " precision recall f1-score support\n", + "\n", + " 0 0.91 0.92 0.91 4940\n", + " 1 0.73 0.71 0.72 1568\n", + "\n", + " accuracy 0.87 6508\n", + " macro avg 0.82 0.81 0.82 6508\n", + "weighted avg 0.87 0.87 0.87 6508\n", + "\n", + "\n", + "⏱️ Optimización completada en 0.558s\n", + " 📦 El 'umbral_decision' (0.4200) fue almacenado exitosamente en el Manager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import time\n", + "import gc\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.calibration import CalibratedClassifierCV, calibration_curve\n", + "from sklearn.metrics import brier_score_loss, f1_score, classification_report\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "# ==========================================\n", + "# FASE 19.2: CALIBRACIÓN ISOTÓNICA / PLATT\n", + "# ==========================================\n", + "def calibrar_oraculo_mlops(\n", + " modelo_base,\n", + " X_train: pd.DataFrame,\n", + " y_train: pd.Series,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series,\n", + " cv: int = 5\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.2] Calibración de Probabilidades.\n", + " - Ajusta las probabilidades del modelo para que coincidan con la realidad.\n", + " - Usa 'Isotonic' para datasets grandes (Adult Census) o 'Sigmoid' para pequeños.\n", + " \"\"\"\n", + " logger.info(\"=== 💉 FASE 19.2: Calibración de Probabilidades (Platt/Isotonic) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " if y_train.nunique() > 2:\n", + " logger.warning(\" ⚠️ [INFO] Target Multiclase. Se aplicará calibración One-Vs-Rest implícita.\")\n", + "\n", + " n_muestras = len(X_train)\n", + " metodo_optimo = 'isotonic' if n_muestras >= 1000 else 'sigmoid'\n", + " logger.info(f\" 🧠 Motor Seleccionado: '{metodo_optimo.upper()}' (Basado en {n_muestras:,} registros).\")\n", + "\n", + " logger.info(\" ⚙️ Calculando Brier Score original...\")\n", + " if hasattr(modelo_base, \"predict_proba\"):\n", + " proba_test_antes = modelo_base.predict_proba(X_test)[:, 1]\n", + " brier_antes = brier_score_loss(y_test, proba_test_antes)\n", + " else:\n", + " logger.error(\"🛑 El modelo base no escupe probabilidades.\")\n", + " raise ValueError(\"El modelo base no escupe probabilidades.\")\n", + "\n", + " logger.info(f\" 🔬 Entrenando Calibrador con validación cruzada de {cv} folds...\")\n", + "\n", + " oraculo_calibrado = CalibratedClassifierCV(\n", + " estimator=modelo_base,\n", + " method=metodo_optimo,\n", + " cv=cv,\n", + " n_jobs=-1\n", + " )\n", + "\n", + " oraculo_calibrado.fit(X_train, y_train)\n", + "\n", + " proba_test_despues = oraculo_calibrado.predict_proba(X_test)[:, 1]\n", + " brier_despues = brier_score_loss(y_test, proba_test_despues)\n", + " mejora = brier_antes - brier_despues\n", + "\n", + " logger.info(f\" 📊 Renderizando evidencia clínica de la calibración...\")\n", + " sns.set_theme(style=\"whitegrid\")\n", + " fig, ax1 = plt.subplots(figsize=(10, 6))\n", + "\n", + " ax1.plot([0, 1], [0, 1], \"k:\", label=\"Verdad Absoluta (Perfectamente Calibrado)\")\n", + "\n", + " f_pos_antes, m_pred_antes = calibration_curve(y_test, proba_test_antes, n_bins=10)\n", + " ax1.plot(m_pred_antes, f_pos_antes, \"s-\", color=\"#d62728\", alpha=0.6, label=f\"Antes (Brier: {brier_antes:.4f})\")\n", + "\n", + " f_pos_despues, m_pred_despues = calibration_curve(y_test, proba_test_despues, n_bins=10)\n", + " ax1.plot(m_pred_despues, f_pos_despues, \"o-\", color=\"#2ca02c\", linewidth=2.5, label=f\"Después (Brier: {brier_despues:.4f})\")\n", + "\n", + " ax1.set_ylabel(\"Fracción de Positivos Reales\", fontsize=12)\n", + " ax1.set_xlabel(\"Probabilidad Predicha\", fontsize=12)\n", + " ax1.set_title(\"Efecto de la Calibración en el Oráculo\", fontsize=14, pad=15)\n", + " ax1.legend(loc=\"upper left\", fontsize=11)\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " display(Markdown(f\"### 📋 Reporte Médico del Modelo\"))\n", + " else:\n", + " plt.close(fig)\n", + " logger.info(\"\\n### 📋 Reporte Médico del Modelo\")\n", + "\n", + " logger.info(f\" • Brier Score PRE-Calibración: {brier_antes:.4f}\")\n", + " logger.info(f\" • Brier Score POST-Calibración: {brier_despues:.4f}\")\n", + "\n", + " if mejora > 0.01:\n", + " logger.info(f\" 🟢 ÉXITO ROTUNDO: La mentira matemática se redujo en {mejora:.4f} puntos de Brier.\")\n", + " elif mejora > 0:\n", + " logger.info(f\" 🟡 ÉXITO LEVE: El modelo ya era bastante honesto. Mejora de {mejora:.4f} puntos.\")\n", + " else:\n", + " logger.warning(f\" 🔴 ALERTA: La calibración no mejoró el Brier Score.\")\n", + "\n", + " del proba_test_antes, proba_test_despues\n", + " gc.collect()\n", + " logger.info(f\"\\n⏱️ Cirugía completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return oraculo_calibrado\n", + "\n", + "# ==========================================\n", + "# FASE 19.2.5: OPTIMIZADOR DE UMBRAL (THRESHOLD TUNING)\n", + "# ==========================================\n", + "def optimizar_umbral_mlops(\n", + " modelo_calibrado,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.3] Threshold Tuning.\n", + " - Busca el umbral óptimo para maximizar el F1-Score en el set de validación.\n", + " \"\"\"\n", + " logger.info(\"\\n\" + \"=\"*50)\n", + " logger.info(\"=== 🎛️ FASE 19.2.5: Optimización de Umbral de Decisión ===\")\n", + " logger.info(\"=\"*50)\n", + " inicio_timer = time.time()\n", + "\n", + " logger.info(\" ⚙️ Extrayendo probabilidades calibradas del Test Set...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + "\n", + " logger.info(\" 🔍 Escaneando 100 umbrales buscando el F1-Score máximo...\")\n", + " umbrales = np.arange(0.01, 1.0, 0.01)\n", + " mejores_metricas = {'umbral': 0.5, 'f1': 0.0}\n", + "\n", + " # Búsqueda iterativa del corte de oro\n", + " for umbral in umbrales:\n", + " preds_simuladas = (proba_test >= umbral).astype(int)\n", + " score_actual = f1_score(y_test, preds_simuladas)\n", + " if score_actual > mejores_metricas['f1']:\n", + " mejores_metricas['f1'] = score_actual\n", + " mejores_metricas['umbral'] = umbral\n", + "\n", + " umbral_oro = mejores_metricas['umbral']\n", + " logger.info(f\" 🏆 ¡Umbral de Oro encontrado! El corte perfecto es: {umbral_oro:.2f}\")\n", + "\n", + " # Evaluación de la mejora\n", + " preds_viejas = (proba_test >= 0.50).astype(int)\n", + " preds_nuevas = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " f1_viejo = f1_score(y_test, preds_viejas)\n", + " f1_nuevo = f1_score(y_test, preds_nuevas)\n", + " mejora = f1_nuevo - f1_viejo\n", + "\n", + " logger.info(\"-\" * 80)\n", + " logger.info(f\" 🔴 ANTES (Umbral 0.50) -> F1-Score: {f1_viejo:.4f}\")\n", + " logger.info(f\" 🟢 AHORA (Umbral {umbral_oro:.2f}) -> F1-Score: {f1_nuevo:.4f}\")\n", + "\n", + " if mejora > 0:\n", + " logger.info(f\" 🚀 ¡Incremento de +{mejora:.4f} puntos en F1-Score!\")\n", + " else:\n", + " logger.info(\" ⚖️ El umbral 0.50 ya era el óptimo.\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " logger.info(\"\\n 📋 Reporte Final con Umbral Optimizado:\\n\" + classification_report(y_test, preds_nuevas))\n", + "\n", + " logger.info(f\"\\n⏱️ Optimización completada en {time.time() - inicio_timer:.3f}s\")\n", + " return umbral_oro\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta usando NameError para manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento') or 'oraculo_lightgbm' not in manager.modelos_preprocesamiento:\n", + " raise ValueError(\"El modelo 'oraculo_lightgbm' no existe en la caja fuerte del Manager. Ejecuta la Fase 18.3.\")\n", + "\n", + " if getattr(manager, 'X_train', None) is None or getattr(manager, 'y_train', None) is None or getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_train', 'y_train', 'X_test' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " modelo_crudo = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + "\n", + " logger.info(\">>> 💉 INICIANDO FASE DE CALIBRACIÓN Y UMBRAL <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # 1. Calibración (Isotónica/Platt)\n", + " oraculo_calibrado_definitivo = calibrar_oraculo_mlops(\n", + " modelo_base=modelo_crudo,\n", + " X_train=manager.X_train,\n", + " y_train=manager.y_train,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test,\n", + " cv=5\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Asignación directa y segura al diccionario de modelos\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " manager.modelos_preprocesamiento = {}\n", + " \n", + " manager.modelos_preprocesamiento['oraculo_calibrado'] = oraculo_calibrado_definitivo\n", + " logger.info(\" 📦 El modelo 'oraculo_calibrado' fue almacenado exitosamente en el Manager.\")\n", + "\n", + " # 2. Optimización de Umbral (Threshold Tuning)\n", + " umbral_definitivo = optimizar_umbral_mlops(\n", + " modelo_calibrado=oraculo_calibrado_definitivo,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + " # 🚀 FIX ARQUITECTÓNICO: Registro seguro del artefacto (umbral)\n", + " if not hasattr(manager, 'artefactos'): \n", + " manager.artefactos = {}\n", + " \n", + " manager.artefactos['umbral_decision'] = umbral_definitivo\n", + " logger.info(f\" 📦 El 'umbral_decision' ({umbral_definitivo:.4f}) fue almacenado exitosamente en el Manager.\")\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error Crítico en la Fase 19: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO (FASE 19.2 DETECTADA) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== 🎛️ FASE 19.3: Escáner Vectorizado de Umbral de Decisión ===\n", + " ⚙️ Extrayendo probabilidades del Test Set...\n", + " 🔍 Calculando la frontera de Pareto (Precisión vs Recall)...\n", + " 🏆 ¡Punto de Corte Encontrado! El Umbral de Oro es: 0.4170\n", + " 📊 Renderizando el comportamiento de las métricas...\n", + "### 📋 Impacto de la Guillotina Dinámica\n", + " 🔴 ANTES (Umbral ciego 0.50): F1-Score = 0.6954\n", + " 🟢 AHORA (Umbral exacto 0.4170): F1-Score = 0.7224\n", + " 🚀 ¡Incremento garantizado de +0.0269 puntos en F1-Score!\n", + "\n", + " 📋 Reporte de Clasificación Final (Listo para Producción):\n", + " precision recall f1-score support\n", + "\n", + " 0 0.91 0.92 0.91 4940\n", + " 1 0.73 0.71 0.72 1568\n", + "\n", + " accuracy 0.87 6508\n", + " macro avg 0.82 0.81 0.82 6508\n", + "weighted avg 0.87 0.87 0.87 6508\n", + "\n", + "⏱️ Escáner completado en 0.269s\n", + " 💾 Artefacto Guardado: 'umbral_decision' (0.4170) asegurado en el PipelineManager.\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import logging\n", + "import time\n", + "import gc\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import f1_score, precision_recall_curve, classification_report\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "\n", + "def optimizador_visual_umbral(\n", + " modelo,\n", + " X_test: pd.DataFrame,\n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.3] Optimizador Visual de Umbral (Threshold Tuning).\n", + " - Motor Vectorizado: Usa precision_recall_curve (C++) para alta velocidad.\n", + " - Inmunidad a SMOTE: Se ejecuta sobre el Test Set para evaluar la realidad.\n", + " - Inteligencia UI: Renderiza la intersección de Precisión, Recall y F1-Score.\n", + " \"\"\"\n", + " logger.info(\"=== 🎛️ FASE 19.3: Escáner Vectorizado de Umbral de Decisión ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Blindaje MLOps\n", + " if not hasattr(modelo, \"predict_proba\"):\n", + " logger.error(\"🛑 Error Crítico: El modelo no soporta probabilidades (predict_proba).\")\n", + " raise ValueError(\"El modelo no soporta probabilidades (predict_proba).\")\n", + "\n", + " if y_test.nunique() > 2:\n", + " logger.warning(\" ⚠️ [INFO] Target Multiclase detectado. Threshold Tuning omitido.\")\n", + " return 0.5\n", + "\n", + " # 2. Extracción de Probabilidades (El Mundo Real)\n", + " logger.info(\" ⚙️ Extrayendo probabilidades del Test Set...\")\n", + " proba_test = modelo.predict_proba(X_test)[:, 1]\n", + "\n", + " # 3. Escáner Vectorizado (Alta Velocidad)\n", + " logger.info(\" 🔍 Calculando la frontera de Pareto (Precisión vs Recall)...\")\n", + " precisiones, recalls, umbrales = precision_recall_curve(y_test, proba_test)\n", + "\n", + " # 4. Cálculo del F1-Score para todos los umbrales simultáneamente\n", + " # Agregamos epsilon para evitar división por cero\n", + " f1_scores = 2 * (precisiones * recalls) / (precisiones + recalls + 1e-10)\n", + "\n", + " # Encontrar el índice del F1 máximo\n", + " # (ignorando el último valor de precision_recall_curve que no tiene umbral)\n", + " indice_optimo = np.argmax(f1_scores[:-1])\n", + " umbral_oro = umbrales[indice_optimo]\n", + " f1_maximo = f1_scores[indice_optimo]\n", + "\n", + " logger.info(f\" 🏆 ¡Punto de Corte Encontrado! El Umbral de Oro es: {umbral_oro:.4f}\")\n", + "\n", + " # ==========================================\n", + " # 5. Renderizado Inteligente UI (La Radiografía)\n", + " # ==========================================\n", + " logger.info(\" 📊 Renderizando el comportamiento de las métricas...\")\n", + " sns.set_theme(style=\"whitegrid\")\n", + " fig, ax = plt.subplots(figsize=(10, 5))\n", + "\n", + " # Trazamos las 3 curvas\n", + " ax.plot(umbrales, precisiones[:-1], 'b--', label='Precisión', alpha=0.8)\n", + " ax.plot(umbrales, recalls[:-1], 'g--', label='Recall', alpha=0.8)\n", + " ax.plot(umbrales, f1_scores[:-1], 'r-', linewidth=3, label='F1-Score')\n", + "\n", + " # Marcamos el punto de oro\n", + " ax.axvline(x=umbral_oro, color='k', linestyle=':', linewidth=2)\n", + " ax.scatter([umbral_oro], [f1_maximo], color='red', s=100, zorder=5)\n", + " ax.text(\n", + " umbral_oro + 0.02, f1_maximo - 0.05,\n", + " f\"Umbral: {umbral_oro:.2f}\\nF1: {f1_maximo:.4f}\",\n", + " fontsize=12, fontweight='bold',\n", + " bbox=dict(facecolor='white', alpha=0.8, edgecolor='none')\n", + " )\n", + "\n", + " ax.set_xlabel(\"Umbral de Decisión (Probabilidad de Corte)\", fontsize=12)\n", + " ax.set_ylabel(\"Puntuación (0.0 a 1.0)\", fontsize=12)\n", + " ax.set_title(\"Optimización Dinámica de Umbral (Bypass de SMOTE)\", fontsize=14, pad=15)\n", + " ax.set_xlim([0.0, 1.0])\n", + " ax.set_ylim([0.0, 1.05])\n", + " ax.legend(loc=\"lower center\", fontsize=10)\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " else:\n", + " plt.close(fig)\n", + "\n", + " # ==========================================\n", + " # 6. Evaluación en el Mundo Real (Antes vs Después)\n", + " # ==========================================\n", + " preds_viejas = (proba_test >= 0.50).astype(int)\n", + " preds_nuevas = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " f1_viejo = f1_score(y_test, preds_viejas)\n", + " mejora = f1_maximo - f1_viejo\n", + "\n", + " if MODO_VISUAL:\n", + " display(Markdown(\"### 📋 Impacto de la Guillotina Dinámica\"))\n", + " else:\n", + " logger.info(\"### 📋 Impacto de la Guillotina Dinámica\")\n", + " \n", + " logger.info(f\" 🔴 ANTES (Umbral ciego 0.50): F1-Score = {f1_viejo:.4f}\")\n", + " logger.info(f\" 🟢 AHORA (Umbral exacto {umbral_oro:.4f}): F1-Score = {f1_maximo:.4f}\")\n", + "\n", + " if mejora > 0.001:\n", + " logger.info(f\" 🚀 ¡Incremento garantizado de +{mejora:.4f} puntos en F1-Score!\")\n", + " else:\n", + " logger.info(\" ⚖️ El umbral 0.50 ya era el matemático ideal.\")\n", + "\n", + " logger.info(\"\\n 📋 Reporte de Clasificación Final (Listo para Producción):\\n\" + classification_report(y_test, preds_nuevas))\n", + "\n", + " logger.info(f\"⏱️ Escáner completado en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " # 🧹 RAM Shield\n", + " del proba_test, precisiones, recalls, umbrales, f1_scores\n", + " gc.collect()\n", + "\n", + " return umbral_oro\n", + "\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta y segura del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " raise ValueError(\"El Manager no tiene la caja fuerte de modelos inicializada.\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices 'X_test' o 'y_test'. Ejecuta el Split (Fase 3.3).\")\n", + "\n", + " # Inteligencia: Verificamos si existe el modelo calibrado o el crudo\n", + " if 'oraculo_calibrado' in manager.modelos_preprocesamiento:\n", + " logger.info(\">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO (FASE 19.2 DETECTADA) <<<\")\n", + " modelo_activo = manager.modelos_preprocesamiento['oraculo_calibrado']\n", + " elif 'oraculo_lightgbm' in manager.modelos_preprocesamiento:\n", + " logger.warning(\">>> ⚠️ UTILIZANDO ORÁCULO CRUDO (NO SE DETECTÓ CALIBRACIÓN) <<<\")\n", + " modelo_activo = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + " else:\n", + " raise ValueError(\"No se encontró ningún modelo LightGBM en el Manager.\")\n", + "\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Disparamos el escáner visual\n", + " umbral_definitivo = optimizador_visual_umbral(\n", + " modelo=modelo_activo,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + " # 💾 Guardado del Artefacto Crítico\n", + " if hasattr(manager, 'guardar_artefacto'):\n", + " manager.guardar_artefacto('umbral_decision', umbral_definitivo)\n", + " else:\n", + " if not hasattr(manager, 'artefactos'):\n", + " manager.artefactos = {}\n", + " manager.artefactos['umbral_decision'] = umbral_definitivo\n", + " \n", + " logger.info(\n", + " f\" 💾 Artefacto Guardado: 'umbral_decision' ({umbral_definitivo:.4f}) \"\n", + " f\"asegurado en el PipelineManager.\"\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en Optimizador Visual: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "--------------------------------------------------------------------------------\n", + "=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\n", + " ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro (0.4170)...\n", + " 📊 Procesando Matriz para Presentación a Negocio...\n", + "\n", + "### 📋 Resumen Ejecutivo para Stakeholders\n", + " 🟢 ACIERTOS TOTALES: 5,651 pacientes clasificados correctamente.\n", + " 🔴 ERRORES TOTALES: 857 pacientes clasificados incorrectamente.\n", + " ↳ De 1,568 personas ricas reales, el modelo logró atrapar a 1,115 (Recall).\n", + " ↳ De 1,519 veces que el modelo gritó '¡Es rico!', acertó 1,115 veces (Precisión).\n", + "\n", + "⏱️ Matriz generada en 0.238s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import time\n", + "import logging\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import confusion_matrix\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado, \n", + " umbral_oro: float, \n", + " X_test: pd.DataFrame, \n", + " y_test: pd.Series\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.4] Matriz de Confusión Táctica (UI/UX para Negocio).\n", + " \n", + " - Inteligencia de Umbral: Aplica la guillotina exacta (ej. 0.38) en lugar del 0.50 por defecto.\n", + " - Renderizado de Negocio: Traduce los cuadrantes matemáticos a impacto real (Aciertos/Errores).\n", + " - Blindaje: Funciona dinámicamente según la distribución del Test Set.\n", + " \"\"\"\n", + " logger.info(\"=== 🎯 FASE 19.4: Matriz de Confusión Táctica ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Extracción de Probabilidades y Aplicación de la Guillotina Dinámica\n", + " logger.info(f\" ⚙️ Extrayendo probabilidades y aplicando Umbral de Oro ({umbral_oro:.4f})...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + " preds_finales = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # 2. Cálculo Matemático\n", + " cm = confusion_matrix(y_test, preds_finales)\n", + "\n", + " # 3. Mapeo de Cuadrantes (Para una UI Inteligente)\n", + " tn, fp, fn, tp = cm.ravel()\n", + "\n", + " # Cálculos porcentuales para dar contexto\n", + " total = np.sum(cm)\n", + " tasa_acierto = (tp + tn) / total\n", + "\n", + " # ==========================================\n", + " # 4. Renderizado Visual (Nivel Dashboard)\n", + " # ==========================================\n", + " logger.info(\" 📊 Procesando Matriz para Presentación a Negocio...\")\n", + "\n", + " # Textos personalizados para los cuadrantes\n", + " etiquetas = np.array([\n", + " [f\"Verdaderos Negativos (TN)\\n{tn:,}\\n(Pobres bien clasificados)\", \n", + " f\"Falsos Positivos (FP)\\n{fp:,}\\n(Falsas Alarmas - Alerta)\"],\n", + " [f\"Falsos Negativos (FN)\\n{fn:,}\\n(Ricos que escaparon)\", \n", + " f\"Verdaderos Positivos (TP)\\n{tp:,}\\n(Ricos atrapados - ÉXITO)\"]\n", + " ])\n", + "\n", + " sns.set_theme(style=\"white\")\n", + " fig, ax = plt.subplots(figsize=(9, 7))\n", + "\n", + " # Mapa de calor usando una paleta profesional (Rojos para errores, Azules para aciertos)\n", + " sns.heatmap(\n", + " cm, \n", + " annot=etiquetas, \n", + " fmt=\"\", \n", + " cmap=\"Blues\", \n", + " cbar=False, \n", + " annot_kws={\"size\": 12, \"weight\": \"bold\"}, \n", + " linewidths=2, \n", + " linecolor='black',\n", + " ax=ax\n", + " )\n", + "\n", + " # Estética del gráfico\n", + " ax.set_title(f\"Radiografía del Modelo en el Mundo Real\\n(Umbral de Decisión: {umbral_oro:.4f} | Exactitud Global: {tasa_acierto:.2%})\", \n", + " fontsize=14, pad=20, fontweight='bold')\n", + " ax.set_xlabel('Predicción del Oráculo', fontsize=12, fontweight='bold', labelpad=15)\n", + " ax.set_ylabel('Realidad (Lo que pasó)', fontsize=12, fontweight='bold', labelpad=15)\n", + "\n", + " # Etiquetas de los ejes\n", + " ax.set_xticklabels(['Predijo <=50K (Pobre)', 'Predijo >50K (Rico)'], fontsize=11)\n", + " ax.set_yticklabels(['Realmente <=50K', 'Realmente >50K'], fontsize=11, rotation=0)\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " display(Markdown(\"### 📋 Resumen Ejecutivo para Stakeholders\"))\n", + " else:\n", + " plt.close(fig)\n", + " logger.info(\"\\n### 📋 Resumen Ejecutivo para Stakeholders\")\n", + "\n", + " # 5. Resumen Ejecutivo (Siempre se loguea)\n", + " logger.info(f\" 🟢 ACIERTOS TOTALES: {tp + tn:,} pacientes clasificados correctamente.\")\n", + " logger.warning(f\" 🔴 ERRORES TOTALES: {fp + fn:,} pacientes clasificados incorrectamente.\")\n", + " logger.info(f\" ↳ De {tp + fn:,} personas ricas reales, el modelo logró atrapar a {tp:,} (Recall).\")\n", + " logger.info(f\" ↳ De {tp + fp:,} veces que el modelo gritó '¡Es rico!', acertó {tp:,} veces (Precisión).\")\n", + "\n", + " logger.info(f\"\\n⏱️ Matriz generada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return cm\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento') or 'oraculo_calibrado' not in manager.modelos_preprocesamiento:\n", + " raise ValueError(\"El modelo 'oraculo_calibrado' no existe en la caja fuerte. Ejecuta la Fase 19.2.\")\n", + "\n", + " if not hasattr(manager, 'artefactos') or 'umbral_decision' not in manager.artefactos:\n", + " raise ValueError(\"El 'umbral_decision' no existe en los artefactos. Ejecuta la Fase 19.2.5 (o la Fase Unificada).\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de Test ('X_test' o 'y_test').\")\n", + "\n", + " modelo_final = manager.modelos_preprocesamiento['oraculo_calibrado']\n", + " umbral_final = manager.artefactos['umbral_decision']\n", + "\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Invocamos al renderizador\n", + " matriz_final = renderizar_matriz_confusion_mlops(\n", + " modelo_calibrado=modelo_final,\n", + " umbral_oro=umbral_final,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error renderizando la Matriz de Confusión: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + ">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO <<<\n", + "\n", + ">>> ⚖️ INICIANDO AUDITORÍA LEGAL (Umbral Activo: 0.4170) <<<\n", + "--------------------------------------------------------------------------------\n", + "=== ⚖️ FASE 19.5: Auditoría de Justicia Algorítmica (Legal MLOps) ===\n", + " ⚙️ Extrayendo dictámenes finales usando el Umbral Optimizado (0.4170)...\n", + " 🔍 Atributos protegidos detectados para auditoría: ['age', 'sex', 'llm_age_*_education_num']\n", + " ⏭️ Saltando 'age' (Demasiados valores únicos para un reporte categórico claro).\n", + " ⏭️ Saltando 'llm_age_*_education_num' (Demasiados valores únicos para un reporte categórico claro).\n", + " 📊 Generando Diagnóstico de Equidad...\n", + "\n", + "### 📋 Veredicto de Justicia Algorítmica\n", + "\n", + " Atributo Subgrupo Tamaño (N) Selection Rate (Demographic Parity) Recall (Equal Opportunity)\n", + "0 sex 1.0 4335 0.302191 0.717408\n", + "1 sex 0.0 2173 0.096180 0.676349\n", + "\n", + " 💡 NOTA DEL ARQUITECTO: Si hay diferencias extremas, no es culpa del algoritmo.\n", + " ↳ Se debe a 'Sampling Bias' (sesgo histórico en los datos). En ciberseguridad, esto equivaldría a un 'Domain Shift'.\n", + "\n", + "⏱️ Auditoría completada en 0.351s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetría\n", + "# ==========================================\n", + "import time\n", + "import logging\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import recall_score\n", + "from IPython.display import display, Markdown\n", + "\n", + "# Conexión al Logger Global configurado en el Paso 1.1\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "# 🛡️ Banderas de Entorno MLOps\n", + "MODO_VISUAL = False # Cambiar a False en Producción (Docker/Headless)\n", + "\n", + "def auditoria_justicia_mlops(\n", + " modelo_calibrado, \n", + " umbral_oro: float, \n", + " X_test: pd.DataFrame, \n", + " y_test: pd.Series,\n", + " atributos_sospechosos: list = None\n", + "):\n", + " \"\"\"\n", + " [FASE 7 - Paso 19.5] Auditoría de Justicia Algorítmica (Fairness Constraints).\n", + " - Muro Legal: Aplica la \"Regla de los 4/5\" (Disparate Impact).\n", + " - Demographic Parity: ¿El modelo aprueba a hombres y mujeres en proporciones similares?\n", + " - Equal Opportunity: De los que verdaderamente son ricos, ¿el modelo los detecta igual sin importar su raza/sexo?\n", + " - Inmunidad de Pipeline: Evalúa predicciones duras basadas EXCLUSIVAMENTE en el Umbral Optimizado.\n", + " \"\"\"\n", + " logger.info(\"=== ⚖️ FASE 19.5: Auditoría de Justicia Algorítmica (Legal MLOps) ===\")\n", + " inicio_timer = time.time()\n", + "\n", + " # 1. Aplicación estricta de la guillotina final (El Umbral de Oro)\n", + " logger.info(f\" ⚙️ Extrayendo dictámenes finales usando el Umbral Optimizado ({umbral_oro:.4f})...\")\n", + " proba_test = modelo_calibrado.predict_proba(X_test)[:, 1]\n", + " preds_finales = (proba_test >= umbral_oro).astype(int)\n", + "\n", + " # 2. Radar de Atributos Protegidos\n", + " if atributos_sospechosos is None:\n", + " # Búsqueda automática de variables sensibles comunes en el dataset Adult\n", + " palabras_clave = ['sex', 'gender', 'race', 'age', 'edad', 'sexo', 'raza']\n", + " atributos_protegidos = [col for col in X_test.columns if any(kw in col.lower() for kw in palabras_clave)]\n", + " else:\n", + " atributos_protegidos = [col for col in atributos_sospechosos if col in X_test.columns]\n", + "\n", + " if not atributos_protegidos:\n", + " logger.warning(\" ⚠️ [ALERTA MLOps] No se encontraron atributos protegidos en X_test.\")\n", + " logger.info(\" ↳ Nota: Si Boruta extirpó 'sex' o 'race' por ser ruido, el modelo es matemáticamente ciego a ellos (Good news!).\")\n", + " return None\n", + "\n", + " logger.info(f\" 🔍 Atributos protegidos detectados para auditoría: {atributos_protegidos}\")\n", + "\n", + " # 3. Motor de Análisis por Subgrupos\n", + " resultados_fairness = []\n", + "\n", + " for atributo in atributos_protegidos:\n", + " grupos = X_test[atributo].unique()\n", + "\n", + " # Si la variable es continua (ej. edad numérica) o tiene muchos grupos, la saltamos para el reporte simple\n", + " if len(grupos) > 5:\n", + " logger.info(f\" ⏭️ Saltando '{atributo}' (Demasiados valores únicos para un reporte categórico claro).\")\n", + " continue\n", + "\n", + " for grupo in grupos:\n", + " mascara = (X_test[atributo] == grupo)\n", + " n_grupo = mascara.sum()\n", + "\n", + " # Métricas Base\n", + " y_verdadero_grupo = y_test[mascara]\n", + " y_pred_grupo = preds_finales[mascara]\n", + "\n", + " # Demographic Parity (Selection Rate): % del grupo que fue clasificado como Clase 1\n", + " tasa_seleccion = y_pred_grupo.mean()\n", + "\n", + " # Equal Opportunity (True Positive Rate / Recall): De los que son Clase 1, ¿cuántos atrapó?\n", + " tasa_oportunidad = recall_score(y_verdadero_grupo, y_pred_grupo, zero_division=0)\n", + "\n", + " resultados_fairness.append({\n", + " 'Atributo': atributo,\n", + " 'Subgrupo': grupo,\n", + " 'Tamaño (N)': n_grupo,\n", + " 'Selection Rate (Demographic Parity)': tasa_seleccion,\n", + " 'Recall (Equal Opportunity)': tasa_oportunidad\n", + " })\n", + "\n", + " if not resultados_fairness:\n", + " logger.info(\" ✅ [BYPASS] Análisis completado sin subgrupos categóricos viables.\")\n", + " return None\n", + "\n", + " df_fairness = pd.DataFrame(resultados_fairness)\n", + "\n", + " # ==========================================\n", + " # 4. Renderizado Inteligente UI (El Veredicto Legal)\n", + " # ==========================================\n", + " logger.info(\" 📊 Generando Diagnóstico de Equidad...\")\n", + " sns.set_theme(style=\"whitegrid\")\n", + "\n", + " atributos_validos = df_fairness['Atributo'].unique()\n", + " fig, axes = plt.subplots(len(atributos_validos), 2, figsize=(14, 5 * len(atributos_validos)))\n", + "\n", + " # Manejo de dimensiones si solo hay 1 atributo\n", + " if len(atributos_validos) == 1:\n", + " axes = [axes]\n", + "\n", + " for i, atributo in enumerate(atributos_validos):\n", + " data_attr = df_fairness[df_fairness['Atributo'] == atributo]\n", + "\n", + " # Gráfico 1: Demographic Parity (Tasa de Aprobación Global)\n", + " sns.barplot(data=data_attr, x='Subgrupo', y='Selection Rate (Demographic Parity)', ax=axes[i][0], palette=\"Blues_d\")\n", + " axes[i][0].set_title(f\"Demographic Parity por {atributo}\", fontsize=12)\n", + " axes[i][0].set_ylim(0, 1.0)\n", + " axes[i][0].set_ylabel(\"Tasa de Predicción Positiva (>50K)\")\n", + "\n", + " # Gráfico 2: Equal Opportunity (Tasa de Verdaderos Positivos)\n", + " sns.barplot(data=data_attr, x='Subgrupo', y='Recall (Equal Opportunity)', ax=axes[i][1], palette=\"Greens_d\")\n", + " axes[i][1].set_title(f\"Equal Opportunity por {atributo}\", fontsize=12)\n", + " axes[i][1].set_ylim(0, 1.0)\n", + " axes[i][1].set_ylabel(\"Recall (Acierto en ricos reales)\")\n", + "\n", + " # 5. Evaluación de la Regla Legal (Four-Fifths Rule)\n", + " tasas_seleccion = data_attr['Selection Rate (Demographic Parity)'].values\n", + " if len(tasas_seleccion) >= 2:\n", + " max_tasa = tasas_seleccion.max()\n", + " min_tasa = tasas_seleccion.min()\n", + " disparate_impact_ratio = min_tasa / (max_tasa + 1e-9)\n", + "\n", + " color_alerta = \"🔴 RIESGO LEGAL\" if disparate_impact_ratio < 0.8 else \"🟢 APROBADO\"\n", + "\n", + " axes[i][0].text(0.5, 0.85, f\"Disparate Impact Ratio: {disparate_impact_ratio:.2f}\\n{color_alerta}\", \n", + " horizontalalignment='center', verticalalignment='center', transform=axes[i][0].transAxes,\n", + " bbox=dict(facecolor='white', alpha=0.9, edgecolor='gray'))\n", + "\n", + " plt.tight_layout()\n", + " \n", + " # 🛡️ Aplicación de la Cláusula de Seguridad Visual\n", + " if MODO_VISUAL:\n", + " plt.show()\n", + " # Consola MLOps (Interactiva)\n", + " display(Markdown(\"### 📋 Veredicto de Justicia Algorítmica\"))\n", + " display(df_fairness.style.format({\n", + " 'Selection Rate (Demographic Parity)': \"{:.2%}\",\n", + " 'Recall (Equal Opportunity)': \"{:.2%}\"\n", + " }).background_gradient(cmap='viridis', subset=['Selection Rate (Demographic Parity)', 'Recall (Equal Opportunity)']))\n", + " else:\n", + " plt.close(fig)\n", + " # Consola MLOps (Texto Plano)\n", + " logger.info(\"\\n### 📋 Veredicto de Justicia Algorítmica\")\n", + " logger.info(\"\\n\" + df_fairness.to_string())\n", + "\n", + " logger.info(\"\\n 💡 NOTA DEL ARQUITECTO: Si hay diferencias extremas, no es culpa del algoritmo.\")\n", + " logger.info(\" ↳ Se debe a 'Sampling Bias' (sesgo histórico en los datos). En ciberseguridad, esto equivaldría a un 'Domain Shift'.\")\n", + " logger.info(f\"\\n⏱️ Auditoría completada en {time.time() - inicio_timer:.3f}s\")\n", + "\n", + " return df_fairness\n", + "\n", + "# ==========================================\n", + "# Celda de Ejecución Maestra en tu .ipynb (VÍA MANAGER)\n", + "# ==========================================\n", + "try:\n", + " # 🚀 FIX ARQUITECTÓNICO: Validación estricta del Manager\n", + " try:\n", + " _ = manager\n", + " except NameError:\n", + " raise EnvironmentError(\"El PipelineManager no está inicializado. Instáncialo en la línea 1 (Fase 1.1).\")\n", + "\n", + " if getattr(manager, 'X_test', None) is None or getattr(manager, 'y_test', None) is None:\n", + " raise ValueError(\"El Manager no tiene cargadas las matrices de Test ('X_test' o 'y_test').\")\n", + "\n", + " if not hasattr(manager, 'modelos_preprocesamiento'):\n", + " raise ValueError(\"La caja fuerte de modelos no existe en el Manager.\")\n", + "\n", + " if 'oraculo_calibrado' in manager.modelos_preprocesamiento:\n", + " modelo_final = manager.modelos_preprocesamiento['oraculo_calibrado']\n", + " logger.info(\">>> 🧠 UTILIZANDO ORÁCULO CALIBRADO <<<\")\n", + " elif 'oraculo_lightgbm' in manager.modelos_preprocesamiento:\n", + " modelo_final = manager.modelos_preprocesamiento['oraculo_lightgbm']\n", + " logger.warning(\">>> ⚠️ UTILIZANDO ORÁCULO CRUDO (NO SE DETECTÓ CALIBRACIÓN) <<<\")\n", + " else:\n", + " raise ValueError(\"No se encontró ningún modelo ('oraculo_calibrado' u 'oraculo_lightgbm') en la caja fuerte.\")\n", + "\n", + " if not hasattr(manager, 'artefactos') or 'umbral_decision' not in manager.artefactos:\n", + " raise ValueError(\"El 'umbral_decision' no existe en los artefactos. Ejecuta la Fase 19.3.\")\n", + "\n", + " umbral_final = manager.artefactos['umbral_decision']\n", + "\n", + " logger.info(f\"\\n>>> ⚖️ INICIANDO AUDITORÍA LEGAL (Umbral Activo: {umbral_final:.4f}) <<<\")\n", + " logger.info(\"-\" * 80)\n", + "\n", + " # Disparamos el Auditor Legal\n", + " reporte_fairness = auditoria_justicia_mlops(\n", + " modelo_calibrado=modelo_final,\n", + " umbral_oro=umbral_final,\n", + " X_test=manager.X_test,\n", + " y_test=manager.y_test\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"⚠️ Dependencia faltante:\\n{env_err}\")\n", + "except Exception as e:\n", + " logger.error(f\"🛑 Error en la Auditoría de Justicia: {e}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iniciando construccion del artefacto de despliegue...\n", + "=== FASE 20: Ensamblando la maquina de inferencia definitiva ===\n", + " Ejecutando prueba de integridad previa a la exportacion...\n", + " Validacion superada. Predicciones de prueba: ['<=50K' '<=50K' '<=50K']\n", + " Archivo generado en mlops_activos\\pipeline_produccion.pkl (6.16 MB).\n", + " Manifest generado en mlops_activos\\model_manifest.json\n", + " joblib.load('pipeline_produccion.pkl').predict(df_json)\n", + "\n", + "Ensamblaje completado en 0.928s\n" + ] + } + ], + "source": [ + "# ==========================================\n", + "# 0. Blindaje de Dependencias y Telemetria\n", + "# ==========================================\n", + "import json\n", + "import logging\n", + "import time\n", + "from pathlib import Path\n", + "from typing import Dict\n", + "\n", + "import joblib\n", + "import pandas as pd\n", + "\n", + "from app.ml.custom_transformers import PipelineProduccionMLOps\n", + "\n", + "logger = logging.getLogger(\"MLOps_Pipeline\")\n", + "\n", + "\n", + "def asegurar_directorio_salida(directorio_salida: str) -> Path:\n", + " ruta_salida = Path(directorio_salida)\n", + " ruta_salida.mkdir(parents=True, exist_ok=True)\n", + " return ruta_salida\n", + "\n", + "\n", + "def obtener_artefactos_serializables(manager_obj) -> Dict:\n", + " if hasattr(manager_obj, 'obtener_artefactos_serializables'):\n", + " return manager_obj.obtener_artefactos_serializables()\n", + "\n", + " return {\n", + " **getattr(manager_obj, 'artefactos_preprocesamiento', {}),\n", + " **getattr(manager_obj, 'artefactos', {}),\n", + " }\n", + "\n", + "\n", + "def obtener_modelos_serializables(manager_obj) -> Dict:\n", + " if hasattr(manager_obj, 'obtener_modelos_serializables'):\n", + " return manager_obj.obtener_modelos_serializables()\n", + "\n", + " return dict(getattr(manager_obj, 'modelos_preprocesamiento', {}))\n", + "\n", + "\n", + "def validar_manager_para_exportacion(manager_obj, modelos: Dict) -> None:\n", + " if manager_obj is None:\n", + " raise ValueError('El PipelineManager es nulo.')\n", + "\n", + " if not modelos:\n", + " raise ValueError('No se detectaron modelos serializables en el PipelineManager.')\n", + "\n", + " if {'oraculo_calibrado', 'oraculo_lightgbm'}.isdisjoint(modelos):\n", + " raise ValueError('No se encontro el modelo final del oraculo para exportacion.')\n", + "\n", + "\n", + "def construir_muestra_request(manager_obj, filas: int = 3) -> pd.DataFrame:\n", + " ruta_dataset = Path('adult.csv')\n", + " target_name = getattr(manager_obj, 'rutas', {}).get('target_name', 'income')\n", + "\n", + " if ruta_dataset.exists():\n", + " muestra = pd.read_csv(ruta_dataset, sep=';').head(filas)\n", + " muestra = PipelineProduccionMLOps._normalize_input_frame(muestra)\n", + " if target_name in muestra.columns:\n", + " return muestra.drop(columns=[target_name])\n", + " return muestra\n", + "\n", + " X_test = getattr(manager_obj, 'X_test', None)\n", + " if X_test is None or X_test.empty:\n", + " raise ValueError('No existe una muestra valida para probar el pipeline antes de exportarlo.')\n", + "\n", + " return X_test.head(filas).copy()\n", + "\n", + "\n", + "def validar_pipeline_exportado(pipeline_api: PipelineProduccionMLOps, manager_obj) -> None:\n", + " muestra_request = construir_muestra_request(manager_obj)\n", + " predicciones = pipeline_api.predict(muestra_request)\n", + " probabilidades = pipeline_api.predict_proba(muestra_request)\n", + "\n", + " if len(predicciones) == 0:\n", + " raise RuntimeError('La validacion del pipeline no genero predicciones.')\n", + "\n", + " if len(probabilidades) == 0:\n", + " raise RuntimeError('La validacion del pipeline no genero probabilidades.')\n", + "\n", + " logger.info(' Validacion superada. Predicciones de prueba: %s', predicciones)\n", + "\n", + "\n", + "def construir_model_manifest(pipeline_api: PipelineProduccionMLOps, ruta_exportacion: Path, manager_obj) -> Dict:\n", + " expected_features = []\n", + " if hasattr(pipeline_api, '_get_training_feature_names'):\n", + " expected_features = list(pipeline_api._get_training_feature_names())\n", + "\n", + " return {\n", + " 'artifact_name': ruta_exportacion.name,\n", + " 'artifact_path': str(ruta_exportacion),\n", + " 'model_version': getattr(pipeline_api, 'version', 'unknown'),\n", + " 'threshold': float(getattr(pipeline_api, 'umbral_oro', 0.5)),\n", + " 'target_name': getattr(manager_obj, 'rutas', {}).get('target_name', 'income'),\n", + " 'class_labels': ['<=50K', '>50K'],\n", + " 'expected_features': expected_features,\n", + " }\n", + "\n", + "\n", + "def construir_y_exportar_pipeline_produccion(manager_obj, directorio_salida: str = 'mlops_activos') -> Path:\n", + " logger.info('=== FASE 20: Ensamblando la maquina de inferencia definitiva ===')\n", + " inicio_timer = time.time()\n", + "\n", + " ruta_salida = asegurar_directorio_salida(directorio_salida)\n", + " rutas = getattr(manager_obj, 'rutas', {})\n", + " artefactos = obtener_artefactos_serializables(manager_obj)\n", + " modelos = obtener_modelos_serializables(manager_obj)\n", + " validar_manager_para_exportacion(manager_obj, modelos)\n", + "\n", + " pipeline_api = PipelineProduccionMLOps(rutas=rutas, artefactos=artefactos, modelos=modelos)\n", + " if hasattr(pipeline_api, '_infer_missing_artefacts'):\n", + " pipeline_api._infer_missing_artefacts()\n", + "\n", + " logger.info(' Ejecutando prueba de integridad previa a la exportacion...')\n", + " validar_pipeline_exportado(pipeline_api, manager_obj)\n", + "\n", + " ruta_exportacion = ruta_salida / 'pipeline_produccion.pkl'\n", + " joblib.dump(pipeline_api, ruta_exportacion, compress=3)\n", + "\n", + " manifest = construir_model_manifest(pipeline_api, ruta_exportacion, manager_obj)\n", + " ruta_manifest = ruta_salida / 'model_manifest.json'\n", + " ruta_manifest.write_text(json.dumps(manifest, indent=2, ensure_ascii=False), encoding='utf-8')\n", + "\n", + " tamano_mb = ruta_exportacion.stat().st_size / (1024 * 1024)\n", + " logger.info(' Archivo generado en %s (%.2f MB).', ruta_exportacion, tamano_mb)\n", + " logger.info(' Manifest generado en %s', ruta_manifest)\n", + " logger.info(\" joblib.load('pipeline_produccion.pkl').predict(df_json)\")\n", + " logger.info(f\"\\nEnsamblaje completado en {time.time() - inicio_timer:.3f}s\")\n", + " return ruta_exportacion\n", + "\n", + "\n", + "try:\n", + " try:\n", + " _ = manager\n", + " except NameError as exc:\n", + " raise EnvironmentError('El PipelineManager no esta inicializado.') from exc\n", + "\n", + " logger.info('Iniciando construccion del artefacto de despliegue...')\n", + " construir_y_exportar_pipeline_produccion(\n", + " manager_obj=manager,\n", + " directorio_salida='mlops_activos',\n", + " )\n", + "\n", + "except EnvironmentError as env_err:\n", + " logger.error(f\"Dependencia faltante:\\n{env_err}\")\n", + "except Exception as exc:\n", + " logger.error(f\"Error critico en el ensamblador de produccion: {exc}\")\n" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "kernelspec": { + "display_name": "adult", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.14.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/README.md b/README.md index 22008865f6e12b391a82fe3ed77ec7db879961a9..af7b6a6649b80415f72d85144d3a59855d77ab23 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,330 @@ --- -title: Oraculo Api -emoji: 🏆 -colorFrom: indigo -colorTo: gray +title: Oraculo Adult Income API +emoji: 🚀 +colorFrom: green +colorTo: blue sdk: docker +app_port: 7860 +base_path: /docs pinned: false -license: mit --- -Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference +# Oraculo Adult Income API + +API REST profesional para inferencia del dataset Adult Census Income, reconstruida con enfoque de clean code, seguridad por capas, pruebas agresivas y contrato estable entre notebook y producción. + +## Objetivo + +Esta API resuelve tres problemas reales del proyecto: + +1. Exponer inferencia de modelo con un contrato HTTP limpio, autenticado y auditable. +2. Blindar el salto entre `EDA_For_All_Tree_clean.ipynb` y el artefacto `pipeline_produccion.pkl`. +3. Dejar una base escalable para crecer a más endpoints, más usuarios y despliegue en Render. + +## Stack elegido + +Tecnologías aplicadas en la implementación final: + +- `FastAPI`: framework principal, OpenAPI/Swagger, validación HTTP y alto rendimiento. +- `Python`: lenguaje base del servicio, notebook y pipeline. +- `Pydantic v2`: DTOs, validaciones estrictas, aliases y contratos de entrada/salida. +- `SQLAlchemy 2.0`: ORM principal y capa de persistencia. +- `Alembic`: migraciones versionadas de base de datos. +- `SQLite` por defecto y `PostgreSQL` listo por `DATABASE_URL`: desarrollo local y despliegue escalable. +- `JWT + bcrypt`: autenticación stateless y hashing de contraseñas. +- `Swagger/OpenAPI`: documentación viva de endpoints. +- `Pytest + TestClient`: pruebas HTTP, seguridad, errores y dominio. +- `Uvicorn`: servidor ASGI para local y producción. +- `Starlette middlewares`: CORS, GZip, Trusted Hosts, request id, límites de payload, rate limiting básico. +- `joblib + LightGBM/sklearn pipeline`: artefacto de inferencia. + +Tecnología no seleccionada deliberadamente: + +- `SQLModel`: no se usó en esta versión porque superpone responsabilidades con SQLAlchemy + Pydantic. Para este nivel de control y separación entre ORM y DTOs, SQLAlchemy 2.0 fue una mejor decisión. + +Tecnologías adicionales que faltaban en la lista original y sí son importantes: + +- `pydantic-settings` para configuración por entorno. +- `bcrypt` para hashing directo y estable. +- `httpx/TestClient` para pruebas HTTP. +- `Request ID / security headers / rate limiting` para endurecimiento operativo. + +## Arquitectura + +La API quedó organizada por capas: + +- `app/main.py`: app factory, lifespan, middlewares y bootstrap. +- `app/api/`: routers, versionado y dependencias. +- `app/core/`: configuración, seguridad, middleware, logging, errores. +- `app/db/`: base ORM, sesión, modelos, repositorios, seeds. +- `app/services/`: reglas de negocio. +- `app/ml/`: carga del artefacto y contrato con el pipeline. +- `app/schemas/`: DTOs HTTP. +- `alembic/`: migraciones. +- `tests/`: pruebas HTTP, seguridad, esquemas y modelo. + +## Funcionalidades incluidas + +- Registro y login con JWT. +- Endpoint autenticado de predicción. +- Historial de predicciones por usuario. +- Consulta puntual por `prediction_id`. +- Health checks `live` y `ready`. +- Seeds de administrador por variables de entorno. +- Manejador de errores unificado. +- Headers de seguridad y request id. +- Protección por tamaño máximo de payload. +- Rate limiting in-memory. +- Compatibilidad con el artefacto actual del modelo. + +## Endpoints + +### Salud + +- `GET /` +- `GET /api/v1/health/live` +- `GET /api/v1/health/ready` + +### Autenticación + +- `POST /api/v1/auth/register` +- `POST /api/v1/auth/login` +- `GET /api/v1/auth/me` + +### Predicciones + +- `POST /api/v1/predictions` +- `GET /api/v1/predictions` +- `GET /api/v1/predictions/{prediction_id}` + +## Seguridad aplicada + +### OWASP / API hardening + +- JWT firmado y validado. +- Contraseñas hasheadas con `bcrypt`. +- DTOs con `extra="forbid"` para bloquear campos sorpresa. +- Validación fuerte de tipos, rangos y longitudes. +- `TrustedHostMiddleware` para rechazar hosts no permitidos. +- Headers de seguridad (`CSP`, `X-Frame-Options`, `nosniff`, `Cache-Control`). +- Límite de tamaño de payload. +- Rate limiting básico por IP. +- Errores controlados sin exponer stacktrace al cliente. +- Persistencia auditada de cada predicción. + +### Vulnerabilidades orientadas a LLM + +Tu lista incluía amenazas como `many-shot jailbreaking`, `indirect prompt injection`, `context hijacking`, `context poisoning`, `lost in the middle` y `context overflow`. + +Punto importante: + +- Esta API no expone un endpoint LLM conversacional, así que esas amenazas no aplican de forma directa al plano HTTP actual. +- Sí aplican al notebook y a cualquier automatización futura que use prompts, agentes o generación asistida. + +Mitigaciones prácticas adoptadas o recomendadas: + +- Tratar todo texto externo como entrada no confiable. +- No ejecutar prompts del usuario dentro del backend de inferencia. +- Mantener separación entre features del modelo y texto libre. +- Exportar el artefacto desde el notebook con validación previa. +- Generar `model_manifest.json` junto con el `.pkl` para trazabilidad. +- Evitar que la API acepte instrucciones ejecutables o plantillas arbitrarias. + +## Contrato Notebook -> API + +El notebook limpio `EDA_For_All_Tree_clean.ipynb` quedó orientado a producción: + +- Exporta `pipeline_produccion.pkl`. +- Valida el pipeline con una muestra real antes de serializar. +- Genera `model_manifest.json`. +- Reúne artefactos serializables y modelos de forma explícita. + +El backend, a través de `ModelManager` y `PipelineProduccionMLOps`, puede: + +- Cargar el artefacto. +- Reconstruir artefactos faltantes si el notebook exportó algo incompleto. +- Leer el `model_manifest.json` cuando exista. + +## Base de datos + +Entidades incluidas: + +- `users` +- `prediction_logs` + +Persistencia incluida: + +- usuarios autenticados +- historial de predicciones +- payload original +- payload normalizado +- request id +- latencia +- versión del modelo +- hash del payload + +## Migraciones Alembic + +Inicialización incluida: + +- `alembic.ini` +- `alembic/env.py` +- migración inicial `initial_api_schema` + +Comandos útiles: + +```bash +alembic upgrade head +alembic revision --autogenerate -m "descripcion" +alembic downgrade -1 +``` + +## Seeds + +Si defines: + +- `ORACULO_SEED_ADMIN_EMAIL` +- `ORACULO_SEED_ADMIN_PASSWORD` +- `ORACULO_AUTO_SEED_ADMIN=true` + +la aplicación crea un administrador por bootstrap si no existe. + +## Configuración + +Variables principales: + +- `ORACULO_DATABASE_URL` +- `ORACULO_MODEL_PATH` +- `ORACULO_JWT_SECRET_KEY` +- `ORACULO_ALLOWED_HOSTS` +- `ORACULO_CORS_ALLOW_ORIGINS` +- `ORACULO_RATE_LIMIT_REQUESTS` +- `ORACULO_RATE_LIMIT_WINDOW_SECONDS` +- `ORACULO_MAX_REQUEST_SIZE_BYTES` + +Toma como base el archivo `.env.example`. + +## Ejecución local + +```bash +python -m venv venv +venv\Scripts\activate +pip install -r requirements.txt +alembic upgrade head +uvicorn app.main:app --reload +``` + +Swagger: + +- `http://127.0.0.1:8000/docs` + +## Tests + +La suite prueba: + +- esquemas +- autenticación +- autorización +- predicción +- historial +- aislamiento de datos entre usuarios +- health checks +- middlewares de seguridad +- payload demasiado grande +- rate limit +- modelo real (`pipeline_produccion.pkl`) + +Ejecución: + +```bash +venv\Scripts\pytest -q +``` + +Estado actual de la suite: + +- `33 passed` + +## Despliegue en Render + +Recomendación: + +1. Subir el proyecto con `requirements.txt`. +2. Configurar `Start Command`: + +```bash +alembic upgrade head && uvicorn app.main:app --host 0.0.0.0 --port $PORT +``` + +3. Definir variables de entorno: + +- `ORACULO_ENVIRONMENT=production` +- `ORACULO_DATABASE_URL=` +- `ORACULO_JWT_SECRET_KEY=` +- `ORACULO_ALLOWED_HOSTS=` +- `ORACULO_DOCS_ENABLED=false` + +4. Subir `pipeline_produccion.pkl` y, cuando exista, `model_manifest.json`. + +## Despliegue en Hugging Face Spaces + +Este repositorio ya quedó preparado para un `Docker Space`. + +Archivos listos para eso: + +- `Dockerfile` +- `.dockerignore` +- front matter de Spaces al inicio de este `README.md` + +Pasos: + +1. Crea un nuevo Space en Hugging Face. +2. Selecciona `Docker` como SDK. +3. Sube este proyecto completo. +4. En `Settings > Variables and secrets`, configura como mínimo: + +- `ORACULO_JWT_SECRET_KEY` +- `ORACULO_SEED_ADMIN_EMAIL` +- `ORACULO_SEED_ADMIN_PASSWORD` +- `ORACULO_ALLOWED_HOSTS` + +5. Si quieres persistencia real para SQLite, usa almacenamiento persistente y define: + +```bash +ORACULO_DATABASE_URL=sqlite:////data/oraculo.db +``` + +Si no activas almacenamiento persistente, la base será efímera y se reiniciará con el Space. + +Notas importantes para Spaces: + +- Swagger abrirá en `/docs` porque el Space usa `base_path: /docs`. +- El contenedor escucha en `7860`, que es el puerto esperado por el Space. +- Si quieres ocultar Swagger más adelante, cambia `ORACULO_DOCS_ENABLED=false`. +- El modelo `pipeline_produccion.pkl`, `adult.csv` y el código backend deben permanecer en el repositorio o en el contexto del contenedor. + +## Qué falta para una versión todavía más dura + +Si quieres llevarla más arriba todavía, las siguientes mejoras son naturales: + +- rate limiting distribuido con Redis +- refresh tokens +- roles más finos (`admin`, `analyst`, `service`) +- observabilidad con Prometheus / OpenTelemetry +- CI con lint, type-check y cobertura +- separación formal entre API pública e interna +- Postgres nativo en desarrollo + +## Resumen ejecutivo + +Esta versión ya no es una API improvisada alrededor de un notebook. Ahora tienes una base con: + +- arquitectura limpia +- autenticación +- persistencia +- auditoría +- migraciones +- seguridad razonable +- tests HTTP exhaustivos +- contrato más sano entre notebook y producción + +Es una base seria para seguir construyendo. diff --git a/adult.csv b/adult.csv new file mode 100644 index 0000000000000000000000000000000000000000..8bd6c93b2622ce445af19db8b59eb7fa6fc85e2b --- /dev/null +++ b/adult.csv @@ -0,0 +1,32562 @@ +age;workclass;fnlwgt;education;education.num;marital.status;occupation;relationship;race;sex;capital.gain;capital.loss;hours.per.week;native.country;income +90;?;77053;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;4356;40;United-States;<=50 K +82;Private;132870;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;4356;18;United-States;<=50K +66;?;186061;Some-college;10;Widowed;?;Unmarried;Black;Female;0;4356;40;United-States; <=50K +54;Private;140359;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;White;Female;0;3900;40;United-States;<=50K +41;Private;264663;Some-college;10;Separated;Prof-specialty;Own-child;White;Female;0;3900;40;United-States;<=50K +34;Private;216864;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;3770;45;United-States;<=50K +38;Private;150601;10th;6;Separated;Adm-clerical;Unmarried;White;Male;0;3770;40;United-States;<=50K +74;State-gov;88638;Doctorate;16;Never-married;Prof-specialty;Other-relative;White;Female;0;3683;20;United-States;> 50 K +68;Federal-gov;422013;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;3683;40;United-States;<=50K +41;Private;70037;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;3004;60;?;>50K +45;Private;172274;Doctorate;16;Divorced;Prof-specialty;Unmarried;Black;Female;0;3004;35;United-States;>50K +38;Self-emp-not-inc;164526;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;2824;45;United-States;>50K +52;Private;129177;Bachelors;13;Widowed;Other-service;Not-in-family;White;Female;0;2824;20;United-States;>50K +32;Private;136204;Masters;14;Separated;Exec-managerial;Not-in-family;White;Male;0;2824;55;United-States;>50K +51;?;172175;Doctorate;16;Never-married;?;Not-in-family;White;Male;0;2824;40;United-States;>50K +46;Private;45363;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;2824;40;United-States;>50K +45;Private;172822;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;2824;76;United-States;>50K +57;Private;317847;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;2824;50;United-States;>50K +22;Private;119592;Assoc-acdm;12;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;2824;40;?;>50K +34;Private;203034;Bachelors;13;Separated;Sales;Not-in-family;White;Male;0;2824;50;United-States;>50K +37;Private;188774;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;2824;40;United-States;>50K +29;Private;77009;11th;7;Separated;Sales;Not-in-family;White;Female;0;2754;42;United-States;<=50K +61;Private;29059;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;2754;25;United-States;<=50K +51;Private;153870;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2603;40;United-States;<=50K +61;?;135285;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;2603;32;United-States;<=50K +21;Private;34310;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2603;40;United-States;<=50K +33;Private;228696;1st-4th;2;Married-civ-spouse;Craft-repair;Not-in-family;White;Male;0;2603;32;Mexico;<=50K +49;Private;122066;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;2603;40;Greece;<=50K +37;Self-emp-inc;107164;10th;6;Never-married;Transport-moving;Not-in-family;White;Male;0;2559;50;United-States;>50K +38;Private;175360;10th;6;Never-married;Prof-specialty;Not-in-family;White;Male;0;2559;90;United-States;>50K +23;Private;44064;Some-college;10;Separated;Other-service;Not-in-family;White;Male;0;2559;40;United-States;>50K +59;Self-emp-inc;107287;10th;6;Widowed;Exec-managerial;Unmarried;White;Female;0;2559;50;United-States;>50K +52;Private;198863;Prof-school;15;Divorced;Exec-managerial;Not-in-family;White;Male;0;2559;60;United-States;>50K +51;Private;123011;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;2559;50;United-States;>50K +60;Self-emp-not-inc;205246;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Male;0;2559;50;United-States;>50K +63;Federal-gov;39181;Doctorate;16;Divorced;Exec-managerial;Not-in-family;White;Female;0;2559;60;United-States;>50K +53;Private;149650;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;2559;48;United-States;>50K +51;Private;197163;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;2559;50;United-States;>50K +37;Self-emp-not-inc;137527;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;2559;60;United-States;>50K +54;Private;161691;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;2559;40;United-States;>50K +44;Private;326232;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;2547;50;United-States;>50K +43;Private;115806;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;2547;40;United-States;>50K +51;Private;115066;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;2547;40;United-States;>50K +43;Private;289669;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;2547;40;United-States;>50K +71;?;100820;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;2489;15;United-States;<=50K +48;Private;121253;Bachelors;13;Married-spouse-absent;Sales;Unmarried;White;Female;0;2472;70;United-States;>50K +71;Private;110380;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;2467;52;United-States;<=50K +73;Self-emp-not-inc;233882;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;2457;40;Vietnam;<=50K +68;?;192052;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;2457;40;United-States;<=50K +67;?;174995;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;2457;40;United-States;<=50K +40;Self-emp-not-inc;335549;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;2444;45;United-States;>50K +50;Private;237729;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;2444;72;United-States;>50K +51;State-gov;68898;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Male;0;2444;39;United-States;>50K +42;Private;107276;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;2444;40;United-States;>50K +39;Private;141584;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;2444;45;United-States;>50K +32;Private;207668;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Male;0;2444;50;United-States;>50K +53;Private;313243;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;2444;45;United-States;>50K +40;Local-gov;147372;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;2444;40;United-States;>50K +38;Private;237608;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;2444;45;United-States;>50K +33;Private;194901;Assoc-voc;11;Separated;Craft-repair;Not-in-family;White;Male;0;2444;42;United-States;>50K +43;Private;155106;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;2444;70;United-States;>50K +50;Self-emp-inc;121441;11th;7;Never-married;Exec-managerial;Other-relative;White;Male;0;2444;40;United-States;>50K +44;Private;162028;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;2415;6;United-States;>50K +51;Self-emp-not-inc;160724;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;2415;40;China;>50K +41;Private;132222;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;40;United-States;>50K +60;Self-emp-inc;226355;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;2415;70;?;>50K +37;Private;329980;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;60;United-States;>50K +55;Self-emp-inc;124137;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;35;Greece;>50K +39;Self-emp-inc;329980;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;2415;60;United-States;>50K +42;Self-emp-inc;187702;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;60;United-States;>50K +49;Private;199029;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;2415;55;United-States;>50K +47;Self-emp-not-inc;145290;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;50;United-States;>50K +41;Local-gov;297248;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;45;United-States;>50K +55;Self-emp-inc;227856;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;50;United-States;>50K +39;Private;179731;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;2415;65;United-States;>50K +42;Private;154374;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;60;United-States;>50K +41;?;27187;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;2415;12;United-States;>50K +46;Private;326857;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;2415;65;United-States;>50K +40;Private;160369;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;45;United-States;>50K +32;Private;396745;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;48;United-States;>50K +41;Self-emp-inc;151089;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;55;United-States;>50K +60;Self-emp-inc;336188;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;80;United-States;>50K +31;Private;279015;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;70;Taiwan;>50K +58;Self-emp-not-inc;43221;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2415;40;United-States;>50K +37;Self-emp-inc;30529;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;2415;50;United-States;>50K +44;Self-emp-not-inc;201742;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;50;United-States;>50K +39;Self-emp-not-inc;218490;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;50;?;>50K +43;Federal-gov;156996;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;2415;55;?;>50K +55;Self-emp-inc;298449;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;50;United-States;>50K +44;Self-emp-inc;191712;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;55;United-States;>50K +39;Private;198654;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;2415;67;India;>50K +46;Self-emp-not-inc;102308;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;2415;40;United-States;>50K +39;Private;348521;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2415;99;United-States;>50K +62;Self-emp-inc;56248;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2415;60;United-States;>50K +31;Self-emp-not-inc;252752;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;2415;40;United-States;>50K +46;Private;192963;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;2415;35;Philippines;>50K +46;Self-emp-not-inc;198759;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;80;United-States;>50K +39;Self-emp-inc;143123;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2415;40;United-States;>50K +39;Private;237713;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;2415;99;United-States;>50K +59;Private;81929;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;45;United-States;>50K +50;Self-emp-inc;167793;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;60;United-States;>50K +46;Private;456062;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;55;United-States;>50K +53;Self-emp-not-inc;105478;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;40;United-States;>50K +50;Self-emp-not-inc;42402;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;30;United-States;>50K +41;Self-emp-inc;114580;Prof-school;15;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;2415;55;United-States;>50K +36;Private;346478;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;2415;45;United-States;>50K +38;Private;187870;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;90;United-States;>50K +54;Private;35576;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;2415;50;United-States;>50K +50;Private;102346;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;2415;20;United-States;>50K +47;Private;148995;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2415;60;United-States;>50K +47;Self-emp-inc;102308;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2415;45;United-States;>50K +67;Private;105252;Bachelors;13;Widowed;Exec-managerial;Not-in-family;White;Male;0;2392;40;United-States;>50K +67;Self-emp-inc;106175;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2392;75;United-States;>50K +72;Self-emp-not-inc;52138;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2392;25;United-States;>50K +72;?;118902;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;2392;6;United-States;>50K +46;Self-emp-inc;191978;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2392;50;United-States;>50K +78;Self-emp-inc;188044;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2392;40;United-States;>50K +71;Self-emp-inc;66624;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2392;60;United-States;>50K +83;Self-emp-inc;153183;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2392;55;United-States;>50K +68;Private;211287;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2392;40;United-States;>50K +26;Private;181655;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;2377;45;United-States;<=50K +68;State-gov;235882;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2377;60;United-States;>50K +49;Self-emp-inc;158685;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;2377;40;United-States;>50K +36;Private;370767;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2377;60;United-States;<=50K +70;Self-emp-not-inc;155141;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2377;12;United-States;>50K +27;Private;156516;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;2377;20;United-States;<=50K +35;Local-gov;177305;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2377;40;United-States;<=50K +23;Private;162945;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;2377;40;United-States;<=50K +81;Private;177408;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2377;26;United-States;>50K +66;Self-emp-not-inc;427422;Doctorate;16;Married-civ-spouse;Sales;Husband;White;Male;0;2377;25;United-States;>50K +71;Private;152307;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2377;45;United-States;>50K +68;Private;218637;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;2377;55;United-States;>50K +68;State-gov;202699;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2377;42;?;>50K +65;?;240857;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;2377;40;United-States;>50K +52;Private;222405;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;2377;40;United-States;<=50K +40;Self-emp-inc;110862;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2377;50;United-States;<=50K +68;?;257269;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;2377;35;United-States;>50K +21;Private;377931;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2377;48;United-States;<=50K +35;Private;192923;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2377;40;United-States;<=50K +70;Self-emp-inc;207938;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2377;50;United-States;>50K +61;Self-emp-not-inc;36671;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2352;50;United-States;<=50K +65;Self-emp-inc;81413;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2352;65;United-States;<=50K +46;Private;214955;5th-6th;3;Divorced;Craft-repair;Not-in-family;White;Female;0;2339;45;United-States;<=50K +26;Local-gov;166295;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;2339;55;United-States;<=50K +59;Local-gov;147707;HS-grad;9;Widowed;Farming-fishing;Unmarried;White;Male;0;2339;40;United-States;<=50K +61;Private;43554;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;2339;40;United-States;<=50K +60;State-gov;358893;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;2339;40;United-States;<=50K +49;Self-emp-inc;141058;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;2339;50;United-States;<=50K +34;Private;25322;Bachelors;13;Married-spouse-absent;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;2339;40;?;<=50K +25;Private;77071;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;2339;35;United-States;<=50K +55;Private;158702;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;2339;45;?;<=50K +59;Local-gov;171328;HS-grad;9;Separated;Protective-serv;Other-relative;Black;Female;0;2339;40;United-States;<=50K +28;State-gov;381789;Some-college;10;Separated;Exec-managerial;Own-child;White;Male;0;2339;40;United-States;<=50K +43;?;152569;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;2339;36;United-States;<=50K +56;Self-emp-not-inc;346635;Masters;14;Divorced;Sales;Unmarried;White;Female;0;2339;60;United-States;<=50K +41;Private;162140;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;2339;40;United-States;<=50K +42;Private;191765;HS-grad;9;Never-married;Adm-clerical;Other-relative;Black;Female;0;2339;40;Trinadad&Tobago;<=50K +28;Private;251905;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;2339;40;Canada;<=50K +40;Self-emp-not-inc;33310;Prof-school;15;Divorced;Other-service;Not-in-family;White;Female;0;2339;35;United-States;<=50K +69;Private;228921;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Male;0;2282;40;United-States;>50K +66;Local-gov;36364;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2267;40;United-States;<=50K +69;Private;124930;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;2267;40;United-States;<=50K +55;Local-gov;176046;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;2267;40;United-States;<=50K +57;Federal-gov;370890;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;2258;40;United-States;<=50K +20;Self-emp-not-inc;157145;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;2258;10;United-States;<=50K +33;Private;288825;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;2258;84;United-States;<=50K +30;Self-emp-not-inc;257295;Some-college;10;Never-married;Sales;Other-relative;Asian-Pac-Islander;Male;0;2258;40;South;<=50K +40;Private;287983;Bachelors;13;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Female;0;2258;48;Philippines;<=50K +38;Private;101978;Some-college;10;Separated;Machine-op-inspct;Not-in-family;White;Male;0;2258;55;United-States;>50K +46;State-gov;192779;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Male;0;2258;38;United-States;>50K +29;Private;135296;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;2258;45;United-States;>50K +57;Federal-gov;199114;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;2258;40;United-States;<=50K +39;Private;156897;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;2258;42;United-States;>50K +47;Private;138107;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;2258;40;United-States;>50K +26;Private;279833;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;2258;45;United-States;>50K +27;Self-emp-not-inc;208577;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;2258;50;United-States;<=50K +23;Private;102942;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;2258;40;United-States;>50K +34;Private;36385;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;2258;50;United-States;<=50K +33;Private;176185;12th;8;Divorced;Craft-repair;Not-in-family;White;Male;0;2258;42;United-States;<=50K +38;Local-gov;162613;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;2258;60;United-States;<=50K +57;Private;121362;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;2258;38;United-States;>50K +36;Private;145933;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;2258;70;United-States;<=50K +44;Federal-gov;29591;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Male;0;2258;40;United-States;>50K +49;State-gov;269417;Doctorate;16;Never-married;Exec-managerial;Not-in-family;White;Female;0;2258;50;United-States;>50K +44;Self-emp-inc;178510;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;2258;60;United-States;<=50K +55;Private;41108;Some-college;10;Widowed;Farming-fishing;Not-in-family;White;Male;0;2258;62;United-States;>50K +45;Private;187901;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;2258;44;United-States;>50K +48;Private;175070;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;2258;40;United-States;>50K +31;Private;263561;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2246;45;United-States;>50K +55;Local-gov;99131;HS-grad;9;Married-civ-spouse;Prof-specialty;Other-relative;White;Female;0;2246;40;United-States;>50K +70;Self-emp-not-inc;143833;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2246;40;United-States;>50K +70;Self-emp-not-inc;124449;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2246;8;United-States;>50K +73;Private;336007;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2246;40;United-States;>50K +72;Self-emp-not-inc;285408;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2246;28;United-States;>50K +31;Private;327825;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;2238;40;United-States;<=50K +28;Private;129460;10th;6;Widowed;Adm-clerical;Unmarried;White;Female;0;2238;35;United-States;<=50K +23;Self-emp-not-inc;258298;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;2231;40;United-States;>50K +49;Local-gov;102359;9th;5;Widowed;Handlers-cleaners;Unmarried;White;Male;0;2231;40;United-States;>50K +27;Local-gov;92431;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;2231;40;United-States;>50K +90;Private;51744;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;2206;40;United-States;<=50K +68;Private;166149;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;2206;30;United-States;<=50K +65;Private;149811;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;2206;59;Canada;<=50K +65;?;143118;HS-grad;9;Widowed;?;Unmarried;White;Female;0;2206;10;United-States;<=50K +67;Private;118363;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;2206;5;United-States;<=50K +66;Local-gov;362165;Bachelors;13;Widowed;Prof-specialty;Not-in-family;Black;Female;0;2206;25;United-States;<=50K +24;Private;379066;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;2205;24;United-States;<=50K +44;Self-emp-not-inc;171424;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;2205;35;United-States;<=50K +35;Private;108293;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;2205;40;United-States;<=50K +20;Private;107801;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;2205;18;United-States;<=50K +38;Private;126675;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;2205;40;United-States;<=50K +39;Private;155603;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;2205;40;United-States;<=50K +32;Private;27882;Some-college;10;Never-married;Machine-op-inspct;Other-relative;White;Female;0;2205;40;Holand-Netherlands;<=50K +42;Private;242564;7th-8th;4;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;2205;40;United-States;<=50K +63;?;234083;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;2205;40;United-States;<=50K +42;Self-emp-inc;23510;Masters;14;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Male;0;2201;60;India;>50K +64;Private;181232;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2179;40;United-States;<=50K +28;Private;166481;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;Other;Male;0;2179;40;Puerto-Rico;<=50K +41;Self-emp-inc;139916;Assoc-voc;11;Married-civ-spouse;Sales;Husband;Other;Male;0;2179;84;Mexico;<=50K +41;Self-emp-not-inc;144594;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2179;40;United-States;<=50K +58;Self-emp-not-inc;266707;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2179;18;United-States;<=50K +59;State-gov;303176;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2179;40;United-States;<=50K +34;Self-emp-not-inc;56460;HS-grad;9;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;2179;12;United-States;<=50K +45;Private;167523;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2179;45;United-States;<=50K +29;Private;119004;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;2179;40;United-States;<=50K +47;Private;175925;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;2179;52;United-States;<=50K +40;Private;212847;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;2179;40;United-States;<=50K +47;Self-emp-not-inc;191175;5th-6th;3;Married-civ-spouse;Sales;Husband;White;Male;0;2179;50;Mexico;<=50K +63;?;83043;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;2179;45;United-States;<=50K +41;Self-emp-not-inc;170214;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;2179;40;United-States;<=50K +34;Private;180714;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;2179;40;United-States;<=50K +66;?;177351;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;2174;40;United-States;>50K +65;Self-emp-not-inc;111483;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2174;10;United-States;>50K +70;Private;282642;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;2174;40;United-States;>50K +75;Self-emp-not-inc;309955;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2174;50;United-States;>50K +65;State-gov;215908;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;2174;40;United-States;>50K +65;Federal-gov;23494;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;2174;40;United-States;>50K +73;Private;147551;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2174;50;United-States;>50K +60;?;141221;Bachelors;13;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;2163;25;South;<=50K +68;Self-emp-not-inc;116903;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2149;40;United-States;<=50K +74;Self-emp-not-inc;119129;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;2149;20;United-States;<=50K +43;Private;143582;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;2129;72;?;<=50K +19;Self-emp-not-inc;342384;11th;7;Married-civ-spouse;Craft-repair;Own-child;White;Male;0;2129;55;United-States;<=50K +37;Self-emp-not-inc;68899;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2129;40;United-States;<=50K +45;Federal-gov;207107;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;Asian-Pac-Islander;Male;0;2080;40;Philippines;<=50K +64;Private;149044;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;2057;60;China;<=50K +30;Private;148524;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2057;40;United-States;<=50K +51;Self-emp-not-inc;268639;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;2057;60;Canada;<=50K +35;Private;272019;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2057;40;United-States;<=50K +29;Private;239753;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;2057;20;United-States;<=50K +34;Private;199864;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;2057;40;United-States;<=50K +41;Private;125831;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;60;United-States;<=50K +35;Private;67728;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;45;United-States;<=50K +26;Private;115717;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;2051;40;United-States;<=50K +54;Private;172281;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2051;50;United-States;<=50K +52;Local-gov;305053;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;40;United-States;<=50K +50;Self-emp-not-inc;105010;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2051;20;United-States;<=50K +31;Private;291052;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;2051;40;United-States;<=50K +38;Federal-gov;248919;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2051;40;United-States;<=50K +30;Private;84119;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;40;United-States;<=50K +34;Local-gov;105540;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2051;40;United-States;<=50K +31;Private;161765;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;2051;57;United-States;<=50K +52;Private;195635;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;2051;38;United-States;<=50K +54;Private;816750;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;40;United-States;<=50K +38;Private;160192;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;44;United-States;<=50K +39;Private;136081;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;2051;40;United-States;<=50K +29;Private;244473;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;2051;40;United-States;<=50K +45;Private;187033;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;40;United-States;<=50K +34;Private;265807;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2051;55;United-States;<=50K +38;Private;154410;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;40;Poland;<=50K +39;Private;314007;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;40;United-States;<=50K +61;Private;179743;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2051;20;United-States;<=50K +43;Private;117037;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2042;40;United-States;<=50K +35;Private;40135;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;2042;40;United-States;<=50K +46;Private;315423;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;2042;50;United-States;<=50K +38;Private;35429;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;2042;40;United-States;<=50K +42;Self-emp-not-inc;120837;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2042;48;United-States;<=50K +34;Private;90614;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;2042;10;United-States;<=50K +29;Private;202878;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;2042;40;United-States;<=50K +32;Private;260954;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2042;30;United-States;<=50K +60;Private;127084;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;2042;34;United-States;<=50K +49;Local-gov;107231;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2002;40;United-States;<=50K +53;Local-gov;135102;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;2002;45;United-States;<=50K +56;Private;201822;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;2002;40;United-States;<=50K +48;Private;413363;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2002;40;United-States;<=50K +32;Federal-gov;148138;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;2002;40;Iran;<=50K +42;Self-emp-not-inc;170721;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2002;40;United-States;<=50K +32;Private;102858;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2002;42;United-States;<=50K +28;Local-gov;175262;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;2002;40;England;<=50K +26;Private;36936;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2002;40;United-States;<=50K +59;Private;169982;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2002;50;United-States;<=50K +47;Self-emp-not-inc;208407;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2002;30;United-States;<=50K +26;?;131777;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;2002;40;United-States;<=50K +41;Private;41090;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;2002;60;United-States;<=50K +36;Private;183739;HS-grad;9;Married-civ-spouse;Craft-repair;Own-child;White;Female;0;2002;40;United-States;<=50K +45;Private;357540;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;2002;55;United-States;<=50K +30;Private;48520;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;2002;40;United-States;<=50K +36;Private;107916;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2002;40;United-States;<=50K +34;Self-emp-inc;198613;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;2002;40;United-States;<=50K +53;Private;283743;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2002;40;United-States;<=50K +51;Private;210940;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;2002;45;United-States;<=50K +47;Self-emp-not-inc;355978;Doctorate;16;Married-civ-spouse;Transport-moving;Husband;White;Male;0;2002;45;United-States;<=50K +19;?;241616;HS-grad;9;Never-married;?;Unmarried;White;Male;0;2001;40;United-States;<=50K +30;Private;57651;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;2001;42;United-States;<=50K +20;Private;315877;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;2001;40;United-States;<=50K +42;Federal-gov;74680;Masters;14;Divorced;Adm-clerical;Not-in-family;White;Male;0;2001;60;United-States;<=50K +31;Private;454508;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;2001;40;United-States;<=50K +33;Private;202046;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;2001;40;United-States;<=50K +25;Private;121102;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;2001;30;United-States;<=50K +20;Private;146879;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;2001;40;United-States;<=50K +23;Private;213955;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;2001;40;United-States;<=50K +55;?;123382;HS-grad;9;Separated;?;Not-in-family;Black;Female;0;2001;40;United-States;<=50K +41;Self-emp-not-inc;277783;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;2001;50;United-States;<=50K +54;Self-emp-not-inc;199741;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Male;0;2001;35;United-States;<=50K +25;Private;378322;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;2001;50;United-States;<=50K +19;Private;264390;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;2001;40;United-States;<=50K +24;Private;210029;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;2001;37;United-States;<=50K +56;Federal-gov;61885;Bachelors;13;Never-married;Transport-moving;Not-in-family;Black;Male;0;2001;65;United-States;<=50K +21;Local-gov;102942;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;2001;40;United-States;<=50K +34;Private;209297;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;2001;40;United-States;<=50K +19;Private;198459;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;2001;40;United-States;<=50K +21;?;40052;Some-college;10;Never-married;?;Not-in-family;White;Male;0;2001;45;United-States;<=50K +48;Private;93476;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;2001;40;United-States;<=50K +34;Private;174789;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;2001;40;United-States;<=50K +31;Private;189759;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;2001;40;United-States;<=50K +36;Private;297847;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;2001;40;United-States;<=50K +27;Private;124953;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;1980;40;United-States;<=50K +27;Private;116358;Some-college;10;Never-married;Craft-repair;Own-child;Asian-Pac-Islander;Male;0;1980;40;Philippines;<=50K +35;Private;187119;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;1980;65;United-States;<=50K +31;Self-emp-not-inc;161745;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;1980;60;United-States;<=50K +27;Federal-gov;469705;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;1980;40;United-States;<=50K +28;Local-gov;304960;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;1980;40;United-States;<=50K +42;Private;175935;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;1980;46;United-States;<=50K +44;Private;355728;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Male;0;1980;45;England;<=50K +41;Private;53956;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;1980;56;United-States;<=50K +28;Private;184723;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;1980;35;United-States;<=50K +41;Federal-gov;185616;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;1980;40;United-States;<=50K +35;Private;54595;10th;6;Widowed;Other-service;Not-in-family;Black;Female;0;1980;40;United-States;<=50K +58;Private;126104;Masters;14;Divorced;Adm-clerical;Not-in-family;White;Female;0;1980;45;United-States;<=50K +40;Private;139193;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;1980;48;United-States;<=50K +31;Private;184306;Assoc-voc;11;Never-married;Transport-moving;Own-child;White;Male;0;1980;60;United-States;<=50K +30;Private;207301;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;1980;40;United-States;<=50K +32;Private;199529;Some-college;10;Separated;Tech-support;Not-in-family;Amer-Indian-Eskimo;Male;0;1980;40;United-States;<=50K +25;Private;111058;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;1980;40;United-States;<=50K +34;Private;198103;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;1980;40;United-States;<=50K +56;Private;34626;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;1980;40;United-States;<=50K +45;Private;100651;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;1980;40;United-States;<=50K +50;Private;104501;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;1980;40;United-States;<=50K +27;Private;132805;10th;6;Never-married;Sales;Other-relative;White;Male;0;1980;40;United-States;<=50K +51;Private;96062;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1977;40;United-States;>50K +40;Private;207578;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;60;United-States;>50K +41;Private;445382;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;65;United-States;>50K +49;Private;192776;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +37;Private;22463;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;40;United-States;>50K +36;Self-emp-inc;108293;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1977;45;United-States;>50K +35;Private;199352;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;80;United-States;>50K +29;Self-emp-inc;260729;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;1977;25;United-States;>50K +50;Private;133963;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;40;United-States;>50K +46;Private;129007;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1977;40;United-States;>50K +44;Self-emp-not-inc;179557;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +42;Local-gov;111252;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +38;Federal-gov;338320;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +45;Private;192835;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;55;United-States;>50K +43;Local-gov;147328;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;United-States;>50K +47;Self-emp-inc;139268;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;60;United-States;>50K +58;Self-emp-inc;349910;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +48;Private;331482;Prof-school;15;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;40;United-States;>50K +42;Local-gov;245307;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;48;United-States;>50K +55;Private;153484;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +51;Private;252903;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;1977;40;United-States;>50K +32;Private;295589;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1977;40;United-States;>50K +45;Local-gov;160472;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +56;Private;192869;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;44;United-States;>50K +38;Private;234901;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;United-States;>50K +45;Private;33300;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;1977;50;United-States;>50K +49;Private;101825;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;40;United-States;>50K +36;Private;183612;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +49;Private;185041;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +30;Private;315640;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1977;40;China;>50K +42;Self-emp-inc;123838;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +55;Private;31905;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +34;Private;181091;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +54;Private;88278;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +42;Self-emp-not-inc;323790;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;70;United-States;>50K +25;Local-gov;90730;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +55;Self-emp-inc;138594;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +58;State-gov;194068;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +62;Private;218009;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1977;60;United-States;>50K +43;Self-emp-inc;221172;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +57;Local-gov;174132;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;1977;40;United-States;>50K +42;Self-emp-inc;277256;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;60;United-States;>50K +63;Self-emp-not-inc;35021;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1977;32;China;>50K +47;Self-emp-not-inc;213668;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +37;Private;99146;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +40;Private;209547;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1977;60;United-States;>50K +43;Private;118308;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +43;State-gov;33331;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;70;United-States;>50K +41;Self-emp-not-inc;200574;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;60;United-States;>50K +32;Private;204374;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;60;United-States;>50K +47;Private;189680;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1977;40;United-States;>50K +39;Federal-gov;175232;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1977;60;United-States;>50K +53;Private;193720;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +34;Private;189759;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +36;Private;32776;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +47;Local-gov;285060;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;41;United-States;>50K +52;Private;23780;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +40;Self-emp-not-inc;284706;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;1977;60;United-States;>50K +42;Self-emp-inc;130126;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +51;Private;102615;Masters;14;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1977;40;United-States;>50K +55;Private;208311;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;20;United-States;>50K +38;Private;111499;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1977;99;United-States;>50K +52;Private;139671;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +60;Federal-gov;165630;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;40;United-States;>50K +55;Private;124808;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;Germany;>50K +47;Local-gov;29819;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1977;50;United-States;>50K +46;Private;102771;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;40;United-States;>50K +35;Private;86648;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;45;United-States;>50K +59;Self-emp-inc;223215;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +57;Private;437727;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;45;United-States;>50K +46;Private;167515;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +46;Federal-gov;213140;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +52;Private;168553;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;40;United-States;>50K +45;Private;363677;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;30;United-States;>50K +37;Private;241998;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;40;United-States;>50K +46;Private;337050;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +44;Private;157249;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;1977;50;United-States;>50K +45;Private;84298;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +43;Private;55213;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1977;52;United-States;>50K +54;Local-gov;185846;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +50;Private;150999;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +51;Private;199688;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;?;>50K +45;Private;225456;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +36;Private;192939;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;60;United-States;>50K +27;Private;183627;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +36;Private;189404;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1977;35;United-States;>50K +53;Private;152810;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;55;United-States;>50K +51;Local-gov;123011;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;35;United-States;>50K +28;Private;114158;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;24;United-States;>50K +47;Self-emp-not-inc;228660;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;40;United-States;>50K +45;Private;233511;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;United-States;>50K +45;Local-gov;159816;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;35;United-States;>50K +39;Self-emp-not-inc;202027;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +39;Private;218490;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +55;Self-emp-not-inc;248841;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +62;Private;71751;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;98;United-States;>50K +49;Private;137192;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;1977;50;South;>50K +53;Self-emp-not-inc;100109;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +31;Private;183043;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;48;United-States;>50K +42;Self-emp-inc;188738;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;Italy;>50K +39;Private;201410;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1977;45;Philippines;>50K +60;Self-emp-not-inc;282066;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;45;United-States;>50K +26;Private;291968;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;40;United-States;>50K +37;Private;126569;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +45;State-gov;103406;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;United-States;>50K +37;Private;109133;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;1977;45;United-States;>50K +32;Private;195602;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1977;45;United-States;>50K +39;Self-emp-inc;135500;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;40;United-States;>50K +58;Self-emp-not-inc;147653;10th;6;Married-civ-spouse;Craft-repair;Wife;White;Female;0;1977;35;?;>50K +45;Private;145636;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;43;United-States;>50K +41;Private;137126;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;45;United-States;>50K +36;Self-emp-not-inc;36270;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1977;65;United-States;>50K +51;State-gov;285747;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;60;United-States;>50K +39;Private;80324;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;62;United-States;>50K +56;Self-emp-not-inc;94156;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +53;Federal-gov;271544;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;1977;40;United-States;>50K +40;Self-emp-not-inc;175943;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;15;United-States;>50K +57;Private;141570;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1977;40;United-States;>50K +50;Local-gov;124963;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;35;United-States;>50K +34;Private;112115;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;55;United-States;>50K +35;Private;99357;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1977;30;United-States;>50K +30;Self-emp-not-inc;404062;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;15;United-States;>50K +53;Local-gov;200190;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;55;United-States;>50K +31;State-gov;207505;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;70;United-States;>50K +37;Private;135436;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;United-States;>50K +34;Private;345705;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1977;50;United-States;>50K +36;Private;126675;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +40;Private;107433;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +51;Private;230858;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;60;United-States;>50K +33;Private;133503;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1977;45;United-States;>50K +40;Private;46990;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;20;United-States;>50K +50;Self-emp-inc;201689;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;63;?;>50K +46;Self-emp-inc;216414;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;1977;60;United-States;>50K +54;Private;182314;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +39;Private;134367;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;24;United-States;>50K +54;Self-emp-inc;206964;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1977;40;United-States;>50K +31;Private;147284;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;99;United-States;>50K +51;Private;172046;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +55;Private;175942;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;55;?;>50K +36;Private;145576;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1977;40;Japan;>50K +41;Self-emp-inc;93227;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;1977;60;Taiwan;>50K +56;Self-emp-not-inc;48102;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1977;50;United-States;>50K +38;Private;172538;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;40;United-States;>50K +47;Private;239865;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1977;45;United-States;>50K +39;Local-gov;180686;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;45;United-States;>50K +59;Private;170104;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +54;Private;511668;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;43;United-States;>50K +54;Self-emp-not-inc;109418;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1977;35;United-States;>50K +31;Private;110643;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;55;United-States;>50K +59;Self-emp-inc;122390;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;48;United-States;>50K +46;Private;261059;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +57;Private;140426;Doctorate;16;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;40;Germany;>50K +36;Private;386726;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;44;United-States;>50K +44;Private;340885;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1977;40;United-States;>50K +33;Private;149184;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +54;Private;308087;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;1977;18;United-States;>50K +55;Private;368797;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;United-States;>50K +36;Private;218689;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;1977;50;United-States;>50K +49;Local-gov;298445;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;60;United-States;>50K +41;Private;347653;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;50;United-States;>50K +40;Private;320451;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1977;45;Hong;>50K +43;Private;170730;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +39;Local-gov;344855;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1977;20;United-States;>50K +26;?;370727;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;1977;40;United-States;>50K +48;Private;109814;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;45;United-States;>50K +43;Private;409922;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;50;United-States;>50K +42;Self-emp-inc;191196;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1977;60;?;>50K +36;Private;237943;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1977;45;United-States;>50K +39;Private;49020;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;1974;40;United-States;<=50K +21;Private;109414;Some-college;10;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;1974;40;United-States;<=50K +23;Private;275818;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;1974;40;United-States;<=50K +47;Private;133758;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;1974;40;United-States;<=50K +30;Private;43953;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;1974;40;United-States;<=50K +35;Private;147258;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;1974;40;United-States;<=50K +26;Private;58098;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;1974;40;United-States;<=50K +26;Private;215384;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1974;55;United-States;<=50K +41;Local-gov;33068;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;1974;40;United-States;<=50K +30;Local-gov;145692;Some-college;10;Never-married;Protective-serv;Not-in-family;Black;Male;0;1974;40;United-States;<=50K +28;Private;111696;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;1974;40;United-States;<=50K +56;Private;105281;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;1974;40;United-States;<=50K +35;Private;200445;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;1974;40;United-States;<=50K +34;Private;258666;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;1974;40;United-States;<=50K +29;Private;214702;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1974;35;United-States;<=50K +23;Private;188545;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;1974;20;United-States;<=50K +24;Federal-gov;210736;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;1974;40;United-States;<=50K +62;Private;81116;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;1974;40;United-States;<=50K +77;Self-emp-not-inc;71676;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;1944;1;United-States;<=50K +47;Private;51835;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;60;Honduras;>50K +48;Self-emp-not-inc;191277;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;60;United-States;>50K +42;Self-emp-not-inc;214242;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +31;Private;118710;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;1902;40;United-States;>50K +43;Private;274363;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;England;>50K +50;Private;168212;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;65;United-States;>50K +36;Private;156667;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +49;Local-gov;193960;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +38;Private;132879;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +48;State-gov;55863;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;46;United-States;>50K +46;Private;265266;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +56;Self-emp-not-inc;145574;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;1902;60;United-States;>50K +37;Private;188540;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;45;United-States;>50K +51;Private;415287;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;1902;40;United-States;>50K +43;Private;201723;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +46;Local-gov;36228;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;<=50K +42;Local-gov;121718;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;60;United-States;>50K +45;Private;26522;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1902;35;United-States;>50K +23;Private;196827;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1902;40;United-States;<=50K +45;Private;246891;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +30;State-gov;199539;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;40;United-States;<=50K +49;State-gov;133917;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;1902;60;?;>50K +49;Private;101320;Assoc-acdm;12;Married-civ-spouse;Sales;Wife;White;Female;0;1902;40;United-States;>50K +57;Private;98350;Prof-school;15;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;1902;40;Philippines;>50K +42;Self-emp-not-inc;157562;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1902;80;United-States;>50K +43;Local-gov;105862;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1902;40;United-States;>50K +43;Private;336513;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +42;Private;378384;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;60;United-States;>50K +53;Private;104501;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;55;United-States;>50K +40;Local-gov;244522;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;48;United-States;>50K +46;Private;324655;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;1902;40;?;>50K +41;Private;84610;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;60;United-States;>50K +49;Private;329603;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +31;Self-emp-not-inc;348038;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;Puerto-Rico;>50K +34;Private;299635;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +40;Federal-gov;298635;Masters;14;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;1902;40;Philippines;>50K +50;Private;184424;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1902;38;United-States;>50K +54;Private;86837;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;1902;40;United-States;>50K +49;Private;142287;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;50;United-States;>50K +44;Self-emp-not-inc;402397;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1902;60;United-States;>50K +57;Local-gov;118481;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +28;Local-gov;250135;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;55;United-States;<=50K +57;Private;20953;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +59;Private;348430;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;43;United-States;>50K +38;Private;169926;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1902;40;United-States;>50K +36;Self-emp-not-inc;283122;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1902;60;United-States;>50K +55;Private;323706;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +34;Self-emp-not-inc;77209;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;60;United-States;>50K +51;Private;337195;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1902;50;United-States;>50K +46;Private;377401;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1902;70;Canada;>50K +33;Private;111567;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;45;Germany;>50K +31;State-gov;181824;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;35;United-States;>50K +31;Private;37546;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1902;35;United-States;>50K +59;Self-emp-not-inc;325732;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;52;United-States;>50K +48;Private;194772;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +33;Private;112115;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;45;United-States;>50K +46;Private;459189;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;50;United-States;>50K +53;Private;608184;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1902;40;United-States;>50K +39;Private;165215;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;18;United-States;>50K +44;Self-emp-not-inc;124692;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +45;Private;360393;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +42;Local-gov;188291;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1902;40;United-States;>50K +24;Self-emp-not-inc;322931;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1902;40;United-States;>50K +57;Private;173832;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +51;Local-gov;176751;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +50;Private;320510;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +50;Private;162327;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;50;?;>50K +52;Private;108435;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;Greece;>50K +46;Self-emp-inc;328216;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;42;?;>50K +44;Private;68729;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;1902;40;United-States;>50K +47;Self-emp-inc;192894;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;45;United-States;>50K +36;Private;206951;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;45;United-States;>50K +34;Private;164190;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;38;United-States;>50K +49;Private;148549;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +45;Private;198223;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;45;United-States;>50K +46;Private;172581;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +53;Self-emp-inc;96062;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;48;United-States;>50K +63;State-gov;194682;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +52;Private;143953;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +44;Private;286750;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1902;40;United-States;>50K +37;Private;200374;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +44;State-gov;136546;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +53;Private;139671;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +32;Private;175856;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;1902;40;United-States;>50K +50;State-gov;289207;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;45;United-States;>50K +42;Federal-gov;108183;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1902;40;South;>50K +50;Private;138179;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +33;Private;236396;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;55;United-States;>50K +50;Local-gov;168672;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;40;United-States;>50K +32;Private;127610;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;32;United-States;>50K +41;Private;287306;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +54;Private;167770;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;55;United-States;>50K +34;Private;277314;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;Black;Male;0;1902;50;United-States;>50K +41;Self-emp-inc;140365;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;55;United-States;>50K +39;Self-emp-inc;239755;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +42;Federal-gov;52781;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +31;Private;201122;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;45;United-States;>50K +45;Private;341995;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;42;United-States;>50K +41;Private;106900;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;1902;42;United-States;>50K +48;Private;140782;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1902;38;United-States;>50K +32;Self-emp-inc;161153;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1902;55;United-States;>50K +41;Private;267252;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;1902;40;United-States;>50K +31;Self-emp-not-inc;325355;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1902;40;United-States;>50K +30;Self-emp-inc;173858;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;1902;40;South;>50K +41;Private;352812;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1902;40;United-States;>50K +48;Private;109832;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +60;State-gov;234854;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +38;Self-emp-not-inc;93206;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;1902;65;United-States;>50K +46;Private;147640;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;1902;40;United-States;<=50K +28;Private;147560;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1902;55;United-States;>50K +64;Self-emp-inc;59145;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;60;United-States;>50K +31;?;85077;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;1902;20;United-States;>50K +42;Private;145711;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +43;Private;112181;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;1902;32;United-States;>50K +61;Self-emp-inc;139391;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1902;35;United-States;>50K +48;Private;143098;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1902;40;China;>50K +46;Local-gov;114160;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;45;United-States;>50K +44;Private;325461;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +39;Federal-gov;30916;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +46;Self-emp-not-inc;131091;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +48;Private;276664;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +27;Private;160786;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +22;Federal-gov;32950;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1902;37;United-States;<=50K +51;Federal-gov;163671;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;<=50K +48;State-gov;31141;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1902;40;United-States;>50K +52;Private;144361;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +31;Self-emp-not-inc;182177;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +53;Private;95469;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;40;United-States;>50K +51;Private;22211;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;60;United-States;>50K +46;Local-gov;398986;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;52;United-States;>50K +25;Private;253267;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;1902;36;United-States;>50K +46;Private;403911;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;1902;40;United-States;>50K +57;Self-emp-inc;199768;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;30;United-States;>50K +44;Private;151089;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +42;Private;344624;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1902;50;United-States;>50K +42;Private;172297;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;40;United-States;>50K +30;Private;159187;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;55;United-States;>50K +54;State-gov;103179;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +46;Self-emp-not-inc;168195;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;45;United-States;>50K +33;Private;154981;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;50;United-States;>50K +38;Private;159179;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +50;Private;168212;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;45;United-States;>50K +46;Private;155659;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +41;Self-emp-not-inc;186909;Masters;14;Married-civ-spouse;Sales;Wife;White;Female;0;1902;35;United-States;>50K +56;Private;193453;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;65;United-States;>50K +39;Private;284166;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +46;Self-emp-not-inc;353012;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +48;Local-gov;273402;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1902;40;United-States;<=50K +35;Private;161637;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1902;40;Taiwan;>50K +56;Private;189975;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;60;United-States;>50K +49;Self-emp-inc;213140;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;60;United-States;>50K +61;State-gov;186451;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +43;Private;113324;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +37;Private;193855;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;50;United-States;<=50K +43;Private;196545;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1902;40;United-States;>50K +41;Private;37869;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +61;?;202106;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;1902;40;United-States;>50K +30;Private;167309;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;40;United-States;>50K +58;Private;100313;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1902;40;United-States;>50K +40;Private;146908;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +44;State-gov;193524;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +40;Private;153238;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;32;United-States;>50K +58;Private;225394;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;<=50K +48;Self-emp-not-inc;353012;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +49;Private;165953;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1902;40;United-States;<=50K +50;Private;134766;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +43;Private;125461;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;55;United-States;>50K +53;Private;48343;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1902;40;United-States;>50K +42;Private;146659;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;50;United-States;>50K +56;Self-emp-inc;208809;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +44;Private;35910;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;56;United-States;>50K +29;Private;46442;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1902;50;United-States;>50K +35;Private;139364;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +44;Private;277647;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +34;Federal-gov;190228;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1902;48;United-States;>50K +42;Private;198341;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1902;55;India;>50K +43;Private;110970;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +57;Private;64960;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;45;United-States;<=50K +50;?;204577;Bachelors;13;Married-civ-spouse;?;Husband;Black;Male;0;1902;60;United-States;>50K +45;Private;47314;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;?;>50K +32;Private;108116;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;60;United-States;>50K +33;Private;59083;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1902;45;United-States;>50K +43;Self-emp-not-inc;101534;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;15;United-States;>50K +32;Private;156464;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;50;United-States;>50K +36;Private;531055;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;48;United-States;>50K +50;Self-emp-not-inc;371305;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;60;United-States;>50K +27;Private;141545;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1902;45;United-States;<=50K +60;Private;162347;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +53;Private;110977;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;50;United-States;>50K +61;State-gov;379885;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;40;United-States;>50K +32;Private;194740;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +52;Self-emp-inc;230767;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;60;Cuba;>50K +37;Private;298539;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;55;United-States;>50K +33;Private;51471;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;1902;40;United-States;>50K +57;Self-emp-not-inc;413373;Doctorate;16;Married-civ-spouse;Sales;Husband;White;Male;0;1902;40;United-States;>50K +43;Private;266324;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;99;United-States;>50K +50;Private;102615;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1902;40;United-States;>50K +43;Private;254146;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;40;United-States;>50K +45;Private;265097;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;1902;40;United-States;>50K +37;Self-emp-not-inc;162834;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1902;45;United-States;>50K +31;Private;183801;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1902;43;United-States;>50K +33;Private;191335;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1902;50;United-States;>50K +56;Self-emp-not-inc;335605;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;1887;50;Canada;>50K +43;Private;187728;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1887;50;United-States;>50K +28;?;123147;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;1887;40;United-States;>50K +52;Private;25826;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;47;United-States;>50K +38;Private;189623;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +40;Local-gov;289403;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;1887;40;?;>50K +57;Private;173796;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;40;United-States;>50K +41;Private;122381;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;50;United-States;>50K +37;Private;171150;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +42;Private;213821;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +44;Private;146659;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;35;United-States;>50K +39;Private;77146;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +53;Federal-gov;173093;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;1887;40;Philippines;>50K +51;Private;191659;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;65;United-States;>50K +38;Private;278924;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +43;Local-gov;96102;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;40;United-States;>50K +33;Self-emp-inc;117963;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;60;United-States;>50K +43;Private;293305;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +35;Private;152909;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;45;United-States;>50K +41;Private;221947;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +45;Private;120131;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +59;Private;168569;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;40;United-States;>50K +30;Local-gov;226443;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;45;United-States;>50K +32;State-gov;182556;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;45;United-States;>50K +39;Federal-gov;99146;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;60;United-States;>50K +43;Self-emp-not-inc;396758;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1887;70;United-States;>50K +32;Private;116539;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;55;United-States;>50K +39;Local-gov;177907;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;40;United-States;>50K +37;Local-gov;218184;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +34;Private;182274;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1887;40;United-States;>50K +46;Private;114032;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;1887;45;United-States;>50K +51;Local-gov;146325;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +29;Private;81648;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1887;55;United-States;>50K +34;Private;195136;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1887;40;United-States;>50K +50;Private;285200;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;35;United-States;>50K +34;Private;207668;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1887;40;United-States;>50K +58;Private;222247;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;40;United-States;>50K +56;Self-emp-not-inc;162130;5th-6th;3;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;67;United-States;>50K +34;Self-emp-not-inc;234960;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;1887;48;United-States;>50K +36;Local-gov;410034;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +46;Private;54985;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;40;United-States;>50K +35;Private;200117;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;1887;50;?;>50K +50;Self-emp-not-inc;312477;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +27;Self-emp-inc;120126;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;45;United-States;>50K +32;Private;185027;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;Ireland;>50K +44;Self-emp-inc;151089;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;70;United-States;>50K +39;Private;355468;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1887;46;United-States;>50K +33;Private;34748;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1887;20;United-States;>50K +59;Federal-gov;117299;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +59;Private;530099;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;55;United-States;>50K +51;State-gov;155594;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +37;Private;167735;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +57;Private;169329;HS-grad;9;Married-civ-spouse;Tech-support;Husband;Black;Male;0;1887;40;Trinadad&Tobago;>50K +25;Private;203871;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1887;40;United-States;>50K +54;Private;163671;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;65;United-States;>50K +47;Local-gov;162187;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;40;United-States;>50K +52;State-gov;254285;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;70;Germany;>50K +40;Private;104196;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +27;Private;31659;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;60;United-States;>50K +31;Private;467579;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1887;40;United-States;>50K +41;Self-emp-inc;223671;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1887;55;United-States;>50K +41;Private;174575;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;45;United-States;>50K +50;Private;150876;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1887;55;United-States;>50K +36;Private;99146;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;40;United-States;>50K +27;Private;169117;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;1887;40;United-States;>50K +46;Private;190115;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +61;Self-emp-not-inc;215591;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +39;Local-gov;132879;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +47;Private;168232;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;45;United-States;>50K +45;Private;168262;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;40;United-States;>50K +55;State-gov;153451;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;1887;40;United-States;>50K +38;Self-emp-not-inc;43712;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;45;United-States;>50K +57;Private;314153;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1887;55;United-States;>50K +38;Self-emp-not-inc;122493;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +28;Private;51461;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1887;40;United-States;>50K +40;Private;187802;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1887;40;United-States;>50K +36;Private;174938;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;50;United-States;>50K +36;Private;180667;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;60;United-States;>50K +30;Self-emp-not-inc;146161;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +35;Private;401930;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1887;42;United-States;>50K +32;Self-emp-not-inc;410615;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;60;United-States;>50K +55;Private;193130;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1887;40;United-States;>50K +29;Private;383745;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;30;United-States;>50K +37;Self-emp-inc;183800;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +36;Private;86459;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +42;?;212206;Masters;14;Married-civ-spouse;?;Wife;White;Female;0;1887;48;United-States;>50K +40;State-gov;174283;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;50;United-States;>50K +26;Private;164488;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +44;Private;151089;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;60;United-States;>50K +47;Private;284871;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +35;Private;185556;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +58;Private;34788;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +41;Self-emp-inc;125831;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1887;55;United-States;>50K +41;Private;194360;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +38;Local-gov;286405;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +47;Self-emp-not-inc;122307;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +39;Private;176296;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;1887;40;United-States;>50K +42;Private;173704;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1887;50;United-States;>50K +42;Private;212894;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1887;40;United-States;>50K +37;Private;292855;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1887;35;United-States;>50K +41;Private;214242;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +51;Private;110747;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +50;Private;128143;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;50;United-States;>50K +43;Private;184321;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;1887;40;United-States;>50K +28;Private;141957;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;1887;70;United-States;>50K +35;Self-emp-inc;111319;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;1887;45;United-States;>50K +59;Private;100313;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +28;Private;138692;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +42;Self-emp-not-inc;185129;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +51;Private;162238;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;47;United-States;>50K +54;Private;215990;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;44;United-States;>50K +45;Private;102771;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +38;Local-gov;172855;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;1887;40;United-States;>50K +46;Federal-gov;344415;Masters;14;Married-civ-spouse;Armed-Forces;Husband;White;Male;0;1887;40;United-States;>50K +33;Local-gov;182971;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;40;United-States;>50K +36;Private;272944;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +36;Local-gov;52532;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;50;United-States;>50K +61;Federal-gov;229062;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1887;40;United-States;>50K +30;Self-emp-inc;127651;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;48;United-States;>50K +50;Private;213290;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1887;36;United-States;>50K +58;Private;314092;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;48;United-States;>50K +43;Private;266439;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;40;United-States;>50K +40;Private;119101;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;68;United-States;>50K +55;Federal-gov;238192;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;1887;40;United-States;>50K +52;Private;159755;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +44;Self-emp-not-inc;343190;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;55;United-States;>50K +39;Federal-gov;376455;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;50;United-States;>50K +45;Private;126889;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1887;60;United-States;>50K +42;Self-emp-not-inc;351161;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +29;Private;228860;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;50;United-States;>50K +46;Private;102318;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;40;United-States;>50K +55;Private;110748;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +33;Self-emp-not-inc;170979;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +44;Private;186916;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;60;United-States;>50K +37;Private;73471;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;47;United-States;>50K +64;Self-emp-inc;161325;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;1887;50;United-States;>50K +43;State-gov;24763;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;45;United-States;>50K +36;Private;33394;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1887;35;United-States;>50K +55;Private;359972;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +34;Private;242984;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;45;United-States;>50K +29;Private;250967;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;48;United-States;>50K +37;Private;265737;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;1887;60;Cuba;>50K +42;Private;230959;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;1887;40;Philippines;>50K +41;Self-emp-not-inc;111772;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +45;Local-gov;199590;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;Mexico;>50K +35;Private;267866;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;1887;50;Iran;>50K +61;Private;115023;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;60;United-States;>50K +49;Private;34545;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +52;Self-emp-not-inc;34973;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1887;60;United-States;>50K +46;Local-gov;238162;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;50;United-States;>50K +23;Private;143003;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;1887;50;India;>50K +36;Private;334291;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1887;40;United-States;>50K +43;Local-gov;34640;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Other;Male;0;1887;40;United-States;>50K +35;Local-gov;116960;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;40;United-States;>50K +39;Private;128392;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1887;40;United-States;>50K +39;Private;30529;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1887;40;United-States;>50K +47;Local-gov;324791;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1887;50;United-States;>50K +53;Local-gov;186303;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1887;40;United-States;>50K +53;Private;304504;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1887;45;United-States;>50K +26;Private;397317;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1876;40;United-States;<=50K +52;Private;186785;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;1876;50;United-States;<=50K +61;Private;123273;5th-6th;3;Divorced;Transport-moving;Not-in-family;White;Male;0;1876;56;United-States;<=50K +28;Local-gov;154863;HS-grad;9;Never-married;Protective-serv;Other-relative;Black;Male;0;1876;40;United-States;<=50K +42;Private;44121;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;1876;40;United-States;<=50K +44;Local-gov;101593;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;1876;42;United-States;<=50K +51;Private;138179;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;0;1876;40;United-States;<=50K +39;Local-gov;86551;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;1876;40;United-States;<=50K +36;State-gov;112497;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;1876;44;United-States;<=50K +45;Private;138626;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;1876;50;United-States;<=50K +27;Private;175387;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1876;40;United-States;<=50K +40;Local-gov;105717;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;1876;35;United-States;<=50K +25;Private;193820;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;1876;40;United-States;<=50K +47;Private;151584;HS-grad;9;Divorced;Sales;Own-child;White;Male;0;1876;40;United-States;<=50K +32;Private;244147;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;1876;50;United-States;<=50K +53;Private;122109;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;1876;38;United-States;<=50K +32;Private;226975;Some-college;10;Never-married;Sales;Own-child;White;Male;0;1876;60;United-States;<=50K +49;Private;149949;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;1876;40;United-States;<=50K +27;Private;34273;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;1876;36;Canada;<=50K +26;Private;82246;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1876;38;United-States;<=50K +60;Self-emp-not-inc;73091;HS-grad;9;Separated;Other-service;Not-in-family;Black;Male;0;1876;50;United-States;<=50K +56;Self-emp-not-inc;50791;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;1876;60;United-States;<=50K +58;Private;201393;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Male;0;1876;40;United-States;<=50K +39;Private;114844;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;1876;50;United-States;<=50K +53;Private;174020;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;1876;38;United-States;<=50K +27;Private;292472;Some-college;10;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;1876;45;Cambodia;<=50K +46;Local-gov;175754;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;1876;60;United-States;<=50K +30;Private;236861;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;1876;45;United-States;<=50K +38;Local-gov;329980;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1876;40;Canada;<=50K +41;Private;315834;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;1876;40;United-States;<=50K +27;Private;38918;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;1876;75;United-States;<=50K +43;Private;81243;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Male;0;1876;40;United-States;<=50K +30;Federal-gov;164552;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;1876;40;United-States;<=50K +25;Private;117833;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;1876;40;United-States;<=50K +26;Self-emp-not-inc;177858;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;1876;38;United-States;<=50K +53;Local-gov;103995;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;1876;54;United-States;<=50K +39;Private;347491;11th;7;Divorced;Craft-repair;Not-in-family;White;Male;0;1876;46;United-States;<=50K +47;Local-gov;154033;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;1876;40;United-States;<=50K +44;Private;150533;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;1876;55;United-States;<=50K +61;Self-emp-not-inc;30073;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1848;60;United-States;>50K +44;Private;216907;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;40;United-States;>50K +28;Private;303954;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;42;United-States;>50K +34;Private;223212;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;40;Peru;>50K +39;Private;218490;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1848;40;United-States;>50K +41;Private;121718;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;1848;48;United-States;>50K +35;Private;340110;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;70;United-States;>50K +34;Private;155343;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;50;United-States;>50K +30;Private;174789;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;50;United-States;>50K +30;Private;220148;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;50;United-States;>50K +33;Local-gov;173005;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1848;45;United-States;>50K +60;?;191118;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;1848;40;United-States;>50K +31;Private;339482;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;40;United-States;>50K +50;Private;192982;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;1848;40;United-States;>50K +27;Private;285897;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;45;United-States;>50K +37;Self-emp-not-inc;241463;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;65;United-States;>50K +30;Private;206046;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;40;United-States;>50K +49;Private;102583;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;44;United-States;>50K +52;State-gov;125796;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;1848;40;United-States;>50K +39;Local-gov;423605;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1848;40;Nicaragua;>50K +37;Private;204277;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1848;48;United-States;>50K +39;Private;186191;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;50;United-States;>50K +38;Private;172571;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;54;United-States;>50K +44;Private;192381;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;40;United-States;>50K +45;Private;54744;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;40;United-States;>50K +54;Private;93605;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1848;40;United-States;>50K +58;Private;156040;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;1848;40;United-States;>50K +36;Federal-gov;186934;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1848;55;United-States;>50K +45;Private;223999;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;1848;40;United-States;>50K +46;Federal-gov;349230;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;1848;40;United-States;>50K +41;Private;351161;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1848;45;United-States;>50K +41;Federal-gov;36651;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;40;United-States;>50K +34;Private;55717;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;50;United-States;>50K +33;Federal-gov;331615;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;40;United-States;>50K +63;Private;383058;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1848;40;United-States;>50K +56;Private;204049;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1848;50;United-States;>50K +48;Local-gov;242923;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;1848;40;United-States;>50K +40;Private;199900;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;55;United-States;>50K +59;Private;231377;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;45;United-States;>50K +32;Private;168854;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1848;50;United-States;>50K +29;Local-gov;190525;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;60;Germany;>50K +41;Private;149909;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1848;40;United-States;>50K +30;Private;129707;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1848;40;United-States;>50K +34;State-gov;318982;Masters;14;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1848;40;United-States;>50K +41;Private;77373;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1848;65;United-States;>50K +46;Private;189498;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;45;United-States;>50K +39;Private;91367;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1848;45;United-States;>50K +26;Private;366219;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;1848;60;United-States;>50K +27;Private;215504;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1848;55;United-States;>50K +61;Private;181219;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1848;40;United-States;>50K +37;Private;103121;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1848;40;United-States;>50K +67;Private;197816;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1844;70;United-States;<=50K +66;?;213149;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;1825;40;United-States;>50K +66;Self-emp-inc;253741;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1825;10;United-States;>50K +74;Self-emp-not-inc;292915;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1825;12;United-States;>50K +66;State-gov;132055;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1825;40;United-States;>50K +71;Self-emp-not-inc;494223;Some-college;10;Separated;Sales;Unmarried;Black;Male;0;1816;2;United-States;<=50K +80;Private;87518;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;1816;60;United-States;<=50K +24;Private;43323;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;1762;40;United-States;<=50K +20;?;114746;11th;7;Married-spouse-absent;?;Own-child;Asian-Pac-Islander;Female;0;1762;40;South;<=50K +28;Self-emp-not-inc;218555;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;1762;40;United-States;<=50K +59;Private;226922;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;1762;30;United-States;<=50K +24;Private;85088;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;1762;32;United-States;<=50K +24;Private;137591;Some-college;10;Never-married;Sales;Own-child;White;Male;0;1762;40;United-States;<=50K +52;Private;78012;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;1762;40;United-States;<=50K +39;Self-emp-not-inc;134475;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;1762;40;United-States;<=50K +43;Private;138184;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;1762;35;United-States;<=50K +22;Private;156822;10th;6;Never-married;Sales;Not-in-family;White;Female;0;1762;25;United-States;<=50K +30;Private;145231;Assoc-acdm;12;Divorced;Adm-clerical;Own-child;White;Female;0;1762;40;United-States;<=50K +21;Private;213341;11th;7;Married-spouse-absent;Handlers-cleaners;Own-child;White;Male;0;1762;40;Dominican-Republic;<=50K +24;Private;276851;HS-grad;9;Divorced;Protective-serv;Own-child;White;Female;0;1762;40;United-States;<=50K +21;Private;211968;Some-college;10;Never-married;Sales;Own-child;White;Female;0;1762;28;United-States;<=50K +49;Private;180899;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;0;1755;45;United-States;>50K +52;Private;117496;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;1755;40;United-States;>50K +38;Private;179488;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;1741;40;United-States;<=50K +30;Private;204374;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;1741;48;United-States;<=50K +38;Local-gov;123983;Bachelors;13;Never-married;Exec-managerial;Unmarried;Asian-Pac-Islander;Male;0;1741;40;Vietnam;<=50K +25;Private;302465;12th;8;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;1741;40;United-States;<=50K +34;Private;271933;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Female;0;1741;45;United-States;<=50K +24;Federal-gov;314525;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;1741;45;United-States;<=50K +25;Private;168403;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;1741;40;United-States;<=50K +31;Private;255004;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1741;38;United-States;<=50K +39;Federal-gov;129573;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;1741;40;United-States;<=50K +35;Private;261241;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;1741;60;United-States;<=50K +31;Local-gov;127651;10th;6;Never-married;Transport-moving;Other-relative;White;Male;0;1741;40;United-States;<=50K +30;Private;104052;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;1741;42;United-States;<=50K +42;Local-gov;109684;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1741;35;United-States;<=50K +42;Private;202188;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;1741;50;United-States;<=50K +41;Private;394669;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;1741;40;United-States;<=50K +46;Private;33109;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;1741;40;United-States;<=50K +34;Private;176185;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1741;40;United-States;<=50K +33;?;289046;HS-grad;9;Divorced;?;Not-in-family;Black;Male;0;1741;40;United-States;<=50K +36;Private;321733;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;1741;40;United-States;<=50K +36;Private;171676;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;1741;40;United-States;<=50K +44;Federal-gov;139161;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;Black;Female;0;1741;40;United-States;<=50K +28;Private;191088;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;1741;52;United-States;<=50K +52;Private;208630;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;1741;38;United-States;<=50K +43;Private;191712;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;1741;40;United-States;<=50K +45;Private;428350;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;1740;40;United-States;<=50K +30;Private;212237;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1740;45;United-States;<=50K +50;Local-gov;177705;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1740;48;United-States;<=50K +41;Local-gov;343079;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1740;20;United-States;<=50K +31;Private;47296;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1740;20;United-States;<=50K +27;Self-emp-inc;64379;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +63;Private;275034;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;1740;35;United-States;<=50K +33;Private;100135;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1740;25;United-States;<=50K +28;Private;183780;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1740;40;United-States;<=50K +34;Local-gov;210164;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +31;Private;106753;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +30;Private;177216;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;1740;40;Haiti;<=50K +47;State-gov;469907;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1740;40;United-States;<=50K +35;Private;148581;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +32;Private;209808;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1740;47;United-States;<=50K +33;Self-emp-not-inc;155151;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1740;50;United-States;<=50K +38;Private;184655;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;48;United-States;<=50K +35;Self-emp-inc;189404;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1740;40;United-States;<=50K +42;Private;248094;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1740;43;United-States;<=50K +47;Federal-gov;20956;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +34;Local-gov;134886;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;1740;35;United-States;<=50K +53;Private;96062;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1740;40;United-States;<=50K +37;Private;200598;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1740;45;United-States;<=50K +33;Private;146440;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +32;Private;199655;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Other;Female;0;1740;40;?;<=50K +38;Local-gov;210991;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +52;Private;191529;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1740;60;United-States;<=50K +35;Local-gov;668319;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1740;80;United-States;<=50K +46;Private;113390;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1740;60;United-States;<=50K +28;Private;293926;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;30;United-States;<=50K +58;Private;138285;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +29;Self-emp-inc;168221;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1740;70;United-States;<=50K +30;Private;194827;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +53;Federal-gov;167380;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1740;50;United-States;<=50K +53;Private;208321;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;1740;40;United-States;<=50K +31;Private;109428;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1740;40;United-States;<=50K +46;State-gov;107231;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1740;40;United-States;<=50K +59;Private;314149;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;1740;50;United-States;<=50K +62;Self-emp-not-inc;197353;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1740;40;United-States;<=50K +46;Private;148738;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1740;35;United-States;<=50K +45;Private;227791;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1740;50;United-States;<=50K +63;State-gov;216871;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1740;40;United-States;<=50K +73;Private;301210;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1735;20;United-States;<=50K +75;Self-emp-not-inc;205860;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;1735;40;United-States;<=50K +45;Local-gov;132563;Prof-school;15;Divorced;Prof-specialty;Unmarried;Black;Female;0;1726;40;United-States;<=50K +39;Private;237943;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;1726;40;United-States;<=50K +32;State-gov;213389;Some-college;10;Divorced;Protective-serv;Unmarried;White;Female;0;1726;38;United-States;<=50K +25;Private;122489;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;1726;60;United-States;<=50K +24;Private;172146;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;1721;40;United-States;<=50K +24;Private;106085;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;1721;30;United-States;<=50K +31;Private;120672;11th;7;Divorced;Handlers-cleaners;Other-relative;Black;Male;0;1721;40;United-States;<=50K +31;Private;273324;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;1721;16;United-States;<=50K +20;Private;91939;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;1721;30;United-States;<=50K +39;Private;52978;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;1721;55;United-States;<=50K +19;Private;184737;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;1721;40;United-States;<=50K +18;Private;144711;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;1721;40;United-States;<=50K +18;Private;193290;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;1721;20;United-States;<=50K +23;?;381741;Assoc-acdm;12;Never-married;?;Own-child;White;Male;0;1721;20;United-States;<=50K +19;Local-gov;210308;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;1721;30;United-States;<=50K +17;Private;148522;11th;7;Never-married;Other-service;Own-child;White;Male;0;1721;15;United-States;<=50K +17;Private;93235;12th;8;Never-married;Other-service;Own-child;White;Female;0;1721;25;United-States;<=50K +22;?;236330;Some-college;10;Never-married;?;Own-child;Black;Male;0;1721;20;United-States;<=50K +19;Private;243941;Some-college;10;Never-married;Sales;Own-child;Amer-Indian-Eskimo;Female;0;1721;25;United-States;<=50K +21;Private;132053;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;1721;35;United-States;<=50K +23;Private;129767;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;1721;40;United-States;<=50K +39;Self-emp-not-inc;251710;10th;6;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;1721;15;United-States;<=50K +20;Private;111697;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;1719;28;United-States;<=50K +20;State-gov;223515;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;1719;20;United-States;<=50K +21;Private;32616;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;1719;16;United-States;<=50K +18;Private;201901;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;1719;15;United-States;<=50K +30;?;96851;Some-college;10;Never-married;?;Not-in-family;White;Female;0;1719;25;United-States;<=50K +19;Private;387215;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;1719;16;United-States;<=50K +22;Private;217961;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;1719;30;United-States;<=50K +26;Private;322614;Preschool;1;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;1719;40;Mexico;<=50K +19;Private;158118;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;1719;40;United-States;<=50K +22;Private;347867;HS-grad;9;Married-spouse-absent;Sales;Not-in-family;White;Male;0;1719;40;United-States;<=50K +37;Private;252947;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;1719;32;United-States;<=50K +47;Private;27815;9th;5;Divorced;Other-service;Not-in-family;White;Female;0;1719;30;United-States;<=50K +57;Private;299358;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;1719;25;United-States;<=50K +21;Private;257781;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;1719;30;United-States;<=50K +21;Private;540712;HS-grad;9;Never-married;Other-service;Other-relative;Black;Male;0;1719;25;United-States;<=50K +25;Local-gov;190107;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;1719;16;United-States;<=50K +23;Private;151910;Bachelors;13;Never-married;Machine-op-inspct;Own-child;White;Female;0;1719;40;United-States;<=50K +17;Private;184924;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;0;1719;15;United-States;<=50K +19;?;351195;9th;5;Never-married;?;Other-relative;White;Male;0;1719;35;El-Salvador;<=50K +17;Private;116626;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;1719;18;United-States;<=50K +20;Private;39803;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;1719;36;United-States;<=50K +21;Private;387335;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;1719;9;United-States;<=50K +32;Private;110331;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1672;60;United-States;<=50K +50;Self-emp-inc;175339;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;60;United-States;<=50K +31;Private;59083;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;1672;50;United-States;<=50K +60;Self-emp-not-inc;170114;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1672;84;United-States;<=50K +34;Private;80933;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;40;United-States;<=50K +34;Private;119422;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1672;50;United-States;<=50K +45;Federal-gov;181970;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1672;40;United-States;<=50K +57;Private;109638;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1672;45;United-States;<=50K +55;Private;177484;11th;7;Married-civ-spouse;Other-service;Husband;Black;Male;0;1672;40;United-States;<=50K +61;Private;213321;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1672;40;United-States;<=50K +51;Self-emp-not-inc;32372;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1672;70;United-States;<=50K +35;Private;54317;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1672;50;United-States;<=50K +29;Private;147755;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;40;United-States;<=50K +40;Private;187164;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1672;45;United-States;<=50K +46;Self-emp-not-inc;182541;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1672;50;United-States;<=50K +48;Private;185041;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1672;55;United-States;<=50K +36;Local-gov;241998;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1672;50;United-States;<=50K +46;Self-emp-not-inc;197836;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1672;50;United-States;<=50K +42;Private;117319;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;40;United-States;<=50K +57;Private;61761;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;45;United-States;<=50K +43;Private;220109;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;1672;44;United-States;<=50K +28;Private;346406;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1672;50;United-States;<=50K +49;Private;190115;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1672;44;United-States;<=50K +49;Self-emp-not-inc;208872;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1672;98;United-States;<=50K +33;Private;232356;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1672;55;United-States;<=50K +30;Private;460408;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1672;45;United-States;<=50K +54;Private;145419;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1672;50;United-States;<=50K +56;Self-emp-inc;119891;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1672;40;United-States;<=50K +36;State-gov;110964;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;1672;38;United-States;<=50K +40;Self-emp-not-inc;89413;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;40;United-States;<=50K +32;Private;97723;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;40;United-States;<=50K +47;Self-emp-not-inc;107231;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1672;65;United-States;<=50K +40;Private;566537;Preschool;1;Married-civ-spouse;Other-service;Husband;White;Male;0;1672;40;Mexico;<=50K +37;Private;186009;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1672;60;United-States;<=50K +28;Private;196690;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;1669;42;United-States;<=50K +37;Private;35330;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;1669;55;United-States;<=50K +48;Private;125933;Some-college;10;Widowed;Exec-managerial;Unmarried;Black;Female;0;1669;38;United-States;<=50K +31;Private;207537;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;1669;50;United-States;<=50K +26;Private;117833;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;1669;50;United-States;<=50K +23;Private;435835;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;1669;55;United-States;<=50K +39;Self-emp-not-inc;331481;Bachelors;13;Divorced;Craft-repair;Not-in-family;Black;Male;0;1669;60;?;<=50K +49;Private;30219;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;1669;40;United-States;<=50K +56;State-gov;274111;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;1669;40;United-States;<=50K +47;Private;155124;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;1669;40;United-States;<=50K +34;Private;185041;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;1669;45;United-States;<=50K +32;Private;48458;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;1669;45;United-States;<=50K +28;Private;72443;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;1669;60;United-States;<=50K +38;Local-gov;30509;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1669;55;United-States;<=50K +34;Private;245173;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;1669;45;United-States;<=50K +36;Private;224566;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;1669;45;United-States;<=50K +30;Private;33688;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Female;0;1669;70;United-States;<=50K +26;Private;104834;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1669;40;United-States;<=50K +40;Private;180032;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1669;40;United-States;<=50K +56;Local-gov;52953;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;1669;38;United-States;<=50K +44;Local-gov;196456;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1669;40;United-States;<=50K +33;Local-gov;169652;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Male;0;1669;55;United-States;<=50K +53;Local-gov;137250;Masters;14;Widowed;Prof-specialty;Unmarried;Black;Female;0;1669;35;United-States;<=50K +61;Private;190682;HS-grad;9;Widowed;Craft-repair;Not-in-family;Black;Female;0;1669;50;United-States;<=50K +65;Self-emp-not-inc;316093;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;1668;40;United-States;<=50K +81;Self-emp-not-inc;123959;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;1668;3;Hungary;<=50K +68;?;286869;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;1668;40;?;<=50K +68;Local-gov;144761;HS-grad;9;Widowed;Protective-serv;Not-in-family;White;Male;0;1668;20;United-States;<=50K +39;Self-emp-inc;218184;9th;5;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1651;40;Mexico;<=50K +61;Private;107438;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;1651;40;United-States;<=50K +61;Private;162391;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1651;40;United-States;<=50K +46;Private;138370;7th-8th;4;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;1651;40;China;<=50K +56;Self-emp-inc;216636;12th;8;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1651;40;United-States;<=50K +30;Private;190912;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;Asian-Pac-Islander;Male;0;1651;40;Vietnam;<=50K +35;State-gov;193241;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1651;40;United-States;<=50K +34;Private;261023;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1651;38;United-States;<=50K +27;Private;37250;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1651;40;United-States;<=50K +65;Local-gov;146454;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1648;4;Greece;<=50K +74;Self-emp-not-inc;206682;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1648;35;United-States;<=50K +26;Private;280093;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1628;50;United-States;<=50K +62;Private;162245;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1628;70;United-States;<=50K +45;Private;188386;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1628;45;United-States;<=50K +28;Private;241895;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1628;40;United-States;<=50K +37;Private;295949;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1628;40;United-States;<=50K +28;Private;273929;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;1628;60;United-States;<=50K +46;Private;85109;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1628;40;United-States;<=50K +39;Federal-gov;432555;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;1628;40;United-States;<=50K +34;Private;238305;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;1628;12;?;<=50K +37;Private;282872;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1628;40;United-States;<=50K +41;?;211873;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;0;1628;5;?;<=50K +39;Private;278557;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1628;48;United-States;<=50K +51;Local-gov;47415;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1628;30;United-States;<=50K +42;Private;173590;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1628;40;United-States;<=50K +40;Private;87771;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;1628;45;United-States;<=50K +23;Private;107801;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;1617;25;United-States;<=50K +43;Private;216042;Some-college;10;Divorced;Tech-support;Own-child;White;Female;0;1617;72;United-States;<=50K +55;State-gov;71630;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;1617;40;United-States;<=50K +56;Private;99359;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;1617;40;United-States;<=50K +44;Private;344920;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;1617;20;United-States;<=50K +30;Private;194141;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;1617;40;United-States;<=50K +36;Private;206253;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;1617;40;United-States;<=50K +62;Private;109463;Some-college;10;Separated;Sales;Unmarried;White;Female;0;1617;33;United-States;<=50K +33;Private;190772;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;1617;40;United-States;<=50K +19;Private;242941;Some-college;10;Never-married;Sales;Own-child;White;Female;0;1602;10;United-States;<=50K +26;Private;225279;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;1602;40;?;<=50K +19;Private;93604;7th-8th;4;Never-married;Craft-repair;Own-child;White;Male;0;1602;32;United-States;<=50K +19;Private;167140;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;1602;24;United-States;<=50K +25;?;122745;HS-grad;9;Never-married;?;Own-child;White;Male;0;1602;40;United-States;<=50K +26;Private;303973;HS-grad;9;Never-married;Priv-house-serv;Other-relative;White;Female;0;1602;15;Mexico;<=50K +22;?;219233;HS-grad;9;Never-married;?;Own-child;Black;Male;0;1602;30;United-States;<=50K +19;Private;240468;Some-college;10;Married-spouse-absent;Sales;Own-child;White;Female;0;1602;40;United-States;<=50K +32;Private;105938;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;1602;20;United-States;<=50K +18;?;276864;Some-college;10;Never-married;?;Own-child;White;Female;0;1602;20;United-States;<=50K +22;Private;215395;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;1602;10;United-States;<=50K +21;Private;119309;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;1602;16;United-States;<=50K +20;?;144685;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;1602;40;Taiwan;<=50K +18;?;255282;11th;7;Never-married;?;Own-child;Black;Male;0;1602;48;United-States;<=50K +25;Private;282313;10th;6;Never-married;Handlers-cleaners;Own-child;Black;Male;0;1602;40;United-States;<=50K +21;Private;180339;Assoc-voc;11;Never-married;Farming-fishing;Not-in-family;White;Female;0;1602;30;United-States;<=50K +21;State-gov;48121;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;1602;10;United-States;<=50K +17;Private;209949;11th;7;Never-married;Sales;Own-child;White;Female;0;1602;12;United-States;<=50K +57;Private;142791;7th-8th;4;Widowed;Sales;Other-relative;White;Female;0;1602;3;United-States;<=50K +23;Private;53245;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;1602;12;United-States;<=50K +30;Private;48829;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;1602;30;United-States;<=50K +18;Private;238867;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;1602;40;United-States;<=50K +18;?;214989;Some-college;10;Never-married;?;Own-child;White;Female;0;1602;24;United-States;<=50K +17;Private;225106;10th;6;Never-married;Other-service;Own-child;White;Female;0;1602;18;United-States;<=50K +39;Private;194287;7th-8th;4;Never-married;Other-service;Own-child;White;Male;0;1602;35;United-States;<=50K +18;Private;414721;11th;7;Never-married;Other-service;Own-child;Black;Male;0;1602;23;United-States;<=50K +19;?;218471;HS-grad;9;Never-married;?;Own-child;White;Female;0;1602;30;United-States;<=50K +18;?;261276;Some-college;10;Never-married;?;Own-child;Black;Female;0;1602;40;Cambodia;<=50K +17;Local-gov;170916;10th;6;Never-married;Protective-serv;Own-child;White;Female;0;1602;40;United-States;<=50K +21;State-gov;145651;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;1602;12;United-States;<=50K +18;Private;166889;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Female;0;1602;35;United-States;<=50K +19;Private;124486;12th;8;Never-married;Other-service;Own-child;White;Male;0;1602;20;United-States;<=50K +18;Private;404868;11th;7;Never-married;Sales;Own-child;Black;Female;0;1602;20;United-States;<=50K +18;Private;77845;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;1602;15;United-States;<=50K +19;?;278220;Some-college;10;Never-married;?;Own-child;White;Female;0;1602;40;United-States;<=50K +17;Federal-gov;99893;11th;7;Never-married;Adm-clerical;Not-in-family;Black;Female;0;1602;40;United-States;<=50K +17;Private;218361;10th;6;Never-married;Other-service;Own-child;White;Female;0;1602;12;United-States;<=50K +18;?;171964;HS-grad;9;Never-married;?;Own-child;White;Female;0;1602;20;United-States;<=50K +19;Private;283945;10th;6;Never-married;Handlers-cleaners;Other-relative;White;Male;0;1602;45;United-States;<=50K +20;Private;289405;Some-college;10;Never-married;Sales;Own-child;White;Male;0;1602;15;United-States;<=50K +57;Self-emp-not-inc;118806;1st-4th;2;Widowed;Craft-repair;Other-relative;White;Female;0;1602;45;Columbia;<=50K +17;Private;132680;10th;6;Never-married;Other-service;Own-child;White;Female;0;1602;10;United-States;<=50K +21;Private;301408;Some-college;10;Never-married;Sales;Own-child;White;Female;0;1602;22;United-States;<=50K +18;?;51574;HS-grad;9;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;1602;38;United-States;<=50K +20;?;369678;12th;8;Never-married;?;Not-in-family;Other;Male;0;1602;40;United-States;<=50K +46;Private;155933;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;1602;8;United-States;<=50K +18;Private;41381;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;1602;20;United-States;<=50K +23;Private;183327;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Female;0;1594;20;United-States;<=50K +27;Private;60374;HS-grad;9;Widowed;Craft-repair;Unmarried;White;Female;0;1594;26;United-States;<=50K +48;Private;254809;10th;6;Divorced;Machine-op-inspct;Unmarried;White;Female;0;1594;32;United-States;<=50K +46;Private;213611;7th-8th;4;Married-spouse-absent;Priv-house-serv;Unmarried;White;Female;0;1594;24;Guatemala;<=50K +31;Private;651396;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;1594;30;United-States;<=50K +25;Private;52536;Assoc-acdm;12;Divorced;Tech-support;Own-child;White;Female;0;1594;25;United-States;<=50K +26;Private;149734;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Female;0;1594;40;United-States;<=50K +35;Private;220943;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;1594;40;United-States;<=50K +27;Private;137645;Bachelors;13;Never-married;Sales;Not-in-family;Black;Female;0;1590;40;United-States;<=50K +29;Private;149943;Some-college;10;Never-married;Other-service;Not-in-family;Other;Male;0;1590;40;?;<=50K +39;?;103986;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;1590;40;United-States;<=50K +42;Private;191712;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;1590;40;United-States;<=50K +20;Private;131230;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;1590;40;United-States;<=50K +32;Private;43403;Some-college;10;Divorced;Farming-fishing;Not-in-family;White;Female;0;1590;54;United-States;<=50K +50;Federal-gov;176969;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;1590;40;United-States;<=50K +55;Private;151474;Bachelors;13;Never-married;Tech-support;Other-relative;White;Female;0;1590;38;United-States;<=50K +29;State-gov;188986;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;1590;64;United-States;<=50K +41;Private;48087;7th-8th;4;Divorced;Craft-repair;Not-in-family;White;Male;0;1590;40;United-States;<=50K +25;Private;34402;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1590;60;United-States;<=50K +46;Private;170850;Bachelors;13;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;1590;40;?;<=50K +29;Private;183009;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Other;Female;0;1590;40;United-States;<=50K +23;Private;220993;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;1590;48;United-States;<=50K +25;Private;177499;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;1590;35;United-States;<=50K +42;Private;37869;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;1590;40;United-States;<=50K +41;Self-emp-not-inc;214541;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;1590;40;United-States;<=50K +32;Private;290964;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;1590;40;United-States;<=50K +25;Private;123095;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;1590;40;United-States;<=50K +41;State-gov;518030;Bachelors;13;Never-married;Protective-serv;Not-in-family;Black;Male;0;1590;40;Puerto-Rico;<=50K +24;Private;24243;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1590;40;United-States;<=50K +44;State-gov;154176;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;1590;40;United-States;<=50K +29;Private;190539;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1590;50;United-States;<=50K +51;Private;348099;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;1590;40;United-States;<=50K +39;Private;382802;10th;6;Widowed;Machine-op-inspct;Not-in-family;Black;Male;0;1590;40;United-States;<=50K +28;Self-emp-not-inc;54683;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;1590;40;United-States;<=50K +48;Private;99096;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;1590;38;United-States;<=50K +34;Private;54850;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1590;50;United-States;<=50K +45;Private;293691;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;1590;40;Japan;<=50K +47;Private;192053;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;1590;40;United-States;<=50K +50;Private;188186;Masters;14;Divorced;Sales;Not-in-family;White;Female;0;1590;45;United-States;<=50K +32;Private;317219;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1590;40;United-States;<=50K +46;Private;160474;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;1590;43;United-States;<=50K +32;Private;165949;Bachelors;13;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;1590;42;United-States;<=50K +34;Private;211948;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;1590;40;United-States;<=50K +32;Self-emp-not-inc;188246;HS-grad;9;Divorced;Sales;Own-child;White;Male;0;1590;62;United-States;<=50K +35;Private;140915;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;1590;40;South;<=50K +29;Local-gov;82393;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Asian-Pac-Islander;Male;0;1590;45;United-States;<=50K +46;Private;254367;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;1590;48;United-States;<=50K +30;Private;340899;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;1590;80;United-States;<=50K +34;Local-gov;62463;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1579;40;United-States;<=50K +35;Private;111387;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1579;40;United-States;<=50K +31;Private;260782;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1579;45;El-Salvador;<=50K +21;Private;146499;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;1579;40;United-States;<=50K +40;Federal-gov;177595;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1579;40;United-States;<=50K +48;Private;273435;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1579;40;United-States;<=50K +41;Private;289886;5th-6th;3;Married-civ-spouse;Other-service;Husband;Other;Male;0;1579;40;Nicaragua;<=50K +33;Private;54782;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1579;42;United-States;<=50K +31;Private;164243;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1579;40;United-States;<=50K +54;Self-emp-not-inc;58898;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1579;48;United-States;<=50K +51;Self-emp-not-inc;136322;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1579;40;United-States;<=50K +25;Private;182227;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1579;40;United-States;<=50K +43;Local-gov;301638;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1579;40;United-States;<=50K +26;Self-emp-not-inc;221626;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;1579;20;United-States;<=50K +27;Private;87006;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1579;40;United-States;<=50K +24;Private;216469;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1579;50;United-States;<=50K +50;Private;95435;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1579;65;Canada;<=50K +55;Private;135803;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Other;Male;0;1579;35;India;<=50K +42;Private;119679;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1579;42;United-States;<=50K +59;Self-emp-not-inc;56392;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1579;60;United-States;<=50K +30;Private;117747;HS-grad;9;Married-civ-spouse;Sales;Wife;Asian-Pac-Islander;Female;0;1573;35;?;<=50K +20;Private;115824;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;1573;40;United-States;<=50K +23;Private;278107;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1573;30;United-States;<=50K +34;Private;58305;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1573;40;United-States;<=50K +31;Private;202450;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1573;40;United-States;<=50K +27;Self-emp-not-inc;151402;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1573;70;United-States;<=50K +45;Private;196584;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;1564;40;United-States;>50K +43;Private;174575;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;1564;45;United-States;>50K +40;Self-emp-not-inc;266324;Some-college;10;Divorced;Exec-managerial;Other-relative;White;Male;0;1564;70;Iran;>50K +53;Private;156843;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1564;54;United-States;>50K +51;Federal-gov;282680;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;1564;70;United-States;>50K +40;Private;179717;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;1564;60;United-States;>50K +46;Federal-gov;43206;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;1564;50;United-States;>50K +51;Private;216475;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;1564;43;United-States;>50K +42;Private;143046;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;1564;38;United-States;>50K +46;State-gov;119904;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;1564;55;United-States;>50K +28;Private;181291;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;1564;50;United-States;>50K +34;Private;98283;Prof-school;15;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;1564;40;India;>50K +39;Self-emp-not-inc;230329;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;1564;12;United-States;>50K +30;Private;327112;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;1564;40;United-States;>50K +33;Local-gov;281784;Bachelors;13;Never-married;Tech-support;Not-in-family;Black;Male;0;1564;52;United-States;>50K +28;Private;190067;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;1564;40;United-States;>50K +44;Private;207685;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;1564;55;England;>50K +34;Private;34862;Bachelors;13;Divorced;Sales;Not-in-family;Amer-Indian-Eskimo;Male;0;1564;60;United-States;>50K +29;Self-emp-not-inc;341672;HS-grad;9;Married-spouse-absent;Transport-moving;Other-relative;Asian-Pac-Islander;Male;0;1564;50;India;>50K +47;Private;150768;Bachelors;13;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;1564;51;United-States;>50K +39;Private;165106;Bachelors;13;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;1564;50;?;>50K +29;Local-gov;302422;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;1564;56;United-States;>50K +31;Private;240441;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;1564;40;United-States;>50K +31;Private;44464;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;1564;60;United-States;>50K +39;Private;284166;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1564;50;United-States;>50K +67;Private;397831;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1539;40;United-States;<=50K +46;Private;187370;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;1504;40;United-States;<=50K +44;Private;111483;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;1504;50;United-States;<=50K +21;?;161930;HS-grad;9;Never-married;?;Own-child;Black;Female;0;1504;30;United-States;<=50K +25;Private;178505;Some-college;10;Never-married;Exec-managerial;Other-relative;White;Female;0;1504;45;United-States;<=50K +59;Local-gov;114401;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;1504;19;United-States;<=50K +47;Private;223342;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;1504;35;United-States;<=50K +21;Private;118712;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;1504;40;United-States;<=50K +44;Private;222978;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;1504;40;United-States;<=50K +31;Private;187901;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;1504;40;United-States;<=50K +37;Private;245053;Some-college;10;Divorced;Handlers-cleaners;Own-child;White;Male;0;1504;40;United-States;<=50K +44;Private;262684;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;1504;45;United-States;<=50K +25;Private;177017;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;1504;37;United-States;<=50K +21;Private;52753;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1504;40;United-States;<=50K +27;Private;189462;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;1504;45;United-States;<=50K +27;Private;38606;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;1504;45;United-States;<=50K +53;?;150393;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;1504;35;United-States;<=50K +34;Self-emp-not-inc;156809;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;1504;60;United-States;<=50K +30;Private;89735;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;1504;40;United-States;<=50K +43;Private;50356;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;50;United-States;<=50K +32;Private;211699;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1485;40;United-States;>50K +49;Private;168211;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;40;United-States;>50K +41;Local-gov;344624;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;1485;40;United-States;>50K +32;Private;130304;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1485;48;United-States;<=50K +48;Private;202467;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1485;40;United-States;>50K +46;Private;175109;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1485;40;United-States;>50K +59;Private;107833;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1485;40;United-States;>50K +36;Private;398931;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1485;50;United-States;>50K +53;Private;238481;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;40;United-States;<=50K +37;Private;176756;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;1485;70;United-States;>50K +58;Federal-gov;81973;Some-college;10;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;1485;40;United-States;>50K +47;Private;189123;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1485;58;United-States;<=50K +40;Private;316820;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;1485;40;United-States;<=50K +45;Self-emp-not-inc;192203;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;40;United-States;>50K +30;Private;97933;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Wife;White;Female;0;1485;37;United-States;>50K +60;Self-emp-not-inc;148492;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;50;United-States;>50K +29;Private;149324;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;40;United-States;>50K +29;Self-emp-not-inc;190636;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;1485;60;United-States;>50K +32;Private;351869;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1485;45;United-States;>50K +50;Private;337606;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;1485;40;United-States;<=50K +41;Private;204410;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;44;United-States;>50K +60;?;56248;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;1485;70;United-States;>50K +29;Local-gov;383745;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;1485;40;United-States;>50K +59;Private;174864;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;45;United-States;>50K +37;Self-emp-inc;26698;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1485;44;United-States;>50K +47;Private;209460;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;47;United-States;<=50K +34;Self-emp-not-inc;213226;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;35;?;<=50K +27;Private;112754;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;60;United-States;>50K +34;Private;90705;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;1485;40;United-States;<=50K +41;Private;428499;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;50;United-States;>50K +42;Local-gov;227890;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;40;United-States;<=50K +33;?;173998;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;1485;38;United-States;<=50K +50;Private;234373;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1485;40;United-States;<=50K +41;Private;193524;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;40;United-States;<=50K +45;Self-emp-not-inc;28497;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;1485;70;United-States;>50K +42;Private;268183;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;60;United-States;<=50K +46;Private;74895;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;55;United-States;<=50K +57;State-gov;399246;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;1485;40;China;<=50K +38;Self-emp-inc;244803;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1485;60;Cuba;>50K +45;Self-emp-inc;311231;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;1485;50;United-States;>50K +34;Private;287737;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;1485;40;United-States;>50K +38;Private;300975;Masters;14;Married-civ-spouse;Other-service;Husband;Black;Male;0;1485;40;?;<=50K +35;State-gov;184659;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;1485;40;United-States;>50K +63;?;29859;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;1485;40;United-States;>50K +34;Private;112212;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;1485;40;United-States;<=50K +44;Private;223194;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;1485;40;Haiti;<=50K +44;Local-gov;165304;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;40;United-States;>50K +50;Self-emp-inc;52565;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;1485;40;United-States;<=50K +41;Private;117585;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1485;40;United-States;>50K +31;Private;251659;Some-college;10;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;1485;55;?;>50K +65;Local-gov;103153;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1411;40;United-States;<=50K +45;Private;386940;Bachelors;13;Divorced;Exec-managerial;Own-child;White;Male;0;1408;40;United-States;<=50K +36;Federal-gov;255191;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;1408;40;United-States;<=50K +31;Private;331065;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;1408;40;United-States;<=50K +42;Private;83411;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;1408;40;United-States;<=50K +38;Private;193026;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;1408;40;?;<=50K +46;Local-gov;202560;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;1408;40;United-States;<=50K +28;Private;103802;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;1408;40;?;<=50K +35;Private;474136;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1408;40;United-States;<=50K +54;Private;188136;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;1408;38;United-States;<=50K +34;Private;345705;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;1408;38;United-States;<=50K +29;Private;193152;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;1408;40;United-States;<=50K +24;Private;216129;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;1408;50;United-States;<=50K +44;Private;225263;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;1408;46;United-States;<=50K +33;Private;213002;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;1408;36;United-States;<=50K +47;Local-gov;219632;Assoc-acdm;12;Separated;Exec-managerial;Not-in-family;White;Male;0;1408;40;United-States;<=50K +28;Private;339372;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;1408;40;United-States;<=50K +38;Private;123833;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;1408;40;United-States;<=50K +41;Private;41901;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;1408;40;United-States;<=50K +50;Private;178596;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;1408;50;United-States;<=50K +29;Federal-gov;106179;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;1408;40;United-States;<=50K +50;Self-emp-not-inc;240922;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Female;0;1408;5;United-States;<=50K +49;Private;141944;Assoc-voc;11;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;1380;42;United-States;<=50K +31;Private;243605;Bachelors;13;Widowed;Sales;Unmarried;White;Female;0;1380;40;Cuba;<=50K +44;Private;199031;Some-college;10;Divorced;Transport-moving;Own-child;White;Male;0;1380;40;United-States;<=50K +48;Local-gov;121622;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;1380;40;United-States;<=50K +39;Private;115289;Some-college;10;Divorced;Sales;Own-child;White;Male;0;1380;70;United-States;<=50K +39;Private;49436;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;1380;40;United-States;<=50K +32;Federal-gov;90653;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;1380;40;United-States;<=50K +42;Local-gov;254817;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;1340;40;United-States;<=50K +25;Private;212495;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;1340;40;United-States;<=50K +42;Federal-gov;296798;11th;7;Never-married;Tech-support;Not-in-family;White;Male;0;1340;40;United-States;<=50K +44;Local-gov;193882;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;1340;40;United-States;<=50K +38;Private;188888;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;1340;40;United-States;<=50K +54;Private;172962;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;1340;40;United-States;<=50K +37;Private;405284;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;1340;42;United-States;<=50K +62;Local-gov;159908;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;1258;38;United-States;<=50K +72;Local-gov;144515;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;1258;40;United-States;<=50K +76;?;224680;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;1258;20;United-States;<=50K +66;Private;350498;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;1258;20;United-States;<=50K +33;Local-gov;262042;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;1138;40;United-States;<=50K +29;Private;138190;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;1138;40;United-States;<=50K +25;Private;74883;Bachelors;13;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Female;0;1092;40;Philippines;<=50K +39;Private;230467;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;1092;40;Germany;<=50K +33;Private;207937;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;1092;40;United-States;<=50K +53;State-gov;281074;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;1092;40;United-States;<=50K +52;Private;113094;Bachelors;13;Separated;Adm-clerical;Unmarried;White;Female;0;1092;40;United-States;<=50K +23;Local-gov;442359;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;1092;40;United-States;<=50K +60;Private;75726;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;1092;40;United-States;<=50K +27;Private;151382;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;White;Male;0;974;40;United-States;<=50K +34;Private;32528;Assoc-voc;11;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;974;40;United-States;<=50K +43;Self-emp-not-inc;336763;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;880;42;United-States;<=50K +33;Private;99339;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;880;40;United-States;<=50K +31;Private;323069;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;0;880;45;United-States;<=50K +50;Federal-gov;299831;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;880;40;United-States;<=50K +32;Private;203674;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;880;36;United-States;<=50K +34;Private;60567;11th;7;Divorced;Transport-moving;Unmarried;White;Male;0;880;60;United-States;<=50K +69;State-gov;159191;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;810;38;United-States;<=50K +65;Private;190568;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;810;36;United-States;<=50K +57;Private;34269;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Male;0;653;42;United-States;>50K +42;Private;259757;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;653;50;United-States;>50K +49;Private;116338;HS-grad;9;Separated;Prof-specialty;Unmarried;White;Female;0;653;60;United-States;<=50K +40;Private;315321;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;625;52;United-States;<=50K +43;Local-gov;118600;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;625;40;United-States;<=50K +59;Private;230039;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;625;38;United-States;<=50K +39;Federal-gov;257175;Bachelors;13;Divorced;Tech-support;Unmarried;Black;Female;0;625;40;United-States;<=50K +49;Local-gov;159641;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;625;40;United-States;<=50K +39;State-gov;119421;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;625;35;United-States;<=50K +49;Private;169042;HS-grad;9;Separated;Prof-specialty;Unmarried;White;Female;0;625;40;Puerto-Rico;<=50K +39;Private;81487;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;625;40;United-States;<=50K +43;Private;122473;9th;5;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;625;40;United-States;<=50K +41;Private;332703;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Other;Female;0;625;40;United-States;<=50K +46;Private;157991;Assoc-voc;11;Divorced;Tech-support;Unmarried;Black;Female;0;625;40;United-States;<=50K +47;Private;144351;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;625;40;United-States;<=50K +67;?;184506;11th;7;Married-civ-spouse;?;Husband;White;Male;0;419;3;United-States;<=50K +68;Private;32779;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;419;12;United-States;<=50K +27;?;501172;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;419;20;Mexico;<=50K +52;Private;122109;HS-grad;9;Never-married;Prof-specialty;Unmarried;White;Female;0;323;40;United-States;<=50K +46;Private;198774;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;323;45;United-States;<=50K +49;Local-gov;78859;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;0;323;20;United-States;<=50K +37;Private;262409;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;213;45;United-States;<=50K +38;Private;173047;Bachelors;13;Divorced;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;213;40;Philippines;<=50K +40;Private;65866;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;213;40;United-States;<=50K +36;Private;204590;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;213;40;United-States;<=50K +28;Private;140845;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;155;40;United-States;<=50K +54;Self-emp-inc;166459;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +52;Private;152234;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;99999;0;40;Japan;>50K +53;Self-emp-inc;263925;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;99999;0;40;United-States;>50K +52;Private;118025;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +46;Private;370119;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +43;Private;176270;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;60;United-States;>50K +49;Private;159816;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;99999;0;20;United-States;>50K +50;Private;171338;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +22;Self-emp-not-inc;202920;HS-grad;9;Never-married;Prof-specialty;Unmarried;White;Female;99999;0;40;Dominican-Republic;>50K +43;Self-emp-inc;172826;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;99999;0;55;United-States;>50K +65;Self-emp-inc;139272;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;60;United-States;>50K +26;Private;256000;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +52;Self-emp-not-inc;64045;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;45;United-States;>50K +46;Private;176814;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +36;Private;208358;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;99999;0;45;United-States;>50K +40;Self-emp-not-inc;223881;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;70;United-States;>50K +52;Self-emp-inc;90363;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;35;United-States;>50K +32;Self-emp-inc;46807;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;99999;0;40;United-States;>50K +53;Private;88842;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +47;Private;345493;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;99999;0;55;Taiwan;>50K +37;Local-gov;287306;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;Black;Female;99999;0;40;?;>50K +37;Self-emp-not-inc;362062;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +39;Self-emp-inc;114844;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;65;United-States;>50K +38;Private;146091;Doctorate;16;Married-civ-spouse;Exec-managerial;Wife;White;Female;99999;0;36;United-States;>50K +44;Private;332401;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;65;United-States;>50K +57;Self-emp-inc;159028;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +51;Private;44000;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;99999;0;50;United-States;>50K +78;Self-emp-not-inc;316261;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;99999;0;20;United-States;>50K +36;Private;383518;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;99999;0;40;United-States;>50K +49;Self-emp-inc;362795;Masters;14;Divorced;Prof-specialty;Unmarried;White;Male;99999;0;80;Mexico;>50K +54;Self-emp-not-inc;269068;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;99999;0;50;Philippines;>50K +41;Self-emp-inc;194636;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;65;United-States;>50K +46;Local-gov;222115;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;99999;0;40;United-States;>50K +33;Private;170769;Doctorate;16;Divorced;Sales;Not-in-family;White;Male;99999;0;60;United-States;>50K +36;Self-emp-not-inc;241998;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;99999;0;20;United-States;>50K +63;Private;118798;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;99999;0;40;United-States;>50K +38;Private;167140;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;70;United-States;>50K +33;Private;198660;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;99999;0;56;United-States;>50K +47;Private;168262;Masters;14;Separated;Exec-managerial;Not-in-family;White;Male;99999;0;50;United-States;>50K +28;Private;37359;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +52;Self-emp-inc;181855;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Other;Male;99999;0;65;United-States;>50K +30;Private;132601;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +50;Private;108435;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;60;United-States;>50K +32;Private;134737;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +46;Private;273771;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;40;United-States;>50K +49;Self-emp-not-inc;355978;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;35;United-States;>50K +30;Private;235124;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;99999;0;40;United-States;>50K +32;Private;204567;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;60;United-States;>50K +59;Private;122283;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;99999;0;40;India;>50K +46;Self-emp-inc;198660;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;72;United-States;>50K +32;Private;330715;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;99999;0;40;United-States;>50K +21;Private;334618;Some-college;10;Never-married;Protective-serv;Not-in-family;Black;Female;99999;0;40;United-States;>50K +56;Self-emp-inc;205601;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;70;United-States;>50K +43;Private;208613;Prof-school;15;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;99999;0;40;United-States;>50K +30;Private;129707;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;35;United-States;>50K +39;Private;77005;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;40;United-States;>50K +24;?;151153;Some-college;10;Never-married;?;Not-in-family;Asian-Pac-Islander;Male;99999;0;50;South;>50K +46;Self-emp-inc;120131;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +50;Self-emp-not-inc;155118;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;99999;0;35;United-States;>50K +60;Private;191446;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +36;Self-emp-inc;216711;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;?;>50K +47;Private;193047;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +56;Self-emp-not-inc;163212;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;99999;0;40;United-States;>50K +53;Private;366957;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;99999;0;50;India;>50K +42;Private;187795;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;55;United-States;>50K +50;Private;238959;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;60;?;>50K +48;Private;25468;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;99999;0;50;United-States;>50K +41;Private;320984;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;65;United-States;>50K +72;Self-emp-inc;172407;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +55;Private;197399;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;55;United-States;>50K +33;Private;162572;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;40;United-States;>50K +62;Self-emp-inc;245491;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;99999;0;40;United-States;>50K +52;Self-emp-inc;334273;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;65;United-States;>50K +50;Private;124963;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;55;United-States;>50K +28;Self-emp-inc;201186;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;99999;0;40;United-States;>50K +42;Local-gov;180985;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;99999;0;40;United-States;>50K +51;Private;145714;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;?;>50K +42;Private;190179;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;40;United-States;>50K +50;Self-emp-inc;158294;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;80;United-States;>50K +41;Self-emp-inc;495061;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;70;United-States;>50K +47;Private;102308;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +38;Federal-gov;37683;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;99999;0;57;Canada;>50K +61;?;139391;Some-college;10;Married-civ-spouse;?;Husband;White;Male;99999;0;30;United-States;>50K +57;Self-emp-not-inc;95280;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;99999;0;45;United-States;>50K +42;Self-emp-not-inc;201908;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +47;Private;354148;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;48;United-States;>50K +51;Self-emp-not-inc;111283;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;99999;0;35;United-States;>50K +42;Local-gov;175642;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;99999;0;40;United-States;>50K +47;Self-emp-inc;181130;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +74;Private;188709;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +39;Private;190297;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;55;United-States;>50K +43;Private;462180;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +47;Private;181307;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;99999;0;60;United-States;>50K +52;Self-emp-not-inc;140985;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;99999;0;30;United-States;>50K +69;?;323016;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;99999;0;40;United-States;>50K +58;?;266792;Some-college;10;Married-civ-spouse;?;Husband;White;Male;99999;0;40;United-States;>50K +48;Private;108557;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;99999;0;40;United-States;>50K +55;Self-emp-inc;392325;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;60;United-States;>50K +50;Private;183173;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;40;United-States;>50K +49;State-gov;423222;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;99999;0;80;United-States;>50K +30;Self-emp-not-inc;115932;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;99999;0;50;United-States;>50K +52;Private;163998;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;99999;0;45;United-States;>50K +46;Private;28419;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +58;Private;136841;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;99999;0;35;United-States;>50K +59;Self-emp-not-inc;165315;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;43;United-States;>50K +50;Self-emp-not-inc;401118;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;99999;0;50;United-States;>50K +40;Private;79586;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;99999;0;40;?;>50K +43;Private;58447;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;55;United-States;>50K +47;Private;246739;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;55;United-States;>50K +65;Private;105491;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +33;Private;134886;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;99999;0;30;United-States;>50K +53;Private;124076;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;99999;0;37;United-States;>50K +42;Self-emp-not-inc;269733;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;99999;0;80;United-States;>50K +69;Self-emp-not-inc;240562;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;40;United-States;>50K +44;Self-emp-inc;120277;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;45;United-States;>50K +44;Self-emp-not-inc;282722;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +38;Self-emp-inc;478829;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;50;United-States;>50K +39;Private;237943;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;70;United-States;>50K +32;Private;553405;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;50;United-States;>50K +41;Private;115932;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +31;Private;100252;Bachelors;13;Divorced;Other-service;Not-in-family;Asian-Pac-Islander;Male;99999;0;70;United-States;>50K +50;Self-emp-not-inc;132716;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +49;Private;187454;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;99999;0;65;United-States;>50K +29;Self-emp-not-inc;69132;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;99999;0;60;United-States;>50K +48;Private;107231;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +40;Local-gov;150755;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;75;United-States;>50K +45;Private;148995;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;99999;0;30;United-States;>50K +60;Private;166330;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;99999;0;40;United-States;>50K +49;Self-emp-inc;229737;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;37;United-States;>50K +56;Self-emp-inc;98418;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;40;United-States;>50K +45;Self-emp-inc;108100;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;99999;0;25;?;>50K +71;Self-emp-inc;38822;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +57;Self-emp-inc;376230;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;99999;0;40;United-States;>50K +64;Self-emp-inc;185912;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;35;United-States;>50K +41;Private;124956;Bachelors;13;Separated;Prof-specialty;Not-in-family;Black;Female;99999;0;60;United-States;>50K +49;Self-emp-not-inc;43348;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;99999;0;70;United-States;>50K +55;Private;408537;9th;5;Divorced;Craft-repair;Unmarried;White;Female;99999;0;37;United-States;>50K +48;Self-emp-not-inc;107231;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +40;Self-emp-not-inc;204235;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;50;United-States;>50K +55;Private;115439;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +44;Self-emp-inc;118212;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;70;United-States;>50K +38;Private;227945;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;65;United-States;>50K +34;Private;49469;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;99999;0;50;United-States;>50K +37;Self-emp-not-inc;353298;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;99999;0;50;United-States;>50K +51;Self-emp-not-inc;120781;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Other;Male;99999;0;70;India;>50K +65;Self-emp-inc;210381;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;65;United-States;>50K +38;Self-emp-not-inc;194534;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;99999;0;60;United-States;>50K +65;Self-emp-inc;184965;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +37;Private;171150;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;99999;0;60;United-States;>50K +38;Private;100375;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;60;United-States;>50K +50;Self-emp-inc;190333;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;99999;0;55;United-States;>50K +55;Private;134120;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;99999;0;40;United-States;>50K +38;Private;185848;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;70;United-States;>50K +22;Self-emp-not-inc;214014;Some-college;10;Never-married;Sales;Own-child;Black;Male;99999;0;55;United-States;>50K +47;Private;155664;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;55;United-States;>50K +43;Self-emp-inc;62026;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +66;Private;115498;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;55;?;>50K +47;Private;294913;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;99999;0;40;United-States;>50K +57;Local-gov;110417;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;99999;0;40;United-States;>50K +27;Private;211032;Preschool;1;Married-civ-spouse;Farming-fishing;Other-relative;White;Male;41310;0;24;Mexico;<=50K +63;Self-emp-not-inc;289741;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;41310;0;50;United-States;<=50K +17;?;304873;10th;6;Never-married;?;Own-child;White;Female;34095;0;32;United-States;<=50K +18;Private;301948;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;34095;0;3;United-States;<=50K +19;Private;188815;HS-grad;9;Never-married;Other-service;Own-child;White;Female;34095;0;20;United-States;<=50K +55;Self-emp-not-inc;145574;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;34095;0;60;United-States;<=50K +20;?;273701;Some-college;10;Never-married;?;Other-relative;Black;Male;34095;0;10;United-States;<=50K +46;Private;133938;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;27828;0;50;United-States;>50K +35;Private;202027;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;27828;0;50;United-States;>50K +47;Self-emp-inc;79627;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;27828;0;50;United-States;>50K +55;Self-emp-not-inc;124975;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;27828;0;55;United-States;>50K +34;Private;50276;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;27828;0;40;United-States;>50K +25;Private;169905;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;27828;0;40;United-States;>50K +56;Self-emp-inc;70720;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;27828;0;60;United-States;>50K +25;Private;102476;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Male;27828;0;50;United-States;>50K +41;Private;182108;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;27828;0;35;United-States;>50K +42;Private;46221;Doctorate;16;Married-spouse-absent;Other-service;Not-in-family;White;Male;27828;0;60;?;>50K +37;Self-emp-not-inc;32239;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;27828;0;40;United-States;>50K +47;Private;233511;Masters;14;Divorced;Sales;Not-in-family;White;Male;27828;0;60;United-States;>50K +36;Private;184456;Prof-school;15;Never-married;Exec-managerial;Not-in-family;White;Male;27828;0;50;United-States;>50K +58;Self-emp-inc;112945;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;27828;0;40;United-States;>50K +45;Private;148549;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;27828;0;56;United-States;>50K +49;Private;120629;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Black;Female;27828;0;60;United-States;>50K +37;Private;116358;HS-grad;9;Never-married;Craft-repair;Other-relative;Amer-Indian-Eskimo;Male;27828;0;48;United-States;>50K +56;Self-emp-not-inc;39380;Some-college;10;Married-spouse-absent;Farming-fishing;Not-in-family;White;Female;27828;0;20;United-States;>50K +37;Private;109133;Masters;14;Separated;Exec-managerial;Not-in-family;White;Male;27828;0;60;Iran;>50K +59;Private;154100;Masters;14;Never-married;Sales;Not-in-family;White;Female;27828;0;45;United-States;>50K +30;Private;116138;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;27828;0;60;United-States;>50K +58;?;353244;Bachelors;13;Widowed;?;Unmarried;White;Female;27828;0;50;United-States;>50K +29;Private;82242;Prof-school;15;Never-married;Prof-specialty;Unmarried;White;Male;27828;0;45;Germany;>50K +36;Private;329980;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;27828;0;40;United-States;>50K +51;Self-emp-inc;54342;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;27828;0;60;United-States;>50K +38;Private;125933;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;27828;0;45;United-States;>50K +36;Self-emp-inc;184456;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;27828;0;55;United-States;>50K +41;Private;106679;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;27828;0;50;United-States;>50K +47;Private;304857;Masters;14;Separated;Tech-support;Not-in-family;White;Male;27828;0;40;United-States;>50K +64;Private;218490;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;27828;0;55;United-States;>50K +64;Private;66634;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;27828;0;50;United-States;>50K +51;Private;673764;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;27828;0;40;United-States;>50K +54;Self-emp-not-inc;28186;Bachelors;13;Divorced;Farming-fishing;Not-in-family;White;Male;27828;0;50;United-States;>50K +53;Self-emp-not-inc;137547;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;27828;0;40;Philippines;>50K +46;Private;295566;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Female;25236;0;65;United-States;>50K +51;Self-emp-not-inc;165001;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;25236;0;50;United-States;>50K +45;Self-emp-inc;191776;Masters;14;Divorced;Sales;Unmarried;White;Female;25236;0;42;United-States;>50K +43;State-gov;261929;Doctorate;16;Married-spouse-absent;Prof-specialty;Unmarried;White;Male;25236;0;64;United-States;>50K +59;State-gov;398626;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Male;25236;0;45;United-States;>50K +37;Private;270059;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;25236;0;25;United-States;>50K +45;Self-emp-inc;208802;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;25236;0;36;United-States;>50K +45;State-gov;190406;Prof-school;15;Divorced;Prof-specialty;Unmarried;Black;Male;25236;0;36;United-States;>50K +32;Private;170154;Assoc-acdm;12;Separated;Exec-managerial;Unmarried;White;Female;25236;0;50;United-States;>50K +36;Self-emp-not-inc;112497;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;25236;0;40;United-States;>50K +47;Private;97883;Bachelors;13;Widowed;Priv-house-serv;Unmarried;White;Female;25236;0;35;United-States;>50K +75;?;111177;Bachelors;13;Widowed;?;Not-in-family;White;Female;25124;0;16;United-States;>50K +73;Private;183213;Assoc-voc;11;Widowed;Prof-specialty;Not-in-family;White;Male;25124;0;60;United-States;>50K +65;?;224472;Prof-school;15;Never-married;?;Not-in-family;White;Male;25124;0;80;United-States;>50K +68;Self-emp-inc;52052;Assoc-voc;11;Widowed;Sales;Not-in-family;White;Female;25124;0;50;United-States;>50K +61;Self-emp-not-inc;32423;HS-grad;9;Married-civ-spouse;Farming-fishing;Wife;White;Female;22040;0;40;United-States;<=50K +67;Private;231559;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;48;United-States;>50K +65;Private;198766;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;20051;0;40;United-States;>50K +63;Self-emp-not-inc;167501;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;20051;0;10;United-States;>50K +64;Self-emp-inc;132832;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;20051;0;40;?;>50K +90;Local-gov;227796;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;60;United-States;>50K +79;Private;120707;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;35;El-Salvador;>50K +67;Private;195161;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;60;United-States;>50K +90;Private;87372;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;72;United-States;>50K +68;Private;193666;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;55;United-States;>50K +65;Private;154171;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;60;United-States;>50K +68;?;146645;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;20051;0;50;United-States;>50K +62;Self-emp-inc;118725;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;20051;0;72;United-States;>50K +69;Private;36956;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;50;United-States;>50K +67;Self-emp-not-inc;106143;Doctorate;16;Married-civ-spouse;Sales;Husband;White;Male;20051;0;40;United-States;>50K +66;Private;169804;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;20051;0;40;United-States;>50K +67;?;129188;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;20051;0;5;United-States;>50K +70;Self-emp-not-inc;36311;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;35;United-States;>50K +68;Self-emp-not-inc;133736;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;20051;0;40;United-States;>50K +68;Local-gov;242095;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;40;United-States;>50K +74;Self-emp-inc;228075;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;25;United-States;>50K +71;Federal-gov;422149;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;40;United-States;>50K +67;Self-emp-inc;171564;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;20051;0;30;England;>50K +68;Private;195868;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;20051;0;40;United-States;>50K +77;Self-emp-inc;84979;Doctorate;16;Married-civ-spouse;Farming-fishing;Husband;White;Male;20051;0;40;United-States;>50K +71;Self-emp-inc;118119;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;50;United-States;>50K +76;Private;199949;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;20051;0;50;United-States;>50K +83;Self-emp-inc;240150;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;20051;0;50;United-States;>50K +68;Private;117236;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;45;United-States;>50K +79;?;76641;Masters;14;Married-civ-spouse;?;Husband;White;Male;20051;0;40;Poland;>50K +69;Self-emp-not-inc;58213;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;45;United-States;>50K +66;Local-gov;174486;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;20051;0;35;Jamaica;>50K +73;Private;148003;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;20051;0;36;United-States;>50K +67;Self-emp-not-inc;431426;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;20051;0;4;United-States;>50K +66;Private;113323;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;40;United-States;>50K +66;State-gov;162945;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;Black;Male;20051;0;55;United-States;>50K +67;Self-emp-not-inc;191380;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;20051;0;25;United-States;>50K +67;Self-emp-inc;182581;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;20051;0;20;United-States;>50K +79;Self-emp-inc;97082;12th;8;Widowed;Sales;Not-in-family;White;Male;18481;0;45;United-States;>50K +67;Self-emp-not-inc;148690;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Male;18481;0;2;United-States;>50K +74;Private;129879;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;15831;0;40;United-States;>50K +67;Self-emp-inc;411007;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;15831;0;40;United-States;>50K +67;Local-gov;103315;Masters;14;Never-married;Exec-managerial;Other-relative;White;Female;15831;0;72;United-States;>50K +67;Private;224984;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;15831;0;16;Germany;>50K +69;Private;182862;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;15831;0;40;United-States;>50K +74;Self-emp-not-inc;199136;Bachelors;13;Widowed;Craft-repair;Not-in-family;White;Male;15831;0;8;Germany;>50K +44;Private;198282;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +58;Self-emp-inc;210563;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;15024;0;35;United-States;>50K +57;Federal-gov;425161;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +46;Private;188386;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +38;Private;91039;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +38;Self-emp-inc;99146;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;80;United-States;>50K +46;Private;102388;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +43;Private;154374;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;60;United-States;>50K +33;Private;175697;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +39;Private;202027;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +39;Self-emp-inc;329980;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +54;Self-emp-not-inc;123011;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;52;United-States;>50K +33;Private;354573;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;44;United-States;>50K +54;Private;99185;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +51;Self-emp-inc;229465;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +47;Self-emp-not-inc;370119;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +53;State-gov;156877;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;15024;0;35;United-States;>50K +64;Self-emp-inc;179436;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +30;Self-emp-not-inc;167990;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;65;United-States;>50K +55;Private;98361;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;?;>50K +52;Private;147876;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;15024;0;60;United-States;>50K +48;Private;126754;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +44;Private;120277;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;Italy;>50K +53;State-gov;281590;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;40;United-States;>50K +64;Self-emp-not-inc;134960;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;35;United-States;>50K +39;Private;79331;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;15024;0;40;United-States;>50K +50;Private;147629;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +57;Self-emp-inc;119253;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;15024;0;65;United-States;>50K +59;Self-emp-not-inc;174056;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +44;Private;198282;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +37;Private;82521;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +56;Self-emp-inc;211804;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +64;Private;319371;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +32;Private;194426;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;15024;0;40;United-States;>50K +39;Self-emp-inc;122742;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +57;Self-emp-inc;172654;Prof-school;15;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;50;United-States;>50K +35;Private;376455;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +51;Self-emp-not-inc;145409;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +44;Private;198316;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +57;Self-emp-not-inc;225334;Prof-school;15;Married-civ-spouse;Sales;Wife;White;Female;15024;0;35;United-States;>50K +47;Private;151267;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;15024;0;40;United-States;>50K +51;Private;293196;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;Iran;>50K +50;Self-emp-not-inc;44368;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;55;El-Salvador;>50K +52;Private;338816;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +47;Self-emp-inc;214169;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;15024;0;40;United-States;>50K +34;Private;30497;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +37;Self-emp-inc;291518;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;55;United-States;>50K +49;Self-emp-inc;362654;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +54;Private;22743;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;60;United-States;>50K +39;Private;191807;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +39;Self-emp-not-inc;126569;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +32;Private;312667;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +34;Self-emp-inc;186824;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +53;Private;114758;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;65;United-States;>50K +53;Federal-gov;199720;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;Germany;>50K +52;Self-emp-inc;100506;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +37;Local-gov;233825;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;50;United-States;>50K +53;Private;424079;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +37;Private;148015;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;15024;0;40;United-States;>50K +47;Private;124973;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +58;Self-emp-not-inc;93664;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +39;Private;173175;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +46;Private;155659;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;45;United-States;>50K +49;Private;65087;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +46;Private;117849;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +32;Private;207668;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +50;Self-emp-inc;127315;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +61;Private;85548;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;15024;0;18;United-States;>50K +33;Private;56701;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;75;United-States;>50K +31;Local-gov;381153;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;15024;0;56;United-States;>50K +39;Self-emp-not-inc;109766;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +45;Self-emp-inc;170871;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +35;Private;99357;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;50;United-States;>50K +36;Private;261382;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;15024;0;45;United-States;>50K +40;Self-emp-inc;157240;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;30;Iran;>50K +47;Self-emp-not-inc;168109;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;15024;0;50;United-States;>50K +41;Private;280167;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;70;United-States;>50K +52;Self-emp-inc;173754;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +43;Private;303051;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +55;Private;116878;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;30;United-States;>50K +39;Private;179668;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;15024;0;40;United-States;>50K +61;Private;176839;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +46;Private;360096;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +49;Private;198759;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +52;Private;145409;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;60;Canada;>50K +58;Private;306233;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +49;Local-gov;149210;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;15024;0;40;United-States;>50K +46;Private;219021;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;44;United-States;>50K +47;Self-emp-inc;332355;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +47;Self-emp-inc;173783;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +36;Local-gov;61778;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +63;Self-emp-inc;137940;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +37;Private;108140;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +46;Private;328216;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +39;Private;187098;Prof-school;15;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;47;United-States;>50K +53;Private;151580;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +30;Private;154950;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +32;Private;193042;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +47;State-gov;120429;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +55;Private;229029;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;48;United-States;>50K +57;Private;200453;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;40;United-States;>50K +39;Private;70995;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;99;United-States;>50K +37;Private;186934;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +32;Private;167531;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;15024;0;50;United-States;>50K +50;Private;34832;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;15024;0;40;United-States;>50K +41;Private;35166;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +43;Private;352005;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;45;United-States;>50K +45;Private;205100;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +40;State-gov;199381;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;37;United-States;>50K +55;Private;282023;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +59;Private;271571;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;50;United-States;>50K +63;Private;213945;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;Iran;>50K +34;Private;187215;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;36;United-States;>50K +50;Local-gov;259377;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;40;United-States;>50K +51;Self-emp-inc;167793;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +36;Private;237943;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +54;Private;135803;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;15024;0;60;South;>50K +42;Private;340234;HS-grad;9;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;15024;0;40;United-States;>50K +40;Private;226902;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +42;Local-gov;121998;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +36;Private;198237;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +32;Self-emp-inc;78530;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +53;State-gov;43952;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;38;United-States;>50K +46;Self-emp-not-inc;43348;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +52;Self-emp-inc;254211;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +30;Self-emp-inc;321990;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;?;>50K +33;Private;144949;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +32;Private;137076;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +43;Private;194726;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;55;United-States;>50K +50;Private;89041;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;50;United-States;>50K +38;Private;409604;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +43;State-gov;139734;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +53;Private;30244;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +30;Private;340917;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +59;Self-emp-not-inc;201263;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;55;United-States;>50K +44;Private;116825;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;80;United-States;>50K +41;Private;101593;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +38;?;70282;Masters;14;Married-civ-spouse;?;Wife;Black;Female;15024;0;2;United-States;>50K +60;Private;103344;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;40;United-States;>50K +42;Self-emp-not-inc;336513;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;60;United-States;>50K +42;Self-emp-not-inc;24763;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +48;Private;38950;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +55;Private;199067;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;42;United-States;>50K +49;State-gov;391585;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +50;Private;205803;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +55;Private;182460;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;35;United-States;>50K +44;Private;267717;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;45;United-States;>50K +46;Private;330087;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +40;Private;88909;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +39;Self-emp-not-inc;343476;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;Japan;>50K +30;Local-gov;182926;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;15024;0;40;United-States;>50K +44;Private;109912;Doctorate;16;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;32;United-States;>50K +60;Self-emp-inc;376133;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;15024;0;15;United-States;>50K +60;Private;142494;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +36;Private;184112;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;45;United-States;>50K +36;Self-emp-inc;77146;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;45;United-States;>50K +39;Private;322143;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;70;United-States;>50K +40;Self-emp-inc;182437;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +51;Private;90363;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;15024;0;40;United-States;>50K +45;Private;101452;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;England;>50K +51;Private;338620;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +47;Private;149700;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;15024;0;40;United-States;>50K +59;Private;153484;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;50;United-States;>50K +47;Private;162741;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;Black;Female;15024;0;40;United-States;>50K +46;Federal-gov;102308;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +35;Private;81232;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +39;Private;33983;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;15024;0;40;United-States;>50K +52;Self-emp-not-inc;194995;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;55;United-States;>50K +32;Federal-gov;42900;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +40;Private;166662;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +61;Private;170262;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;38;United-States;>50K +57;Private;127728;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +48;State-gov;212954;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +51;Private;221672;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +34;Self-emp-not-inc;198664;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;15024;0;70;South;>50K +62;Private;109190;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +42;Private;252518;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +59;Private;165922;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +57;Self-emp-inc;123053;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;15024;0;50;India;>50K +59;Self-emp-inc;31359;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;80;United-States;>50K +50;Private;98975;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +61;Private;119684;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;20;United-States;>50K +44;Private;181762;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;55;United-States;>50K +41;Private;150755;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;Canada;>50K +43;Private;345789;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;50;United-States;>50K +46;Private;102569;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;65;United-States;>50K +42;Private;119359;Prof-school;15;Married-civ-spouse;Sales;Wife;Amer-Indian-Eskimo;Female;15024;0;40;South;>50K +37;Private;359001;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;50;United-States;>50K +46;Private;393715;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +46;Self-emp-not-inc;366089;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +47;Private;61885;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +46;Private;121124;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +59;Self-emp-inc;169982;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +43;State-gov;506329;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;15024;0;40;?;>50K +48;Private;182541;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +47;Private;323798;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;55;United-States;>50K +43;Private;130126;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +44;Local-gov;189956;Bachelors;13;Married-civ-spouse;Protective-serv;Wife;Black;Female;15024;0;40;United-States;>50K +45;Private;266860;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +43;Local-gov;188291;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +40;Private;99604;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;24;United-States;>50K +50;Private;204447;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;65;United-States;>50K +52;Self-emp-inc;114758;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +52;?;92968;Masters;14;Married-civ-spouse;?;Wife;White;Female;15024;0;40;United-States;>50K +40;Private;198873;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;30;United-States;>50K +44;Private;148138;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;15024;0;40;Japan;>50K +47;Private;355320;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +58;Self-emp-inc;89922;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +50;Private;138852;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +54;Self-emp-inc;129432;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +50;Private;145409;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +43;Private;64631;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +52;Private;186303;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;Canada;>50K +44;Self-emp-not-inc;172479;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;15024;0;60;United-States;>50K +58;Private;147707;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +45;Private;148171;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;40;United-States;>50K +30;Private;196385;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;35;United-States;>50K +40;Self-emp-inc;191429;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +49;Self-emp-inc;58359;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +52;Self-emp-inc;89041;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +35;Private;186183;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;80;United-States;>50K +49;Self-emp-inc;191277;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +50;Private;164198;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;15024;0;45;United-States;>50K +31;Private;167725;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;15024;0;48;Philippines;>50K +53;Local-gov;283602;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;40;United-States;>50K +34;Private;203488;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +19;?;200790;12th;8;Married-civ-spouse;?;Other-relative;White;Female;15024;0;40;United-States;>50K +46;Federal-gov;20956;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +44;State-gov;141858;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;75;United-States;>50K +45;Private;148995;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;40;United-States;>50K +50;Private;43764;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +49;Self-emp-not-inc;181307;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;65;United-States;>50K +49;?;271346;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;15024;0;60;United-States;>50K +41;Self-emp-not-inc;174395;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;55;United-States;>50K +58;Private;146477;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;Greece;>50K +44;Self-emp-inc;357679;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;15024;0;65;United-States;>50K +36;Self-emp-inc;306156;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +57;Federal-gov;42298;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;15024;0;40;United-States;>50K +39;Private;375452;Prof-school;15;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;48;United-States;>50K +55;Private;98361;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +42;Private;98211;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +47;Self-emp-inc;215620;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +55;State-gov;296991;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +45;Private;390368;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;15024;0;99;United-States;>50K +32;Private;447066;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;15024;0;50;United-States;>50K +58;Federal-gov;200042;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +31;Private;352465;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +49;Private;309033;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;60;United-States;>50K +52;Private;284329;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +28;Private;312372;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;15024;0;40;United-States;>50K +55;Federal-gov;305850;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +42;Self-emp-inc;277488;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;65;United-States;>50K +46;Private;273575;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;15024;0;40;United-States;>50K +40;Self-emp-not-inc;237293;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;40;United-States;>50K +45;Self-emp-not-inc;176814;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +51;Local-gov;133336;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +42;Private;187720;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;?;>50K +48;Self-emp-inc;54190;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +53;Self-emp-inc;134793;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +46;Local-gov;121124;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;15024;0;40;United-States;>50K +41;Self-emp-inc;236021;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +42;State-gov;190044;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +47;Private;120781;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;15024;0;40;?;>50K +51;Private;215404;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;15024;0;40;United-States;>50K +38;Private;117312;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;40;United-States;>50K +52;Self-emp-inc;234286;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +50;Self-emp-inc;283676;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +45;Private;102308;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +45;Self-emp-not-inc;210364;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;80;United-States;>50K +49;Self-emp-not-inc;219718;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +54;Private;104501;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +51;Self-emp-inc;100029;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +56;Self-emp-inc;109856;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +58;Self-emp-not-inc;248841;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +43;Self-emp-inc;117158;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +46;Private;110171;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +43;Private;212894;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +59;Private;354037;Prof-school;15;Married-civ-spouse;Transport-moving;Husband;Black;Male;15024;0;50;United-States;>50K +47;Local-gov;149700;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;35;United-States;>50K +33;Private;182926;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +56;Local-gov;381965;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +41;Private;222596;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;45;United-States;>50K +64;Federal-gov;388594;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;?;>50K +43;Private;183273;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;32;United-States;>50K +47;Private;102628;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +42;Private;227065;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;32;United-States;>50K +48;State-gov;171926;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +61;Private;96660;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;15024;0;34;United-States;>50K +60;Private;93997;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +38;Private;38312;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;65;United-States;>50K +28;Private;285294;Bachelors;13;Married-civ-spouse;Sales;Wife;Black;Female;15024;0;45;United-States;>50K +54;Private;182187;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;Black;Male;15024;0;38;Jamaica;>50K +48;Private;207277;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +31;Private;187560;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +38;Private;114591;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;40;United-States;>50K +32;Private;126132;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +42;Private;383493;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +41;Self-emp-not-inc;153132;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +40;Private;287008;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;55;Germany;>50K +44;Local-gov;136986;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;35;United-States;>50K +57;Self-emp-inc;127728;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +34;Private;177437;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;45;United-States;>50K +52;Private;145166;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +37;Private;19899;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;45;United-States;>50K +56;Private;367984;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +38;Private;172538;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +47;Private;264052;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +53;Private;73134;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;60;United-States;>50K +37;Private;588003;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +31;Private;197886;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;15024;0;45;United-States;>50K +47;Private;121124;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;15024;0;50;United-States;>50K +46;Private;58683;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +55;Private;175071;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;15024;0;40;United-States;>50K +43;Private;180599;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +46;Self-emp-inc;192779;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +45;Private;30457;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +43;Self-emp-inc;130126;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +61;Private;86067;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +49;Private;187370;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;50;United-States;>50K +39;Private;177154;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +54;Private;36480;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;15024;0;50;United-States;>50K +62;Private;244087;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;50;United-States;>50K +51;Private;392668;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;84;United-States;>50K +40;Private;25005;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;99;United-States;>50K +46;Self-emp-inc;320124;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;Amer-Indian-Eskimo;Female;15024;0;40;United-States;>50K +38;Private;333651;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;70;United-States;>50K +57;Private;199847;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +39;Private;110426;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;45;United-States;>50K +28;Private;119287;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;28;United-States;>50K +36;State-gov;747719;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;15024;0;50;United-States;>50K +63;Private;294009;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +41;Private;359696;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;15024;0;60;United-States;>50K +56;Private;122390;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;15024;0;40;United-States;>50K +51;Self-emp-inc;338260;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +45;Self-emp-inc;181307;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;43;United-States;>50K +43;Local-gov;153132;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +41;Private;287306;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;60;United-States;>50K +44;Private;201723;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;45;United-States;>50K +30;Private;341051;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +42;Private;176063;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;55;United-States;>50K +39;Private;174242;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;60;United-States;>50K +46;State-gov;250821;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;15024;0;40;United-States;>50K +47;Self-emp-not-inc;242391;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +51;Federal-gov;223206;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;15024;0;40;Vietnam;>50K +41;Private;122215;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;40;United-States;>50K +37;Private;121521;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;15024;0;45;United-States;>50K +52;Self-emp-inc;287927;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;15024;0;40;United-States;>50K +45;Private;214627;Doctorate;16;Widowed;Prof-specialty;Unmarried;White;Male;15020;0;40;Iran;>50K +52;Private;99736;Masters;14;Divorced;Prof-specialty;Unmarried;White;Male;15020;0;50;United-States;>50K +39;Private;150061;Masters;14;Divorced;Exec-managerial;Unmarried;Black;Female;15020;0;60;United-States;>50K +62;Private;195343;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Male;15020;0;50;United-States;>50K +38;Private;139180;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;15020;0;45;United-States;>50K +44;Private;343591;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;14344;0;40;United-States;>50K +31;Private;220066;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;14344;0;50;United-States;>50K +31;Private;340917;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;14344;0;40;United-States;>50K +45;Private;543922;Masters;14;Divorced;Transport-moving;Not-in-family;White;Male;14344;0;48;United-States;>50K +37;Private;538443;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;14344;0;40;United-States;>50K +53;Local-gov;221722;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;14344;0;50;United-States;>50K +23;Private;106957;11th;7;Never-married;Craft-repair;Own-child;Asian-Pac-Islander;Male;14344;0;40;Vietnam;>50K +53;Private;171924;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;14344;0;55;United-States;>50K +43;Private;170525;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;14344;0;40;United-States;>50K +44;Self-emp-not-inc;274562;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;14344;0;40;United-States;>50K +39;Private;174924;HS-grad;9;Separated;Exec-managerial;Not-in-family;White;Male;14344;0;40;United-States;>50K +49;Private;149049;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;14344;0;45;United-States;>50K +35;Private;252897;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;14344;0;40;United-States;>50K +41;State-gov;108945;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;14344;0;40;United-States;>50K +35;Private;127306;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;14344;0;40;United-States;>50K +38;Private;217349;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;14344;0;40;United-States;>50K +29;Private;157612;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;14344;0;40;United-States;>50K +22;Private;233955;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;14344;0;40;United-States;>50K +54;Private;288992;10th;6;Divorced;Prof-specialty;Unmarried;White;Male;14344;0;68;United-States;>50K +36;Private;337039;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;Black;Male;14344;0;40;England;>50K +58;Private;234213;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;14344;0;48;United-States;>50K +24;Local-gov;452640;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;14344;0;50;United-States;>50K +52;Private;146567;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Male;14344;0;40;United-States;>50K +29;Private;152461;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;14344;0;50;United-States;>50K +29;Private;176037;Assoc-voc;11;Divorced;Tech-support;Not-in-family;Black;Male;14344;0;40;United-States;>50K +44;Private;147110;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;14344;0;40;United-States;>50K +31;Private;45781;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;14084;0;50;United-States;>50K +40;Federal-gov;56795;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;14084;0;55;United-States;>50K +42;Private;151408;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;14084;0;50;United-States;>50K +44;Private;75227;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;14084;0;40;United-States;>50K +55;Private;163083;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;14084;0;45;United-States;>50K +30;Local-gov;125159;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;14084;0;45;?;>50K +52;Private;218550;Some-college;10;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;14084;0;16;United-States;>50K +36;Private;297449;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;14084;0;40;United-States;>50K +42;Federal-gov;170230;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;14084;0;60;United-States;>50K +31;Private;345122;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;14084;0;50;United-States;>50K +51;Private;196501;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;14084;0;50;United-States;>50K +58;Private;150560;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;14084;0;40;United-States;>50K +28;Private;34335;HS-grad;9;Divorced;Sales;Not-in-family;Amer-Indian-Eskimo;Male;14084;0;40;United-States;>50K +56;Private;295067;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;14084;0;45;United-States;>50K +48;Self-emp-not-inc;328606;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;14084;0;63;United-States;>50K +37;Private;125550;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;14084;0;35;United-States;>50K +36;Private;111499;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;14084;0;40;United-States;>50K +37;Self-emp-not-inc;164526;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;14084;0;45;United-States;>50K +54;Private;155233;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;14084;0;40;United-States;>50K +40;Private;105794;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;14084;0;50;United-States;>50K +34;Private;160261;HS-grad;9;Never-married;Tech-support;Own-child;Asian-Pac-Islander;Male;14084;0;35;China;>50K +59;Private;140569;Some-college;10;Separated;Sales;Not-in-family;White;Male;14084;0;60;United-States;>50K +31;Private;72630;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;14084;0;50;United-States;>50K +49;Private;153536;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;14084;0;44;United-States;>50K +55;Private;436861;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;14084;0;40;United-States;>50K +53;Self-emp-inc;42924;Doctorate;16;Divorced;Exec-managerial;Not-in-family;White;Male;14084;0;50;United-States;>50K +33;Private;168981;Masters;14;Divorced;Exec-managerial;Own-child;White;Female;14084;0;50;United-States;>50K +40;Private;175935;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;14084;0;40;United-States;>50K +48;?;175653;Assoc-acdm;12;Divorced;?;Not-in-family;White;Female;14084;0;40;United-States;>50K +45;Self-emp-not-inc;319122;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;14084;0;45;United-States;>50K +49;Self-emp-not-inc;107597;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;14084;0;30;United-States;>50K +31;Private;178623;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;14084;0;60;United-States;>50K +37;Private;82576;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;14084;0;36;United-States;>50K +39;Private;347960;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;14084;0;35;United-States;>50K +47;Private;160187;HS-grad;9;Separated;Prof-specialty;Other-relative;Black;Female;14084;0;38;United-States;>50K +62;State-gov;202056;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;14084;0;40;United-States;>50K +51;Self-emp-inc;98642;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;14084;0;40;United-States;>50K +63;Self-emp-inc;38472;Some-college;10;Widowed;Sales;Not-in-family;White;Female;14084;0;60;United-States;>50K +44;Private;110396;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;14084;0;56;United-States;>50K +32;Private;167990;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;14084;0;40;United-States;>50K +58;Federal-gov;72998;11th;7;Divorced;Craft-repair;Not-in-family;Black;Female;14084;0;40;United-States;>50K +40;Private;121956;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;13550;0;40;Cambodia;>50K +53;Private;283602;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;13550;0;43;United-States;>50K +35;Private;188069;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;13550;0;55;?;>50K +24;Self-emp-inc;493034;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;13550;0;50;United-States;>50K +41;Private;116493;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;13550;0;44;United-States;>50K +26;Private;164488;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;13550;0;50;United-States;>50K +22;Private;100345;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;13550;0;55;United-States;>50K +32;Private;252752;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;13550;0;60;United-States;>50K +36;Private;201769;11th;7;Never-married;Protective-serv;Not-in-family;Black;Male;13550;0;40;United-States;>50K +31;Private;158162;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;13550;0;50;United-States;>50K +36;Private;175360;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;13550;0;50;United-States;>50K +32;Private;95885;11th;7;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;13550;0;60;United-States;>50K +32;Private;133861;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;13550;0;48;United-States;>50K +43;Federal-gov;105936;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;13550;0;40;United-States;>50K +36;Federal-gov;192443;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;13550;0;40;United-States;>50K +30;Private;347166;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;13550;0;45;United-States;>50K +45;Private;229967;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;13550;0;50;United-States;>50K +39;Private;191227;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;13550;0;50;United-States;>50K +27;Private;186454;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;13550;0;40;United-States;>50K +25;Self-emp-not-inc;368115;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;13550;0;35;United-States;>50K +39;Private;209867;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;13550;0;45;United-States;>50K +29;Private;124680;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;13550;0;35;United-States;>50K +32;Private;159442;Prof-school;15;Never-married;Sales;Not-in-family;White;Female;13550;0;50;United-States;>50K +55;?;141807;HS-grad;9;Never-married;?;Not-in-family;White;Male;13550;0;40;United-States;>50K +35;Private;589809;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;13550;0;60;United-States;>50K +27;Private;388998;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;13550;0;46;United-States;>50K +44;Federal-gov;281739;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;13550;0;50;United-States;>50K +65;Private;242580;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;11678;0;50;United-States;>50K +71;Private;182395;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;11678;0;45;United-States;>50K +71;Self-emp-not-inc;143437;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;10605;0;40;United-States;>50K +65;Private;350498;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;10605;0;20;United-States;>50K +63;Self-emp-not-inc;298249;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;10605;0;40;United-States;>50K +80;?;29020;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;10605;0;10;United-States;>50K +67;Private;279980;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;10605;0;10;United-States;>50K +66;Self-emp-inc;197816;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;10605;0;40;United-States;>50K +65;?;249043;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;10605;0;40;United-States;>50K +69;?;254834;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;10605;0;10;United-States;>50K +65;Self-emp-not-inc;139960;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;10605;0;60;United-States;>50K +59;State-gov;349910;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;10605;0;50;United-States;>50K +68;Self-emp-inc;182131;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;10605;0;20;United-States;>50K +67;Self-emp-not-inc;217892;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;10605;0;35;United-States;>50K +62;Self-emp-not-inc;82388;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;10566;0;40;United-States;<=50K +90;Self-emp-not-inc;155981;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;10566;0;50;United-States;<=50K +63;Private;108097;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;10566;0;45;United-States;<=50K +64;Private;292639;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;10566;0;35;United-States;<=50K +70;Self-emp-inc;379819;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;10566;0;40;United-States;<=50K +67;Private;257557;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;Black;Male;10566;0;40;United-States;<=50K +39;Private;128715;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;10520;0;40;United-States;>50K +40;Private;163215;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;10520;0;40;United-States;>50K +45;Private;67716;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;10520;0;48;United-States;>50K +51;Private;159910;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Black;Male;10520;0;40;United-States;>50K +45;Private;154430;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;10520;0;50;United-States;>50K +54;Self-emp-not-inc;278230;Some-college;10;Divorced;Farming-fishing;Unmarried;White;Female;10520;0;30;United-States;>50K +36;Self-emp-not-inc;164526;Masters;14;Never-married;Sales;Not-in-family;White;Male;10520;0;45;United-States;>50K +48;Federal-gov;205707;Masters;14;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;10520;0;50;United-States;>50K +33;State-gov;208785;Some-college;10;Separated;Prof-specialty;Not-in-family;White;Male;10520;0;40;United-States;>50K +37;Private;361888;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;10520;0;40;United-States;>50K +45;Private;89028;HS-grad;9;Divorced;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;10520;0;40;United-States;>50K +44;Local-gov;177240;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;10520;0;40;United-States;>50K +38;Private;179117;Assoc-acdm;12;Never-married;Machine-op-inspct;Not-in-family;Black;Female;10520;0;50;United-States;>50K +38;Private;255941;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;10520;0;50;United-States;>50K +47;Self-emp-not-inc;112200;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Male;10520;0;45;United-States;>50K +29;Private;87905;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;10520;0;40;United-States;>50K +43;Local-gov;209544;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;10520;0;50;United-States;>50K +44;Private;203761;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;10520;0;40;United-States;>50K +62;Private;103344;Bachelors;13;Widowed;Exec-managerial;Not-in-family;White;Male;10520;0;50;United-States;>50K +28;Private;119793;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;10520;0;50;United-States;>50K +42;Private;54202;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;10520;0;50;United-States;>50K +50;Private;145333;Doctorate;16;Divorced;Prof-specialty;Other-relative;White;Male;10520;0;50;United-States;>50K +53;Local-gov;216691;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;10520;0;40;United-States;>50K +32;Private;317378;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;10520;0;40;United-States;>50K +28;Private;378460;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;10520;0;60;United-States;>50K +26;Private;102476;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;10520;0;64;United-States;>50K +27;Private;128730;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Male;10520;0;65;Greece;>50K +23;State-gov;287988;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;10520;0;40;United-States;>50K +51;Self-emp-inc;210736;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;10520;0;40;United-States;>50K +36;Private;225516;Assoc-acdm;12;Never-married;Sales;Not-in-family;Black;Male;10520;0;43;United-States;>50K +30;Private;207937;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;10520;0;50;United-States;>50K +25;Private;242700;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;10520;0;50;United-States;>50K +44;Private;236746;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;10520;0;45;United-States;>50K +27;Private;279580;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;10520;0;45;United-States;>50K +33;Private;356823;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;10520;0;45;United-States;>50K +30;Private;426431;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;10520;0;40;United-States;>50K +60;Federal-gov;404023;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;10520;0;40;United-States;>50K +57;Private;186386;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Male;10520;0;40;United-States;>50K +28;Private;167336;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;10520;0;40;United-States;>50K +62;Local-gov;113443;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;10520;0;33;United-States;>50K +47;Self-emp-not-inc;33300;Assoc-acdm;12;Never-married;Farming-fishing;Other-relative;White;Male;10520;0;45;United-States;>50K +57;Private;132704;Masters;14;Separated;Prof-specialty;Not-in-family;White;Male;10520;0;32;United-States;>50K +35;Private;207066;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;10520;0;45;United-States;>50K +48;Local-gov;238959;Masters;14;Divorced;Exec-managerial;Unmarried;Black;Female;9562;0;40;United-States;>50K +43;Local-gov;143828;Masters;14;Divorced;Prof-specialty;Unmarried;Black;Female;9562;0;40;United-States;>50K +27;Self-emp-not-inc;420054;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;9562;0;50;United-States;>50K +42;Private;126701;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Male;9562;0;45;United-States;>50K +65;Self-emp-not-inc;118474;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;9386;0;59;?;>50K +67;?;182378;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;9386;0;60;United-States;>50K +65;Private;193216;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;9386;0;40;United-States;>50K +90;Private;46786;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;9386;0;15;United-States;>50K +77;?;28678;Masters;14;Married-civ-spouse;?;Husband;White;Male;9386;0;6;United-States;>50K +72;?;33608;Some-college;10;Married-civ-spouse;?;Husband;White;Male;9386;0;30;United-States;>50K +90;Private;175491;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;9386;0;50;Ecuador;>50K +71;?;35303;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;9386;0;30;United-States;>50K +67;Private;264095;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;9386;0;24;Cuba;>50K +78;Self-emp-inc;385242;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;9386;0;45;United-States;>50K +65;Private;101104;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;9386;0;10;United-States;>50K +64;Federal-gov;301383;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;9386;0;45;United-States;>50K +67;Self-emp-inc;73559;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;9386;0;50;United-States;>50K +69;Self-emp-not-inc;204645;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;9386;0;72;United-States;>50K +70;Self-emp-not-inc;37203;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;9386;0;30;United-States;>50K +70;Private;141742;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;9386;0;50;United-States;>50K +65;?;191380;10th;6;Married-civ-spouse;?;Husband;White;Male;9386;0;50;United-States;>50K +61;Federal-gov;221943;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;9386;0;40;United-States;>50K +69;Self-emp-not-inc;185039;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;9386;0;12;United-States;>50K +69;Private;197080;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;9386;0;60;United-States;>50K +69;Private;128348;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;9386;0;50;United-States;>50K +57;Private;334224;Some-college;10;Married-civ-spouse;Craft-repair;Wife;White;Female;9386;0;40;United-States;>50K +42;Private;341204;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;8614;0;40;United-States;>50K +42;Local-gov;339671;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;8614;0;45;United-States;>50K +26;Private;122999;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;8614;0;40;United-States;>50K +37;State-gov;367237;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;8614;0;40;United-States;>50K +39;Private;315776;Masters;14;Never-married;Exec-managerial;Not-in-family;Black;Male;8614;0;52;United-States;>50K +37;Private;269329;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;8614;0;45;United-States;>50K +39;Private;185520;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;8614;0;40;United-States;>50K +53;?;158352;Masters;14;Never-married;?;Not-in-family;White;Female;8614;0;35;United-States;>50K +22;Private;195532;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;8614;0;40;United-States;>50K +35;Self-emp-not-inc;225399;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;8614;0;40;United-States;>50K +28;Private;78870;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;8614;0;40;United-States;>50K +36;Private;183892;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;8614;0;45;United-States;>50K +45;Private;339863;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;8614;0;48;United-States;>50K +42;State-gov;117583;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;8614;0;60;United-States;>50K +62;Private;122246;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;8614;0;39;United-States;>50K +34;Private;96483;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;8614;0;60;United-States;>50K +35;Federal-gov;287031;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;8614;0;40;United-States;>50K +51;Self-emp-not-inc;174824;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;8614;0;40;United-States;>50K +43;Local-gov;209899;Masters;14;Never-married;Tech-support;Not-in-family;Black;Female;8614;0;47;United-States;>50K +37;State-gov;191841;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;8614;0;40;United-States;>50K +35;Private;117381;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;8614;0;45;United-States;>50K +53;Self-emp-inc;251675;Some-college;10;Divorced;Sales;Not-in-family;White;Male;8614;0;50;Cuba;>50K +53;Private;104461;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;8614;0;50;Italy;>50K +33;Private;238381;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;8614;0;40;United-States;>50K +37;Federal-gov;90881;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Male;8614;0;55;United-States;>50K +64;?;159938;HS-grad;9;Divorced;?;Not-in-family;White;Male;8614;0;40;United-States;>50K +29;Private;133696;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;8614;0;45;United-States;>50K +40;Local-gov;197012;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Female;8614;0;40;England;>50K +58;Private;275859;HS-grad;9;Widowed;Craft-repair;Unmarried;White;Male;8614;0;52;Mexico;>50K +36;Private;178815;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;8614;0;40;United-States;>50K +48;?;151584;Some-college;10;Never-married;?;Not-in-family;White;Male;8614;0;60;United-States;>50K +60;Private;125019;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;8614;0;48;United-States;>50K +58;Private;111625;Bachelors;13;Widowed;Exec-managerial;Unmarried;White;Male;8614;0;40;United-States;>50K +29;Private;236436;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;8614;0;40;United-States;>50K +56;Private;188856;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;8614;0;55;United-States;>50K +39;Self-emp-not-inc;154641;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;8614;0;50;United-States;>50K +31;Private;1033222;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;8614;0;40;United-States;>50K +42;Private;331651;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;8614;0;50;United-States;>50K +25;Private;469572;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;8614;0;40;United-States;>50K +40;Local-gov;290660;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;8614;0;50;United-States;>50K +47;Private;176893;HS-grad;9;Divorced;Craft-repair;Not-in-family;Black;Male;8614;0;44;United-States;>50K +46;Private;364548;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;8614;0;40;United-States;>50K +48;State-gov;120131;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;8614;0;40;United-States;>50K +44;Private;247880;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;8614;0;40;United-States;>50K +43;Private;112763;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;8614;0;43;United-States;>50K +35;Private;182898;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;8614;0;40;United-States;>50K +43;Private;180599;Bachelors;13;Separated;Exec-managerial;Unmarried;White;Male;8614;0;40;United-States;>50K +59;Local-gov;296253;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;8614;0;60;United-States;>50K +29;Private;122127;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;8614;0;40;United-States;>50K +24;Private;243190;Assoc-acdm;12;Separated;Craft-repair;Unmarried;Asian-Pac-Islander;Male;8614;0;40;United-States;>50K +35;Private;109351;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;8614;0;45;United-States;>50K +31;Local-gov;158291;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;8614;0;40;United-States;>50K +30;Private;225231;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;8614;0;50;United-States;>50K +64;Private;60940;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;8614;0;50;France;>50K +46;Local-gov;140219;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;8614;0;55;United-States;>50K +67;Private;105252;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;7978;0;35;United-States;<=50K +66;Local-gov;222810;Some-college;10;Divorced;Other-service;Other-relative;White;Female;7896;0;40;?;>50K +70;Local-gov;88638;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;7896;0;50;United-States;>50K +67;Local-gov;190661;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;7896;0;50;United-States;>50K +32;Self-emp-inc;317660;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +48;Private;146268;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;40;United-States;>50K +34;State-gov;98101;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;45;?;>50K +50;Private;196232;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +31;Private;168387;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;Canada;>50K +55;Private;197422;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7688;0;40;United-States;>50K +29;State-gov;356089;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +37;Private;183800;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +44;Private;167005;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;60;United-States;>50K +48;Self-emp-not-inc;243631;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;7688;0;40;United-States;>50K +32;Self-emp-inc;199765;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;50;United-States;>50K +48;Self-emp-inc;192945;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +62;Private;134768;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;?;>50K +44;Private;43711;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +43;Private;193882;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +46;Private;243190;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;40;United-States;>50K +60;Self-emp-inc;197553;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +53;Private;149784;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +23;Self-emp-not-inc;282604;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;7688;0;60;United-States;>50K +44;Self-emp-inc;153132;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;52;United-States;>50K +56;Self-emp-inc;105582;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +34;Private;203408;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +47;Private;213140;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +55;State-gov;146326;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +47;Private;155489;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7688;0;55;United-States;>50K +38;Private;236391;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +43;Private;128170;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +37;Self-emp-inc;186359;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7688;0;60;United-States;>50K +38;Federal-gov;115433;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;33;United-States;>50K +28;Private;119545;Some-college;10;Married-civ-spouse;Exec-managerial;Own-child;White;Male;7688;0;50;United-States;>50K +52;Local-gov;317733;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +45;Federal-gov;352094;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;7688;0;40;Guatemala;>50K +49;Private;186172;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;45;United-States;>50K +46;State-gov;192779;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +38;Private;111398;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;40;United-States;>50K +53;State-gov;50048;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +59;?;154236;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;7688;0;40;United-States;>50K +52;Federal-gov;617021;Bachelors;13;Married-civ-spouse;Tech-support;Husband;Black;Male;7688;0;40;United-States;>50K +44;State-gov;174325;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;7688;0;40;United-States;>50K +33;Private;274222;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;7688;0;38;United-States;>50K +39;Private;183898;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;60;Germany;>50K +50;Self-emp-inc;156623;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;7688;0;50;Philippines;>50K +27;Self-emp-not-inc;37302;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;7688;0;70;United-States;>50K +33;Local-gov;43959;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +41;Private;95047;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;44;United-States;>50K +38;Self-emp-not-inc;108947;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7688;0;40;United-States;>50K +41;Private;67339;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;7688;0;40;United-States;>50K +48;Private;189462;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +36;Self-emp-not-inc;20333;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;7688;0;40;United-States;>50K +41;Self-emp-not-inc;27305;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;7688;0;40;United-States;>50K +45;Federal-gov;88564;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +41;Private;151504;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +34;State-gov;34104;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;38;United-States;>50K +47;Private;164113;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;7688;0;40;United-States;>50K +56;Self-emp-not-inc;172618;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +64;Self-emp-inc;165667;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;60;Canada;>50K +47;Local-gov;56482;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;7688;0;50;United-States;>50K +45;Local-gov;236586;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;55;United-States;>50K +39;Private;194404;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +55;State-gov;175127;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;38;United-States;>50K +63;Private;346975;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;36;United-States;>50K +44;State-gov;33658;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +38;Local-gov;185394;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;40;United-States;>50K +39;Private;85319;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;60;United-States;>50K +44;Private;172479;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +37;Private;152909;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;40;United-States;>50K +47;Local-gov;123681;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;60;United-States;>50K +58;Self-emp-not-inc;222311;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;7688;0;55;United-States;>50K +58;Private;289364;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;45;United-States;>50K +34;Private;134737;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;55;United-States;>50K +38;Federal-gov;238342;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;42;United-States;>50K +61;Private;230292;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;40;United-States;>50K +38;Self-emp-inc;275223;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +41;Self-emp-inc;253060;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;45;United-States;>50K +36;Private;29702;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +35;Private;186934;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +53;Federal-gov;205288;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;35;United-States;>50K +56;Private;132026;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;7688;0;45;United-States;>50K +34;Self-emp-not-inc;179673;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;60;United-States;>50K +33;?;193172;Assoc-voc;11;Married-civ-spouse;?;Own-child;White;Female;7688;0;50;United-States;>50K +41;Private;290660;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;55;United-States;>50K +32;Private;173730;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +24;Private;585203;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;7688;0;45;United-States;>50K +37;Local-gov;218490;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;35;United-States;>50K +52;Private;84278;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;55;?;>50K +34;Private;242460;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +49;Private;165468;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;55;United-States;>50K +35;Private;44780;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;20;United-States;>50K +36;Private;607848;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;45;United-States;>50K +36;Private;187847;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +30;Private;162442;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;50;United-States;>50K +45;Local-gov;215862;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;45;United-States;>50K +58;Private;349910;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +37;Federal-gov;93225;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;40;United-States;>50K +54;Private;145714;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;7688;0;25;United-States;>50K +48;Private;237525;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;65;United-States;>50K +47;Local-gov;114459;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +36;Private;20507;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;50;United-States;>50K +43;Private;403467;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;7688;0;40;United-States;>50K +47;Private;151584;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;60;United-States;>50K +62;Private;208711;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;50;United-States;>50K +26;Private;180246;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +61;Self-emp-inc;61040;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;36;United-States;>50K +57;Self-emp-inc;161662;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;60;United-States;>50K +50;Local-gov;311551;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +33;Local-gov;183923;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;35;United-States;>50K +46;Private;184169;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;35;United-States;>50K +45;Private;178319;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +37;Local-gov;99935;Masters;14;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;50;United-States;>50K +55;Private;223594;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;7688;0;40;Puerto-Rico;>50K +41;Self-emp-not-inc;169023;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;40;United-States;>50K +41;Self-emp-not-inc;57924;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;7688;0;50;United-States;>50K +35;Self-emp-not-inc;202027;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;55;United-States;>50K +46;State-gov;30219;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;38;United-States;>50K +47;Private;121836;Masters;14;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;38;United-States;>50K +46;State-gov;27243;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +53;Local-gov;202733;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;70;United-States;>50K +38;Private;192337;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +46;Private;423222;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +43;Private;191814;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +58;Private;123436;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +31;Private;43819;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;43;United-States;>50K +54;Private;154728;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;7688;0;40;United-States;>50K +45;Private;182313;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +54;Self-emp-inc;96460;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;60;United-States;>50K +42;Private;325353;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;42;United-States;>50K +43;Local-gov;198096;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +51;Private;339905;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +39;State-gov;221059;Masters;14;Married-civ-spouse;Prof-specialty;Other-relative;Other;Female;7688;0;38;United-States;>50K +55;Self-emp-not-inc;141409;10th;6;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +44;Private;230684;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +43;Private;258049;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;53;United-States;>50K +46;Federal-gov;207022;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +46;Private;241935;11th;7;Married-civ-spouse;Other-service;Husband;Black;Male;7688;0;40;United-States;>50K +49;Private;84298;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +60;State-gov;165827;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;60;United-States;>50K +38;Private;87556;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;55;United-States;>50K +46;Federal-gov;341762;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +36;Private;174717;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +39;Self-emp-inc;116358;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;7688;0;40;?;>50K +37;Private;125933;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +48;Private;155664;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;70;United-States;>50K +41;Private;352834;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;55;United-States;>50K +54;Private;249322;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +42;Private;384236;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +40;Private;219266;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +40;Local-gov;163725;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +25;Private;99126;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;40;United-States;>50K +34;Private;122612;Bachelors;13;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;7688;0;50;Philippines;>50K +51;Private;139347;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;40;United-States;>50K +40;Private;195394;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +34;?;166545;Some-college;10;Married-civ-spouse;?;Wife;White;Female;7688;0;6;United-States;>50K +29;Private;148431;Assoc-acdm;12;Married-civ-spouse;Sales;Wife;Other;Female;7688;0;45;United-States;>50K +57;Private;548256;12th;8;Married-civ-spouse;Transport-moving;Husband;Black;Male;7688;0;40;United-States;>50K +63;?;222289;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;7688;0;54;United-States;>50K +45;Local-gov;318280;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +45;Private;197240;12th;8;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +41;Self-emp-inc;220821;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +58;Self-emp-inc;113806;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;30;United-States;>50K +38;Private;241998;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +47;Private;155659;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;55;United-States;>50K +44;Self-emp-inc;56651;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;45;United-States;>50K +47;Private;98012;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;40;United-States;>50K +44;Private;155930;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;55;United-States;>50K +38;State-gov;110426;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;40;?;>50K +33;Private;251120;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +34;Private;181091;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +53;Self-emp-not-inc;145419;1st-4th;2;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;67;Italy;>50K +51;Private;87205;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;20;United-States;>50K +50;Self-emp-inc;302708;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;7688;0;50;Japan;>50K +32;Self-emp-not-inc;37232;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +42;Private;124792;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;7688;0;45;United-States;>50K +55;?;270228;Assoc-acdm;12;Married-civ-spouse;?;Husband;Black;Male;7688;0;40;United-States;>50K +50;Self-emp-not-inc;68898;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;7688;0;55;United-States;>50K +28;Private;183151;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;7688;0;40;United-States;>50K +46;Private;110171;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +39;Private;173476;Prof-school;15;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +37;Private;202027;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;7688;0;50;United-States;>50K +40;Private;177027;Bachelors;13;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;7688;0;52;Japan;>50K +40;Private;154374;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +54;Private;185407;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +41;Private;58880;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;10;United-States;>50K +50;Private;48358;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +41;Private;163287;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;43;United-States;>50K +44;Private;198096;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +48;Self-emp-inc;287647;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;55;United-States;>50K +55;Private;117299;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +48;Private;155659;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +45;Local-gov;160173;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +39;Private;184117;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;20;United-States;>50K +50;Self-emp-not-inc;172281;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +28;Local-gov;168524;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;35;United-States;>50K +57;Private;61474;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;45;United-States;>50K +32;Self-emp-inc;275094;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;55;Mexico;>50K +37;Private;219141;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;7688;0;40;United-States;>50K +51;Federal-gov;20795;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7688;0;40;United-States;>50K +54;Self-emp-inc;304570;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;7688;0;40;?;>50K +37;Private;178948;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;7688;0;45;United-States;>50K +39;Private;103925;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;32;United-States;>50K +30;Private;19302;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +46;Local-gov;303918;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;96;United-States;>50K +40;Federal-gov;75313;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;66;United-States;>50K +38;State-gov;188303;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;40;United-States;>50K +39;Self-emp-not-inc;274683;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +50;Local-gov;196307;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +60;Self-emp-inc;210827;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +42;Private;52781;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +50;Self-emp-not-inc;145419;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;7688;0;45;United-States;>50K +44;Local-gov;171589;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +51;Private;159755;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +51;State-gov;231495;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;55;United-States;>50K +47;Private;278322;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +53;Self-emp-not-inc;135339;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;7688;0;20;China;>50K +41;Private;149909;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +29;Federal-gov;244473;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +46;Private;197332;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;46;United-States;>50K +44;Private;147206;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;45;United-States;>50K +38;?;94559;Bachelors;13;Married-civ-spouse;?;Wife;Other;Female;7688;0;50;?;>50K +49;Private;83610;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;66;United-States;>50K +51;Private;289572;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +41;Private;138975;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;45;United-States;>50K +54;Private;176240;Masters;14;Married-civ-spouse;Transport-moving;Husband;White;Male;7688;0;60;United-States;>50K +60;Private;325971;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7688;0;40;United-States;>50K +40;Private;284303;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;7688;0;40;United-States;>50K +54;Local-gov;173050;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +42;Private;511068;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +38;Private;103323;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +34;Private;24266;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +34;Private;167497;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;7688;0;50;United-States;>50K +56;Federal-gov;156229;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +38;Private;276559;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;70;United-States;>50K +35;Private;86648;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +43;Private;75993;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +50;Self-emp-not-inc;27539;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;7688;0;40;United-States;>50K +35;Private;253006;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;38;United-States;>50K +61;Private;159822;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;Poland;>50K +45;Self-emp-not-inc;315984;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;50;United-States;>50K +36;Private;223433;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +40;Private;121874;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +49;Local-gov;119904;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;30;United-States;>50K +36;Private;262688;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;7688;0;50;United-States;>50K +52;Private;102828;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +53;Private;126592;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;7688;0;40;United-States;>50K +29;Private;191722;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;54;United-States;>50K +56;Private;109015;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;7688;0;50;United-States;>50K +41;Private;100451;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;38;United-States;>50K +30;Private;159589;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +58;Private;172333;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7688;0;40;United-States;>50K +45;Self-emp-inc;180239;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;7688;0;40;?;>50K +52;Self-emp-not-inc;138611;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7688;0;55;United-States;>50K +42;Private;154076;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +38;Private;245372;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +30;Self-emp-inc;77689;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +50;Private;22211;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;50;United-States;>50K +54;Private;215990;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;7688;0;40;United-States;>50K +48;Federal-gov;166634;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;7688;0;40;United-States;>50K +54;Self-emp-inc;223752;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;?;>50K +46;Private;52291;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +42;Private;261929;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;40;United-States;>50K +63;Self-emp-not-inc;29859;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;7688;0;60;United-States;>50K +51;Private;154342;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +39;Federal-gov;363630;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;7688;0;52;United-States;>50K +29;Local-gov;115305;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;40;United-States;>50K +35;Private;64922;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;50;United-States;>50K +41;Self-emp-inc;177905;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;70;United-States;>50K +38;Private;478346;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;7688;0;40;United-States;>50K +39;Private;176335;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;65;United-States;>50K +40;Federal-gov;330174;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +44;Private;242521;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7688;0;50;United-States;>50K +38;State-gov;125499;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;7688;0;60;India;>50K +47;Private;252079;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7688;0;44;United-States;>50K +37;Private;103986;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;39;United-States;>50K +39;Private;198841;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;45;United-States;>50K +28;Local-gov;229223;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;7688;0;36;United-States;>50K +33;Private;133503;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;7688;0;48;United-States;>50K +42;Private;24982;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +32;Self-emp-not-inc;112115;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7688;0;40;United-States;>50K +34;Self-emp-inc;343789;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;55;United-States;>50K +58;Local-gov;311409;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;7688;0;30;United-States;>50K +42;Private;402367;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;7688;0;45;United-States;>50K +39;Private;358753;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7688;0;40;United-States;>50K +31;Federal-gov;130057;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;60;United-States;>50K +40;Private;177905;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;7688;0;44;United-States;>50K +35;Private;91839;Bachelors;13;Married-civ-spouse;Other-service;Husband;Amer-Indian-Eskimo;Male;7688;0;20;United-States;>50K +34;Private;212064;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;7443;0;35;United-States;<=50K +38;Private;22494;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;7443;0;40;United-States;<=50K +41;Private;24763;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;7443;0;40;United-States;<=50K +35;Private;316141;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;7443;0;40;United-States;<=50K +34;Private;213307;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Female;7443;0;35;United-States;<=50K +37;Private;234807;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;7430;0;45;United-States;>50K +42;Local-gov;195124;11th;7;Divorced;Sales;Unmarried;White;Male;7430;0;50;Puerto-Rico;>50K +35;Private;275364;Bachelors;13;Divorced;Tech-support;Unmarried;White;Male;7430;0;40;Germany;>50K +41;Local-gov;112763;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;7430;0;36;United-States;>50K +49;State-gov;185800;Masters;14;Divorced;Prof-specialty;Unmarried;Black;Female;7430;0;40;United-States;>50K +41;Private;529216;Bachelors;13;Divorced;Tech-support;Unmarried;Black;Male;7430;0;45;?;>50K +45;Private;187370;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;7430;0;70;United-States;>50K +42;Self-emp-not-inc;199143;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Female;7430;0;44;United-States;>50K +42;Self-emp-not-inc;32546;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;7430;0;40;United-States;>50K +35;Private;138992;Masters;14;Married-civ-spouse;Prof-specialty;Other-relative;White;Male;7298;0;40;United-States;>50K +36;Private;128757;Bachelors;13;Married-civ-spouse;Other-service;Husband;Black;Male;7298;0;36;United-States;>50K +44;Private;170924;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +24;Private;279472;Some-college;10;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;7298;0;48;United-States;>50K +34;Private;142897;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;7298;0;35;Taiwan;>50K +38;Private;296478;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +36;State-gov;119272;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;7298;0;40;United-States;>50K +42;Private;162140;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;45;United-States;>50K +30;Private;296453;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +42;Private;150533;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;52;United-States;>50K +50;Self-emp-inc;293196;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +35;Private;119098;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +40;Private;228535;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;36;United-States;>50K +38;Private;31033;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +35;Private;183898;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +41;Private;220132;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +29;Private;241431;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +36;Private;183892;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;44;United-States;>50K +60;Private;240521;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +50;Private;88842;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;40;United-States;>50K +41;Private;168071;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +52;Federal-gov;30731;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +37;Private;93717;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;7298;0;45;United-States;>50K +39;Private;188391;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;United-States;>50K +33;Private;220939;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;45;United-States;>50K +34;Private;340940;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;60;United-States;>50K +31;Private;203488;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;50;United-States;>50K +59;Private;146391;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;7298;0;40;United-States;>50K +41;Private;113555;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;7298;0;50;United-States;>50K +39;Private;33355;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;48;United-States;>50K +51;Private;162632;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;60;United-States;>50K +46;Self-emp-inc;219962;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;40;?;>50K +38;Private;111499;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;50;United-States;>50K +33;Private;198003;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;United-States;>50K +25;Private;163620;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;84;United-States;>50K +35;Private;360799;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +52;Private;99185;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;50;United-States;>50K +25;Self-emp-not-inc;182809;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +49;Local-gov;194895;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;7298;0;40;United-States;>50K +39;Private;102953;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;55;United-States;>50K +43;Private;111483;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +42;Private;266084;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;45;United-States;>50K +53;Private;106176;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;7298;0;60;United-States;>50K +51;Private;114927;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;7298;0;40;United-States;>50K +34;Private;157747;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +50;Private;95469;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;45;United-States;>50K +50;Local-gov;145166;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +36;Private;143486;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;50;United-States;>50K +32;Private;131584;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +58;Local-gov;217775;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +47;Private;284916;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;45;United-States;>50K +31;State-gov;75755;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;55;United-States;>50K +36;Private;83089;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;40;Mexico;>50K +36;Private;199739;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;60;United-States;>50K +54;Local-gov;31533;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +43;Federal-gov;203637;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +37;Local-gov;51158;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;7298;0;36;United-States;>50K +35;Private;359131;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;7298;0;8;?;>50K +39;Self-emp-inc;283338;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +57;?;300104;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;7298;0;84;United-States;>50K +39;Private;224531;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +24;Private;161092;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +37;Self-emp-not-inc;268598;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Other;Male;7298;0;50;Puerto-Rico;>50K +35;State-gov;126569;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +39;Private;43712;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +48;Self-emp-inc;254291;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +59;Private;159008;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;20;United-States;>50K +48;Self-emp-not-inc;164582;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;7298;0;60;United-States;>50K +38;Private;132879;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;United-States;>50K +47;Self-emp-not-inc;165468;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;40;United-States;>50K +60;Local-gov;124987;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +48;Private;102359;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +32;Private;222221;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;42;United-States;>50K +54;Private;225599;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;7298;0;40;India;>50K +28;Self-emp-not-inc;209205;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +44;Private;145441;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;48;United-States;>50K +45;Private;186272;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;7298;0;40;United-States;>50K +51;Private;143822;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +37;Federal-gov;22201;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;7298;0;40;Philippines;>50K +38;State-gov;134069;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +49;Federal-gov;586657;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +47;Private;328216;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;7298;0;40;United-States;>50K +51;Private;192182;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;40;United-States;>50K +46;Private;113806;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;?;>50K +36;Private;169469;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +53;Private;158294;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +45;Private;199058;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +34;Federal-gov;419691;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;7298;0;54;United-States;>50K +41;Private;116797;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;50;United-States;>50K +38;Self-emp-inc;269318;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +57;Private;180779;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +46;Private;332884;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;65;United-States;>50K +53;Private;177916;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +37;Private;105813;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +50;Private;160724;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;7298;0;40;Philippines;>50K +40;Private;111483;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +33;Private;164190;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +29;Private;39484;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;7298;0;42;United-States;>50K +42;Private;184837;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;7298;0;40;United-States;>50K +44;Private;196545;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +34;Private;208043;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;45;United-States;>50K +38;Private;190895;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +64;Self-emp-not-inc;65991;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;7298;0;45;United-States;>50K +36;Self-emp-not-inc;35945;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;45;United-States;>50K +37;Private;190987;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;7298;0;40;United-States;>50K +48;Local-gov;493862;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;7298;0;38;United-States;>50K +47;Private;274200;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +42;Private;87284;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;35;United-States;>50K +51;State-gov;454063;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +45;State-gov;213646;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +33;Private;222221;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;45;United-States;>50K +43;Self-emp-not-inc;421837;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;50;Mexico;>50K +40;Local-gov;188436;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;7298;0;40;United-States;>50K +51;Private;237630;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;7298;0;50;United-States;>50K +38;Private;297449;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;50;United-States;>50K +36;Private;225399;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +60;Local-gov;138502;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;7298;0;48;United-States;>50K +54;Private;203635;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;60;United-States;>50K +41;Private;274363;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;42;United-States;>50K +42;Private;175943;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;7298;0;35;United-States;>50K +50;Private;211319;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +52;Federal-gov;291096;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;7298;0;40;United-States;>50K +38;Private;275223;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +59;Private;159724;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;7298;0;55;United-States;>50K +36;Private;175759;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +55;Private;198145;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +39;Local-gov;203482;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +40;Federal-gov;121012;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;48;United-States;>50K +41;Private;143003;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;7298;0;60;India;>50K +38;Private;257250;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;60;United-States;>50K +32;Private;154120;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;40;United-States;>50K +60;Self-emp-inc;105339;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +50;Federal-gov;98980;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +62;Private;69867;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;50;United-States;>50K +49;Private;196707;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;43;United-States;>50K +46;State-gov;238648;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;7298;0;40;United-States;>50K +44;Private;172032;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;51;United-States;>50K +30;Private;271710;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;50;United-States;>50K +61;Local-gov;144723;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +31;Private;265706;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +53;Private;89587;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;45;United-States;>50K +36;Self-emp-not-inc;182898;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +40;Private;360884;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;7298;0;40;United-States;>50K +30;Federal-gov;321990;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;48;Cuba;>50K +50;Local-gov;117496;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;7298;0;30;United-States;>50K +63;Private;137843;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;48;United-States;>50K +38;Self-emp-not-inc;280169;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;50;United-States;>50K +33;Self-emp-not-inc;272359;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;80;United-States;>50K +45;Private;203653;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;7298;0;40;United-States;>50K +41;Federal-gov;253770;Some-college;10;Married-civ-spouse;Transport-moving;Wife;White;Female;7298;0;40;United-States;>50K +37;Local-gov;160910;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +35;Local-gov;300681;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;7298;0;35;United-States;>50K +33;Private;192002;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;Canada;>50K +35;Private;202027;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;7298;0;35;United-States;>50K +35;Self-emp-not-inc;170174;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;60;United-States;>50K +51;Private;279156;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +46;Self-emp-not-inc;176319;HS-grad;9;Married-civ-spouse;Sales;Own-child;White;Female;7298;0;40;United-States;>50K +44;Federal-gov;469454;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;7298;0;48;United-States;>50K +34;Private;191856;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;7298;0;40;United-States;>50K +36;Private;115834;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;7298;0;55;United-States;>50K +35;Local-gov;302149;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;7298;0;40;Philippines;>50K +40;Private;409922;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +38;Private;187870;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;50;United-States;>50K +33;Private;168030;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;7298;0;21;United-States;>50K +55;Self-emp-not-inc;157486;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +28;Private;233796;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;7298;0;32;United-States;>50K +43;Federal-gov;195897;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;7298;0;40;United-States;>50K +40;Private;48087;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;45;United-States;>50K +51;Self-emp-not-inc;246820;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;48;United-States;>50K +40;Local-gov;153031;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;35;United-States;>50K +49;Private;139268;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +39;Local-gov;267893;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;Black;Male;7298;0;40;United-States;>50K +27;Private;224105;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;40;United-States;>50K +45;Private;34419;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +60;Private;109530;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;7298;0;40;United-States;>50K +60;Private;116707;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +47;Private;185041;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +43;Private;152958;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +31;Private;246439;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;7298;0;50;United-States;>50K +62;?;191118;Some-college;10;Married-civ-spouse;?;Husband;White;Male;7298;0;40;United-States;>50K +52;Private;74275;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;45;United-States;>50K +34;Private;199934;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;7298;0;40;United-States;>50K +44;Private;54310;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +49;Local-gov;269527;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +50;Private;268553;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;40;United-States;>50K +26;Private;94477;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;55;United-States;>50K +46;Private;321327;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;45;United-States;>50K +45;Local-gov;348172;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;7298;0;40;United-States;>50K +36;State-gov;86805;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;7298;0;39;United-States;>50K +41;Self-emp-not-inc;100800;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;70;United-States;>50K +60;Private;282923;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +45;Private;174533;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;50;United-States;>50K +44;Self-emp-not-inc;127482;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;England;>50K +34;Private;252646;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;50;United-States;>50K +51;Private;137815;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +35;Federal-gov;49657;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +54;Private;35557;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;7298;0;50;United-States;>50K +53;Private;386773;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;40;United-States;>50K +51;Private;162745;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;United-States;>50K +40;Self-emp-not-inc;26892;Bachelors;13;Married-AF-spouse;Prof-specialty;Husband;White;Male;7298;0;50;United-States;>50K +42;Private;149210;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;45;United-States;>50K +50;Self-emp-inc;155574;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;50;United-States;>50K +51;Private;48343;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +33;Private;188246;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;45;United-States;>50K +48;Private;83444;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;40;United-States;>50K +40;Private;124747;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;7298;0;40;United-States;>50K +36;Private;169426;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;7298;0;40;United-States;>50K +27;Private;190525;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;55;United-States;>50K +37;Private;263094;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +54;Self-emp-inc;357596;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;55;United-States;>50K +36;Private;171393;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;55;United-States;>50K +46;Private;98637;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +38;Private;43712;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;60;United-States;>50K +38;Private;122076;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;43;United-States;>50K +45;Private;192776;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;55;United-States;>50K +48;Private;248254;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;7298;0;40;United-States;>50K +60;Private;178312;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;7298;0;65;United-States;>50K +58;Self-emp-inc;78104;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +42;Private;171424;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;7298;0;45;United-States;>50K +51;Private;138852;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;7298;0;40;El-Salvador;>50K +42;Federal-gov;34218;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;50;United-States;>50K +44;Private;235786;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;45;United-States;>50K +32;Private;195000;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;45;United-States;>50K +60;Federal-gov;119832;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +49;Private;195612;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;40;United-States;>50K +31;State-gov;373432;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;55;United-States;>50K +45;Private;25649;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;7298;0;50;United-States;>50K +55;Private;227856;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +61;Private;81132;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;Asian-Pac-Islander;Male;7298;0;40;Philippines;>50K +57;Local-gov;189824;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;7298;0;40;United-States;>50K +47;Private;168232;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;7298;0;40;United-States;>50K +40;Private;254478;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;United-States;>50K +47;Private;334039;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;44;United-States;>50K +29;Private;112847;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;7298;0;32;United-States;>50K +52;Local-gov;199995;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;7298;0;60;United-States;>50K +28;Private;207513;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;42;United-States;>50K +30;Private;430283;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;7298;0;40;United-States;>50K +35;Private;75855;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;7298;0;40;?;>50K +28;Local-gov;33662;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;7298;0;40;United-States;>50K +36;State-gov;179488;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;7298;0;55;United-States;>50K +41;State-gov;106900;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;7298;0;60;United-States;>50K +30;Private;176410;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Own-child;White;Female;7298;0;16;United-States;>50K +45;Private;170871;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;60;United-States;>50K +38;Private;59660;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +42;Private;161510;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;7298;0;40;United-States;>50K +48;Self-emp-inc;185041;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;7298;0;50;United-States;>50K +52;Private;200853;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;6849;0;60;United-States;<=50K +24;Private;180060;Masters;14;Never-married;Exec-managerial;Own-child;White;Male;6849;0;90;United-States;<=50K +34;Private;33945;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;6849;0;55;United-States;<=50K +29;Private;190539;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;6849;0;48;United-States;<=50K +35;?;296738;11th;7;Separated;?;Not-in-family;White;Female;6849;0;60;United-States;<=50K +25;Private;262778;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;6849;0;50;United-States;<=50K +40;Local-gov;24763;Some-college;10;Divorced;Transport-moving;Unmarried;White;Male;6849;0;40;United-States;<=50K +28;State-gov;38309;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;6849;0;40;United-States;<=50K +59;Self-emp-not-inc;241297;Some-college;10;Widowed;Farming-fishing;Not-in-family;White;Female;6849;0;40;United-States;<=50K +30;Private;189620;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;6849;0;40;England;<=50K +26;Private;177147;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;6849;0;65;United-States;<=50K +53;Private;223660;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Male;6849;0;40;United-States;<=50K +40;Private;207025;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;6849;0;38;United-States;<=50K +39;Private;87556;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;6849;0;40;United-States;<=50K +25;Private;194897;HS-grad;9;Never-married;Sales;Own-child;Amer-Indian-Eskimo;Male;6849;0;40;United-States;<=50K +28;Private;124680;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;6849;0;60;United-States;<=50K +35;Private;139770;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;6849;0;40;United-States;<=50K +47;Private;266281;11th;7;Never-married;Machine-op-inspct;Unmarried;Black;Female;6849;0;40;United-States;<=50K +35;Private;167735;11th;7;Never-married;Craft-repair;Own-child;White;Male;6849;0;40;United-States;<=50K +33;Private;108328;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;6849;0;50;United-States;<=50K +39;Private;106183;HS-grad;9;Divorced;Other-service;Unmarried;Amer-Indian-Eskimo;Female;6849;0;40;United-States;<=50K +50;State-gov;45961;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;6849;0;40;United-States;<=50K +40;Private;34113;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Male;6849;0;43;United-States;<=50K +38;Private;234298;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;6849;0;60;United-States;<=50K +55;State-gov;294395;Assoc-voc;11;Widowed;Prof-specialty;Unmarried;White;Female;6849;0;40;United-States;<=50K +30;Self-emp-not-inc;67072;Bachelors;13;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;6849;0;60;United-States;<=50K +35;Private;162256;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;6849;0;40;United-States;<=50K +71;Private;105200;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;6767;0;20;United-States;<=50K +65;Private;90377;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;6767;0;60;United-States;<=50K +90;Local-gov;153602;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;6767;0;40;United-States;<=50K +66;?;212759;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;6767;0;20;United-States;<=50K +74;?;169303;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;6767;0;6;United-States;<=50K +72;Private;298070;Assoc-voc;11;Separated;Other-service;Unmarried;White;Female;6723;0;25;United-States;<=50K +65;Private;170939;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;6723;0;40;United-States;<=50K +67;Private;171584;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;6514;0;7;United-States;>50K +65;State-gov;209280;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;6514;0;35;United-States;>50K +65;Self-emp-not-inc;223580;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;6514;0;40;United-States;>50K +71;?;144872;Some-college;10;Married-civ-spouse;?;Husband;White;Male;6514;0;40;United-States;>50K +69;Self-emp-inc;107850;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;6514;0;40;United-States;>50K +57;Private;188872;5th-6th;3;Divorced;Transport-moving;Unmarried;White;Male;6497;0;40;United-States;<=50K +46;Private;182128;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;6497;0;50;United-States;<=50K +45;Local-gov;326064;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;6497;0;35;United-States;<=50K +36;Federal-gov;930948;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;6497;0;56;United-States;<=50K +35;Private;115214;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;6497;0;65;United-States;<=50K +41;Private;200671;Bachelors;13;Divorced;Transport-moving;Own-child;Black;Male;6497;0;40;United-States;<=50K +38;Private;188503;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;6497;0;35;United-States;<=50K +49;Self-emp-inc;26502;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;6497;0;45;United-States;<=50K +47;Private;105273;Bachelors;13;Widowed;Craft-repair;Unmarried;Black;Female;6497;0;40;United-States;<=50K +26;Private;214413;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Male;6497;0;48;United-States;<=50K +46;Private;117310;Assoc-acdm;12;Widowed;Tech-support;Unmarried;White;Female;6497;0;40;United-States;<=50K +67;?;157403;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;6418;0;10;United-States;>50K +69;Self-emp-inc;169717;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;6418;0;45;United-States;>50K +62;?;160155;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;6418;0;40;United-States;>50K +73;Self-emp-not-inc;102510;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;6418;0;99;United-States;>50K +62;Private;266624;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;6418;0;40;United-States;>50K +67;Self-emp-not-inc;123393;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;6418;0;58;United-States;>50K +65;Self-emp-inc;66360;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;6418;0;35;United-States;>50K +55;Private;61708;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;6418;0;50;United-States;>50K +70;Private;187292;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;6418;0;40;United-States;>50K +72;Private;496538;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;6360;0;40;United-States;<=50K +68;Private;50351;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;6360;0;20;United-States;<=50K +67;Local-gov;191800;Bachelors;13;Divorced;Adm-clerical;Unmarried;Black;Female;6360;0;35;United-States;<=50K +71;Private;196610;7th-8th;4;Widowed;Exec-managerial;Not-in-family;White;Male;6097;0;40;United-States;>50K +38;Private;168407;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;5721;0;44;United-States;<=50K +26;Private;101812;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;5721;0;40;United-States;<=50K +28;Local-gov;127491;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;5721;0;40;United-States;<=50K +66;Private;146454;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5556;0;40;United-States;>50K +66;Private;142624;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5556;0;40;Yugoslavia;>50K +66;Self-emp-inc;249043;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;5556;0;26;United-States;>50K +65;Private;344152;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;5556;0;50;United-States;>50K +65;?;115513;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;5556;0;48;United-States;>50K +45;Private;189890;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;5455;0;38;United-States;<=50K +42;Private;129684;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Black;Female;5455;0;50;United-States;<=50K +39;Private;114678;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;5455;0;40;United-States;<=50K +47;Local-gov;247676;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;5455;0;45;United-States;<=50K +36;State-gov;108320;Masters;14;Divorced;Prof-specialty;Unmarried;White;Male;5455;0;30;United-States;<=50K +39;Federal-gov;193583;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;5455;0;60;United-States;<=50K +43;Self-emp-inc;247981;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;5455;0;50;United-States;<=50K +45;Private;474617;HS-grad;9;Divorced;Sales;Unmarried;Black;Male;5455;0;40;United-States;<=50K +37;State-gov;252939;Assoc-voc;11;Never-married;Prof-specialty;Unmarried;Black;Female;5455;0;40;United-States;<=50K +40;Local-gov;105862;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;5455;0;40;United-States;<=50K +60;Local-gov;48788;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;5455;0;55;United-States;<=50K +42;Private;159449;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +42;Local-gov;97688;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +36;Private;188563;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5178;0;50;United-States;>50K +32;Private;231043;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;48;United-States;>50K +44;Self-emp-inc;320984;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5178;0;60;United-States;>50K +50;Private;88926;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;5178;0;40;United-States;>50K +54;Private;206369;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5178;0;50;United-States;>50K +32;Self-emp-inc;244665;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;45;United-States;>50K +61;Local-gov;95450;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;50;United-States;>50K +51;Private;106728;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;60;United-States;>50K +40;Private;572751;Prof-school;15;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;Mexico;>50K +32;Private;107843;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5178;0;50;United-States;>50K +34;Private;275438;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;40;United-States;>50K +48;Local-gov;31264;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;5178;0;40;United-States;>50K +45;Private;186272;9th;5;Married-civ-spouse;Adm-clerical;Husband;Black;Male;5178;0;40;United-States;>50K +35;Private;46385;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;90;United-States;>50K +41;Federal-gov;168294;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;5178;0;40;United-States;>50K +31;Private;132996;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;45;United-States;>50K +29;Self-emp-not-inc;169544;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;40;United-States;>50K +37;Local-gov;312232;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;5178;0;40;United-States;>50K +26;Private;247455;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;5178;0;42;United-States;>50K +36;Private;175232;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +42;Private;94600;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +47;?;109832;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;5178;0;30;Canada;>50K +40;Private;119101;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +30;Private;164190;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;52;United-States;>50K +37;Private;220237;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +36;Private;247558;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;60;?;>50K +40;Private;198692;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;5178;0;60;United-States;>50K +33;Private;141841;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;5178;0;40;United-States;>50K +49;Private;176814;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;5178;0;40;United-States;>50K +42;Local-gov;174575;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;40;United-States;>50K +38;Private;76878;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +26;Private;97153;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5178;0;40;United-States;>50K +54;Self-emp-not-inc;172898;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;50;United-States;>50K +46;Private;127089;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;38;United-States;>50K +32;Private;29933;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5178;0;40;United-States;>50K +25;Private;161027;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;5178;0;40;United-States;>50K +44;Private;74680;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;50;United-States;>50K +30;Private;186932;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;75;United-States;>50K +25;Private;120238;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;40;Poland;>50K +37;Private;287031;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;75;United-States;>50K +28;Private;176683;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;50;United-States;>50K +31;Private;473133;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;40;United-States;>50K +44;Private;99651;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +44;Private;175669;11th;7;Married-civ-spouse;Prof-specialty;Wife;White;Female;5178;0;36;United-States;>50K +39;Self-emp-inc;543042;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;50;United-States;>50K +51;Federal-gov;97934;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;5178;0;40;United-States;>50K +27;Private;311446;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;5178;0;40;United-States;>50K +31;Private;123397;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;5178;0;35;United-States;>50K +53;Private;195813;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;Other;Male;5178;0;40;Puerto-Rico;>50K +37;Local-gov;365430;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +48;State-gov;118330;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +56;Private;116143;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;5178;0;44;United-States;>50K +35;Private;282979;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;5178;0;50;United-States;>50K +50;Local-gov;153064;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +42;Private;230684;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;5178;0;50;United-States;>50K +58;Private;280309;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;60;United-States;>50K +35;Private;105821;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +46;Private;173243;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;5178;0;40;United-States;>50K +34;Private;209101;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;55;United-States;>50K +43;Private;214781;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;40;United-States;>50K +39;State-gov;122011;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;5178;0;38;United-States;>50K +46;Federal-gov;97863;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;5178;0;40;United-States;>50K +55;Private;162205;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;72;United-States;>50K +38;Private;207568;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +63;?;310396;9th;5;Married-civ-spouse;?;Husband;White;Male;5178;0;40;United-States;>50K +27;Private;210498;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +47;Private;187440;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +47;Private;201699;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;5178;0;50;United-States;>50K +36;Private;186035;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +43;Private;339814;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;40;United-States;>50K +44;Private;112262;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;5178;0;40;United-States;>50K +36;Private;226013;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;5178;0;40;United-States;>50K +51;Private;175070;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;5178;0;45;United-States;>50K +57;Self-emp-inc;258883;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;60;Hungary;>50K +32;Private;106014;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5178;0;50;United-States;>50K +39;Self-emp-inc;131288;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;5178;0;48;United-States;>50K +35;Self-emp-inc;186845;Bachelors;13;Married-civ-spouse;Sales;Own-child;White;Male;5178;0;50;United-States;>50K +62;?;125493;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;5178;0;40;Scotland;>50K +45;Private;261278;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;5178;0;40;Philippines;>50K +39;Private;248011;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5178;0;40;United-States;>50K +31;Private;151053;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;40;United-States;>50K +53;Self-emp-inc;152810;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;45;United-States;>50K +54;Private;135388;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +37;Private;187589;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;5178;0;40;United-States;>50K +55;Private;184882;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;50;United-States;>50K +45;Local-gov;374450;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;5178;0;40;United-States;>50K +59;Private;126668;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;5178;0;50;United-States;>50K +33;?;369386;Some-college;10;Married-civ-spouse;?;Wife;White;Female;5178;0;40;United-States;>50K +47;Private;70943;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5178;0;40;United-States;>50K +28;Federal-gov;163862;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +47;Local-gov;200471;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;5178;0;40;United-States;>50K +38;Private;269318;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;5178;0;50;United-States;>50K +34;State-gov;118551;Bachelors;13;Married-civ-spouse;Tech-support;Own-child;White;Female;5178;0;25;?;>50K +54;Federal-gov;75235;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;5178;0;40;United-States;>50K +58;Private;250206;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;5178;0;40;United-States;>50K +24;Private;206827;Some-college;10;Never-married;Sales;Own-child;White;Female;5060;0;30;United-States;<=50K +30;Private;188146;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5013;0;40;United-States;<=50K +43;Self-emp-inc;188436;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;45;United-States;<=50K +54;Private;398212;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;5013;0;40;United-States;<=50K +45;Self-emp-not-inc;256866;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5013;0;40;United-States;<=50K +47;Private;326857;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +40;Private;105936;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;5013;0;20;United-States;<=50K +36;Private;84306;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;50;United-States;<=50K +26;Private;139098;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;40;United-States;<=50K +49;Private;82649;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;45;United-States;<=50K +44;Self-emp-inc;103643;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;60;Greece;<=50K +27;Private;181667;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5013;0;46;Canada;<=50K +41;Self-emp-not-inc;29762;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;5013;0;70;United-States;<=50K +30;Private;155343;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +29;Private;206351;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +26;Private;132661;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;5013;0;40;United-States;<=50K +30;Private;137606;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;5013;0;40;United-States;<=50K +35;Private;37314;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +30;Local-gov;346122;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;5013;0;45;United-States;<=50K +29;Private;221366;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;40;Germany;<=50K +46;Private;276087;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;5013;0;50;United-States;<=50K +48;Self-emp-not-inc;30840;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;45;United-States;<=50K +52;Private;204322;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;5013;0;40;United-States;<=50K +60;Private;160625;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;40;United-States;<=50K +43;Private;242488;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;5013;0;40;United-States;<=50K +39;Private;196673;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;5013;0;40;United-States;<=50K +31;Private;356882;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5013;0;40;United-States;<=50K +52;Federal-gov;192386;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;40;United-States;<=50K +26;Private;104746;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;60;United-States;<=50K +44;State-gov;150755;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;5013;0;40;United-States;<=50K +35;Private;158046;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5013;0;70;United-States;<=50K +35;Private;167140;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;40;United-States;<=50K +45;Federal-gov;56904;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;5013;0;45;United-States;<=50K +52;Local-gov;40641;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +28;Self-emp-inc;219705;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;55;United-States;<=50K +54;Private;147863;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;5013;0;40;Vietnam;<=50K +56;Private;98809;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;5013;0;45;United-States;<=50K +48;Private;248059;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;45;United-States;<=50K +59;Private;182062;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;40;United-States;<=50K +46;Private;186820;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;5013;0;40;United-States;<=50K +45;Private;362883;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +55;Private;147989;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;52;United-States;<=50K +50;Private;99307;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;45;United-States;<=50K +49;Private;261688;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;60;United-States;<=50K +33;Private;197424;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;5013;0;40;United-States;<=50K +51;Private;99064;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +42;Private;230684;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;40;United-States;<=50K +47;Private;193285;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;5013;0;40;United-States;<=50K +32;Private;343789;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;5013;0;55;United-States;<=50K +49;Private;87928;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +49;Self-emp-not-inc;189123;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;50;United-States;<=50K +31;Private;288825;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;5013;0;40;United-States;<=50K +52;State-gov;135388;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +32;Local-gov;186784;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;5013;0;45;United-States;<=50K +63;Private;308028;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;5013;0;40;United-States;<=50K +39;Private;219483;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;5013;0;32;United-States;<=50K +56;Private;235826;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +35;Private;112077;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;5013;0;40;United-States;<=50K +53;Local-gov;124094;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;35;United-States;<=50K +57;Private;372020;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;5013;0;50;United-States;<=50K +29;Private;133420;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +47;Private;185385;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;24;United-States;<=50K +52;Private;203392;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;United-States;<=50K +51;Private;123053;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;5013;0;40;India;<=50K +24;Private;259510;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;5013;0;30;United-States;<=50K +37;Private;177895;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;5013;0;40;United-States;<=50K +43;Federal-gov;25005;Masters;14;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;5013;0;12;United-States;<=50K +28;Private;180928;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;5013;0;55;United-States;<=50K +36;Private;67728;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;5013;0;40;Italy;<=50K +49;Private;66385;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;5013;0;40;United-States;<=50K +45;Local-gov;224474;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;4934;0;50;United-States;>50K +40;Private;116103;Some-college;10;Separated;Craft-repair;Unmarried;White;Male;4934;0;47;United-States;>50K +37;Private;118486;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;4934;0;32;United-States;>50K +60;Federal-gov;237317;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Male;4934;0;40;United-States;>50K +52;Local-gov;187830;HS-grad;9;Divorced;Tech-support;Unmarried;White;Male;4934;0;36;United-States;>50K +43;Private;334991;Some-college;10;Separated;Transport-moving;Unmarried;White;Male;4934;0;51;United-States;>50K +43;Private;104660;Masters;14;Widowed;Exec-managerial;Unmarried;White;Male;4934;0;40;United-States;>50K +75;Self-emp-not-inc;231741;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;4931;0;3;United-States;<=50K +45;Federal-gov;170915;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;4865;0;40;United-States;<=50K +34;Private;173806;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;4865;0;60;United-States;<=50K +34;Private;92682;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;4865;0;40;United-States;<=50K +26;Local-gov;117833;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;4865;0;35;United-States;<=50K +34;State-gov;154246;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;4865;0;55;United-States;<=50K +27;Federal-gov;105189;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;4865;0;50;United-States;<=50K +30;Private;189759;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;4865;0;40;United-States;<=50K +36;Private;116608;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;4865;0;40;United-States;<=50K +27;Private;29732;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;4865;0;36;United-States;<=50K +61;?;226989;HS-grad;9;Divorced;?;Not-in-family;White;Male;4865;0;40;United-States;<=50K +28;Private;123147;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;4865;0;40;United-States;<=50K +52;Local-gov;146565;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Female;4865;0;30;United-States;<=50K +37;Local-gov;48976;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;4865;0;45;United-States;<=50K +59;Private;66356;7th-8th;4;Never-married;Farming-fishing;Unmarried;White;Male;4865;0;40;United-States;<=50K +32;Local-gov;230912;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;4865;0;40;United-States;<=50K +25;Private;80312;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;4865;0;40;United-States;<=50K +55;Private;256526;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;4865;0;45;United-States;<=50K +34;Self-emp-inc;215382;Masters;14;Separated;Prof-specialty;Not-in-family;White;Female;4787;0;40;United-States;>50K +64;State-gov;194894;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;4787;0;40;United-States;>50K +51;Private;142717;Doctorate;16;Divorced;Craft-repair;Not-in-family;White;Female;4787;0;60;United-States;>50K +40;Private;45687;Some-college;10;Divorced;Other-service;Not-in-family;Black;Male;4787;0;50;United-States;>50K +51;Private;89652;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;4787;0;24;United-States;>50K +58;Private;142076;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Male;4787;0;39;United-States;>50K +39;Self-emp-not-inc;164593;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;4787;0;40;United-States;>50K +34;Self-emp-inc;174215;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;4787;0;45;France;>50K +61;Private;298400;Bachelors;13;Divorced;Sales;Not-in-family;Black;Male;4787;0;48;United-States;>50K +30;Private;509500;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;4787;0;45;United-States;>50K +58;Federal-gov;244830;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;4787;0;40;United-States;>50K +35;Private;241998;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;4787;0;40;United-States;>50K +46;Local-gov;230979;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;4787;0;25;United-States;>50K +52;Local-gov;194788;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;4787;0;60;United-States;>50K +46;Local-gov;148995;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;4787;0;45;United-States;>50K +39;Private;121590;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Male;4787;0;40;United-States;>50K +35;?;98080;Prof-school;15;Never-married;?;Not-in-family;Asian-Pac-Islander;Male;4787;0;45;Japan;>50K +38;Local-gov;194630;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Female;4787;0;43;United-States;>50K +49;Private;287647;Masters;14;Divorced;Sales;Not-in-family;White;Male;4787;0;45;United-States;>50K +30;Private;331419;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;4787;0;50;United-States;>50K +53;Private;346871;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;4787;0;46;United-States;>50K +59;Local-gov;303455;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;4787;0;60;United-States;>50K +52;State-gov;109600;Masters;14;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;4787;0;44;United-States;>50K +45;Private;160647;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;4687;0;35;United-States;>50K +42;Private;210275;Masters;14;Divorced;Tech-support;Unmarried;Black;Female;4687;0;35;United-States;>50K +39;Private;148903;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;4687;0;50;United-States;>50K +29;Private;271328;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;4650;0;40;United-States;<=50K +31;Private;231263;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;4650;0;45;United-States;<=50K +35;Self-emp-not-inc;185848;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;4650;0;50;United-States;<=50K +36;Private;208358;9th;5;Divorced;Handlers-cleaners;Not-in-family;White;Male;4650;0;56;United-States;<=50K +36;Private;192704;12th;8;Never-married;Exec-managerial;Not-in-family;White;Male;4650;0;50;United-States;<=50K +42;Private;259643;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;4650;0;40;United-States;<=50K +53;State-gov;116367;Some-college;10;Divorced;Adm-clerical;Other-relative;White;Female;4650;0;40;United-States;<=50K +49;Local-gov;192349;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;4650;0;40;United-States;<=50K +39;Local-gov;116666;HS-grad;9;Never-married;Protective-serv;Own-child;Amer-Indian-Eskimo;Male;4650;0;48;United-States;<=50K +31;Private;213002;12th;8;Never-married;Sales;Not-in-family;White;Male;4650;0;50;United-States;<=50K +30;Self-emp-inc;124420;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;4650;0;40;United-States;<=50K +39;Private;179481;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;4650;0;44;United-States;<=50K +25;Private;231016;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;4650;0;37;United-States;<=50K +37;Local-gov;117760;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;4650;0;40;United-States;<=50K +35;Private;70447;Some-college;10;Never-married;Prof-specialty;Unmarried;Asian-Pac-Islander;Male;4650;0;20;United-States;<=50K +39;Private;101146;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;4650;0;40;United-States;<=50K +40;Private;242619;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;4650;0;40;United-States;<=50K +42;Local-gov;125461;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;4650;0;35;United-States;<=50K +34;?;286689;Masters;14;Never-married;?;Not-in-family;White;Male;4650;0;30;United-States;<=50K +41;Federal-gov;197069;Some-college;10;Married-spouse-absent;Adm-clerical;Not-in-family;Black;Male;4650;0;40;United-States;<=50K +35;Private;276153;Bachelors;13;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Female;4650;0;40;United-States;<=50K +32;Private;216145;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;4650;0;45;United-States;<=50K +42;Private;367049;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;4650;0;40;United-States;<=50K +47;Private;167159;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;4650;0;40;United-States;<=50K +28;Private;334368;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;4650;0;40;United-States;<=50K +23;Private;151888;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;4650;0;50;Ireland;<=50K +55;Private;145214;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;4650;0;20;United-States;<=50K +23;Private;242912;Some-college;10;Never-married;Other-service;Own-child;White;Female;4650;0;40;United-States;<=50K +45;Private;111994;Some-college;10;Divorced;Sales;Not-in-family;White;Male;4650;0;40;United-States;<=50K +43;Private;227065;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;4650;0;40;United-States;<=50K +38;Private;43770;Some-college;10;Separated;Other-service;Not-in-family;White;Female;4650;0;72;United-States;<=50K +40;Private;289748;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;4650;0;48;United-States;<=50K +50;Local-gov;191025;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;4650;0;70;United-States;<=50K +33;Private;319854;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;4650;0;35;United-States;<=50K +31;Private;347166;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;4650;0;40;United-States;<=50K +41;Private;70645;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;4650;0;55;United-States;<=50K +60;Private;184183;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;4650;0;40;United-States;<=50K +62;Private;138253;Masters;14;Never-married;Handlers-cleaners;Not-in-family;White;Male;4650;0;40;United-States;<=50K +50;Private;138852;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;4650;0;22;United-States;<=50K +41;Private;36699;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;4650;0;40;United-States;<=50K +32;Federal-gov;386877;Assoc-voc;11;Never-married;Tech-support;Own-child;Black;Male;4650;0;40;United-States;<=50K +57;Private;182677;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;4508;0;40;South;<=50K +32;Private;112137;Preschool;1;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;4508;0;40;Cambodia;<=50K +23;Private;188409;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;4508;0;25;United-States;<=50K +39;Private;291665;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;4508;0;24;United-States;<=50K +22;Private;200109;HS-grad;9;Married-civ-spouse;Priv-house-serv;Wife;White;Female;4508;0;40;United-States;<=50K +56;Private;105363;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;4508;0;40;United-States;<=50K +43;Self-emp-not-inc;343061;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;4508;0;40;Cuba;<=50K +28;Private;163265;9th;5;Married-civ-spouse;Sales;Husband;White;Male;4508;0;40;United-States;<=50K +21;Self-emp-not-inc;103277;12th;8;Married-civ-spouse;Adm-clerical;Wife;White;Female;4508;0;30;Portugal;<=50K +34;Self-emp-not-inc;254304;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;4508;0;90;United-States;<=50K +32;Private;201988;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;4508;0;40;?;<=50K +38;Private;167440;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;4508;0;40;United-States;<=50K +27;Private;406662;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;4416;0;40;United-States;<=50K +25;Private;272428;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;4416;0;42;United-States;<=50K +25;Private;164938;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;4416;0;40;United-States;<=50K +50;Self-emp-not-inc;114758;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;4416;0;45;United-States;<=50K +49;Private;173115;10th;6;Separated;Exec-managerial;Not-in-family;Black;Male;4416;0;99;United-States;<=50K +33;Private;153151;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;4416;0;40;United-States;<=50K +22;Without-pay;302347;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;4416;0;40;United-States;<=50K +56;Private;178033;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Male;4416;0;60;United-States;<=50K +34;Private;154874;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;4416;0;30;United-States;<=50K +54;?;155755;HS-grad;9;Divorced;?;Not-in-family;White;Female;4416;0;25;United-States;<=50K +25;Private;148460;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;4416;0;40;Puerto-Rico;<=50K +20;Private;168187;Some-college;10;Never-married;Other-service;Other-relative;White;Female;4416;0;25;United-States;<=50K +38;Self-emp-not-inc;120985;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;35;United-States;<=50K +55;Private;238638;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4386;0;40;United-States;>50K +40;Private;144995;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;4386;0;40;United-States;<=50K +53;Private;194259;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;4386;0;40;United-States;>50K +55;Private;387569;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;40;United-States;>50K +50;Private;75472;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;40;?;<=50K +45;Self-emp-inc;36228;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;4386;0;35;United-States;>50K +38;Private;31069;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;40;United-States;>50K +53;Self-emp-not-inc;174102;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;50;Greece;>50K +46;Private;503923;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;4386;0;40;United-States;>50K +42;Private;255847;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4386;0;48;United-States;>50K +51;Private;335997;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;55;United-States;>50K +43;Private;313022;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;4386;0;40;United-States;>50K +47;Local-gov;265097;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;4386;0;40;United-States;>50K +51;Federal-gov;306784;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;40;United-States;>50K +31;Private;182237;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;4386;0;45;United-States;>50K +30;Private;110643;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;4386;0;40;United-States;>50K +44;Private;98779;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4386;0;60;United-States;<=50K +29;Private;144259;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;4386;0;80;?;>50K +48;Private;248164;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;4386;0;50;United-States;>50K +51;Private;123703;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4386;0;40;United-States;>50K +35;Private;36214;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;47;United-States;>50K +48;Private;141944;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4386;0;40;United-States;>50K +41;Private;156566;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;50;United-States;>50K +54;Self-emp-not-inc;242606;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;4386;0;45;United-States;>50K +31;Private;110554;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;4386;0;40;United-States;>50K +44;Private;120057;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;45;United-States;>50K +51;Federal-gov;73670;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;4386;0;52;United-States;>50K +61;?;160625;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;4386;0;15;United-States;>50K +63;Private;180911;11th;7;Married-civ-spouse;Protective-serv;Husband;White;Male;4386;0;37;United-States;>50K +51;Private;29580;11th;7;Married-civ-spouse;Sales;Husband;White;Male;4386;0;30;United-States;>50K +35;Private;209214;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;4386;0;35;United-States;>50K +52;Private;204447;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4386;0;40;United-States;>50K +24;Private;117959;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;4386;0;40;United-States;>50K +33;Private;195576;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;60;United-States;<=50K +44;Local-gov;241851;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;4386;0;40;United-States;>50K +57;Self-emp-not-inc;291529;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;13;United-States;>50K +47;Private;329144;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4386;0;45;United-States;>50K +44;Private;184105;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;4386;0;40;United-States;>50K +45;Private;120724;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;40;United-States;<=50K +37;Private;219546;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;44;United-States;>50K +31;Private;240771;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;50;United-States;>50K +53;State-gov;151580;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;4386;0;40;United-States;>50K +34;Private;209691;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;4386;0;50;United-States;>50K +29;Private;51944;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;4386;0;40;United-States;>50K +53;Local-gov;216931;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;4386;0;40;United-States;>50K +44;Local-gov;193425;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;4386;0;40;United-States;>50K +48;Private;449354;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;4386;0;45;United-States;>50K +34;State-gov;177331;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;4386;0;40;United-States;>50K +44;Private;167005;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;55;United-States;<=50K +29;Self-emp-not-inc;104423;Some-college;10;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;4386;0;45;United-States;>50K +51;Local-gov;349431;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;40;United-States;>50K +37;Private;215503;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;45;United-States;>50K +34;Private;169527;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;4386;0;20;United-States;<=50K +40;Private;70539;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;4386;0;50;United-States;<=50K +46;Private;269652;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;38;United-States;>50K +37;Self-emp-not-inc;188563;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;50;United-States;>50K +36;Self-emp-not-inc;138940;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;4386;0;50;United-States;>50K +31;Private;319146;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;40;Mexico;>50K +53;Private;70387;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;4386;0;40;India;>50K +46;Self-emp-not-inc;51271;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;4386;0;70;United-States;<=50K +32;Private;123964;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;4386;0;50;United-States;<=50K +38;Private;160808;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;4386;0;48;United-States;<=50K +43;Local-gov;118853;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;4386;0;99;United-States;>50K +53;Private;133219;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;4386;0;30;United-States;>50K +45;Private;294671;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;4386;0;38;United-States;>50K +41;Private;433989;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;4386;0;60;United-States;>50K +63;Private;117473;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;4386;0;40;United-States;>50K +42;Self-emp-not-inc;69333;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;4386;0;80;United-States;>50K +40;Private;132222;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4386;0;50;United-States;>50K +24;Private;556660;HS-grad;9;Never-married;Exec-managerial;Other-relative;White;Male;4101;0;50;United-States;<=50K +21;Private;255957;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;4101;0;40;United-States;<=50K +32;Private;115631;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;4101;0;50;United-States;<=50K +56;Private;191917;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;4101;0;40;United-States;<=50K +35;Self-emp-not-inc;31095;Some-college;10;Separated;Farming-fishing;Not-in-family;White;Male;4101;0;60;United-States;<=50K +43;Private;59107;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;4101;0;40;United-States;<=50K +31;Private;369825;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;4101;0;50;United-States;<=50K +56;Private;168625;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;4101;0;40;United-States;<=50K +23;Private;211049;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;4101;0;40;United-States;<=50K +21;Private;20728;HS-grad;9;Never-married;Sales;Own-child;White;Female;4101;0;40;United-States;<=50K +25;Private;321205;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;4101;0;35;United-States;<=50K +31;Private;188108;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;4101;0;40;United-States;<=50K +27;State-gov;142621;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;4101;0;40;United-States;<=50K +37;Private;143582;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;Other;Female;4101;0;35;United-States;<=50K +19;Private;223648;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;4101;0;48;United-States;<=50K +23;Private;32950;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;4101;0;40;United-States;<=50K +28;Local-gov;135567;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;4101;0;60;United-States;<=50K +54;State-gov;137815;12th;8;Never-married;Other-service;Own-child;White;Male;4101;0;40;United-States;<=50K +36;Private;108320;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;4101;0;40;United-States;<=50K +25;Private;149943;HS-grad;9;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;4101;0;60;?;<=50K +28;Private;377869;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;4064;0;25;United-States;<=50K +59;Private;146013;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +58;State-gov;110517;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;4064;0;40;India;<=50K +43;Private;149670;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;4064;0;15;United-States;<=50K +39;Private;187046;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4064;0;38;United-States;<=50K +26;Private;164018;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;4064;0;50;United-States;<=50K +63;Private;143098;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +32;Local-gov;217296;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;4064;0;22;United-States;<=50K +47;Private;170850;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;4064;0;60;United-States;<=50K +35;Private;28572;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;4064;0;35;United-States;<=50K +38;Federal-gov;122493;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;4064;0;40;United-States;<=50K +52;Self-emp-inc;177727;10th;6;Married-civ-spouse;Sales;Husband;White;Male;4064;0;45;United-States;<=50K +32;Self-emp-not-inc;70985;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;4064;0;40;United-States;<=50K +35;Private;126569;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +54;Private;234938;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4064;0;55;United-States;<=50K +49;Private;40000;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;4064;0;44;United-States;<=50K +40;Private;316820;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +40;Private;145439;5th-6th;3;Married-civ-spouse;Other-service;Husband;Other;Male;4064;0;40;Mexico;<=50K +43;Private;484861;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;4064;0;38;United-States;<=50K +31;Local-gov;176185;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4064;0;40;?;<=50K +50;Local-gov;50178;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;4064;0;55;United-States;<=50K +46;Private;181810;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;4064;0;40;United-States;<=50K +27;Federal-gov;196386;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;4064;0;40;El-Salvador;<=50K +34;Private;34848;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;4064;0;40;United-States;<=50K +61;Local-gov;180079;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;4064;0;40;United-States;<=50K +55;Private;226875;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +33;Federal-gov;293550;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;4064;0;40;United-States;<=50K +31;?;182191;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;4064;0;30;Canada;<=50K +32;Private;317809;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;4064;0;50;United-States;<=50K +49;Private;297884;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;4064;0;50;United-States;<=50K +36;Private;267556;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4064;0;40;United-States;<=50K +42;Private;195096;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +30;Private;281030;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;4064;0;40;United-States;<=50K +38;Self-emp-not-inc;344480;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;4064;0;40;United-States;<=50K +26;Private;39092;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;4064;0;50;United-States;<=50K +47;Private;178341;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;4064;0;60;United-States;<=50K +47;Private;200471;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;4064;0;40;United-States;<=50K +51;Private;86332;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;4064;0;55;United-States;<=50K +28;Private;294936;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;4064;0;45;United-States;<=50K +34;Local-gov;155781;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;4064;0;50;United-States;<=50K +46;Private;285750;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;4064;0;55;United-States;<=50K +45;Private;288437;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Other;Male;4064;0;40;United-States;<=50K +47;?;174525;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;3942;0;40;?;<=50K +41;Private;187881;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;3942;0;40;United-States;<=50K +38;Private;450924;12th;8;Married-civ-spouse;Other-service;Husband;White;Male;3942;0;40;United-States;<=50K +29;Private;184596;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;3942;0;50;United-States;<=50K +50;Private;166220;Assoc-acdm;12;Married-civ-spouse;Sales;Wife;White;Female;3942;0;40;United-States;<=50K +45;Private;192835;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;3942;0;40;United-States;<=50K +41;Local-gov;103759;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;3942;0;40;United-States;<=50K +23;Private;209034;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;3942;0;40;United-States;<=50K +59;Private;340591;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3942;0;40;United-States;<=50K +38;Private;331395;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;3942;0;84;Portugal;<=50K +26;Private;208326;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;3942;0;45;United-States;<=50K +35;Private;145704;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;3942;0;35;United-States;<=50K +27;Private;243569;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3942;0;40;United-States;<=50K +61;?;229744;1st-4th;2;Married-civ-spouse;?;Husband;White;Male;3942;0;20;Mexico;<=50K +36;?;53606;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;3908;0;8;United-States;<=50K +45;Federal-gov;311671;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;3908;0;40;United-States;<=50K +32;Private;187560;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;3908;0;40;United-States;<=50K +36;Private;160035;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3908;0;55;United-States;<=50K +43;Private;177905;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3908;0;40;United-States;<=50K +59;Private;191965;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;3908;0;28;United-States;<=50K +27;Private;152683;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;3908;0;35;United-States;<=50K +24;Private;196816;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3908;0;40;United-States;<=50K +34;Private;36069;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3908;0;46;United-States;<=50K +31;Private;213643;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3908;0;40;United-States;<=50K +31;Private;66278;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;3908;0;40;United-States;<=50K +32;Private;207685;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;Black;Female;3908;0;40;United-States;<=50K +42;Private;424855;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3908;0;40;United-States;<=50K +38;Private;36989;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;3908;0;70;United-States;<=50K +58;Private;244605;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;3908;0;40;United-States;<=50K +51;Private;101722;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;3908;0;47;United-States;<=50K +51;State-gov;105943;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;3908;0;40;United-States;<=50K +44;Private;107584;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;3908;0;50;United-States;<=50K +23;Private;193586;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;3908;0;40;United-States;<=50K +27;Private;188941;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;3908;0;40;United-States;<=50K +35;Private;143152;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;3908;0;27;United-States;<=50K +33;Private;55699;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;3908;0;40;United-States;<=50K +28;Local-gov;327533;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;3908;0;40;United-States;<=50K +42;Self-emp-not-inc;320744;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3908;0;45;United-States;<=50K +33;Local-gov;152351;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;3908;0;40;United-States;<=50K +21;Private;163870;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;3908;0;40;United-States;<=50K +34;Private;231043;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;3908;0;45;United-States;<=50K +31;Self-emp-inc;256362;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;3908;0;50;United-States;<=50K +51;Private;312477;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;3908;0;40;United-States;<=50K +35;Self-emp-not-inc;89508;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3908;0;60;United-States;<=50K +36;Self-emp-not-inc;34378;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;3908;0;75;United-States;<=50K +58;Local-gov;212864;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;3908;0;40;United-States;<=50K +54;State-gov;123592;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;3887;0;35;United-States;<=50K +37;Private;277022;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Female;3887;0;40;Nicaragua;<=50K +28;Federal-gov;526528;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;3887;0;40;United-States;<=50K +32;State-gov;200469;Some-college;10;Never-married;Protective-serv;Unmarried;Black;Female;3887;0;40;United-States;<=50K +32;Private;356689;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Male;3887;0;40;United-States;<=50K +32;Private;269182;Some-college;10;Separated;Tech-support;Unmarried;Black;Female;3887;0;40;United-States;<=50K +69;Self-emp-inc;69209;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3818;0;30;United-States;<=50K +67;?;192916;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;3818;0;11;United-States;<=50K +65;Private;113323;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;3818;0;40;United-States;<=50K +65;?;178931;HS-grad;9;Married-civ-spouse;?;Husband;Amer-Indian-Eskimo;Male;3818;0;40;United-States;<=50K +68;Private;144056;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;3818;0;40;United-States;<=50K +77;Local-gov;177550;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;3818;0;14;United-States;<=50K +65;Self-emp-not-inc;115498;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;3818;0;10;United-States;<=50K +37;Private;758700;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3781;0;50;Mexico;<=50K +20;Private;34568;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3781;0;35;United-States;<=50K +32;Private;400535;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3781;0;40;United-States;<=50K +60;Private;88055;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;3781;0;16;United-States;<=50K +50;Self-emp-not-inc;176867;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;3781;0;40;United-States;<=50K +58;Private;298601;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;3781;0;40;United-States;<=50K +33;Private;163110;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3781;0;40;United-States;<=50K +20;Private;194630;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;3781;0;50;United-States;<=50K +21;?;262280;Some-college;10;Married-civ-spouse;?;Wife;White;Female;3781;0;40;United-States;<=50K +22;?;154235;Some-college;10;Married-civ-spouse;?;Wife;White;Female;3781;0;35;United-States;<=50K +52;Private;230657;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;3781;0;40;Columbia;<=50K +48;Private;373366;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;3781;0;50;Mexico;<=50K +35;Private;538583;11th;7;Separated;Transport-moving;Not-in-family;Black;Male;3674;0;40;United-States;<=50K +33;Private;40681;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;3674;0;16;United-States;<=50K +36;Private;130926;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;3674;0;40;United-States;<=50K +50;Federal-gov;166419;11th;7;Never-married;Sales;Not-in-family;Black;Female;3674;0;40;United-States;<=50K +23;Private;193090;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;3674;0;40;United-States;<=50K +64;?;239529;11th;7;Widowed;?;Not-in-family;White;Female;3674;0;35;United-States;<=50K +21;Private;148211;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;3674;0;50;United-States;<=50K +25;Private;40512;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;3674;0;30;United-States;<=50K +44;Private;408717;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;3674;0;50;United-States;<=50K +41;Self-emp-not-inc;89942;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;3674;0;45;United-States;<=50K +29;Local-gov;419722;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;3674;0;40;United-States;<=50K +46;Private;270693;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;3674;0;30;United-States;<=50K +32;Private;426467;1st-4th;2;Never-married;Craft-repair;Not-in-family;White;Male;3674;0;40;Guatemala;<=50K +24;Private;103064;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;3674;0;40;United-States;<=50K +61;Private;128848;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3471;0;40;United-States;<=50K +74;?;340939;9th;5;Married-civ-spouse;?;Husband;White;Male;3471;0;40;United-States;<=50K +63;Private;273010;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;3471;0;40;United-States;<=50K +64;Local-gov;237379;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3471;0;40;United-States;<=50K +73;Private;242769;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3471;0;40;England;<=50K +37;Private;259846;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;3471;0;40;United-States;<=50K +72;Private;116640;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;3471;0;20;United-States;<=50K +66;Federal-gov;47358;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;3471;0;40;United-States;<=50K +39;?;157443;Masters;14;Married-civ-spouse;?;Wife;Asian-Pac-Islander;Female;3464;0;40;?;<=50K +39;Private;129597;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;3464;0;40;United-States;<=50K +38;Private;203836;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3464;0;40;Columbia;<=50K +32;Private;209103;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3464;0;40;United-States;<=50K +40;?;428584;HS-grad;9;Married-civ-spouse;?;Wife;Black;Female;3464;0;20;United-States;<=50K +41;State-gov;227734;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;3464;0;40;United-States;<=50K +36;?;216256;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;3464;0;30;United-States;<=50K +26;Private;302097;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3464;0;48;United-States;<=50K +29;Self-emp-not-inc;70604;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;3464;0;40;United-States;<=50K +38;State-gov;364958;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;3464;0;40;United-States;<=50K +27;Private;267325;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;3464;0;40;United-States;<=50K +39;State-gov;42186;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;3464;0;20;United-States;<=50K +54;Private;28683;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3464;0;40;United-States;<=50K +37;Private;212512;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3464;0;50;United-States;<=50K +31;Private;149507;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;3464;0;38;United-States;<=50K +38;Self-emp-not-inc;184456;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;3464;0;80;Italy;<=50K +31;Local-gov;209103;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;3464;0;45;United-States;<=50K +46;Private;248059;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3464;0;40;United-States;<=50K +37;Private;236990;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3464;0;40;United-States;<=50K +30;Private;151001;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3464;0;40;Mexico;<=50K +32;Private;184440;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3464;0;40;United-States;<=50K +36;Private;115360;10th;6;Married-civ-spouse;Machine-op-inspct;Own-child;White;Female;3464;0;40;United-States;<=50K +55;Private;141727;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;3464;0;40;United-States;<=50K +36;Self-emp-not-inc;280169;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;3456;0;8;United-States;<=50K +75;Self-emp-not-inc;31428;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;3456;0;40;United-States;<=50K +71;?;250263;Some-college;10;Married-civ-spouse;?;Husband;White;Male;3432;0;30;United-States;<=50K +70;Private;278139;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3432;0;40;United-States;<=50K +71;?;108390;Some-college;10;Married-civ-spouse;?;Husband;White;Male;3432;0;20;United-States;<=50K +66;Local-gov;179285;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;3432;0;20;United-States;<=50K +25;?;262245;Assoc-voc;11;Never-married;?;Own-child;White;Female;3418;0;40;United-States;<=50K +33;Private;207267;10th;6;Separated;Other-service;Unmarried;White;Female;3418;0;35;United-States;<=50K +29;Private;286452;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;3418;0;40;United-States;<=50K +25;Private;195914;Some-college;10;Never-married;Sales;Own-child;Black;Female;3418;0;30;United-States;<=50K +29;?;339100;11th;7;Divorced;?;Not-in-family;White;Female;3418;0;48;United-States;<=50K +27;State-gov;249362;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;3411;0;40;United-States;<=50K +44;Private;193459;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;40;United-States;<=50K +62;?;225652;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;3411;0;50;United-States;<=50K +39;Private;297847;9th;5;Married-civ-spouse;Other-service;Wife;Black;Female;3411;0;34;United-States;<=50K +62;?;94931;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;3411;0;40;United-States;<=50K +51;Private;147954;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;3411;0;38;United-States;<=50K +40;Self-emp-not-inc;55363;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;40;United-States;<=50K +29;Private;233421;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;45;United-States;<=50K +47;Local-gov;138342;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;3411;0;40;El-Salvador;<=50K +37;Private;219546;Bachelors;13;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;3411;0;47;United-States;<=50K +30;Private;72887;HS-grad;9;Married-civ-spouse;Craft-repair;Own-child;Asian-Pac-Islander;Male;3411;0;40;United-States;<=50K +50;Private;158948;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;40;United-States;<=50K +44;State-gov;96249;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3411;0;40;United-States;<=50K +28;Private;190836;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;40;United-States;<=50K +26;Private;255193;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;3411;0;40;United-States;<=50K +41;Private;439919;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;3411;0;40;Mexico;<=50K +61;Private;180382;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3411;0;45;United-States;<=50K +46;Private;171228;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3411;0;35;Guatemala;<=50K +56;Self-emp-not-inc;201318;9th;5;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;3411;0;50;Columbia;<=50K +64;?;146272;Some-college;10;Married-civ-spouse;?;Husband;White;Male;3411;0;15;United-States;<=50K +38;Self-emp-not-inc;163204;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;25;United-States;<=50K +55;Private;132887;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;3411;0;40;Jamaica;<=50K +29;Private;413297;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3411;0;70;Mexico;<=50K +33;Private;60567;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3411;0;40;United-States;<=50K +51;Private;122159;Some-college;10;Widowed;Prof-specialty;Not-in-family;White;Female;3325;0;40;United-States;<=50K +25;Private;221757;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;3325;0;45;United-States;<=50K +49;Private;50282;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;3325;0;45;United-States;<=50K +45;Federal-gov;273194;HS-grad;9;Never-married;Transport-moving;Not-in-family;Black;Male;3325;0;40;United-States;<=50K +45;Private;330535;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;3325;0;40;United-States;<=50K +34;Private;182177;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;3325;0;35;United-States;<=50K +24;Private;182812;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;3325;0;52;Dominican-Republic;<=50K +43;Private;218558;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;3325;0;40;United-States;<=50K +58;Private;140363;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;3325;0;30;United-States;<=50K +26;Federal-gov;95806;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;3325;0;40;United-States;<=50K +29;Private;159768;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;3325;0;40;Ecuador;<=50K +47;Self-emp-inc;175958;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;3325;0;60;United-States;<=50K +47;Private;184005;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;3325;0;45;United-States;<=50K +48;Private;348144;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;3325;0;53;United-States;<=50K +26;Private;120238;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;3325;0;40;United-States;<=50K +31;State-gov;188900;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;3325;0;35;United-States;<=50K +22;Private;310152;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;3325;0;40;United-States;<=50K +38;Private;51100;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;3325;0;40;United-States;<=50K +21;Private;189888;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;3325;0;60;United-States;<=50K +60;Private;128367;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Male;3325;0;42;United-States;<=50K +51;Local-gov;209320;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;3325;0;40;United-States;<=50K +31;Private;193231;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;3325;0;60;United-States;<=50K +29;Private;157612;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;3325;0;45;United-States;<=50K +49;Private;323798;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;3325;0;50;United-States;<=50K +35;Private;246449;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;3325;0;50;United-States;<=50K +31;Private;286406;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;3325;0;40;United-States;<=50K +28;Private;230856;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Female;3325;0;50;United-States;<=50K +48;Private;247685;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;3325;0;40;United-States;<=50K +40;Private;222011;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;3325;0;40;United-States;<=50K +42;Private;397346;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;3325;0;40;United-States;<=50K +33;Private;460408;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;3325;0;50;United-States;<=50K +41;Private;152742;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Female;3325;0;40;United-States;<=50K +40;Private;168071;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Male;3325;0;40;United-States;<=50K +27;Private;314240;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;3325;0;40;United-States;<=50K +36;Private;32709;Some-college;10;Divorced;Sales;Not-in-family;White;Female;3325;0;45;United-States;<=50K +25;Private;247025;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;3325;0;48;United-States;<=50K +25;Private;361493;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;3325;0;40;United-States;<=50K +25;Private;167835;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;3325;0;40;United-States;<=50K +27;Local-gov;66824;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;3325;0;43;United-States;<=50K +27;Private;287476;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;3325;0;40;United-States;<=50K +26;Private;108019;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;3325;0;40;United-States;<=50K +48;Self-emp-not-inc;108557;Some-college;10;Divorced;Sales;Not-in-family;White;Female;3325;0;60;United-States;<=50K +46;Self-emp-inc;256909;HS-grad;9;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;3325;0;45;United-States;<=50K +44;Self-emp-not-inc;185057;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;3325;0;40;United-States;<=50K +30;Private;195576;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;3325;0;50;United-States;<=50K +23;Private;91733;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;3325;0;40;United-States;<=50K +46;Private;65353;Some-college;10;Divorced;Transport-moving;Own-child;White;Male;3325;0;55;United-States;<=50K +29;Private;114158;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;3325;0;10;United-States;<=50K +42;Local-gov;246862;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;3325;0;40;United-States;<=50K +41;Private;320744;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;3325;0;50;United-States;<=50K +52;Private;114228;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;3325;0;40;United-States;<=50K +46;State-gov;327786;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Female;3325;0;42;United-States;<=50K +59;Private;152968;Some-college;10;Separated;Adm-clerical;Other-relative;White;Male;3325;0;40;United-States;<=50K +67;Self-emp-not-inc;116057;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;3273;0;16;United-States;<=50K +66;Federal-gov;38621;Assoc-voc;11;Widowed;Other-service;Unmarried;Black;Female;3273;0;40;United-States;<=50K +66;Local-gov;376506;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;3273;0;40;United-States;<=50K +73;Federal-gov;127858;Some-college;10;Widowed;Tech-support;Not-in-family;White;Female;3273;0;40;United-States;<=50K +68;Private;191581;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;3273;0;40;United-States;<=50K +69;Self-emp-not-inc;92472;10th;6;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;3273;0;45;United-States;<=50K +54;Private;183611;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;3137;0;50;United-States;<=50K +31;Private;247328;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3137;0;40;Mexico;<=50K +45;Self-emp-not-inc;239093;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;3137;0;40;United-States;<=50K +38;Private;170020;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3137;0;45;United-States;<=50K +37;Private;195148;HS-grad;9;Married-civ-spouse;Craft-repair;Own-child;White;Male;3137;0;40;United-States;<=50K +41;Private;282948;Some-college;10;Married-civ-spouse;Tech-support;Husband;Black;Male;3137;0;40;United-States;<=50K +37;Self-emp-not-inc;73199;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;3137;0;77;Vietnam;<=50K +64;Local-gov;202984;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3137;0;40;United-States;<=50K +47;Local-gov;80282;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3137;0;40;United-States;<=50K +29;Private;183627;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3137;0;48;Ireland;<=50K +57;Self-emp-not-inc;57071;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3137;0;40;United-States;<=50K +25;Private;335005;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;3137;0;40;United-States;<=50K +51;Self-emp-not-inc;118259;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3137;0;60;United-States;<=50K +28;Private;66777;Assoc-voc;11;Married-civ-spouse;Other-service;Other-relative;White;Female;3137;0;40;United-States;<=50K +45;Private;273194;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;3137;0;35;United-States;<=50K +37;Private;78928;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;3137;0;40;United-States;<=50K +44;Private;889965;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;3137;0;30;United-States;<=50K +39;Private;258276;Bachelors;13;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;3137;0;40;?;<=50K +53;Private;150980;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3137;0;40;United-States;<=50K +44;Self-emp-not-inc;194636;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3137;0;50;United-States;<=50K +50;Private;266945;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;3137;0;40;El-Salvador;<=50K +50;Private;160572;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3137;0;47;United-States;<=50K +51;Private;282549;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;3137;0;40;United-States;<=50K +60;Private;121319;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3137;0;40;Poland;<=50K +35;Private;180686;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3137;0;40;United-States;<=50K +40;Local-gov;153489;HS-grad;9;Married-civ-spouse;Other-service;Other-relative;White;Male;3137;0;40;United-States;<=50K +42;Private;125280;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3137;0;40;United-States;<=50K +37;Self-emp-not-inc;183735;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;3137;0;30;United-States;<=50K +60;Self-emp-not-inc;95445;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;3137;0;46;United-States;<=50K +31;Self-emp-not-inc;265807;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;3137;0;50;United-States;<=50K +52;Local-gov;30118;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;3137;0;42;United-States;<=50K +36;Self-emp-not-inc;179896;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;3137;0;40;United-States;<=50K +36;Private;245090;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3137;0;50;El-Salvador;<=50K +38;Self-emp-not-inc;245372;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;3137;0;50;United-States;<=50K +30;Self-emp-not-inc;113838;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;3137;0;60;Germany;<=50K +31;Private;109055;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;3137;0;45;United-States;<=50K +46;Self-emp-not-inc;101722;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3137;0;40;United-States;<=50K +33;Private;169879;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;47;United-States;>50K +37;Private;186934;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;44;United-States;>50K +50;Private;767403;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;40;United-States;>50K +41;Private;118212;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +26;Private;167350;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;3103;0;40;United-States;>50K +51;Private;120173;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;50;United-States;>50K +33;Private;155343;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3103;0;40;United-States;>50K +36;Private;24106;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +39;Private;127772;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;3103;0;44;United-States;>50K +51;Private;237735;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3103;0;40;United-States;>50K +36;Private;131239;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;45;United-States;>50K +48;Private;235646;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;3103;0;40;United-States;>50K +32;Private;34104;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;55;United-States;>50K +50;Private;71417;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +50;Private;69345;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;3103;0;55;United-States;>50K +41;Self-emp-not-inc;120539;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;40;United-States;>50K +52;Private;99307;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;3103;0;48;United-States;>50K +44;Private;152629;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;3103;0;40;United-States;>50K +56;Private;176118;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +37;Self-emp-inc;39089;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;50;United-States;>50K +35;Self-emp-not-inc;181705;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +34;?;353881;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;3103;0;60;United-States;>50K +62;Private;121319;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;40;United-States;>50K +43;Private;115323;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;40;United-States;>50K +28;Private;215955;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;40;United-States;>50K +43;Private;99212;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;48;United-States;>50K +57;Private;298507;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;40;United-States;>50K +47;Private;340982;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;3103;0;40;Philippines;>50K +50;Private;158294;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;3103;0;40;United-States;>50K +33;Self-emp-not-inc;58702;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;3103;0;50;United-States;>50K +54;Private;139703;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;Germany;>50K +47;Private;33710;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;60;United-States;>50K +33;Private;150570;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;43;United-States;>50K +52;Private;229983;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;3103;0;30;United-States;>50K +39;Private;306646;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;3103;0;50;United-States;>50K +55;Private;105582;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;3103;0;40;United-States;>50K +57;Private;211804;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;50;United-States;>50K +40;Private;220977;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;3103;0;40;India;>50K +60;State-gov;194252;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;3103;0;40;United-States;>50K +26;Local-gov;242464;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;3103;0;40;United-States;>50K +36;Private;181382;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;40;United-States;>50K +32;Private;205152;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;40;United-States;>50K +39;Self-emp-inc;336226;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;60;United-States;>50K +51;Self-emp-not-inc;276456;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;3103;0;30;United-States;>50K +27;Private;221366;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;50;United-States;>50K +41;State-gov;293485;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;3103;0;40;United-States;>50K +61;Private;160942;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;3103;0;50;United-States;<=50K +38;Private;383239;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +40;Self-emp-not-inc;167081;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;3103;0;50;United-States;<=50K +43;Private;358199;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;3103;0;40;United-States;>50K +46;Private;33842;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;3103;0;40;United-States;>50K +54;Private;169719;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;3103;0;40;United-States;>50K +36;Private;58343;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;3103;0;42;United-States;>50K +49;Private;54772;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;45;United-States;>50K +52;Private;210736;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;55;United-States;>50K +55;Private;101468;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +38;Self-emp-not-inc;146042;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;3103;0;60;United-States;>50K +39;Private;280570;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;50;United-States;>50K +59;Private;258579;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;3103;0;35;United-States;>50K +34;Private;175856;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;55;United-States;>50K +42;Private;78765;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;45;United-States;>50K +46;Private;423222;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;60;United-States;>50K +53;Self-emp-not-inc;159876;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;3103;0;72;United-States;<=50K +51;Self-emp-not-inc;156802;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;3103;0;60;United-States;>50K +34;Private;198265;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;3103;0;40;United-States;>50K +35;Self-emp-not-inc;37778;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;3103;0;55;United-States;<=50K +51;Private;145409;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;48;United-States;>50K +50;Self-emp-not-inc;156951;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;40;United-States;>50K +55;Self-emp-not-inc;322691;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;3103;0;55;United-States;>50K +37;Private;105803;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;45;United-States;>50K +48;Private;188432;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;46;United-States;>50K +25;Self-emp-not-inc;259299;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;50;United-States;>50K +39;Private;49020;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;3103;0;48;United-States;>50K +45;Private;168598;12th;8;Married-civ-spouse;Adm-clerical;Wife;Black;Female;3103;0;40;United-States;>50K +45;Self-emp-not-inc;118081;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;3103;0;42;United-States;<=50K +46;Private;186172;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;40;United-States;>50K +28;?;303674;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;3103;0;20;United-States;<=50K +18;Private;184016;HS-grad;9;Married-civ-spouse;Priv-house-serv;Not-in-family;White;Female;3103;0;40;United-States;<=50K +46;Private;31432;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;3103;0;52;United-States;>50K +34;Private;99872;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;3103;0;40;India;>50K +30;Private;114912;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;60;United-States;>50K +25;Private;353795;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;3103;0;40;United-States;>50K +56;Private;89922;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;3103;0;45;United-States;>50K +44;Private;124747;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;3103;0;40;United-States;>50K +29;Private;278637;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;3103;0;45;United-States;>50K +61;?;71467;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;3103;0;40;United-States;>50K +46;Self-emp-inc;120902;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;3103;0;37;United-States;>50K +30;Private;101345;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;3103;0;55;United-States;>50K +46;Federal-gov;33794;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;3103;0;40;United-States;>50K +44;Private;277488;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;3103;0;40;United-States;>50K +60;Self-emp-not-inc;187794;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;3103;0;60;United-States;>50K +45;Private;179659;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +53;Private;53197;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;3103;0;40;United-States;>50K +55;Local-gov;143949;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;3103;0;45;United-States;>50K +41;Private;167106;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;3103;0;35;Philippines;>50K +30;Private;345522;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;3103;0;70;United-States;>50K +37;Private;377798;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;3103;0;40;United-States;>50K +69;Private;108196;9th;5;Never-married;Craft-repair;Other-relative;White;Male;2993;0;40;United-States;<=50K +70;?;158642;HS-grad;9;Widowed;?;Not-in-family;White;Female;2993;0;20;United-States;<=50K +40;Local-gov;50442;Some-college;10;Never-married;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;2977;0;35;United-States;<=50K +40;Private;197923;Bachelors;13;Never-married;Adm-clerical;Unmarried;Black;Female;2977;0;40;United-States;<=50K +35;State-gov;172475;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;2977;0;45;United-States;<=50K +34;Private;269723;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;2977;0;50;United-States;<=50K +36;Private;275653;7th-8th;4;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Female;2977;0;40;Puerto-Rico;<=50K +39;Private;160728;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;2977;0;40;United-States;<=50K +32;Private;116055;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;2977;0;35;United-States;<=50K +42;State-gov;109462;Bachelors;13;Divorced;Adm-clerical;Unmarried;Black;Female;2977;0;40;United-States;<=50K +78;Private;182977;HS-grad;9;Widowed;Other-service;Not-in-family;Black;Female;2964;0;40;United-States;<=50K +71;Private;157909;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;2964;0;60;United-States;<=50K +69;Private;370888;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;2964;0;6;Germany;<=50K +69;Private;159522;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;Black;Female;2964;0;40;United-States;<=50K +79;Private;172220;7th-8th;4;Widowed;Priv-house-serv;Not-in-family;White;Female;2964;0;30;United-States;<=50K +66;?;186032;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;2964;0;30;United-States;<=50K +70;?;149040;HS-grad;9;Widowed;?;Not-in-family;White;Female;2964;0;12;United-States;<=50K +90;Self-emp-not-inc;82628;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;2964;0;12;United-States;<=50K +69;?;107575;HS-grad;9;Divorced;?;Not-in-family;White;Female;2964;0;35;United-States;<=50K +51;Private;120914;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;2961;0;40;United-States;<=50K +62;?;302142;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2961;0;30;United-States;<=50K +20;Private;279538;11th;7;Married-civ-spouse;Handlers-cleaners;Other-relative;White;Male;2961;0;35;United-States;<=50K +66;Private;116468;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;2936;0;20;United-States;<=50K +81;Self-emp-inc;247232;10th;6;Married-civ-spouse;Exec-managerial;Wife;White;Female;2936;0;28;United-States;<=50K +58;Private;407138;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2936;0;50;Mexico;<=50K +59;Private;108496;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;2907;0;40;United-States;<=50K +26;Private;48718;10th;6;Never-married;Adm-clerical;Not-in-family;White;Female;2907;0;40;United-States;<=50K +23;Private;55674;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Female;2907;0;40;United-States;<=50K +36;Private;544686;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;2907;0;40;Nicaragua;<=50K +26;Private;116044;11th;7;Separated;Craft-repair;Other-relative;White;Male;2907;0;50;United-States;<=50K +56;Private;266091;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;2907;0;52;Cuba;<=50K +31;Private;511289;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;2907;0;99;United-States;<=50K +22;Private;385077;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;2907;0;40;United-States;<=50K +23;?;138768;Bachelors;13;Never-married;?;Own-child;White;Male;2907;0;40;United-States;<=50K +25;Private;104993;9th;5;Never-married;Handlers-cleaners;Own-child;Black;Male;2907;0;40;United-States;<=50K +18;Private;225859;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;2907;0;30;United-States;<=50K +59;Private;284834;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;2885;0;30;United-States;<=50K +41;Private;187821;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2885;0;40;United-States;<=50K +35;Private;174856;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;2885;0;40;United-States;<=50K +56;Private;286487;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2885;0;45;United-States;<=50K +47;Self-emp-inc;483596;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;2885;0;32;United-States;<=50K +35;Private;306678;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2885;0;40;United-States;<=50K +36;Self-emp-not-inc;285020;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2885;0;40;United-States;<=50K +56;State-gov;54260;Doctorate;16;Married-civ-spouse;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;2885;0;40;China;<=50K +55;?;216941;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;2885;0;40;United-States;<=50K +27;Private;165365;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;2885;0;40;Laos;<=50K +22;Private;31387;Bachelors;13;Married-civ-spouse;Adm-clerical;Own-child;Amer-Indian-Eskimo;Female;2885;0;25;United-States;<=50K +48;Private;118889;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;2885;0;15;United-States;<=50K +27;Private;57052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2885;0;40;United-States;<=50K +34;?;205256;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2885;0;80;United-States;<=50K +47;Private;133969;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;2885;0;65;Japan;<=50K +26;Private;345405;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;2885;0;40;United-States;<=50K +61;Local-gov;35001;7th-8th;4;Married-civ-spouse;Adm-clerical;Husband;White;Male;2885;0;40;United-States;<=50K +42;Self-emp-inc;23813;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;2885;0;30;United-States;<=50K +25;Private;120238;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;2885;0;43;United-States;<=50K +28;Private;148429;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2885;0;40;United-States;<=50K +42;Self-emp-not-inc;101709;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;2885;0;40;United-States;<=50K +42;Private;319016;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;2885;0;45;United-States;<=50K +50;Private;108933;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;2885;0;40;United-States;<=50K +24;Private;437666;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2885;0;50;United-States;<=50K +27;Private;358636;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;70;United-States;<=50K +38;Private;234962;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;2829;0;30;Mexico;<=50K +35;Private;356838;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;2829;0;55;Poland;<=50K +26;Private;182178;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;40;United-States;<=50K +39;Self-emp-not-inc;31848;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;2829;0;90;United-States;<=50K +39;Private;84954;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;2829;0;65;United-States;<=50K +36;Private;103323;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2829;0;40;United-States;<=50K +40;Private;144594;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;2829;0;40;United-States;<=50K +32;Private;183811;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;2829;0;40;United-States;<=50K +41;Private;150533;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;2829;0;40;United-States;<=50K +25;Private;104097;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;60;United-States;<=50K +29;Private;170301;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;2829;0;40;United-States;<=50K +35;Self-emp-not-inc;77146;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;45;United-States;<=50K +62;Private;238913;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;2829;0;24;United-States;<=50K +39;Private;231141;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2829;0;40;United-States;<=50K +30;Private;130021;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;40;United-States;<=50K +54;Self-emp-not-inc;108435;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;2829;0;30;United-States;<=50K +43;Private;154210;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;2829;0;60;China;<=50K +47;Self-emp-not-inc;237731;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;2829;0;65;United-States;<=50K +31;Private;156763;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;2829;0;40;United-States;<=50K +34;Private;340917;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;2829;0;50;?;<=50K +27;Private;215955;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;2829;0;40;United-States;<=50K +40;Private;27821;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;2829;0;40;United-States;<=50K +45;Private;213140;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;40;United-States;<=50K +28;Private;416577;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;2829;0;40;United-States;<=50K +61;Self-emp-inc;171831;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;2829;0;45;United-States;<=50K +41;Private;104892;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;2829;0;40;United-States;<=50K +29;Private;157308;11th;7;Married-civ-spouse;Handlers-cleaners;Wife;Asian-Pac-Islander;Female;2829;0;14;Philippines;<=50K +62;Local-gov;203525;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;2829;0;40;United-States;<=50K +53;Private;257940;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2829;0;40;United-States;<=50K +45;Self-emp-not-inc;31478;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;2829;0;60;United-States;<=50K +75;?;248833;HS-grad;9;Married-AF-spouse;?;Wife;White;Female;2653;0;14;United-States;<=50K +70;Private;216390;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;2653;0;40;United-States;<=50K +70;Self-emp-not-inc;139889;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;2653;0;70;United-States;<=50K +75;Private;104896;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;2653;0;20;United-States;<=50K +90;Local-gov;214594;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;2653;0;40;United-States;<=50K +24;Private;296045;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;2635;0;38;United-States;<=50K +29;Local-gov;30069;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;2635;0;40;United-States;<=50K +39;Private;326342;11th;7;Married-civ-spouse;Other-service;Husband;Black;Male;2635;0;37;United-States;<=50K +33;Private;133503;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;2635;0;16;United-States;<=50K +37;Self-emp-not-inc;192251;10th;6;Married-civ-spouse;Other-service;Wife;White;Female;2635;0;40;United-States;<=50K +54;?;31588;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2635;0;40;United-States;<=50K +64;Self-emp-inc;213574;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2635;0;10;United-States;<=50K +39;Private;117166;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2635;0;40;United-States;<=50K +64;Private;116084;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2635;0;40;United-States;<=50K +64;Self-emp-not-inc;159938;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2635;0;24;Italy;<=50K +35;Self-emp-not-inc;241469;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;2635;0;30;United-States;<=50K +22;Private;240817;HS-grad;9;Never-married;Sales;Own-child;White;Female;2597;0;40;United-States;<=50K +25;Private;186925;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;2597;0;48;United-States;<=50K +26;Private;262617;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;2597;0;40;United-States;<=50K +21;Private;203924;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;2597;0;45;United-States;<=50K +19;Private;38294;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;2597;0;40;United-States;<=50K +25;Private;179953;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;2597;0;31;United-States;<=50K +60;Private;163729;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;2597;0;40;United-States;<=50K +26;Private;456618;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;2597;0;40;United-States;<=50K +25;Private;164229;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;2597;0;40;United-States;<=50K +24;Private;103277;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;2597;0;40;United-States;<=50K +32;Private;168138;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Male;2597;0;48;United-States;<=50K +53;Private;113176;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;2597;0;40;United-States;<=50K +26;Private;151551;Some-college;10;Separated;Sales;Own-child;Amer-Indian-Eskimo;Male;2597;0;48;United-States;<=50K +25;State-gov;99076;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;2597;0;50;United-States;<=50K +32;Private;79870;Some-college;10;Married-civ-spouse;Exec-managerial;Own-child;White;Female;2597;0;40;Japan;<=50K +23;Private;160951;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;2597;0;40;United-States;<=50K +60;Self-emp-not-inc;153356;HS-grad;9;Divorced;Sales;Not-in-family;Black;Male;2597;0;55;United-States;<=50K +49;Private;83622;Assoc-acdm;12;Separated;Adm-clerical;Not-in-family;White;Female;2597;0;40;United-States;<=50K +23;Private;239663;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;2597;0;50;United-States;<=50K +25;Private;222539;10th;6;Never-married;Transport-moving;Not-in-family;White;Male;2597;0;50;United-States;<=50K +40;Private;82465;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2580;0;40;United-States;<=50K +37;Private;34378;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;2580;0;60;United-States;<=50K +28;Private;212091;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2580;0;40;United-States;<=50K +22;Self-emp-inc;269583;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;2580;0;40;United-States;<=50K +63;Private;133144;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;2580;0;20;United-States;<=50K +24;Private;141113;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;2580;0;40;United-States;<=50K +30;Private;326199;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;2580;0;40;United-States;<=50K +27;Private;198188;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;2580;0;45;United-States;<=50K +55;Private;154580;10th;6;Married-civ-spouse;Other-service;Husband;Black;Male;2580;0;40;United-States;<=50K +59;Self-emp-not-inc;144071;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;2580;0;15;El-Salvador;<=50K +40;Private;367533;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2580;0;40;United-States;<=50K +64;Private;75577;7th-8th;4;Married-civ-spouse;Adm-clerical;Husband;White;Male;2580;0;50;United-States;<=50K +69;Private;165017;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Male;2538;0;40;United-States;<=50K +23;Private;211046;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;2463;0;40;United-States;<=50K +26;State-gov;203279;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;2463;0;50;India;<=50K +48;Private;161187;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;2463;0;40;United-States;<=50K +34;Private;394447;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;2463;0;50;France;<=50K +36;Private;100681;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;2463;0;40;United-States;<=50K +34;Private;112820;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;White;Male;2463;0;40;United-States;<=50K +31;Private;194293;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;2463;0;38;United-States;<=50K +24;Private;229393;11th;7;Never-married;Farming-fishing;Unmarried;White;Male;2463;0;40;United-States;<=50K +28;Private;54042;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;2463;0;35;United-States;<=50K +26;Private;333677;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;2463;0;35;United-States;<=50K +30;Private;139012;Assoc-voc;11;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Male;2463;0;40;Vietnam;<=50K +61;Private;149981;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;2414;0;5;United-States;<=50K +67;Self-emp-not-inc;127543;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;2414;0;80;United-States;<=50K +67;?;188903;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;2414;0;40;United-States;<=50K +68;Self-emp-not-inc;195881;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;2414;0;40;United-States;<=50K +65;Without-pay;172949;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;2414;0;20;United-States;<=50K +65;?;404601;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2414;0;30;United-States;<=50K +59;Private;328525;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;2414;0;15;United-States;<=50K +72;Private;156310;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;2414;0;12;United-States;<=50K +30;Private;59496;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;2407;0;40;United-States;<=50K +50;Self-emp-not-inc;30653;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;2407;0;98;United-States;<=50K +35;Private;234901;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;2407;0;40;United-States;<=50K +39;Private;328466;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;2407;0;70;Mexico;<=50K +31;Private;211334;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;2407;0;65;United-States;<=50K +26;Private;143068;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;2407;0;50;United-States;<=50K +25;Private;297154;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;2407;0;40;United-States;<=50K +28;Private;38309;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;2407;0;40;United-States;<=50K +42;Private;212894;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;2407;0;40;United-States;<=50K +45;Private;358886;12th;8;Married-civ-spouse;Adm-clerical;Husband;White;Male;2407;0;50;United-States;<=50K +42;Private;322385;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2407;0;40;United-States;<=50K +53;Private;178356;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;2407;0;99;United-States;<=50K +24;Private;41838;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;2407;0;40;United-States;<=50K +32;Private;178615;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2407;0;40;United-States;<=50K +22;Private;190968;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;2407;0;40;United-States;<=50K +36;Self-emp-not-inc;224886;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;2407;0;40;United-States;<=50K +55;Private;202220;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;2407;0;35;United-States;<=50K +49;Private;251180;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;2407;0;50;United-States;<=50K +59;?;160662;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2407;0;60;United-States;<=50K +69;Private;130060;HS-grad;9;Separated;Transport-moving;Unmarried;Black;Female;2387;0;40;United-States;<=50K +25;Private;173212;Assoc-acdm;12;Never-married;Farming-fishing;Not-in-family;White;Male;2354;0;45;United-States;<=50K +44;Private;83508;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;2354;0;99;United-States;<=50K +24;Private;180060;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;2354;0;40;United-States;<=50K +42;Private;30824;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;2354;0;16;United-States;<=50K +44;Federal-gov;240628;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;2354;0;40;United-States;<=50K +38;Private;203761;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;2354;0;40;United-States;<=50K +37;Private;196529;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;2354;0;40;?;<=50K +28;Private;112403;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;2354;0;40;United-States;<=50K +35;Private;183898;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;2354;0;40;United-States;<=50K +41;Private;322980;HS-grad;9;Separated;Adm-clerical;Not-in-family;Black;Male;2354;0;40;United-States;<=50K +26;Private;195734;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;2354;0;40;United-States;<=50K +68;Federal-gov;232151;Some-college;10;Divorced;Adm-clerical;Other-relative;Black;Female;2346;0;40;United-States;<=50K +75;Self-emp-not-inc;242108;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;2346;0;15;United-States;<=50K +72;Private;97304;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Male;2346;0;40;?;<=50K +69;Private;130413;Bachelors;13;Widowed;Exec-managerial;Not-in-family;White;Female;2346;0;15;United-States;<=50K +65;Private;105116;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;2346;0;40;United-States;<=50K +70;Private;237065;5th-6th;3;Widowed;Other-service;Other-relative;White;Female;2346;0;40;?;<=50K +71;Private;269708;Bachelors;13;Divorced;Tech-support;Own-child;White;Female;2329;0;16;United-States;<=50K +67;?;183374;HS-grad;9;Widowed;?;Not-in-family;White;Female;2329;0;15;United-States;<=50K +70;Self-emp-not-inc;280639;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;2329;0;20;United-States;<=50K +65;?;315728;HS-grad;9;Widowed;?;Unmarried;White;Female;2329;0;75;United-States;<=50K +72;Private;107814;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;2329;0;60;United-States;<=50K +78;Private;135566;HS-grad;9;Widowed;Sales;Unmarried;White;Female;2329;0;12;United-States;<=50K +65;Private;192133;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2290;0;40;Greece;<=50K +63;Self-emp-not-inc;179400;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;2290;0;20;United-States;<=50K +66;Self-emp-not-inc;174995;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;2290;0;30;Hungary;<=50K +65;Self-emp-not-inc;78875;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;2290;0;40;United-States;<=50K +72;Local-gov;259762;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;2290;0;10;United-States;<=50K +73;Local-gov;232871;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;2228;0;10;United-States;<=50K +60;Private;39952;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2228;0;37;United-States;<=50K +78;?;27979;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2228;0;32;United-States;<=50K +70;?;207627;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;2228;0;24;United-States;<=50K +55;Self-emp-not-inc;105582;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;2228;0;50;United-States;<=50K +28;Private;89718;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;2202;0;48;United-States;<=50K +31;Private;19302;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;2202;0;38;United-States;<=50K +29;Self-emp-not-inc;189346;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;2202;0;50;United-States;<=50K +53;Private;233780;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;Black;Female;2202;0;40;United-States;<=50K +58;Self-emp-inc;21626;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;2202;0;56;United-States;<=50K +33;Private;221966;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;2202;0;50;United-States;<=50K +44;Self-emp-inc;56236;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;2202;0;45;United-States;<=50K +55;Private;195329;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;2202;0;35;Italy;<=50K +23;Private;565313;Some-college;10;Never-married;Other-service;Own-child;Black;Male;2202;0;80;United-States;<=50K +29;Private;163003;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;2202;0;40;Taiwan;<=50K +39;Local-gov;163278;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;2202;0;44;United-States;<=50K +28;Local-gov;50512;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;2202;0;50;United-States;<=50K +50;Local-gov;157043;Masters;14;Divorced;Prof-specialty;Not-in-family;Black;Female;2202;0;30;?;<=50K +38;Private;108140;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;2202;0;45;United-States;<=50K +24;Private;72119;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;2202;0;30;United-States;<=50K +22;Private;205939;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;2202;0;4;United-States;<=50K +17;Private;175024;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;2176;0;18;United-States;<=50K +49;?;261059;10th;6;Separated;?;Own-child;White;Male;2176;0;40;United-States;<=50K +20;Private;56322;Some-college;10;Never-married;Other-service;Own-child;White;Male;2176;0;25;United-States;<=50K +18;Private;376647;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;2176;0;25;United-States;<=50K +21;Private;201603;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;2176;0;40;United-States;<=50K +20;Private;169600;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;2176;0;12;United-States;<=50K +21;Private;83033;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;2176;0;20;United-States;<=50K +20;Private;286391;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;2176;0;20;United-States;<=50K +28;Self-emp-not-inc;315417;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;2176;0;40;United-States;<=50K +19;Private;42069;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;2176;0;45;United-States;<=50K +36;Private;177907;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;2176;0;20;?;<=50K +63;Private;169983;11th;7;Widowed;Sales;Not-in-family;White;Female;2176;0;30;United-States;<=50K +33;Private;190511;7th-8th;4;Divorced;Handlers-cleaners;Not-in-family;White;Male;2176;0;35;United-States;<=50K +25;Private;176047;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;2176;0;40;United-States;<=50K +21;?;175166;Some-college;10;Never-married;?;Own-child;White;Female;2176;0;40;United-States;<=50K +18;Private;60981;Some-college;10;Never-married;Sales;Own-child;White;Female;2176;0;35;United-States;<=50K +48;Private;189462;Some-college;10;Divorced;Handlers-cleaners;Own-child;White;Male;2176;0;40;United-States;<=50K +27;Private;177955;5th-6th;3;Never-married;Priv-house-serv;Other-relative;White;Female;2176;0;40;El-Salvador;<=50K +39;Private;339442;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;Black;Male;2176;0;40;United-States;<=50K +20;Private;26842;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;2176;0;40;United-States;<=50K +18;Private;206008;Some-college;10;Never-married;Sales;Unmarried;White;Male;2176;0;40;United-States;<=50K +18;Private;141626;Some-college;10;Never-married;Tech-support;Own-child;White;Male;2176;0;20;United-States;<=50K +21;Private;213015;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Male;2176;0;40;United-States;<=50K +39;State-gov;77516;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;2174;0;40;United-States;<=50K +40;Self-emp-not-inc;204116;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;2174;0;40;United-States;<=50K +25;Private;200408;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;2174;0;40;United-States;<=50K +29;Private;177119;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Female;2174;0;45;United-States;<=50K +41;Private;107306;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;2174;0;40;United-States;<=50K +23;Private;107578;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;2174;0;40;United-States;<=50K +28;Private;56179;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;2174;0;55;United-States;<=50K +36;Private;176101;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;2174;0;60;United-States;<=50K +39;Private;190466;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;2174;0;40;United-States;<=50K +33;Private;164707;Assoc-acdm;12;Never-married;Exec-managerial;Unmarried;White;Female;2174;0;55;?;<=50K +28;Private;32291;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;2174;0;40;United-States;<=50K +39;Private;115418;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;2174;0;45;United-States;<=50K +26;Local-gov;425092;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;2174;0;40;United-States;<=50K +29;Self-emp-not-inc;151476;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;2174;0;40;United-States;<=50K +32;Federal-gov;191385;Assoc-acdm;12;Divorced;Protective-serv;Not-in-family;White;Male;2174;0;40;United-States;<=50K +36;Self-emp-not-inc;219611;Bachelors;13;Never-married;Sales;Not-in-family;Black;Female;2174;0;50;United-States;<=50K +34;Private;133503;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;2174;0;40;United-States;<=50K +29;Private;196116;Prof-school;15;Divorced;Prof-specialty;Own-child;White;Female;2174;0;72;United-States;<=50K +40;Private;149102;HS-grad;9;Married-spouse-absent;Handlers-cleaners;Not-in-family;White;Male;2174;0;60;Poland;<=50K +58;Private;106546;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;2174;0;40;United-States;<=50K +57;State-gov;25045;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Male;2174;0;37;United-States;<=50K +24;Private;163665;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;2174;0;40;United-States;<=50K +32;Private;107793;HS-grad;9;Divorced;Other-service;Own-child;White;Male;2174;0;40;United-States;<=50K +41;Private;204682;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;2174;0;40;Japan;<=50K +27;Private;191628;HS-grad;9;Never-married;Transport-moving;Not-in-family;Black;Male;2174;0;40;United-States;<=50K +37;Private;177858;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;2174;0;40;United-States;<=50K +48;Private;245948;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Female;2174;0;40;United-States;<=50K +57;Private;206343;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;2174;0;40;Cuba;<=50K +41;Private;115411;Some-college;10;Divorced;Sales;Own-child;White;Male;2174;0;45;United-States;<=50K +26;Private;258768;Some-college;10;Never-married;Transport-moving;Not-in-family;Black;Male;2174;0;75;United-States;<=50K +63;Private;125954;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;2174;0;40;United-States;<=50K +45;Private;138626;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;2174;0;50;United-States;<=50K +21;Private;100462;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Female;2174;0;60;United-States;<=50K +31;Private;187560;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;2174;0;40;United-States;<=50K +28;Private;46987;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;2174;0;36;United-States;<=50K +62;Private;194167;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;2174;0;40;United-States;<=50K +41;Private;45156;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;2174;0;41;United-States;<=50K +29;Federal-gov;37933;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;2174;0;40;United-States;<=50K +24;Private;254293;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;2174;0;45;United-States;<=50K +29;Private;189565;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;2174;0;50;United-States;<=50K +43;Federal-gov;134026;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;2174;0;40;United-States;<=50K +47;Private;223342;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;2174;0;40;England;<=50K +25;Private;139012;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;2174;0;40;Vietnam;<=50K +32;Self-emp-not-inc;261056;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;2174;0;60;?;<=50K +43;Private;187702;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;2174;0;45;United-States;<=50K +25;Private;198587;Some-college;10;Never-married;Tech-support;Not-in-family;Black;Female;2174;0;50;United-States;<=50K +27;State-gov;192257;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;2174;0;40;United-States;<=50K +27;Local-gov;162404;HS-grad;9;Never-married;Protective-serv;Not-in-family;Black;Male;2174;0;40;United-States;<=50K +51;Private;246519;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;2105;0;45;United-States;<=50K +31;Private;209448;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;2105;0;40;Mexico;<=50K +63;Private;135339;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;2105;0;40;Vietnam;<=50K +23;Private;222925;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Own-child;White;Female;2105;0;40;United-States;<=50K +24;Private;254767;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;2105;0;50;United-States;<=50K +21;?;357029;Some-college;10;Married-civ-spouse;?;Wife;Black;Female;2105;0;20;United-States;<=50K +52;Private;152373;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;2105;0;40;United-States;<=50K +37;Self-emp-not-inc;154641;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;White;Male;2105;0;50;United-States;<=50K +33;Local-gov;365908;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;2105;0;40;United-States;<=50K +81;Private;114670;9th;5;Widowed;Priv-house-serv;Not-in-family;Black;Female;2062;0;5;United-States;<=50K +67;Private;172756;1st-4th;2;Widowed;Machine-op-inspct;Not-in-family;White;Female;2062;0;34;Ecuador;<=50K +66;Private;127921;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;2050;0;55;United-States;<=50K +67;?;407618;9th;5;Divorced;?;Not-in-family;White;Female;2050;0;40;United-States;<=50K +69;Private;541737;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;2050;0;24;United-States;<=50K +66;?;306178;10th;6;Divorced;?;Not-in-family;White;Male;2050;0;40;United-States;<=50K +71;Local-gov;303860;Masters;14;Widowed;Exec-managerial;Not-in-family;White;Male;2050;0;20;United-States;<=50K +46;Self-emp-inc;110702;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;2036;0;60;United-States;<=50K +34;Private;245211;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;2036;0;30;United-States;<=50K +38;State-gov;103925;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;2036;0;20;United-States;<=50K +19;Private;376683;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;2036;0;30;United-States;<=50K +67;Local-gov;342175;Masters;14;Divorced;Adm-clerical;Not-in-family;White;Female;2009;0;40;United-States;<=50K +65;Local-gov;153890;12th;8;Widowed;Exec-managerial;Not-in-family;White;Male;2009;0;44;United-States;<=50K +70;?;163057;HS-grad;9;Widowed;?;Not-in-family;White;Female;2009;0;40;United-States;<=50K +69;Private;106595;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;1848;0;40;United-States;<=50K +69;Private;177374;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;1848;0;12;United-States;<=50K +65;Private;172510;Some-college;10;Widowed;Prof-specialty;Not-in-family;White;Female;1848;0;20;Hungary;<=50K +65;Private;80174;HS-grad;9;Divorced;Exec-managerial;Other-relative;White;Female;1848;0;50;United-States;<=50K +69;Self-emp-not-inc;29980;7th-8th;4;Never-married;Farming-fishing;Other-relative;White;Male;1848;0;10;United-States;<=50K +69;?;320280;Some-college;10;Never-married;?;Not-in-family;White;Male;1848;0;1;United-States;<=50K +41;Private;162189;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;1831;0;40;Peru;<=50K +33;State-gov;73296;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;1831;0;40;United-States;<=50K +44;Private;126199;Some-college;10;Divorced;Transport-moving;Unmarried;White;Male;1831;0;50;United-States;<=50K +36;Private;353524;HS-grad;9;Divorced;Exec-managerial;Own-child;White;Female;1831;0;40;United-States;<=50K +29;Private;326330;Some-college;10;Divorced;Exec-managerial;Own-child;White;Female;1831;0;40;United-States;<=50K +40;Private;341204;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;1831;0;30;United-States;<=50K +47;State-gov;108890;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;1831;0;38;United-States;<=50K +65;?;299494;11th;7;Married-civ-spouse;?;Husband;White;Male;1797;0;40;United-States;<=50K +69;Private;141181;5th-6th;3;Married-civ-spouse;Adm-clerical;Husband;White;Male;1797;0;40;United-States;<=50K +67;Private;101132;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;1797;0;40;United-States;<=50K +65;Self-emp-not-inc;131417;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;1797;0;21;United-States;<=50K +74;?;33114;10th;6;Married-civ-spouse;?;Husband;Amer-Indian-Eskimo;Male;1797;0;30;United-States;<=50K +78;Private;184759;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;1797;0;15;United-States;<=50K +67;Self-emp-not-inc;252842;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;1797;0;20;United-States;<=50K +34;Private;104509;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;1639;0;20;United-States;<=50K +45;Local-gov;339681;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;1506;0;45;United-States;<=50K +46;State-gov;106705;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;1506;0;50;United-States;<=50K +36;Private;135293;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;1506;0;45;?;<=50K +44;Private;239723;Some-college;10;Married-spouse-absent;Craft-repair;Unmarried;White;Female;1506;0;45;United-States;<=50K +39;Private;99357;Masters;14;Divorced;Prof-specialty;Own-child;White;Female;1506;0;40;United-States;<=50K +41;Private;283116;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;1506;0;50;United-States;<=50K +40;Self-emp-inc;50644;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;1506;0;40;United-States;<=50K +37;Private;257042;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;1506;0;40;United-States;<=50K +39;Private;58972;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Male;1506;0;40;United-States;<=50K +49;Private;48120;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Female;1506;0;40;United-States;<=50K +40;State-gov;150874;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;1506;0;40;United-States;<=50K +43;State-gov;241506;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;1506;0;36;United-States;<=50K +49;Private;50748;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;1506;0;35;United-States;<=50K +42;Private;384508;11th;7;Divorced;Sales;Unmarried;White;Male;1506;0;50;Mexico;<=50K +41;Federal-gov;160467;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;1506;0;40;United-States;<=50K +61;Local-gov;101265;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;1471;0;35;United-States;<=50K +34;Federal-gov;67083;Bachelors;13;Never-married;Exec-managerial;Unmarried;Asian-Pac-Islander;Male;1471;0;40;Cambodia;<=50K +32;Private;197457;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;1471;0;38;United-States;<=50K +33;Private;288273;12th;8;Separated;Adm-clerical;Unmarried;White;Female;1471;0;40;United-States;<=50K +48;Federal-gov;497486;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;1471;0;40;United-States;<=50K +53;Private;95540;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;1471;0;40;United-States;<=50K +40;Private;260425;Assoc-acdm;12;Separated;Tech-support;Unmarried;White;Female;1471;0;32;United-States;<=50K +72;Private;157593;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;1455;0;6;United-States;<=50K +69;Private;88566;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;1424;0;35;United-States;<=50K +76;Private;93125;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;1424;0;24;United-States;<=50K +69;Local-gov;61958;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;1424;0;6;United-States;<=50K +66;Self-emp-not-inc;167687;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;1409;0;50;United-States;<=50K +66;Self-emp-inc;150726;9th;5;Married-civ-spouse;Exec-managerial;Husband;White;Male;1409;0;1;?;<=50K +66;Self-emp-not-inc;293114;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;1409;0;40;United-States;<=50K +75;?;164849;9th;5;Married-civ-spouse;?;Husband;Black;Male;1409;0;5;United-States;<=50K +68;?;117542;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;1409;0;15;United-States;<=50K +79;?;142171;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;1409;0;35;United-States;<=50K +80;Self-emp-not-inc;225892;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;1409;0;40;United-States;<=50K +76;?;79445;10th;6;Married-civ-spouse;?;Husband;White;Male;1173;0;40;United-States;<=50K +73;Private;105886;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;1173;0;75;United-States;<=50K +57;?;202903;7th-8th;4;Married-civ-spouse;?;Wife;White;Female;1173;0;45;Puerto-Rico;<=50K +42;Self-emp-inc;184018;HS-grad;9;Divorced;Sales;Unmarried;White;Male;1151;0;50;United-States;<=50K +35;Private;342824;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;1151;0;40;United-States;<=50K +38;Private;275338;Bachelors;13;Divorced;Sales;Unmarried;White;Female;1151;0;40;United-States;<=50K +37;Local-gov;80680;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;1151;0;35;United-States;<=50K +30;Private;149368;HS-grad;9;Divorced;Sales;Unmarried;White;Male;1151;0;30;United-States;<=50K +24;Local-gov;187397;Some-college;10;Never-married;Protective-serv;Unmarried;Other;Male;1151;0;40;United-States;<=50K +44;Private;155472;Assoc-acdm;12;Never-married;Prof-specialty;Unmarried;Black;Female;1151;0;50;United-States;<=50K +34;Private;130369;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Female;1151;0;48;Germany;<=50K +70;?;167358;9th;5;Widowed;?;Unmarried;White;Female;1111;0;15;United-States;<=50K +66;?;160995;10th;6;Divorced;?;Not-in-family;White;Female;1086;0;20;United-States;<=50K +78;?;135839;HS-grad;9;Widowed;?;Not-in-family;White;Female;1086;0;20;United-States;<=50K +67;?;102693;HS-grad;9;Widowed;?;Not-in-family;White;Male;1086;0;35;United-States;<=50K +65;Self-emp-not-inc;99359;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;1086;0;60;United-States;<=50K +17;Private;191260;9th;5;Never-married;Other-service;Own-child;White;Male;1055;0;24;United-States;<=50K +26;Local-gov;208122;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;1055;0;40;United-States;<=50K +21;?;149704;HS-grad;9;Never-married;?;Not-in-family;White;Female;1055;0;40;United-States;<=50K +17;?;333100;10th;6;Never-married;?;Own-child;White;Male;1055;0;30;United-States;<=50K +20;?;206671;Some-college;10;Never-married;?;Own-child;White;Male;1055;0;50;United-States;<=50K +17;Private;103851;11th;7;Never-married;Adm-clerical;Own-child;White;Female;1055;0;20;United-States;<=50K +64;Self-emp-not-inc;177825;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;1055;0;40;United-States;<=50K +19;?;37332;HS-grad;9;Never-married;?;Own-child;White;Female;1055;0;12;United-States;<=50K +17;Private;130125;10th;6;Never-married;Other-service;Own-child;Amer-Indian-Eskimo;Female;1055;0;20;United-States;<=50K +33;Private;170651;HS-grad;9;Never-married;Other-service;Own-child;White;Female;1055;0;40;United-States;<=50K +33;Local-gov;161942;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;1055;0;40;United-States;<=50K +18;Private;125441;11th;7;Never-married;Other-service;Own-child;White;Male;1055;0;20;United-States;<=50K +19;Private;123416;12th;8;Separated;Prof-specialty;Own-child;White;Female;1055;0;40;United-States;<=50K +18;Private;186909;HS-grad;9;Never-married;Sales;Other-relative;White;Female;1055;0;30;United-States;<=50K +21;Private;223352;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;1055;0;30;United-States;<=50K +26;Private;183171;11th;7;Never-married;Other-service;Own-child;Black;Male;1055;0;32;United-States;<=50K +43;Private;88913;Some-college;10;Never-married;Handlers-cleaners;Own-child;Asian-Pac-Islander;Female;1055;0;40;United-States;<=50K +18;Private;173255;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;1055;0;25;United-States;<=50K +21;Private;253612;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;1055;0;32;United-States;<=50K +62;Private;147627;9th;5;Never-married;Priv-house-serv;Not-in-family;Black;Female;1055;0;22;United-States;<=50K +19;Private;243373;12th;8;Never-married;Sales;Other-relative;White;Male;1055;0;40;United-States;<=50K +20;Private;148409;Some-college;10;Never-married;Sales;Other-relative;White;Male;1055;0;20;United-States;<=50K +17;Private;56536;11th;7;Never-married;Sales;Own-child;White;Female;1055;0;18;India;<=50K +22;Private;205940;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;1055;0;30;United-States;<=50K +23;Private;142766;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;1055;0;20;United-States;<=50K +90;?;256514;Bachelors;13;Widowed;?;Other-relative;White;Female;991;0;10;United-States;<=50K +72;?;289930;Bachelors;13;Separated;?;Not-in-family;White;Female;991;0;7;United-States;<=50K +67;Private;335979;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;991;0;18;United-States;<=50K +69;Private;203313;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;991;0;18;United-States;<=50K +65;Private;180807;HS-grad;9;Separated;Protective-serv;Not-in-family;White;Male;991;0;20;United-States;<=50K +54;Private;175912;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Male;914;0;40;United-States;<=50K +33;Private;131776;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;914;0;40;Germany;<=50K +55;Local-gov;177163;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;914;0;50;United-States;<=50K +41;Private;116103;HS-grad;9;Widowed;Exec-managerial;Other-relative;White;Male;914;0;40;United-States;<=50K +25;Private;114345;9th;5;Never-married;Craft-repair;Unmarried;White;Male;914;0;40;United-States;<=50K +48;Private;210424;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;914;0;40;United-States;<=50K +40;Private;88368;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;914;0;40;United-States;<=50K +43;Local-gov;188280;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;914;0;40;United-States;<=50K +34;Local-gov;284843;HS-grad;9;Never-married;Farming-fishing;Not-in-family;Black;Male;594;0;60;United-States;<=50K +52;?;271749;12th;8;Never-married;?;Other-relative;Black;Male;594;0;40;United-States;<=50K +56;Private;156052;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;594;0;20;United-States;<=50K +18;?;169882;Some-college;10;Never-married;?;Own-child;White;Female;594;0;15;United-States;<=50K +18;Private;675421;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;594;0;40;United-States;<=50K +57;Private;296152;Some-college;10;Divorced;Exec-managerial;Other-relative;White;Female;594;0;10;United-States;<=50K +20;Private;196745;Some-college;10;Never-married;Other-service;Own-child;White;Female;594;0;16;United-States;<=50K +21;Private;321666;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;594;0;40;United-States;<=50K +18;Private;32244;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;594;0;30;United-States;<=50K +17;Private;191260;11th;7;Never-married;Other-service;Own-child;White;Male;594;0;10;United-States;<=50K +19;?;217769;Some-college;10;Never-married;?;Own-child;White;Female;594;0;10;United-States;<=50K +43;Private;397963;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;594;0;16;United-States;<=50K +20;Private;266525;Some-college;10;Never-married;Prof-specialty;Other-relative;Black;Female;594;0;20;United-States;<=50K +26;Private;144483;Assoc-voc;11;Divorced;Sales;Own-child;White;Female;594;0;35;United-States;<=50K +43;Local-gov;337469;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;594;0;20;Mexico;<=50K +49;Local-gov;46537;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;594;0;10;United-States;<=50K +18;?;256179;Some-college;10;Never-married;?;Own-child;White;Male;594;0;10;United-States;<=50K +28;Private;183597;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;594;0;50;Germany;<=50K +38;Private;82552;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;594;0;50;United-States;<=50K +19;Private;208656;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;594;0;20;United-States;<=50K +44;Private;67065;Assoc-voc;11;Never-married;Priv-house-serv;Not-in-family;White;Male;594;0;25;United-States;<=50K +18;Private;198616;12th;8;Never-married;Craft-repair;Own-child;White;Male;594;0;20;United-States;<=50K +18;Self-emp-not-inc;230373;11th;7;Never-married;Other-service;Own-child;White;Female;594;0;4;United-States;<=50K +24;Private;270872;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;594;0;40;?;<=50K +17;Private;232713;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;594;0;30;United-States;<=50K +20;?;66695;Some-college;10;Never-married;?;Own-child;Other;Female;594;0;35;United-States;<=50K +19;Private;286435;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;594;0;40;United-States;<=50K +20;Private;316043;11th;7;Never-married;Other-service;Own-child;Black;Male;594;0;20;United-States;<=50K +19;State-gov;67217;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;594;0;24;United-States;<=50K +22;Local-gov;39236;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;594;0;25;United-States;<=50K +18;Private;199039;12th;8;Never-married;Sales;Own-child;White;Male;594;0;14;United-States;<=50K +21;Local-gov;309348;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;594;0;4;United-States;<=50K +24;Private;128061;HS-grad;9;Never-married;Other-service;Own-child;White;Female;594;0;15;United-States;<=50K +17;Private;106733;11th;7;Never-married;Craft-repair;Own-child;White;Male;594;0;40;United-States;<=50K +77;Self-emp-not-inc;145329;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;401;0;20;United-States;<=50K +90;?;39824;HS-grad;9;Widowed;?;Not-in-family;White;Male;401;0;4;United-States;<=50K +38;State-gov;354591;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;114;0;38;United-States;<=50K +20;Private;59948;9th;5;Never-married;Adm-clerical;Unmarried;Black;Female;114;0;20;United-States;<=50K +39;Private;151023;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;114;0;45;United-States;<=50K +33;Private;175412;9th;5;Divorced;Craft-repair;Unmarried;White;Male;114;0;55;United-States;<=50K +38;Private;254439;10th;6;Widowed;Transport-moving;Unmarried;Black;Male;114;0;40;United-States;<=50K +25;Private;104193;HS-grad;9;Never-married;Other-service;Own-child;White;Female;114;0;40;United-States;<=50K +50;Self-emp-not-inc;83311;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;13;United-States;<=50K +38;Private;215646;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;234721;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +28;Private;338409;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;Cuba;<=50K +37;Private;284582;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +49;Private;160187;9th;5;Married-spouse-absent;Other-service;Not-in-family;Black;Female;0;0;16;Jamaica;<=50K +52;Self-emp-not-inc;209642;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +37;Private;280464;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;80;United-States;>50K +30;State-gov;141297;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +23;Private;122272;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +32;Private;205019;Assoc-acdm;12;Never-married;Sales;Not-in-family;Black;Male;0;0;50;United-States;<=50K +40;Private;121772;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +34;Private;245487;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;45;Mexico;<=50K +25;Self-emp-not-inc;176756;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;35;United-States;<=50K +32;Private;186824;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +38;Private;28887;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +43;Self-emp-not-inc;292175;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;>50K +40;Private;193524;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +54;Private;302146;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +35;Federal-gov;76845;9th;5;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +59;Private;109015;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Local-gov;216851;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +19;Private;168294;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +54;?;180211;Some-college;10;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;60;South;>50K +39;Private;367260;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;80;United-States;<=50K +49;Private;193366;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Local-gov;190709;Assoc-acdm;12;Never-married;Protective-serv;Not-in-family;White;Male;0;0;52;United-States;<=50K +20;Private;266015;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;44;United-States;<=50K +30;Federal-gov;59951;Some-college;10;Married-civ-spouse;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +22;State-gov;311512;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;15;United-States;<=50K +48;Private;242406;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;Puerto-Rico;<=50K +21;Private;197200;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;544091;HS-grad;9;Married-AF-spouse;Adm-clerical;Wife;White;Female;0;0;25;United-States;<=50K +31;Private;84154;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;38;?;>50K +48;Self-emp-not-inc;265477;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;507875;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;<=50K +53;Self-emp-not-inc;88506;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;172987;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;94638;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;289980;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;35;United-States;<=50K +57;Federal-gov;337895;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +53;Private;144361;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;38;United-States;<=50K +44;Private;128354;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +41;State-gov;101603;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;271466;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;43;United-States;<=50K +25;Private;32275;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Other;Female;0;0;40;United-States;<=50K +18;Private;226956;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;?;<=50K +50;Federal-gov;251585;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +47;Self-emp-inc;109832;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +43;Private;237993;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +46;Private;216666;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +35;Private;56352;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +41;Private;147372;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;48;United-States;<=50K +32;?;293936;7th-8th;4;Married-spouse-absent;?;Not-in-family;White;Male;0;0;40;?;<=50K +48;Private;149640;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;116632;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +29;Private;105598;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;58;United-States;<=50K +36;Private;155537;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;183175;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;169846;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +49;Self-emp-inc;191681;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;?;200681;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;101509;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;32;United-States;<=50K +31;Private;309974;Bachelors;13;Separated;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Self-emp-not-inc;162298;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +23;Private;211678;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +79;Private;124744;Some-college;10;Married-civ-spouse;Prof-specialty;Other-relative;White;Male;0;0;20;United-States;<=50K +27;Private;213921;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;Mexico;<=50K +40;Private;32214;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +67;?;212759;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;<=50K +18;Private;309634;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;22;United-States;<=50K +31;Local-gov;125927;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;446839;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +52;Private;276515;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Cuba;<=50K +46;Private;51618;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +59;Private;159937;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +53;Private;346253;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +49;Local-gov;268234;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +33;Private;202051;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;54334;9th;5;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Federal-gov;410867;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +57;Private;249977;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;286730;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;212563;Some-college;10;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;25;United-States;<=50K +34;Local-gov;226296;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +29;Local-gov;115585;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Private;202683;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +48;Private;171095;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;England;<=50K +32;Federal-gov;249409;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +76;Private;124191;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Self-emp-not-inc;149116;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +20;Private;188300;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;103432;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;194901;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +31;Local-gov;189265;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;124692;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;432376;Bachelors;13;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +38;Private;65324;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Private;102864;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +53;Private;95647;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +56;Self-emp-inc;303090;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +49;Local-gov;197371;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +55;Private;247552;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;56;United-States;<=50K +22;Private;102632;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;41;United-States;<=50K +21;Private;199915;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;118853;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;77143;Bachelors;13;Never-married;Exec-managerial;Own-child;Black;Male;0;0;40;Germany;<=50K +29;State-gov;267989;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +19;Private;301606;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;35;United-States;<=50K +47;Private;287828;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +31;Private;114937;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +35;?;129305;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;365739;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;69621;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +37;Private;254202;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;146195;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;Black;Female;0;0;36;United-States;<=50K +38;Federal-gov;125933;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Iran;>50K +43;Self-emp-not-inc;56920;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;163127;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +20;Private;34310;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +49;Private;81973;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +61;Self-emp-inc;66614;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;232782;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;316868;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;Mexico;<=50K +70;Private;105376;Some-college;10;Never-married;Tech-support;Other-relative;White;Male;0;0;40;United-States;<=50K +31;Private;185814;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Female;0;0;30;United-States;<=50K +22;Private;175374;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;24;United-States;<=50K +36;Private;108293;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;24;United-States;<=50K +43;?;174662;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Local-gov;186009;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;Mexico;<=50K +34;Private;198183;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;163003;Bachelors;13;Never-married;Exec-managerial;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +21;Private;296158;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +52;?;252903;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;45;United-States;>50K +48;Private;187715;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;<=50K +23;Private;214542;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;191535;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +42;Private;228456;Bachelors;13;Separated;Other-service;Other-relative;Black;Male;0;0;50;United-States;<=50K +68;?;38317;1st-4th;2;Divorced;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +25;Private;252752;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Self-emp-inc;78374;Masters;14;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +28;Private;88419;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;England;<=50K +45;Self-emp-not-inc;201080;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Private;207157;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +39;Federal-gov;235485;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;42;United-States;<=50K +46;State-gov;102628;Masters;14;Widowed;Protective-serv;Unmarried;White;Male;0;0;40;United-States;<=50K +18;Private;25828;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +66;Local-gov;54826;Assoc-voc;11;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +28;State-gov;175325;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;428030;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;State-gov;149624;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;253814;HS-grad;9;Married-spouse-absent;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +21;Private;312956;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +34;Private;483777;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +18;Private;183930;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +33;Private;37274;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;<=50K +44;Local-gov;181344;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;38;United-States;>50K +43;Private;114580;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;633742;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;45;United-States;<=50K +40;Private;286370;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;>50K +37;Federal-gov;29054;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;42;United-States;>50K +34;Private;304030;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;143129;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;?;135105;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;50;United-States;<=50K +31;Private;99928;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;<=50K +58;State-gov;109567;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;1;United-States;>50K +38;Private;155222;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;28;United-States;<=50K +24;Private;159567;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;523910;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +47;Private;120939;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +41;Federal-gov;130760;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;24;United-States;<=50K +23;Private;197387;5th-6th;3;Married-civ-spouse;Transport-moving;Other-relative;White;Male;0;0;40;Mexico;<=50K +36;Private;99374;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Self-emp-not-inc;32921;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;170653;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;Italy;<=50K +51;Private;259323;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;State-gov;48211;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +18;Private;140164;11th;7;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;36270;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +17;Private;65368;11th;7;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +44;Local-gov;160943;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +37;Private;208358;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;153790;Some-college;10;Never-married;Sales;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +60;Private;85815;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +54;Self-emp-inc;125417;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +37;Private;635913;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;60;United-States;>50K +50;Private;313321;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;182609;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Poland;<=50K +45;Private;109434;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +25;Private;255004;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;197860;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +64;?;187656;1st-4th;2;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;176681;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;20;United-States;<=50K +53;Local-gov;140359;Preschool;1;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;35;United-States;<=50K +18;Private;243313;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +60;?;24215;10th;6;Divorced;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;10;United-States;<=50K +75;Private;314209;Assoc-voc;11;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;Columbia;<=50K +65;Private;176796;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;130408;HS-grad;9;Divorced;Sales;Unmarried;Black;Female;0;0;38;United-States;<=50K +25;Private;159732;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;42;United-States;<=50K +33;Private;110978;Some-college;10;Divorced;Craft-repair;Other-relative;Other;Female;0;0;40;United-States;<=50K +28;Private;76714;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +59;State-gov;268700;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +40;State-gov;170525;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +41;Private;180138;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Iran;>50K +38;Local-gov;115076;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +23;Private;115458;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;347890;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;196001;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;20;United-States;<=50K +24;State-gov;273905;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +20;?;119156;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +56;Private;203580;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;?;<=50K +58;Private;236596;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +32;Private;183916;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;34;United-States;<=50K +45;Private;153141;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;?;<=50K +41;Private;112763;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +42;Private;390781;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +59;Local-gov;171328;10th;6;Widowed;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +19;Local-gov;27382;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +58;Private;259014;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;20;United-States;<=50K +42;Self-emp-not-inc;303044;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;>50K +20;Private;117789;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;172579;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +45;Private;187666;Assoc-voc;11;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +50;Private;204518;7th-8th;4;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;150042;Bachelors;13;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;98092;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +17;Private;245918;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +26;Private;378322;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-inc;257295;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;75;Thailand;>50K +19;?;218956;Some-college;10;Never-married;?;Own-child;White;Male;0;0;24;Canada;<=50K +64;Private;21174;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;185480;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +33;Private;222205;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;>50K +61;Private;69867;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Local-gov;209109;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;35;United-States;<=50K +30;Private;70377;HS-grad;9;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +43;Private;477983;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +35;Private;190174;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;193787;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;34918;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;15;Germany;<=50K +34;Private;175413;Assoc-acdm;12;Divorced;Sales;Unmarried;Black;Female;0;0;45;United-States;<=50K +60;Private;173960;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;42;United-States;<=50K +21;Private;205759;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;220531;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +50;Private;176609;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;371987;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;193884;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Ecuador;<=50K +36;Private;200352;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;127595;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Local-gov;220419;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Male;0;0;56;United-States;<=50K +21;Private;231931;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +27;Private;248402;Bachelors;13;Never-married;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +65;Private;111095;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;16;United-States;<=50K +37;Self-emp-inc;57424;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +24;Private;278130;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;169469;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;80;United-States;<=50K +21;Private;153718;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;25;United-States;<=50K +31;Private;217460;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +24;Private;303296;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;Laos;<=50K +43;Private;173321;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;193945;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +46;Private;83082;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;33;United-States;<=50K +35;Private;193815;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-inc;34987;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;54;United-States;>50K +26;Private;59306;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;860348;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;25;United-States;<=50K +36;Self-emp-not-inc;205607;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;>50K +22;Private;199698;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +24;Private;191954;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +77;Self-emp-not-inc;138714;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;399087;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Other-relative;White;Female;0;0;40;Mexico;<=50K +29;Private;423158;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;Private;159841;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +39;Self-emp-not-inc;174308;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;186110;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +29;Private;200381;11th;7;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +76;Self-emp-not-inc;174309;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;10;United-States;<=50K +63;Self-emp-not-inc;78383;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +23;?;211601;Assoc-voc;11;Never-married;?;Own-child;Black;Female;0;0;15;United-States;<=50K +58;Self-emp-not-inc;321171;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;206565;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;45;United-States;<=50K +26;Private;224563;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;178686;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Local-gov;98545;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;242606;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;270942;5th-6th;3;Never-married;Other-service;Other-relative;White;Male;0;0;48;Mexico;<=50K +30;Private;94235;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Private;71195;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +19;Private;104112;HS-grad;9;Never-married;Sales;Unmarried;Black;Male;0;0;30;Haiti;<=50K +45;Private;261192;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +26;Private;94936;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;85043;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;20;United-States;<=50K +22;State-gov;293364;Some-college;10;Never-married;Protective-serv;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;241895;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;42;United-States;<=50K +67;?;36135;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +30;?;151989;Assoc-voc;11;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Private;101128;Assoc-acdm;12;Married-spouse-absent;Other-service;Not-in-family;White;Male;0;0;25;Iran;<=50K +31;Private;156464;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;25;United-States;<=50K +33;Private;117963;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;192262;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;111363;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Local-gov;329752;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +59;?;372020;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +38;Federal-gov;95432;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +65;Private;161400;11th;7;Widowed;Other-service;Unmarried;Other;Male;0;0;40;United-States;<=50K +40;Private;96129;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +42;Private;111949;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +26;Self-emp-not-inc;117125;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;<=50K +36;Private;348022;10th;6;Married-civ-spouse;Other-service;Wife;White;Female;0;0;24;United-States;<=50K +62;Private;270092;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +43;Private;180609;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;410439;HS-grad;9;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +28;Private;92262;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;183081;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;362589;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +57;Private;212448;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +39;Private;481060;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Federal-gov;185885;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;15;United-States;<=50K +17;Private;89821;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +40;State-gov;184018;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;38;United-States;>50K +45;Private;256649;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +44;Private;160323;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Local-gov;350845;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +33;Private;267404;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;35633;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Self-emp-not-inc;80914;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;30;United-States;<=50K +38;Private;172927;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +54;Private;174319;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;344991;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;108699;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Local-gov;117312;Some-college;10;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;396099;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +29;Private;134152;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;25429;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +19;Private;232392;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +35;Private;220098;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +27;Private;301302;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +46;Self-emp-not-inc;277946;Assoc-acdm;12;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;196164;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +44;Private;115562;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;96975;Some-college;10;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +20;?;137300;HS-grad;9;Never-married;?;Other-relative;White;Female;0;0;35;United-States;<=50K +25;Private;86872;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +52;Self-emp-inc;132178;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +20;Private;416103;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;108574;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;State-gov;288353;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +34;Private;227689;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Female;0;0;64;United-States;<=50K +28;Private;110145;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +46;Self-emp-not-inc;317253;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +32;Private;364657;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +41;Local-gov;42346;Some-college;10;Divorced;Other-service;Not-in-family;Black;Female;0;0;24;United-States;<=50K +24;Private;241951;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;118500;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +31;State-gov;1033222;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;92440;12th;8;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +52;Private;190762;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +30;Private;426017;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;19;United-States;<=50K +34;Local-gov;243867;11th;7;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +34;State-gov;240283;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;61777;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +32;State-gov;92003;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +29;Private;188401;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;228528;10th;6;Never-married;Craft-repair;Unmarried;White;Female;0;0;35;United-States;<=50K +25;Private;133373;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +23;Private;204653;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;72;Dominican-Republic;<=50K +63;Self-emp-inc;222289;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Local-gov;287480;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +80;?;107762;HS-grad;9;Widowed;?;Not-in-family;White;Male;0;0;24;United-States;<=50K +17;?;202521;11th;7;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;29662;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;United-States;>50K +33;Private;208405;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +34;Local-gov;117018;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;81281;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;340148;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +29;Private;363425;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;45857;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;28;United-States;<=50K +24;Federal-gov;191073;HS-grad;9;Never-married;Armed-Forces;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;116632;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;405855;9th;5;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +20;Private;298227;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +44;Private;290521;HS-grad;9;Widowed;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +51;Private;56915;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +20;Private;146538;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +17;?;258872;11th;7;Never-married;?;Own-child;White;Female;0;0;5;United-States;<=50K +19;Private;206399;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;197332;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +60;Private;245062;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Private;197583;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;?;>50K +44;Self-emp-not-inc;234885;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +40;Private;72887;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +30;Private;180374;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +38;Private;351299;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;50;United-States;<=50K +23;Private;54012;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +32;?;115745;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;116632;Assoc-acdm;12;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +54;Local-gov;288825;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +32;Private;132601;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;193374;1st-4th;2;Married-spouse-absent;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;170070;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;20;United-States;<=50K +37;Private;126708;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;60;United-States;<=50K +52;Private;35598;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +38;Private;33983;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;118551;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;16;United-States;>50K +60;Private;201965;Some-college;10;Never-married;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;>50K +22;?;139883;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;285020;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;303990;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +67;Private;49401;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +46;Private;279196;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;211870;9th;5;Never-married;Other-service;Not-in-family;White;Male;0;0;6;United-States;<=50K +22;Private;281432;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +27;Private;161155;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;197904;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +33;Private;111746;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;Portugal;<=50K +43;Self-emp-not-inc;170721;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +28;State-gov;70100;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +41;Private;193626;HS-grad;9;Married-spouse-absent;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;189775;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +63;?;401531;1st-4th;2;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +59;Local-gov;286967;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +45;Local-gov;164427;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;347934;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Federal-gov;371373;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;32220;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +34;Private;187251;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;25;United-States;<=50K +33;Private;178107;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;343121;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;36;United-States;<=50K +20;Private;262749;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;403107;5th-6th;3;Never-married;Other-service;Own-child;White;Male;0;0;40;El-Salvador;<=50K +26;Private;64293;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +72;?;303588;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +23;Local-gov;324960;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;Poland;<=50K +62;Local-gov;114060;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;48925;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;180980;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;42;France;<=50K +25;Private;181054;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;388093;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +19;Private;249609;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;8;United-States;<=50K +43;Private;112131;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;543162;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Private;91996;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +53;?;251804;5th-6th;3;Widowed;?;Unmarried;Black;Female;0;0;30;United-States;<=50K +32;Private;37070;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +34;Private;337587;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +28;Private;189346;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +57;?;222216;Assoc-voc;11;Widowed;?;Unmarried;White;Female;0;0;38;United-States;<=50K +25;Private;267044;Some-college;10;Never-married;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +20;?;214635;Some-college;10;Never-married;?;Own-child;White;Male;0;0;24;United-States;<=50K +21;?;204226;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;35;United-States;<=50K +34;Private;108116;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Local-gov;248344;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;Black;Male;0;0;50;United-States;<=50K +37;Local-gov;186035;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +44;Private;177905;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;58;United-States;>50K +28;Private;85812;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +42;Private;221172;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +74;Private;99183;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;9;United-States;<=50K +38;Self-emp-not-inc;190387;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +44;Self-emp-not-inc;202692;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;109339;11th;7;Divorced;Machine-op-inspct;Unmarried;Other;Female;0;0;46;Puerto-Rico;<=50K +26;Private;108658;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;197202;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +41;Private;101739;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +39;Local-gov;207853;12th;8;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;190942;1st-4th;2;Widowed;Priv-house-serv;Not-in-family;Black;Female;0;0;30;United-States;<=50K +29;Private;102345;Assoc-voc;11;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Self-emp-inc;41493;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Female;0;0;45;United-States;<=50K +34;?;190027;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Private;210525;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;133937;Doctorate;16;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;237903;Some-college;10;Never-married;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;163862;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;201872;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;84179;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;45;United-States;<=50K +58;Private;51662;10th;6;Married-civ-spouse;Other-service;Wife;White;Female;0;0;8;United-States;<=50K +35;Local-gov;233327;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;259510;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;36;United-States;<=50K +28;Private;184831;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +46;Self-emp-not-inc;245724;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Self-emp-not-inc;27053;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +72;Private;205343;11th;7;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;229328;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;40;United-States;<=50K +33;Federal-gov;319560;Assoc-voc;11;Divorced;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;>50K +69;Private;136218;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;54576;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;323069;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;20;?;<=50K +34;Private;148291;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;32;United-States;<=50K +30;Private;152453;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +28;Private;114053;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +54;Private;212960;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +47;Private;264052;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;82804;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;334273;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +20;Private;27337;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;48;United-States;<=50K +45;Private;433665;7th-8th;4;Separated;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +29;Self-emp-not-inc;110663;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +47;Private;87490;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;0;0;42;United-States;<=50K +24;Private;354351;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;95469;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;242718;11th;7;Never-married;Sales;Own-child;White;Male;0;0;12;United-States;<=50K +27;Private;158156;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;70;United-States;<=50K +29;Private;350162;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Male;0;0;40;United-States;>50K +18;?;165532;12th;8;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +36;Self-emp-not-inc;28738;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +58;Local-gov;283635;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Self-emp-not-inc;86646;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +65;?;195733;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +57;Private;69884;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +59;Private;199713;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;181659;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;340939;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;197747;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +29;Private;34292;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;60;United-States;<=50K +18;Private;156764;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +57;Self-emp-inc;103948;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;80;United-States;<=50K +42;?;137390;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +55;?;105138;HS-grad;9;Married-civ-spouse;?;Wife;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +60;Private;39352;7th-8th;4;Never-married;Transport-moving;Not-in-family;White;Male;0;0;48;United-States;>50K +23;Private;117789;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;267147;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +23;?;99399;Some-college;10;Never-married;?;Unmarried;Amer-Indian-Eskimo;Female;0;0;25;United-States;<=50K +49;Private;136455;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +32;Private;239824;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;217039;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;28;United-States;<=50K +60;Private;51290;7th-8th;4;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Local-gov;175674;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;194404;Assoc-acdm;12;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;45612;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;37;United-States;<=50K +51;Private;410114;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;182521;HS-grad;9;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +36;Local-gov;339772;HS-grad;9;Separated;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +17;Private;169658;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;21;United-States;<=50K +24;Private;247564;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;249909;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;109881;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +39;Private;207824;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;60;United-States;<=50K +30;Private;369027;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;45;United-States;<=50K +50;Self-emp-not-inc;114117;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;32;United-States;<=50K +52;Self-emp-inc;51048;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +23;Private;190483;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +45;Private;462440;11th;7;Widowed;Other-service;Not-in-family;Black;Female;0;0;20;United-States;<=50K +65;Private;109351;9th;5;Widowed;Priv-house-serv;Unmarried;Black;Female;0;0;24;United-States;<=50K +29;Private;34383;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +47;Private;241832;9th;5;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;0;40;El-Salvador;<=50K +30;Private;124187;HS-grad;9;Never-married;Farming-fishing;Own-child;Black;Male;0;0;60;United-States;<=50K +34;Private;153614;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +38;Self-emp-not-inc;267556;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;64;United-States;<=50K +33;Private;205469;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +49;Private;268090;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;26;United-States;>50K +47;Self-emp-not-inc;165039;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Local-gov;120451;10th;6;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Private;103649;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;>50K +58;Self-emp-not-inc;35723;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;262601;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;14;United-States;<=50K +21;Private;226181;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Self-emp-inc;248145;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;Cuba;<=50K +52;Self-emp-not-inc;289436;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +26;Private;75654;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +60;Private;199378;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;160968;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;55849;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +50;Self-emp-inc;195322;Doctorate;16;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +31;Local-gov;402089;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +71;Private;78277;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;15;United-States;<=50K +58;?;158611;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +30;State-gov;169496;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +20;Private;130959;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +35;Private;292472;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;>50K +38;State-gov;143774;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +27;Private;288341;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;32;United-States;<=50K +29;State-gov;71592;Some-college;10;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +34;Private;106742;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +44;Private;219288;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +43;Private;174524;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +44;Self-emp-not-inc;335183;12th;8;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;>50K +35;Private;261293;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +27;Private;111900;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Local-gov;194360;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +20;Private;81145;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +42;Private;247019;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +48;Federal-gov;110457;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;?;80077;11th;7;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +17;Self-emp-not-inc;368700;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;10;United-States;<=50K +33;Private;182556;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Self-emp-inc;219420;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +17;Private;102726;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +32;Private;226267;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Mexico;<=50K +31;Private;125457;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +58;Self-emp-not-inc;204021;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Local-gov;92262;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;48;United-States;<=50K +37;Private;161141;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;>50K +34;Self-emp-not-inc;190290;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Local-gov;430828;Some-college;10;Separated;Exec-managerial;Unmarried;Black;Male;0;0;40;United-States;<=50K +18;State-gov;59342;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;5;United-States;<=50K +34;Private;136721;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;?;149422;7th-8th;4;Never-married;?;Not-in-family;White;Male;0;0;4;United-States;<=50K +45;Local-gov;86644;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;55;United-States;<=50K +41;Private;195124;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;35;Dominican-Republic;<=50K +26;Private;167350;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;30;United-States;<=50K +54;Local-gov;113000;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;140027;Some-college;10;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;45;United-States;<=50K +42;Private;262425;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;316702;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +23;State-gov;335453;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;20;United-States;<=50K +25;?;202480;Assoc-acdm;12;Never-married;?;Other-relative;White;Male;0;0;45;United-States;<=50K +35;Private;203628;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +30;Private;189620;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;Poland;<=50K +19;Private;475028;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +36;Local-gov;110866;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;163870;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +31;Self-emp-not-inc;80145;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;63042;Bachelors;13;Divorced;Exec-managerial;Own-child;White;Female;0;0;50;United-States;>50K +40;Private;229148;12th;8;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;Jamaica;<=50K +45;Private;242552;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +60;Private;177665;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +18;Private;208103;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;25;United-States;<=50K +28;Private;296450;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;70282;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;271767;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;?;<=50K +36;Local-gov;382635;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;Honduras;<=50K +31;Private;295697;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;194141;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;State-gov;378418;HS-grad;9;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;214399;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +34;Private;217460;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +33;Private;182556;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Local-gov;50459;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +43;Private;177937;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;?;>50K +44;Private;111502;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +20;Private;299047;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +31;Private;223212;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +23;Private;352139;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +55;Private;173093;Some-college;10;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +25;Private;332702;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +45;?;51164;Some-college;10;Married-civ-spouse;?;Wife;Black;Female;0;0;40;United-States;<=50K +36;Private;131414;Some-college;10;Never-married;Sales;Not-in-family;Black;Female;0;0;36;United-States;<=50K +43;State-gov;260960;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;279914;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +19;Private;192453;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;25;United-States;<=50K +55;Self-emp-not-inc;200939;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;72;United-States;<=50K +26;Private;112847;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;316929;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +42;Local-gov;126319;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +32;Private;267736;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Private;267034;11th;7;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;Haiti;<=50K +46;State-gov;193047;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;37;United-States;<=50K +22;Private;223515;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Male;0;0;20;United-States;<=50K +58;Self-emp-not-inc;87510;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;145111;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;50;United-States;<=50K +39;Private;48093;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;31757;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;38;United-States;<=50K +54;Private;285854;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;120064;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +46;Federal-gov;167381;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +37;Private;103408;HS-grad;9;Never-married;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +36;Private;101460;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;18;United-States;<=50K +59;Local-gov;420537;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;38;United-States;>50K +34;Local-gov;119411;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Male;0;0;40;Portugal;<=50K +53;Self-emp-inc;128272;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +51;Private;386773;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;>50K +32;Private;283268;10th;6;Separated;Other-service;Unmarried;White;Female;0;0;42;United-States;<=50K +31;State-gov;301526;Some-college;10;Married-spouse-absent;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +22;Private;151790;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;30;Germany;<=50K +47;Self-emp-not-inc;106252;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +32;Private;188557;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;171114;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Female;0;0;38;United-States;<=50K +37;Private;327323;5th-6th;3;Separated;Farming-fishing;Not-in-family;White;Male;0;0;32;Guatemala;<=50K +31;Private;244147;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;55;United-States;<=50K +37;Private;280282;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;24;United-States;>50K +55;Private;116442;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;38;United-States;<=50K +23;Local-gov;282579;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Male;0;0;56;United-States;<=50K +36;Private;51838;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;73585;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +43;Private;226902;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +54;Private;279129;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;State-gov;146908;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +40;Private;130760;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +41;Self-emp-not-inc;49572;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;237601;Bachelors;13;Never-married;Sales;Not-in-family;Other;Female;0;0;55;United-States;>50K +42;Private;169628;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;38;United-States;<=50K +18;Private;231193;12th;8;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;30;United-States;<=50K +59;?;192130;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;16;United-States;<=50K +48;Private;102102;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +41;Self-emp-inc;32185;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +18;?;196061;Some-college;10;Never-married;?;Own-child;White;Male;0;0;33;United-States;<=50K +60;Private;31577;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +22;Private;162343;Some-college;10;Never-married;Other-service;Other-relative;Black;Male;0;0;20;United-States;<=50K +61;Private;128831;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;316688;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +46;Private;90758;Masters;14;Never-married;Tech-support;Not-in-family;White;Male;0;0;35;United-States;>50K +43;Private;154538;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +68;Self-emp-not-inc;315859;11th;7;Never-married;Farming-fishing;Unmarried;White;Male;0;0;20;United-States;<=50K +31;Private;51471;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +17;Private;193830;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +50;?;23780;Masters;14;Married-spouse-absent;?;Other-relative;White;Male;0;0;40;United-States;<=50K +64;Private;270333;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;138768;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +30;Private;191571;HS-grad;9;Separated;Other-service;Own-child;White;Female;0;0;36;United-States;<=50K +22;?;219941;Some-college;10;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +43;Private;94113;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;137510;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;32607;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +47;Self-emp-not-inc;93208;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;75;Italy;<=50K +41;Private;254440;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +56;Private;186556;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +64;Private;169871;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +47;Private;191277;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +48;Private;167159;Assoc-voc;11;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +31;Private;171871;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;46;United-States;<=50K +29;Private;154411;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;129227;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;Private;174355;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;680390;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;24;United-States;<=50K +43;Private;233130;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;25;United-States;<=50K +24;Self-emp-inc;165474;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +42;?;257780;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +26;Private;280093;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +73;Self-emp-not-inc;177387;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +72;?;28929;11th;7;Widowed;?;Not-in-family;White;Female;0;0;24;United-States;<=50K +55;Private;105304;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;499233;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;180572;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +24;Private;321435;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +63;Private;86108;HS-grad;9;Widowed;Farming-fishing;Not-in-family;White;Male;0;0;6;United-States;<=50K +17;Private;198124;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +35;Private;135162;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +51;Private;146813;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +62;Local-gov;291175;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;48;United-States;<=50K +43;Private;102895;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Local-gov;33274;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +37;Private;86551;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +39;Private;138192;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;118966;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;18;United-States;<=50K +61;Private;99784;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +26;Private;90980;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;55;United-States;<=50K +46;Self-emp-not-inc;177407;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;96467;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;State-gov;327886;Doctorate;16;Divorced;Prof-specialty;Own-child;White;Male;0;0;50;United-States;>50K +34;Private;111567;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +34;Local-gov;166545;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;142182;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +34;Private;188798;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;38563;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;56;United-States;>50K +18;Private;216284;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +43;Private;191547;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +48;Private;285335;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +28;Self-emp-inc;142712;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +33;Private;80945;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;309055;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +21;Private;62339;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;368700;11th;7;Never-married;Sales;Own-child;White;Male;0;0;28;United-States;<=50K +39;Private;176186;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +29;Self-emp-not-inc;266855;Bachelors;13;Separated;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;48087;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;121313;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;50;United-States;<=50K +55;Private;282753;5th-6th;3;Divorced;Other-service;Unmarried;Black;Male;0;0;25;United-States;<=50K +41;Private;194636;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +23;Private;153044;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Black;Female;0;0;7;United-States;<=50K +38;Private;411797;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;117683;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +19;Private;376540;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;72393;9th;5;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;270335;Bachelors;13;Married-civ-spouse;Adm-clerical;Other-relative;White;Male;0;0;40;Philippines;>50K +27;Private;96226;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +38;Private;95336;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +33;Private;258498;Some-college;10;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;60;United-States;<=50K +63;?;149698;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +23;Private;205865;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;28;United-States;<=50K +33;Self-emp-inc;155781;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;?;<=50K +54;Self-emp-not-inc;406468;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;<=50K +48;?;144397;Some-college;10;Divorced;?;Unmarried;Black;Female;0;0;30;United-States;<=50K +35;Self-emp-not-inc;372525;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;164170;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;India;<=50K +42;Self-emp-not-inc;177307;Prof-school;15;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;>50K +40;Private;170108;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;341995;Some-college;10;Divorced;Sales;Own-child;White;Male;0;0;55;United-States;<=50K +22;Private;226508;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;50;United-States;<=50K +30;Private;87418;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +28;Private;109165;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +63;Local-gov;28856;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;55;United-States;<=50K +51;Self-emp-not-inc;175897;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +22;Private;99697;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +27;?;90270;Assoc-acdm;12;Married-civ-spouse;?;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +35;Private;152375;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +46;Private;171550;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;38;United-States;<=50K +37;Private;211154;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;52;United-States;<=50K +24;Private;202570;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Male;0;0;15;United-States;<=50K +37;Self-emp-not-inc;168496;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +53;Private;68898;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;93235;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +38;Private;278924;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +53;Self-emp-not-inc;311020;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;175878;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;543028;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +43;Private;158926;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;50;South;<=50K +67;Self-emp-inc;76860;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +81;Self-emp-not-inc;136063;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +21;Private;186648;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +23;Private;257509;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +25;Private;98155;Some-college;10;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +42;Private;274198;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;38;Mexico;<=50K +38;Private;97083;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +64;?;29825;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;5;United-States;<=50K +32;Private;262153;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;214738;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;138022;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +22;Private;91842;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;42;United-States;<=50K +33;Private;373662;1st-4th;2;Married-spouse-absent;Priv-house-serv;Not-in-family;White;Female;0;0;40;Guatemala;<=50K +42;Private;162003;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;55;United-States;<=50K +19;?;52114;Some-college;10;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +51;Local-gov;241843;Preschool;1;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;375871;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Mexico;<=50K +37;Private;176900;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;99;United-States;>50K +47;Private;21906;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;25;United-States;<=50K +33;Private;143653;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +31;Private;111567;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;>50K +31;Private;78602;Assoc-acdm;12;Divorced;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +35;Private;465507;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +38;Self-emp-inc;196373;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;Private;293227;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +20;Private;241752;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +54;Local-gov;166398;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;35;United-States;<=50K +40;Private;184682;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;250802;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +44;Self-emp-not-inc;325159;Some-college;10;Divorced;Farming-fishing;Unmarried;White;Male;0;0;40;United-States;<=50K +44;State-gov;174675;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +43;Private;227065;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;United-States;>50K +51;Private;269080;7th-8th;4;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;177722;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +51;Private;133461;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;239683;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;?;<=50K +44;Self-emp-inc;398473;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +33;Local-gov;298785;10th;6;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;123424;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Private;176286;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;150062;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;169240;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;38;United-States;<=50K +32;Private;288273;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;Mexico;<=50K +36;Private;526968;10th;6;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;57066;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;323573;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +35;Self-emp-inc;368825;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +55;Self-emp-not-inc;189721;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +48;Private;164966;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +36;?;94954;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +34;Private;202046;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;>50K +28;Private;161538;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;35;United-States;<=50K +37;Private;200153;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;32185;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;70;United-States;<=50K +25;Private;178326;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;State-gov;188693;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +34;Private;159929;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +49;Private;123207;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;44;United-States;<=50K +22;Private;284317;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;?;184699;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +60;Self-emp-not-inc;154474;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;42;United-States;<=50K +45;Local-gov;318280;HS-grad;9;Widowed;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +63;Private;254907;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +41;Private;349221;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Female;0;0;35;United-States;<=50K +47;Private;335973;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;126701;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +41;Private;194636;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;124793;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +47;Private;192835;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +35;Private;290226;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +56;Private;112840;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +45;Private;89325;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +48;Federal-gov;33109;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;58;United-States;>50K +20;Private;148294;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +38;State-gov;343642;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +23;Local-gov;115244;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;60;United-States;<=50K +31;Private;162572;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +58;Private;356067;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +66;Private;271567;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Self-emp-inc;180804;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;109186;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Germany;<=50K +51;Private;220537;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;124827;Assoc-voc;11;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;118494;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +38;Private;173208;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;<=50K +48;Private;107373;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;26973;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +51;Private;191965;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +22;Private;122346;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;117201;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +41;Private;198316;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;Japan;<=50K +48;Local-gov;123075;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +42;Private;209370;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +34;Private;33117;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;129042;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +56;Private;169133;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;Yugoslavia;<=50K +30;Private;201624;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;45;?;<=50K +45;Private;368561;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +48;Private;207848;10th;6;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;138370;Masters;14;Married-spouse-absent;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;50;India;<=50K +31;Private;93106;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;389713;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;206365;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +76;?;431192;7th-8th;4;Widowed;?;Not-in-family;White;Male;0;0;2;United-States;<=50K +37;Private;123785;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;75;United-States;<=50K +34;Private;289984;HS-grad;9;Divorced;Priv-house-serv;Unmarried;Black;Female;0;0;30;United-States;<=50K +34;?;164309;11th;7;Married-civ-spouse;?;Wife;White;Female;0;0;8;United-States;<=50K +90;Private;137018;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;137994;Some-college;10;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Private;341204;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;34446;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;37;United-States;<=50K +28;Private;187160;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;0;0;55;United-States;<=50K +64;?;196288;Assoc-acdm;12;Never-married;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +23;Private;217961;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;74631;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +61;Private;125155;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;263925;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Canada;>50K +52;Self-emp-not-inc;44728;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +38;Private;193026;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;Iran;<=50K +32;Private;87643;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +30;Self-emp-not-inc;106742;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;75;United-States;<=50K +41;Private;302122;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;185385;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;47;United-States;>50K +43;Self-emp-not-inc;277647;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +54;Private;377701;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;32;Mexico;<=50K +34;Private;157886;Assoc-acdm;12;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;175958;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;>50K +38;Private;223004;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;29984;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;181651;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;117312;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;White;Female;0;0;60;United-States;<=50K +22;Local-gov;34029;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;215310;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +17;Private;220384;11th;7;Never-married;Adm-clerical;Own-child;White;Male;0;0;15;United-States;<=50K +19;Self-emp-not-inc;36012;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +22;Private;191342;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;50;Taiwan;<=50K +49;Private;31339;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;State-gov;227910;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +43;Private;173728;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Local-gov;167816;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +58;Self-emp-not-inc;81642;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +41;Local-gov;195258;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +31;Private;232475;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;241259;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;118161;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;201954;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +38;Private;412296;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;28;United-States;<=50K +41;Federal-gov;133060;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +44;Self-emp-not-inc;120539;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +31;Private;196025;Doctorate;16;Married-spouse-absent;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;60;China;<=50K +34;Private;107793;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;163870;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +22;Self-emp-not-inc;361280;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;20;India;<=50K +62;Private;92178;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;?;80710;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +43;Private;182254;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +68;?;140282;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +45;Self-emp-inc;149865;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;>50K +41;Private;118619;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;<=50K +34;Self-emp-not-inc;196791;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;25;United-States;>50K +34;Local-gov;167999;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;33;United-States;<=50K +31;Private;51259;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;47;United-States;<=50K +29;Private;131088;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +41;Private;293791;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +35;Self-emp-inc;289430;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;Mexico;>50K +33;Private;35378;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;45;United-States;>50K +37;State-gov;60227;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;38;United-States;<=50K +69;Private;168139;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +34;Private;290763;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;51100;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;227644;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +58;Local-gov;205267;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +53;Private;288020;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Japan;<=50K +29;Private;140863;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +34;State-gov;50178;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;<=50K +36;Private;112497;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;95244;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +20;Private;117606;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;89508;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +63;Federal-gov;124244;HS-grad;9;Widowed;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;154374;Some-college;10;Divorced;Other-service;Unmarried;White;Male;0;0;45;United-States;<=50K +28;Private;294936;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;347132;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +34;?;181934;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;316672;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +37;Private;189382;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +42;?;184018;Some-college;10;Divorced;?;Unmarried;White;Male;0;0;40;United-States;<=50K +31;Private;184307;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Jamaica;>50K +46;Self-emp-not-inc;246212;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +35;Federal-gov;250504;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;60;United-States;>50K +27;Private;138705;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;53;United-States;<=50K +41;Private;328447;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Mexico;<=50K +19;Private;194608;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +20;Private;230891;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Federal-gov;212448;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;40;Germany;<=50K +40;Private;214010;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;37;United-States;<=50K +56;Self-emp-not-inc;200235;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +30;Self-emp-inc;205733;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +46;Private;185041;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +61;Self-emp-inc;84409;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +25;Private;241626;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +40;Private;520586;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;39;United-States;<=50K +24;?;35633;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;?;<=50K +51;Private;302847;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;54;United-States;<=50K +43;State-gov;165309;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;117529;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;54;Mexico;<=50K +46;Private;106092;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +28;State-gov;445824;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +26;Private;227332;Bachelors;13;Never-married;Transport-moving;Unmarried;Asian-Pac-Islander;Male;0;0;40;?;<=50K +20;Private;275691;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;28;United-States;<=50K +51;Private;284329;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +33;Private;114691;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +54;Private;96062;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +33;Private;178506;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +22;?;131573;Some-college;10;Never-married;?;Own-child;White;Female;0;0;8;United-States;<=50K +88;Self-emp-not-inc;206291;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;182302;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;241346;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +50;Private;157043;11th;7;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +25;Private;404616;Masters;14;Married-civ-spouse;Farming-fishing;Not-in-family;White;Male;0;0;99;United-States;>50K +20;Private;411862;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +47;Private;183013;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +58;?;169982;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +22;Private;188544;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +50;State-gov;356619;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +47;Private;45857;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Local-gov;289886;11th;7;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;45;United-States;<=50K +50;?;146015;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +40;Private;216237;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +36;Private;416745;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;202952;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;167725;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;?;165637;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +59;Federal-gov;43280;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +65;Private;118779;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +24;State-gov;191269;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;65;United-States;<=50K +27;Local-gov;247507;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;35;United-States;<=50K +51;Private;239155;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;182862;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;33886;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;444304;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;187161;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +49;Local-gov;116892;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +51;Local-gov;176813;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +59;Private;151616;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +18;Private;240747;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;Dominican-Republic;<=50K +45;Federal-gov;320818;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;80;United-States;>50K +30;Local-gov;235271;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +37;Private;166497;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +44;Private;344060;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;>50K +33;Private;221196;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +61;Self-emp-inc;113544;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +61;Local-gov;321117;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;79619;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;42;United-States;>50K +22;?;42004;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +36;Private;135289;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;203070;Some-college;10;Separated;Adm-clerical;Own-child;White;Male;0;0;62;United-States;<=50K +31;Private;32406;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;20;United-States;<=50K +20;Private;205839;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +63;?;150389;Bachelors;13;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;>50K +33;?;163003;HS-grad;9;Divorced;?;Not-in-family;Asian-Pac-Islander;Female;0;0;41;China;<=50K +38;Private;200818;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +45;Self-emp-not-inc;247379;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +48;Private;349151;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;22154;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;176317;HS-grad;9;Widowed;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;22245;Masters;14;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;72;?;>50K +29;Private;236436;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;354078;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +42;Self-emp-not-inc;166813;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +50;Private;358740;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;England;<=50K +75;Self-emp-not-inc;208426;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +52;Federal-gov;31838;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;175034;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;413297;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;106347;11th;7;Separated;Other-service;Not-in-family;Black;Female;0;0;42;United-States;<=50K +23;Private;174754;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +34;Private;441454;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;24;United-States;<=50K +41;Self-emp-not-inc;209344;HS-grad;9;Married-civ-spouse;Sales;Other-relative;White;Female;0;0;40;Cuba;<=50K +31;Private;185732;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +42;Private;65372;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;33975;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +55;Private;326297;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +36;State-gov;194630;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Self-emp-not-inc;167414;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;59;United-States;>50K +38;Local-gov;165799;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;12;United-States;<=50K +62;Private;192866;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +49;Private;148995;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;190040;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +32;Private;209432;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +48;Self-emp-not-inc;397466;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;283767;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;?;<=50K +52;Federal-gov;202452;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +29;Private;128604;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +38;Private;65466;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +57;Private;141326;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +43;Federal-gov;369468;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;State-gov;136137;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;236770;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;89534;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;>50K +69;?;195779;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;1;United-States;<=50K +73;Private;29778;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;37;United-States;<=50K +22;Self-emp-inc;153516;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +31;Private;163594;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +50;Self-emp-not-inc;343748;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +37;Private;387430;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;37;United-States;<=50K +44;Local-gov;409505;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;200734;Bachelors;13;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;45;United-States;<=50K +27;Private;115831;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;150296;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Female;0;0;80;United-States;<=50K +25;Private;323545;HS-grad;9;Never-married;Tech-support;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;Private;232577;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Local-gov;152754;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +47;Private;386136;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +42;Private;342865;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Federal-gov;158926;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;>50K +65;?;36039;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +21;Private;164019;Some-college;10;Never-married;Farming-fishing;Own-child;Black;Male;0;0;10;United-States;<=50K +46;Private;188861;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;182062;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;37238;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +50;Private;421132;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;?;178660;12th;8;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;795830;1st-4th;2;Widowed;Other-service;Unmarried;White;Female;0;0;30;El-Salvador;<=50K +39;Private;278403;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +46;Private;279661;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;35;United-States;<=50K +36;Private;113397;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;236696;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;57;United-States;<=50K +41;Private;265266;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +44;Local-gov;34935;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +22;Private;58222;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Federal-gov;301010;Some-college;10;Never-married;Armed-Forces;Not-in-family;Black;Male;0;0;60;United-States;<=50K +29;Private;419721;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;Japan;<=50K +58;Self-emp-inc;186791;Some-college;10;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;40;United-States;>50K +36;Self-emp-not-inc;180686;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;209103;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +37;Private;32668;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;>50K +29;Private;256956;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;202203;5th-6th;3;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Mexico;<=50K +43;Private;85995;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +49;Private;125421;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;>50K +45;Federal-gov;283037;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;192932;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;?;244689;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +51;Private;179646;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;509350;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;Canada;>50K +24;Private;96279;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +35;?;327120;Assoc-acdm;12;Never-married;?;Not-in-family;White;Male;0;0;55;United-States;<=50K +41;State-gov;144928;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;Private;55237;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +20;Private;114874;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +27;Private;190525;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +55;Private;121912;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;24;United-States;>50K +39;Private;83893;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +17;?;138507;10th;6;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +47;Private;256522;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;?;<=50K +52;Private;168381;HS-grad;9;Widowed;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;40;India;>50K +24;Private;293579;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +29;Private;285290;11th;7;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +25;Private;188488;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +20;Private;324469;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;275244;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;35;United-States;<=50K +57;Private;265099;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +51;Private;146767;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;174938;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;240124;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;State-gov;34180;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;State-gov;225904;Prof-school;15;Never-married;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +57;Private;89392;Masters;14;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;46857;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;State-gov;105363;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;195105;HS-grad;9;Never-married;Sales;Not-in-family;Other;Male;0;0;40;United-States;<=50K +35;Private;184117;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +61;Self-emp-inc;134768;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Germany;>50K +17;?;145886;11th;7;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +36;Private;153078;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;60;?;>50K +34;Private;467108;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +42;Private;173938;HS-grad;9;Separated;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;191161;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;132606;5th-6th;3;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +40;Private;155190;10th;6;Never-married;Craft-repair;Other-relative;Black;Male;0;0;55;United-States;<=50K +31;Private;42900;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;37;United-States;<=50K +36;Private;191161;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;181820;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;105974;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;41;United-States;<=50K +52;Private;146378;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Private;103440;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +51;Private;203435;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;Italy;<=50K +31;Federal-gov;168312;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Self-emp-inc;257764;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;171301;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;40;United-States;<=50K +53;Federal-gov;225339;Some-college;10;Widowed;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;Private;444554;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;403788;Assoc-acdm;12;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +61;?;190997;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +43;Private;221550;Masters;14;Never-married;Other-service;Not-in-family;White;Female;0;0;30;Poland;<=50K +46;Self-emp-inc;98929;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;<=50K +43;Local-gov;169203;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +41;Private;102332;HS-grad;9;Divorced;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;230684;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +54;Private;449257;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;97429;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;Canada;<=50K +25;Private;208999;Some-college;10;Separated;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;37072;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +25;Local-gov;163101;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +19;Private;119075;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +37;Self-emp-not-inc;137314;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +45;Private;127303;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;45;United-States;<=50K +37;Private;349116;HS-grad;9;Never-married;Sales;Not-in-family;Black;Male;0;0;44;United-States;<=50K +19;?;194095;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;46496;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;5;United-States;<=50K +27;Private;29904;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Federal-gov;234151;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +43;Private;238287;10th;6;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +42;Private;230624;10th;6;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;>50K +54;Self-emp-not-inc;114758;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;137815;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +40;Private;260696;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Private;325007;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;25;United-States;<=50K +50;Private;113176;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;66815;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +42;?;51795;HS-grad;9;Divorced;?;Unmarried;Black;Female;0;0;32;United-States;<=50K +24;Private;241523;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;>50K +30;Private;30226;11th;7;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +39;Local-gov;352628;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;50;United-States;>50K +37;Private;143912;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Private;130021;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;329778;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;196945;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;78;Thailand;<=50K +39;Private;24342;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;Private;34368;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +52;Self-emp-not-inc;173839;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +28;State-gov;73211;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +32;Private;86723;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;52;United-States;<=50K +31;Private;179186;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;90;United-States;>50K +31;Private;127610;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +47;Private;115070;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;?;172582;Some-college;10;Never-married;?;Own-child;White;Male;0;0;50;United-States;<=50K +40;Private;256202;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;202872;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;45;United-States;<=50K +41;Private;184102;11th;7;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Federal-gov;130703;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +46;Private;134727;11th;7;Divorced;Machine-op-inspct;Unmarried;Amer-Indian-Eskimo;Male;0;0;43;Germany;<=50K +19;Private;213644;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;147322;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Peru;<=50K +59;Private;296253;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;180871;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +35;State-gov;211115;Some-college;10;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;183870;10th;6;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;40;United-States;<=50K +28;Private;441620;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;43;Mexico;<=50K +36;Federal-gov;218542;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +41;Self-emp-not-inc;141327;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +47;Private;67716;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +61;?;347089;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;16;United-States;<=50K +36;Private;336595;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +38;Private;27997;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;30447;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +44;Self-emp-not-inc;120837;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;66;United-States;<=50K +51;Private;185283;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +44;Self-emp-inc;229466;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Private;298225;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +60;Private;185749;11th;7;Widowed;Transport-moving;Unmarried;Black;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;125892;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +46;Private;563883;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;60;United-States;>50K +56;Private;311249;HS-grad;9;Widowed;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +22;Private;310152;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +76;?;211453;HS-grad;9;Widowed;?;Not-in-family;Black;Female;0;0;2;United-States;<=50K +41;Self-emp-inc;94113;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +46;Private;161508;10th;6;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;177675;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +39;Private;51100;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +40;Private;100584;10th;6;Divorced;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +70;Federal-gov;163003;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +49;Private;101320;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;75;United-States;<=50K +24;Private;42706;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;60;United-States;<=50K +61;Private;120939;Prof-school;15;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;5;United-States;>50K +25;Private;98283;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +28;Local-gov;216481;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +69;State-gov;208869;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;11;United-States;<=50K +22;Private;207940;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;36;United-States;<=50K +47;Private;34248;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +38;Private;83727;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;48;United-States;<=50K +26;Private;183077;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +17;Private;197850;11th;7;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;24;United-States;<=50K +33;Self-emp-not-inc;235271;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +43;Self-emp-not-inc;35236;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;255822;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;256263;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;25;United-States;<=50K +43;Local-gov;293535;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +25;Private;174592;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +57;Federal-gov;278763;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;175232;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;0;0;60;United-States;>50K +32;Private;402812;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +26;Private;101150;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;41;United-States;<=50K +45;Private;103538;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +27;Private;23940;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +28;Self-emp-inc;210295;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +32;Private;80058;11th;7;Divorced;Sales;Not-in-family;White;Male;0;0;43;United-States;>50K +36;Self-emp-not-inc;105021;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +19;Private;225775;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-inc;395831;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;>50K +20;Private;32732;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +60;?;290593;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;123253;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +58;State-gov;48433;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;245317;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;431745;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;14;United-States;<=50K +42;State-gov;436006;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +25;Private;224943;Some-college;10;Married-spouse-absent;Prof-specialty;Unmarried;Black;Male;0;0;40;United-States;<=50K +37;Self-emp-inc;217054;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +66;Self-emp-not-inc;298834;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +59;Self-emp-inc;125000;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;England;>50K +44;Private;123983;Bachelors;13;Divorced;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;China;<=50K +46;Private;155489;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;58;United-States;>50K +17;Local-gov;32124;9th;5;Never-married;Other-service;Own-child;Black;Male;0;0;9;United-States;<=50K +47;Local-gov;246891;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +47;State-gov;141483;9th;5;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;31985;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;170800;Some-college;10;Never-married;Farming-fishing;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;231286;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;15;United-States;<=50K +33;Private;159322;HS-grad;9;Divorced;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +48;Private;176026;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;26898;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;12;United-States;<=50K +47;Private;232628;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;85995;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +48;Private;125421;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +49;Private;245305;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;42;United-States;>50K +50;Private;73493;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;197058;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;122116;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;75742;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;214731;10th;6;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +35;Private;265954;HS-grad;9;Separated;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;State-gov;197156;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +39;Local-gov;203070;HS-grad;9;Separated;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Local-gov;165695;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +69;?;473040;5th-6th;3;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;168107;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;163494;10th;6;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +38;Private;180342;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;148069;10th;6;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;200973;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +17;Private;130806;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;24;United-States;<=50K +56;Private;117148;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;213977;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;139338;12th;8;Divorced;Transport-moving;Unmarried;Black;Male;0;0;40;United-States;<=50K +23;Private;315877;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +41;Self-emp-not-inc;195124;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;?;<=50K +25;Private;352057;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +21;Private;236684;Some-college;10;Never-married;Other-service;Other-relative;Black;Female;0;0;8;United-States;<=50K +18;Private;208447;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;6;United-States;<=50K +45;Private;149640;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;154342;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +42;Federal-gov;141459;HS-grad;9;Separated;Other-service;Other-relative;Black;Female;0;0;40;United-States;<=50K +47;Private;111797;Some-college;10;Never-married;Other-service;Not-in-family;Black;Female;0;0;35;Outlying-US(Guam-USVI-etc);<=50K +29;Private;111900;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;78707;11th;7;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +43;Local-gov;160574;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;?;174714;Some-college;10;Never-married;?;Own-child;White;Male;0;0;16;United-States;<=50K +19;?;62534;Bachelors;13;Never-married;?;Own-child;Black;Female;0;0;40;Jamaica;<=50K +24;Private;198148;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +19;Private;124265;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;208137;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;257250;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;52;United-States;<=50K +24;State-gov;147253;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Local-gov;244268;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +72;?;213255;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;8;United-States;<=50K +26;Private;266912;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +31;Private;169104;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;?;<=50K +29;Private;200511;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +48;Self-emp-not-inc;65535;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;103395;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +51;Private;71046;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;45;Scotland;<=50K +28;Self-emp-not-inc;125442;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;169188;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;121471;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;207281;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;16;United-States;<=50K +26;Local-gov;46097;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;322143;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;10;United-States;<=50K +33;Private;149184;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +33;Local-gov;119829;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;60;United-States;<=50K +37;Private;910398;Bachelors;13;Never-married;Sales;Not-in-family;Black;Female;0;0;40;United-States;<=50K +19;Private;176570;11th;7;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;60;United-States;<=50K +24;Private;216129;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;27207;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +57;State-gov;68830;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +22;State-gov;178818;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +57;Private;236944;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +46;State-gov;273771;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +67;Private;318533;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +35;?;451940;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +47;Private;102318;HS-grad;9;Separated;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;379350;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;21095;Some-college;10;Divorced;Other-service;Unmarried;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +58;Self-emp-not-inc;211547;12th;8;Divorced;Sales;Not-in-family;White;Female;0;0;52;United-States;<=50K +36;Private;85272;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;30;United-States;>50K +45;Private;46406;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;England;>50K +54;Private;53833;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +26;Private;161007;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +60;Private;53707;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +26;Private;310907;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;35;United-States;<=50K +32;Private;375833;11th;7;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +38;Local-gov;107513;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Self-emp-not-inc;58683;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +37;Private;70240;HS-grad;9;Never-married;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +44;Private;147206;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;175548;HS-grad;9;Never-married;Other-service;Not-in-family;Other;Female;0;0;35;United-States;<=50K +61;Self-emp-not-inc;163174;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +51;Private;126010;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;?;200904;Assoc-acdm;12;Married-civ-spouse;?;Wife;Black;Female;0;0;21;Haiti;<=50K +67;Local-gov;258973;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +40;State-gov;345969;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +27;Private;127796;5th-6th;3;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;35;Mexico;<=50K +37;Private;405723;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +57;Private;175942;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +27;Private;284196;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Self-emp-inc;175761;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +52;Private;158993;HS-grad;9;Divorced;Other-service;Other-relative;Black;Female;0;0;38;United-States;<=50K +42;Private;285066;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +55;Self-emp-not-inc;52888;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;10;United-States;<=50K +71;Self-emp-inc;133821;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +33;Private;240763;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +30;Private;39054;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;119272;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +59;Private;143372;10th;6;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +19;Private;323421;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +36;Self-emp-not-inc;136028;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +26;Self-emp-not-inc;163189;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +34;Local-gov;202729;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;421871;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +26;?;211798;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;198901;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +18;Private;214617;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;16;United-States;<=50K +55;Self-emp-not-inc;179715;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;18;United-States;<=50K +44;Private;110355;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +43;Private;184378;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Private;273454;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;Cuba;<=50K +44;Private;443040;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +39;?;71701;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Self-emp-inc;160151;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +35;Private;107991;11th;7;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +52;Private;94391;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;99835;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +43;Private;83756;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;<=50K +20;Private;180052;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +47;Private;170846;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Italy;>50K +43;Private;37937;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;<=50K +64;?;168340;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;?;>50K +24;Private;38455;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Federal-gov;128059;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;420895;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;166744;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;12;United-States;<=50K +26;Private;238768;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +50;Private;140592;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +20;Self-emp-not-inc;211466;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;80;United-States;<=50K +43;Private;39581;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;45;United-States;<=50K +53;Private;117496;9th;5;Divorced;Other-service;Not-in-family;White;Female;0;0;36;Canada;<=50K +44;Private;145160;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +25;Private;28520;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;375077;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +44;Private;151504;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;32212;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;43;United-States;<=50K +35;Private;123606;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;202565;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +54;Private;177927;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;256723;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +18;Private;46247;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +24;Private;266926;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;112031;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;50;United-States;<=50K +22;?;376277;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +35;Private;168817;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;187487;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +32;?;158784;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;67222;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;45;China;<=50K +73;Private;267408;HS-grad;9;Widowed;Sales;Other-relative;White;Female;0;0;15;United-States;<=50K +47;Federal-gov;168191;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +49;Private;105444;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;39;United-States;<=50K +38;Private;156728;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;Private;148600;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +39;Private;19914;Some-college;10;Divorced;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +42;Private;190767;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;233955;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;45;China;>50K +35;Private;30381;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +38;Private;187069;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;367314;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Local-gov;101119;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;70;United-States;<=50K +38;Private;86551;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;48;United-States;>50K +40;Local-gov;218995;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +21;Private;57711;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +44;Private;303521;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;199067;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;247445;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +49;Private;186078;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +31;Private;77634;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;42;United-States;<=50K +46;Private;56482;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;314177;HS-grad;9;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;239755;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;38;United-States;<=50K +27;Private;377680;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +26;Private;294493;Bachelors;13;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +45;Private;182655;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;45;?;>50K +57;Local-gov;52267;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;72;United-States;<=50K +30;Private;117963;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +45;Private;98881;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;32;United-States;<=50K +50;Private;196963;7th-8th;4;Divorced;Craft-repair;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Private;166988;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;193459;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +42;Private;182342;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +32;Private;496743;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;154781;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;219371;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +45;Private;99179;11th;7;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;224910;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;304651;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +37;Private;349689;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Private;106850;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Self-emp-not-inc;196328;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;45;United-States;>50K +25;Private;169323;Bachelors;13;Married-civ-spouse;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;162924;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;60;Japan;<=50K +40;Self-emp-not-inc;34037;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;70;United-States;<=50K +51;?;167651;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;197384;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +42;Private;251795;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +65;?;266081;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;165309;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;215873;10th;6;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;45;United-States;<=50K +24;Private;228424;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +32;Private;195576;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;52199;HS-grad;9;Married-spouse-absent;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;?;158762;10th;6;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +49;Private;169818;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;>50K +31;Private;288419;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;207546;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +17;?;228373;10th;6;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +37;Private;272950;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;183523;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;238415;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +35;Local-gov;103260;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;>50K +40;Private;135056;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +66;Private;142723;5th-6th;3;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Female;0;0;40;Puerto-Rico;<=50K +30;Federal-gov;188569;9th;5;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;57322;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;178309;9th;5;Never-married;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +45;Private;166107;Masters;14;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +31;Private;53042;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;Trinadad&Tobago;<=50K +32;Private;35595;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;429507;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +50;Federal-gov;159670;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +63;Private;151210;7th-8th;4;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;186792;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;204640;Some-college;10;Widowed;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +52;Private;87205;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +38;Self-emp-inc;112847;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +50;State-gov;211319;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +59;Private;183606;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;205390;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;49;United-States;<=50K +52;Self-emp-inc;101017;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;38;United-States;<=50K +57;Private;114495;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +51;Private;163921;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;56;United-States;>50K +22;Private;311764;11th;7;Widowed;Sales;Own-child;Black;Female;0;0;35;United-States;<=50K +49;Private;188330;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +22;Private;267174;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +48;Private;199739;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;185407;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +43;State-gov;206139;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +25;Private;282063;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +31;Private;332379;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;418324;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;36;United-States;<=50K +19;?;263338;Some-college;10;Never-married;?;Own-child;White;Male;0;0;45;United-States;<=50K +51;Private;158948;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;84;United-States;>50K +51;Private;221532;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;>50K +37;Local-gov;118909;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +19;Private;286469;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +45;Private;191914;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Female;0;0;55;United-States;<=50K +21;State-gov;142766;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +52;Private;198744;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Local-gov;272780;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;24;United-States;<=50K +42;State-gov;219553;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;38;United-States;<=50K +56;Private;261232;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;64292;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Private;312131;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +70;Private;30713;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +30;Private;246439;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +45;Private;338105;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +23;Private;228243;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +38;Private;31603;Bachelors;13;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;<=50K +24;Private;165054;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;121618;7th-8th;4;Never-married;Transport-moving;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +21;?;163665;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;538319;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;Puerto-Rico;<=50K +34;Private;238246;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;131811;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +63;?;231777;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +23;Private;156807;9th;5;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;36;United-States;<=50K +28;Private;236861;Bachelors;13;Divorced;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +29;Self-emp-not-inc;229842;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Male;0;0;45;United-States;<=50K +25;Local-gov;190057;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +44;State-gov;55076;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +18;Private;152545;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;8;United-States;<=50K +26;Private;153434;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +47;Local-gov;171095;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +23;Private;239322;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;138999;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;176520;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +38;Local-gov;72338;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;54;United-States;>50K +60;?;386261;Bachelors;13;Married-spouse-absent;?;Unmarried;Black;Female;0;0;15;United-States;<=50K +23;Private;235722;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +36;Federal-gov;128884;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;48;United-States;<=50K +46;Private;187226;9th;5;Divorced;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +32;Self-emp-not-inc;298332;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +40;Private;173607;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;226756;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +31;Private;157887;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +32;State-gov;171111;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;37;United-States;<=50K +21;Private;126314;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +63;Private;174018;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +44;Private;144778;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +42;Self-emp-not-inc;201522;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +23;?;22966;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +30;Private;399088;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +24;Private;282202;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;40;El-Salvador;<=50K +42;Private;102606;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +44;Self-emp-not-inc;246862;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;Italy;>50K +27;Federal-gov;508336;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;48;United-States;<=50K +27;Local-gov;263431;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;235733;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +68;Private;107910;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;184425;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;>50K +22;Self-emp-not-inc;143062;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;Greece;<=50K +25;Private;199545;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;15;United-States;<=50K +68;Self-emp-not-inc;197015;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +62;Private;149617;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;16;United-States;<=50K +26;Private;33610;HS-grad;9;Divorced;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +34;Private;192002;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +68;Private;67791;Some-college;10;Widowed;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Local-gov;445382;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +45;Private;112283;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +26;Private;157249;11th;7;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;109872;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;119838;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;United-States;<=50K +65;Without-pay;27012;7th-8th;4;Widowed;Farming-fishing;Unmarried;White;Female;0;0;50;United-States;<=50K +31;Private;91666;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +26;Private;270276;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;179271;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +44;Private;161819;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +26;Self-emp-not-inc;219897;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +26;Private;91683;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +36;Private;188834;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;187046;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +39;Private;191807;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;48;United-States;<=50K +52;Self-emp-inc;179951;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;324420;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;Mexico;<=50K +41;Self-emp-not-inc;66632;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;162034;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +28;Local-gov;218990;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;46;United-States;<=50K +25;Local-gov;125863;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;35;United-States;<=50K +35;Private;225330;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;120426;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;119741;Masters;14;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +44;Private;32000;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;18;United-States;>50K +21;?;124242;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;278581;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +30;Private;230224;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +20;Private;164922;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +57;Private;195176;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;80;United-States;<=50K +43;Private;166740;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;48;United-States;<=50K +50;?;156008;11th;7;Married-civ-spouse;?;Own-child;Black;Female;0;0;40;United-States;<=50K +28;Private;162551;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Female;0;0;48;China;<=50K +25;Private;211231;HS-grad;9;Married-civ-spouse;Tech-support;Other-relative;White;Female;0;0;48;United-States;>50K +25;Private;169990;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +90;Private;221832;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +38;Local-gov;255454;Bachelors;13;Separated;Prof-specialty;Unmarried;Black;Male;0;0;40;United-States;<=50K +35;Private;28160;Bachelors;13;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +50;State-gov;159219;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Canada;>50K +26;Local-gov;103148;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;165186;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;31782;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +24;Local-gov;249101;HS-grad;9;Divorced;Protective-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Local-gov;153405;11th;7;Never-married;Adm-clerical;Other-relative;White;Female;0;0;25;United-States;<=50K +57;Private;176079;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;State-gov;218542;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;State-gov;303446;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;Nicaragua;<=50K +40;Private;102606;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +44;Self-emp-not-inc;483201;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +77;Local-gov;144608;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;6;United-States;<=50K +30;Private;226013;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +21;Private;165475;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +66;Private;263637;10th;6;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;201495;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;35;United-States;<=50K +68;Private;213720;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;170483;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +26;Private;214303;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +32;Private;190511;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Private;242150;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;38;United-States;<=50K +51;Local-gov;159755;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +49;Private;268022;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +28;Private;188711;Bachelors;13;Never-married;Transport-moving;Unmarried;White;Male;0;0;20;United-States;<=50K +29;Private;452205;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +21;Private;260847;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +28;Private;291374;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +55;Private;189933;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;133969;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;50;South;>50K +35;Private;330664;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;?;672412;11th;7;Separated;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;111415;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;55;Germany;<=50K +33;Private;217235;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +23;Private;120172;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;343403;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Self-emp-not-inc;104790;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +39;Local-gov;473547;10th;6;Divorced;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +53;Local-gov;260106;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +49;Federal-gov;168232;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +31;Private;348491;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +29;Private;421065;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;48;United-States;<=50K +54;Self-emp-inc;138852;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +28;?;169631;Assoc-acdm;12;Married-AF-spouse;?;Wife;White;Female;0;0;3;United-States;<=50K +34;Private;379412;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;181992;Some-college;10;Never-married;Sales;Not-in-family;Black;Female;0;0;35;United-States;<=50K +19;Private;365640;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;45;?;<=50K +26;Private;236564;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;363418;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;70;United-States;>50K +50;Private;112351;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;38;United-States;<=50K +30;Private;204704;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;>50K +44;Private;54611;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +49;Private;128132;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +75;Self-emp-not-inc;30599;Masters;14;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +37;Private;379522;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +51;State-gov;196504;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;38;United-States;<=50K +35;Private;82552;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +28;Private;104024;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +72;Private;74141;9th;5;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;48;United-States;>50K +39;Private;192337;Bachelors;13;Separated;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;262478;HS-grad;9;Never-married;Farming-fishing;Own-child;Black;Male;0;0;30;United-States;<=50K +57;Private;185072;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;40;Jamaica;<=50K +28;Private;246595;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;70;United-States;<=50K +23;Private;54472;Some-college;10;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Private;161708;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +31;Private;264936;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Local-gov;113545;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;170430;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;80;?;<=50K +39;Private;505119;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Cuba;>50K +23;Private;193089;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +24;Local-gov;33432;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +36;Private;103110;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;England;<=50K +32;Private;160362;Some-college;10;Divorced;Other-service;Other-relative;White;Male;0;0;40;Nicaragua;<=50K +35;Private;204621;Assoc-acdm;12;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;35309;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;?;154373;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;50;United-States;<=50K +47;Private;194772;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +35;Private;154410;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Federal-gov;220563;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +32;State-gov;253354;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;229732;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;185465;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;335764;11th;7;Married-civ-spouse;Sales;Own-child;Black;Male;0;0;35;United-States;<=50K +23;Private;460046;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;42;United-States;<=50K +19;?;33487;Some-college;10;Never-married;?;Other-relative;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +50;Private;176924;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +49;State-gov;213307;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;83893;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;Private;194102;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +61;Private;238611;7th-8th;4;Widowed;Other-service;Unmarried;Black;Female;0;0;38;United-States;<=50K +41;Private;113597;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;16;United-States;<=50K +27;Self-emp-not-inc;208406;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +53;Private;274528;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;<=50K +17;Self-emp-not-inc;60116;10th;6;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;United-States;<=50K +23;?;196816;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +53;Private;166368;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;99386;Bachelors;13;Married-spouse-absent;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;188569;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +53;Private;302868;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +18;Private;283342;11th;7;Never-married;Other-service;Other-relative;Black;Male;0;0;20;United-States;<=50K +24;Private;233777;Some-college;10;Never-married;Sales;Unmarried;White;Male;0;0;50;Mexico;<=50K +20;Private;170038;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Local-gov;261319;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;126838;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;354104;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +20;Private;176321;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Mexico;<=50K +47;Private;85129;HS-grad;9;Divorced;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +20;?;376474;Some-college;10;Never-married;?;Own-child;White;Male;0;0;32;United-States;<=50K +22;Private;62507;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +60;Private;156889;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;549430;HS-grad;9;Never-married;Priv-house-serv;Unmarried;White;Female;0;0;40;Mexico;<=50K +46;Private;29696;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +66;Private;98837;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;86150;Bachelors;13;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;30;United-States;>50K +34;Private;204991;Some-college;10;Divorced;Exec-managerial;Own-child;White;Male;0;0;44;United-States;<=50K +45;Private;371886;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;46;United-States;<=50K +35;Private;103605;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +63;?;54851;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +51;Local-gov;133050;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +36;Local-gov;126569;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +25;Federal-gov;144259;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +51;Private;161482;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +25;Self-emp-not-inc;305449;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;125010;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;45;United-States;<=50K +47;Private;304133;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +59;Local-gov;120617;HS-grad;9;Separated;Protective-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;Private;157747;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;297396;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;60;United-States;<=50K +42;Private;121287;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;?;308493;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;17;Honduras;<=50K +37;Private;49115;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +51;Self-emp-inc;208302;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;38;United-States;>50K +25;Private;304032;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;36;United-States;<=50K +31;Federal-gov;207301;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +37;Private;123211;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;44;United-States;>50K +42;Private;33521;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +29;?;410351;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;410034;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +51;Private;175339;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;47;United-States;>50K +22;?;27937;Some-college;10;Never-married;?;Own-child;White;Male;0;0;36;United-States;<=50K +26;Private;125680;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;16;Japan;<=50K +56;Local-gov;160829;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;46;United-States;<=50K +52;Private;266529;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +61;Self-emp-not-inc;115023;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;4;?;<=50K +47;State-gov;224149;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +52;Private;150930;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;343699;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;163392;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +17;?;103810;12th;8;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;211265;Some-college;10;Married-spouse-absent;Craft-repair;Other-relative;Black;Female;0;0;35;Dominican-Republic;<=50K +58;Local-gov;160586;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;203277;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +46;Private;309895;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +57;Private;103809;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;90291;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +21;State-gov;181761;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;10;United-States;<=50K +45;Local-gov;135776;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +61;?;188172;Doctorate;16;Widowed;?;Not-in-family;White;Female;0;0;5;United-States;<=50K +39;Private;179579;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;193626;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;53;United-States;<=50K +20;Private;108887;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;199070;HS-grad;9;Never-married;Protective-serv;Own-child;Black;Male;0;0;16;United-States;<=50K +25;Private;441591;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;185254;5th-6th;3;Never-married;Priv-house-serv;Own-child;White;Female;0;0;40;El-Salvador;<=50K +24;Private;109307;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +20;?;81853;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;15;United-States;<=50K +35;Private;23621;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;70;United-States;<=50K +44;Local-gov;145178;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;38;Jamaica;>50K +47;State-gov;30575;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +28;State-gov;130620;11th;7;Separated;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;India;<=50K +41;Local-gov;22155;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;60;United-States;<=50K +31;Private;106437;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;79787;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;25;United-States;<=50K +44;Private;81853;HS-grad;9;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +61;Private;120933;Some-college;10;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Federal-gov;153143;Some-college;10;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;Puerto-Rico;<=50K +46;Private;27669;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +46;Private;105444;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +54;Local-gov;169785;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +49;Private;122493;HS-grad;9;Widowed;Tech-support;Unmarried;White;Male;0;0;40;United-States;<=50K +56;Local-gov;242670;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;54933;Masters;14;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;209317;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +25;Self-emp-not-inc;282631;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;98044;11th;7;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +58;Private;187487;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;State-gov;60186;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;75648;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +28;Private;201175;11th;7;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;19302;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;48;United-States;<=50K +21;?;300812;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +75;Private;101887;10th;6;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;70;United-States;<=50K +66;?;117778;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;60726;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +33;Self-emp-inc;201763;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +47;Self-emp-not-inc;121124;5th-6th;3;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;Italy;>50K +21;Private;60639;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;37;United-States;<=50K +17;Private;195262;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;17;United-States;<=50K +61;?;113544;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;55;United-States;<=50K +47;?;331650;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;8;United-States;>50K +22;Private;100587;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;15;United-States;<=50K +47;Private;298130;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;242391;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Self-emp-not-inc;197867;Assoc-voc;11;Divorced;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +59;Private;151977;10th;6;Separated;Priv-house-serv;Not-in-family;Black;Female;0;0;30;United-States;<=50K +38;Private;277347;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;125249;HS-grad;9;Separated;Protective-serv;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;222142;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;270194;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;169995;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +27;Private;359155;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +60;Private;123992;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +64;Local-gov;266080;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +37;Private;201531;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +54;Self-emp-not-inc;179704;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +36;Private;393673;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +34;Private;244147;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +41;Self-emp-not-inc;438696;Masters;14;Divorced;Sales;Unmarried;White;Male;0;0;5;United-States;>50K +35;Self-emp-not-inc;207568;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;75;United-States;<=50K +63;Self-emp-inc;54052;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;68;United-States;>50K +46;Private;187581;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;77102;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;353010;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;65;United-States;<=50K +29;Private;54131;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +74;Federal-gov;39890;Some-college;10;Widowed;Transport-moving;Not-in-family;White;Female;0;0;18;United-States;<=50K +50;Private;156877;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;>50K +22;Private;355686;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;300168;12th;8;Separated;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +30;Private;488720;9th;5;Married-civ-spouse;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +32;Private;157287;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;184659;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;214169;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;192149;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;137253;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +44;Private;373050;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +28;Federal-gov;183151;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;United-States;<=50K +55;Private;227158;Bachelors;13;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Local-gov;34021;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;50;United-States;<=50K +31;Private;165148;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;12;United-States;<=50K +47;Private;211668;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;40;United-States;>50K +45;Private;358886;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +35;Private;47707;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;306982;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;60;South;<=50K +49;Local-gov;52590;HS-grad;9;Widowed;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;?;179352;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +27;Private;158156;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;42;United-States;<=50K +42;Private;70055;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +60;?;131852;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +33;Private;127215;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +23;Private;175183;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;142287;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +34;Private;221324;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +53;Private;227602;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;37;Mexico;<=50K +22;Private;228452;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +57;State-gov;39380;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +20;?;96862;Some-college;10;Never-married;?;Own-child;White;Female;0;0;8;United-States;<=50K +23;Private;336360;7th-8th;4;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +31;Private;257644;11th;7;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +23;State-gov;235853;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;22;United-States;<=50K +30;Private;270577;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Local-gov;222900;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +42;Private;99254;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;>50K +51;Private;224763;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Cuba;<=50K +36;Private;127306;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;339506;HS-grad;9;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;178322;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Germany;>50K +33;Private;189843;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;160815;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Private;207665;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +37;State-gov;160402;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +35;Private;170263;Some-college;10;Never-married;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;184659;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;52;United-States;<=50K +54;Private;101017;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;204322;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +45;Private;241350;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +63;Federal-gov;217994;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Private;128143;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +58;Self-emp-not-inc;164065;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;0;18;United-States;<=50K +64;Local-gov;78866;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;236769;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +44;Federal-gov;239539;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +39;Private;34028;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;48;United-States;<=50K +45;State-gov;207847;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;175935;Doctorate;16;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;55;United-States;>50K +22;Federal-gov;218445;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +63;Self-emp-inc;215833;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;156976;Assoc-voc;11;Separated;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;220647;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +20;Private;218343;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +25;Private;73289;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;408623;Bachelors;13;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;50;United-States;<=50K +46;Private;169180;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;54929;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +24;Private;306779;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Male;0;0;35;United-States;<=50K +43;Private;159549;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +23;Private;482082;12th;8;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;21;Mexico;<=50K +32;Local-gov;286101;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Female;0;0;37;United-States;<=50K +44;Private;167955;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Poland;<=50K +40;Self-emp-not-inc;209040;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;105017;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +23;Private;27776;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;118853;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;119565;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;275361;Assoc-acdm;12;Widowed;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +42;Private;225193;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;329783;10th;6;Never-married;Sales;Other-relative;White;Female;0;0;10;United-States;<=50K +29;Local-gov;107411;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;70;United-States;<=50K +21;State-gov;258490;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +18;?;120243;11th;7;Never-married;?;Own-child;White;Male;0;0;27;United-States;<=50K +31;Private;219509;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;>50K +27;Local-gov;29174;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;40083;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;Canada;<=50K +23;Private;87528;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +41;Private;116379;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;55;Taiwan;>50K +46;Local-gov;216214;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +34;Private;268051;Some-college;10;Married-civ-spouse;Protective-serv;Other-relative;Black;Female;0;0;25;Haiti;<=50K +42;Self-emp-not-inc;121718;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;24;United-States;<=50K +46;Private;109089;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;37;United-States;<=50K +18;?;346382;11th;7;Never-married;?;Own-child;White;Male;0;0;15;United-States;<=50K +52;Private;284129;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +56;Private;143030;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;212619;Assoc-voc;11;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +22;Self-emp-not-inc;199011;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;20;United-States;<=50K +31;Private;118901;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +41;Self-emp-not-inc;129865;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;157900;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;349341;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +45;Private;158685;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;386585;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;60;United-States;<=50K +90;Private;52386;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;35;United-States;<=50K +30;Private;190385;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +42;Private;37869;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;217807;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +64;State-gov;201293;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +56;Private;128764;7th-8th;4;Widowed;Transport-moving;Not-in-family;White;Male;0;0;20;United-States;<=50K +42;Private;27444;Some-college;10;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +26;Private;62438;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +31;Local-gov;151726;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +40;Private;29841;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +58;Private;131608;Some-college;10;Widowed;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;110562;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;190541;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;47;United-States;<=50K +62;State-gov;33142;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +40;Private;234633;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Local-gov;238386;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +22;Private;460835;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;55;United-States;<=50K +23;?;243190;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;20;China;<=50K +63;Federal-gov;97855;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;Private;200863;Some-college;10;Widowed;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +25;?;41107;Bachelors;13;Married-spouse-absent;?;Not-in-family;White;Male;0;0;40;Canada;<=50K +56;Private;77415;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;236770;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;235124;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;199288;11th;7;Separated;Transport-moving;Not-in-family;White;Male;0;0;90;United-States;<=50K +19;Private;43285;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;160837;11th;7;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +22;Private;230574;10th;6;Never-married;Transport-moving;Own-child;White;Male;0;0;25;United-States;<=50K +23;Private;176178;HS-grad;9;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;116358;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;>50K +27;?;253873;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +45;Private;107787;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Canada;<=50K +23;Self-emp-not-inc;519627;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;25;Mexico;<=50K +21;Private;191460;11th;7;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;214858;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-not-inc;64875;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;<=50K +62;Self-emp-not-inc;134768;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Federal-gov;207342;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +34;Private;64830;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +33;Private;176711;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;England;<=50K +22;?;217421;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +28;Private;111900;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +22;?;196943;Some-college;10;Separated;?;Own-child;White;Male;0;0;25;United-States;<=50K +47;Private;481987;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +20;?;121313;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;158420;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +28;Private;42734;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;181773;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +47;Private;184945;Some-college;10;Separated;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +33;Private;107248;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;122999;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +36;State-gov;166606;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +61;Local-gov;192060;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;0;0;30;?;<=50K +57;Private;205708;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Poland;<=50K +55;Private;67450;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;England;<=50K +20;Private;242077;HS-grad;9;Divorced;Sales;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;Private;129573;HS-grad;9;Never-married;Sales;Not-in-family;Black;Female;0;0;44;United-States;<=50K +54;Private;181132;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;England;>50K +25;Private;212302;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;?;148751;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +17;Private;317681;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;10;United-States;<=50K +63;Private;30602;7th-8th;4;Married-spouse-absent;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +19;Private;172893;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;30;United-States;<=50K +33;Self-emp-not-inc;312055;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +37;Private;65390;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;200500;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +36;Local-gov;241962;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +30;Self-emp-inc;78530;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;Canada;>50K +22;Private;189950;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;<=50K +20;Private;241951;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +18;Private;343059;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +21;?;79728;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;55284;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +34;Private;509364;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;30;United-States;<=50K +32;State-gov;117927;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;Private;137651;Some-college;10;Never-married;Machine-op-inspct;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +70;Private;131060;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;United-States;<=50K +57;Private;346963;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Private;134737;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;36503;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Private;250121;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +27;Private;387776;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;41474;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +36;Local-gov;318972;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;65;United-States;<=50K +33;Private;86143;Some-college;10;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +50;Private;181139;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Local-gov;153976;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;59469;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +24;Private;127139;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;136343;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;350624;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;121523;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +24;Self-emp-not-inc;267396;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;83045;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;160449;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;>50K +20;?;287681;Some-college;10;Never-married;?;Own-child;White;Male;0;0;36;United-States;<=50K +41;Private;154194;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;295127;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;<=50K +61;Self-emp-not-inc;244087;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +35;Private;356250;Prof-school;15;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;35;China;<=50K +42;State-gov;293791;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +26;Private;44308;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Local-gov;210527;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;State-gov;151763;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;25;United-States;<=50K +39;State-gov;267581;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Private;100188;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;24;United-States;<=50K +32;Self-emp-inc;111746;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;171091;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;355645;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;20;Trinadad&Tobago;<=50K +54;Local-gov;137678;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;70894;Assoc-acdm;12;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +19;Private;171306;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;3;United-States;<=50K +31;Private;100997;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +35;Private;63921;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +29;Private;32897;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +29;Local-gov;251854;HS-grad;9;Never-married;Protective-serv;Not-in-family;Black;Female;0;0;40;United-States;<=50K +25;Private;345121;10th;6;Separated;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +46;Private;86220;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;172845;Assoc-voc;11;Never-married;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +20;Private;171398;10th;6;Never-married;Sales;Not-in-family;Other;Male;0;0;40;United-States;<=50K +24;Self-emp-not-inc;174391;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +48;Private;207058;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +37;Private;291251;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Self-emp-not-inc;224377;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;105813;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Local-gov;180916;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +31;Self-emp-not-inc;122749;Assoc-voc;11;Divorced;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +26;Self-emp-not-inc;284343;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;174224;Assoc-voc;11;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +69;?;183958;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +48;Private;80651;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;55;United-States;<=50K +46;Private;62793;HS-grad;9;Divorced;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +39;Self-emp-not-inc;237532;HS-grad;9;Married-civ-spouse;Sales;Wife;Black;Female;0;0;54;Dominican-Republic;>50K +50;Federal-gov;20179;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +24;Private;311376;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;432565;Assoc-voc;11;Married-civ-spouse;Tech-support;Other-relative;White;Female;0;0;40;Canada;>50K +29;Self-emp-not-inc;125190;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;342946;11th;7;Never-married;Transport-moving;Own-child;White;Female;0;0;38;United-States;<=50K +21;?;219835;Assoc-voc;11;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;123429;10th;6;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;66356;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +41;Private;195897;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;230875;11th;7;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +74;Self-emp-not-inc;92298;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;10;United-States;<=50K +40;Private;185145;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;297296;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;145214;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;242341;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +54;Private;240542;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +36;Private;104772;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;48;United-States;<=50K +76;?;152802;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +26;Private;181666;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;415520;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +38;Private;258761;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +19;?;356717;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;158438;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +57;Private;206206;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +20;Private;51816;HS-grad;9;Never-married;Protective-serv;Own-child;Black;Male;0;0;40;United-States;<=50K +27;Private;253814;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;162947;5th-6th;3;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Puerto-Rico;<=50K +52;Private;163027;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;50;United-States;<=50K +61;Private;146788;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +57;Self-emp-not-inc;73309;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;>50K +19;?;143867;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;104216;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +34;Self-emp-not-inc;345705;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;>50K +31;Private;133770;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +42;Private;209392;HS-grad;9;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;35;United-States;<=50K +70;Private;262345;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;6;United-States;<=50K +47;Private;277545;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +29;Private;490332;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +27;Private;211570;11th;7;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +25;Private;374918;12th;8;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +28;Private;173649;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;?;<=50K +35;Private;174597;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;233533;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +54;?;169785;Masters;14;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;133169;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;198824;Assoc-voc;11;Separated;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +65;Private;174056;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;188696;Assoc-voc;11;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Local-gov;90692;HS-grad;9;Divorced;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;102359;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +49;Federal-gov;213668;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;56;United-States;>50K +21;Private;294789;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +20;Private;157599;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +18;Local-gov;134935;12th;8;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;466224;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;111985;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;264627;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;213427;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;279015;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;<=50K +47;Private;165937;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +27;Federal-gov;188343;HS-grad;9;Separated;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +63;Private;158609;Assoc-voc;11;Widowed;Adm-clerical;Unmarried;White;Female;0;0;8;United-States;<=50K +34;Private;193036;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +25;Private;198632;Some-college;10;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +19;?;192773;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +35;Private;101387;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +24;Private;60783;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;>50K +26;Private;183224;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;35;United-States;<=50K +59;Local-gov;100776;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;57600;Doctorate;16;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;40;?;<=50K +20;Private;174063;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;306495;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;249741;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;93021;HS-grad;9;Never-married;Adm-clerical;Unmarried;Other;Female;0;0;40;United-States;<=50K +36;Private;49626;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;63062;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;60;United-States;<=50K +55;Private;320835;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +22;Local-gov;123727;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;21;United-States;<=50K +39;Private;172425;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +40;Private;216116;9th;5;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;Haiti;<=50K +46;Private;174209;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +54;Federal-gov;175083;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +19;Private;129059;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;30;United-States;<=50K +24;Private;121313;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +53;?;181317;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +24;State-gov;166851;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;13;United-States;<=50K +29;Self-emp-not-inc;29616;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;65;United-States;<=50K +54;?;124993;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +21;?;148509;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +34;Private;230246;9th;5;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +56;Private;117881;11th;7;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;446219;10th;6;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +32;Self-emp-inc;110331;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +48;Private;207946;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;52;United-States;<=50K +67;?;45537;Masters;14;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;>50K +47;Private;188330;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;25;United-States;<=50K +52;Private;147629;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +40;Private;153799;1st-4th;2;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Female;0;0;40;Dominican-Republic;<=50K +28;Private;203776;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;348430;1st-4th;2;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;Portugal;<=50K +51;Private;103407;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;?;152046;11th;7;Never-married;?;Not-in-family;White;Female;0;0;35;Germany;<=50K +36;Private;153205;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;45;?;<=50K +33;Private;326104;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +46;Private;238162;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +50;Private;221336;HS-grad;9;Divorced;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +33;Private;180656;Some-college;10;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +67;?;150516;HS-grad;9;Widowed;?;Unmarried;White;Male;0;0;3;United-States;<=50K +35;Private;325802;Assoc-acdm;12;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;24;United-States;<=50K +23;Private;133985;10th;6;Never-married;Craft-repair;Own-child;Black;Female;0;0;40;United-States;<=50K +41;Private;183203;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +60;Private;76127;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;>50K +32;Private;195891;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;55;United-States;<=50K +56;Federal-gov;162137;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +45;State-gov;37672;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;161708;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +18;Private;80616;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;27;United-States;<=50K +31;Private;209276;HS-grad;9;Married-civ-spouse;Other-service;Husband;Other;Male;0;0;40;United-States;<=50K +21;?;34443;Some-college;10;Never-married;?;Own-child;White;Male;0;0;50;United-States;<=50K +23;Private;203240;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;State-gov;102308;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;40829;11th;7;Never-married;Sales;Other-relative;Amer-Indian-Eskimo;Female;0;0;25;United-States;<=50K +25;Private;60726;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;30;United-States;<=50K +31;State-gov;116677;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;57067;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;45;United-States;<=50K +41;Private;304906;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +74;Private;101590;Prof-school;15;Widowed;Adm-clerical;Not-in-family;Black;Female;0;0;20;United-States;<=50K +27;Private;258102;5th-6th;3;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;Mexico;<=50K +23;Private;241185;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;124827;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-inc;76625;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +41;Federal-gov;263339;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +25;Private;135645;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +42;Private;245626;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +24;Private;210781;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;235786;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +45;Self-emp-not-inc;160167;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +34;Private;314375;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;81528;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;60;United-States;<=50K +54;Private;182854;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +40;?;70645;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +55;Self-emp-inc;141807;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +66;?;112871;11th;7;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +52;State-gov;71344;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +21;State-gov;341410;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;15;United-States;<=50K +33;Private;118941;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +52;?;159755;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +28;Private;128509;5th-6th;3;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;?;<=50K +27;Self-emp-not-inc;229125;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;142756;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;Self-emp-inc;243871;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;45;United-States;<=50K +19;Private;196857;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;138626;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;161334;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;25;Nicaragua;<=50K +50;Private;273536;7th-8th;4;Married-civ-spouse;Sales;Husband;Other;Male;0;0;49;Dominican-Republic;<=50K +28;Private;185957;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;334357;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Private;96102;Masters;14;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;Private;213226;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Iran;>50K +19;Private;115248;Some-college;10;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +37;Private;185061;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;55;United-States;<=50K +27;Private;147638;Bachelors;13;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;40;Hong;<=50K +18;Private;280298;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +31;Private;163516;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;277434;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +26;Federal-gov;206983;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;Columbia;<=50K +48;Private;108993;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +39;Private;288551;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +41;Private;176069;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +48;State-gov;183486;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;56;United-States;>50K +70;Private;94692;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +20;Private;118462;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;43;United-States;<=50K +38;Private;407068;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;75;Mexico;<=50K +37;Self-emp-not-inc;243587;Some-college;10;Separated;Other-service;Own-child;White;Female;0;0;40;Cuba;<=50K +49;Private;23074;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +43;Private;188291;1st-4th;2;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;284166;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;?;423460;11th;7;Never-married;?;Own-child;White;Male;0;0;36;United-States;<=50K +23;Private;287681;7th-8th;4;Never-married;Other-service;Not-in-family;White;Male;0;0;25;Mexico;<=50K +34;Private;509364;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;?;139391;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +33;Private;91964;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +31;Private;117526;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Female;0;0;45;United-States;<=50K +64;Private;91343;Some-college;10;Widowed;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Local-gov;336969;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;28;El-Salvador;<=50K +55;Private;255364;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +61;Local-gov;167670;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;211494;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +78;Local-gov;136198;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;15;United-States;<=50K +27;Federal-gov;409815;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Private;188823;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;42;United-States;<=50K +42;Private;154374;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;58;United-States;<=50K +22;?;216563;HS-grad;9;Never-married;?;Other-relative;White;Female;0;0;40;United-States;<=50K +61;Private;197286;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;Self-emp-not-inc;100722;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;5;United-States;<=50K +46;Local-gov;377622;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;145964;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;57413;Some-college;10;Divorced;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +48;Private;320421;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +50;Self-emp-not-inc;174752;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;State-gov;229364;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +56;Self-emp-not-inc;157486;10th;6;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +56;Federal-gov;101338;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;132652;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +21;Private;34616;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +40;Private;218903;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Local-gov;204098;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Other-relative;White;Male;0;0;50;United-States;<=50K +46;Private;189763;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +23;Private;26248;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;92079;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +19;Private;280071;Some-college;10;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;50;United-States;<=50K +20;Private;224059;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;265567;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +72;Private;106890;Assoc-voc;11;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;State-gov;39586;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +42;Private;153132;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;45;?;<=50K +51;Private;209912;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Male;0;0;50;United-States;<=50K +39;Private;144169;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +34;Private;89644;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +19;Private;275889;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;Mexico;<=50K +26;Private;231638;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;355259;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +30;Federal-gov;68330;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +32;Private;185410;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;87653;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +21;Private;286853;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +54;Private;96710;HS-grad;9;Married-civ-spouse;Priv-house-serv;Other-relative;Black;Female;0;0;20;United-States;<=50K +62;Private;160143;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;>50K +49;Self-emp-inc;109705;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;32;United-States;<=50K +32;Private;94235;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +37;Local-gov;297449;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +58;Private;205896;HS-grad;9;Divorced;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +41;Private;194710;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;State-gov;189123;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;358677;HS-grad;9;Divorced;Other-service;Unmarried;Black;Male;0;0;35;United-States;<=50K +34;Private;231238;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +46;Private;166003;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;281437;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +20;Private;190231;9th;5;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;11;Nicaragua;<=50K +47;Private;122026;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +55;?;205527;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;20;United-States;<=50K +43;Private;125461;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +80;Self-emp-not-inc;184335;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +24;Private;211345;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;Mexico;<=50K +22;Private;222993;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;225978;Some-college;10;Separated;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;Private;121124;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +56;?;656036;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +34;?;346762;11th;7;Divorced;?;Own-child;White;Male;0;0;84;United-States;<=50K +51;Private;234057;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +24;Federal-gov;306515;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;116562;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;171159;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +24;Private;199011;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;443508;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;Canada;>50K +24;Private;29810;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +22;Local-gov;238831;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +32;Federal-gov;566117;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;255044;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +20;Private;436253;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +31;Private;300687;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +55;Private;144071;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;18;United-States;>50K +26;Private;188767;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;300777;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +35;Private;26987;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;174395;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;60;Greece;<=50K +59;Private;90290;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;34;United-States;<=50K +61;Private;183735;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +31;Private;123273;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Federal-gov;186916;Masters;14;Divorced;Protective-serv;Not-in-family;White;Male;0;0;60;United-States;>50K +54;Private;178251;Assoc-acdm;12;Widowed;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +30;Private;255885;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;64292;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;State-gov;194773;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;Germany;<=50K +44;Self-emp-inc;133060;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;60;United-States;<=50K +64;Private;258006;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;Cuba;<=50K +55;Private;92215;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;Private;153048;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +28;Private;192200;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +34;Private;355571;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +26;Private;34402;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +35;Private;25955;11th;7;Never-married;Other-service;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +36;Private;209609;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;<=50K +47;Private;168283;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +17;Private;295488;11th;7;Never-married;Other-service;Own-child;Black;Female;0;0;25;United-States;<=50K +35;Private;190895;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;164190;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +25;Private;216010;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +18;Private;387568;10th;6;Never-married;Sales;Own-child;White;Male;0;0;10;United-States;<=50K +47;State-gov;188386;Masters;14;Separated;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +44;Private;174491;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +41;Private;31221;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +30;Private;272451;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Self-emp-not-inc;152652;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +53;Private;104413;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +27;Private;214858;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;237735;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;37;Mexico;<=50K +36;Private;158592;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;237321;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;>50K +41;Private;23646;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;169240;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Federal-gov;454508;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;130356;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;48;United-States;<=50K +22;Private;427686;10th;6;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +18;Local-gov;36411;12th;8;Never-married;Prof-specialty;Own-child;White;Male;0;0;30;United-States;<=50K +39;Private;548510;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;30;United-States;<=50K +38;Private;187264;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;55;United-States;<=50K +35;State-gov;140752;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;325596;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;175804;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;107302;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +63;Local-gov;41161;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +39;Private;401832;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +57;Self-emp-not-inc;353808;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +29;Private;161478;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Japan;<=50K +17;Private;400225;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +40;Private;367533;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +69;Self-emp-not-inc;69306;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;<=50K +28;Private;270366;10th;6;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;103751;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;State-gov;79580;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +50;Private;121685;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +48;Private;75104;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +26;?;188343;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;246449;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +21;Private;85088;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;37;United-States;<=50K +37;Private;545483;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +20;State-gov;243986;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +54;Self-emp-not-inc;32778;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;30;United-States;<=50K +28;Private;369114;HS-grad;9;Separated;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +27;Private;217200;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;149220;Assoc-voc;11;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;?;162034;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +28;?;157813;11th;7;Divorced;?;Unmarried;White;Female;0;0;58;Canada;<=50K +17;?;179715;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;102308;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +44;Private;367749;1st-4th;2;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;El-Salvador;<=50K +25;Private;98281;12th;8;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;43;United-States;<=50K +35;Private;115792;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +29;Private;277788;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;25;United-States;<=50K +30;Private;103435;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +30;Private;37646;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;385632;7th-8th;4;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Self-emp-not-inc;210278;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;30;United-States;<=50K +28;Private;335357;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;272165;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;148995;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +46;Self-emp-not-inc;113434;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;State-gov;132551;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +29;Private;227890;HS-grad;9;Never-married;Protective-serv;Other-relative;Black;Male;0;0;40;United-States;<=50K +25;Private;503012;5th-6th;3;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +56;Private;250873;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;407930;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;148187;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +31;Private;159322;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +28;Private;334368;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;196328;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +45;Private;270842;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +71;Private;235079;Preschool;1;Widowed;Craft-repair;Unmarried;Black;Male;0;0;10;United-States;<=50K +65;?;327154;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Federal-gov;30559;HS-grad;9;Married-AF-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +34;Local-gov;255098;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;248010;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +40;Private;174515;HS-grad;9;Married-spouse-absent;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +90;Private;171956;Some-college;10;Separated;Adm-clerical;Own-child;White;Female;0;0;40;Puerto-Rico;<=50K +56;Private;193130;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;16;United-States;<=50K +21;Private;108670;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;186172;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +45;Private;348854;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;27;United-States;<=50K +46;Private;271828;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +64;Private;148606;10th;6;Separated;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +29;Local-gov;123983;Masters;14;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +22;Private;24896;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;30;Germany;<=50K +47;Private;573583;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;Italy;>50K +43;Private;307767;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;200574;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;358056;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +17;Private;206010;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;8;United-States;<=50K +55;Self-emp-inc;183869;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;?;>50K +28;Private;159001;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +24;Private;155818;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;96055;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +30;Local-gov;131776;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;228613;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;198163;Masters;14;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +38;Private;37028;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;38;United-States;<=50K +30;Private;177304;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +33;Private;144064;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;146659;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +63;Self-emp-not-inc;26904;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;98;United-States;<=50K +23;Private;238917;7th-8th;4;Never-married;Craft-repair;Other-relative;White;Male;0;0;36;United-States;<=50K +56;Private;170148;HS-grad;9;Divorced;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;27821;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;220460;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Canada;<=50K +35;Private;173858;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;?;<=50K +52;Private;91048;HS-grad;9;Divorced;Machine-op-inspct;Own-child;Black;Female;0;0;35;United-States;<=50K +28;Private;298696;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;207202;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;<=50K +21;?;230397;Some-college;10;Never-married;?;Own-child;White;Female;0;0;5;United-States;<=50K +43;Self-emp-not-inc;180599;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +32;?;199046;Assoc-voc;11;Never-married;?;Unmarried;White;Female;0;0;2;United-States;<=50K +29;Self-emp-not-inc;132686;Prof-school;15;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;Italy;>50K +23;Private;240063;Bachelors;13;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;25;United-States;<=50K +34;Private;511361;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +19;Private;89397;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;239439;11th;7;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;36989;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;76978;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;35;United-States;<=50K +75;Private;200068;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +24;Private;454941;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;State-gov;107218;Bachelors;13;Never-married;Tech-support;Own-child;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +17;Local-gov;182070;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +31;Private;176360;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +31;Private;452405;Preschool;1;Never-married;Other-service;Other-relative;White;Female;0;0;35;Mexico;<=50K +18;?;297396;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;10;United-States;<=50K +45;Private;84790;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +31;Private;186787;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;42;United-States;<=50K +27;Private;169662;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +22;?;35448;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;22;United-States;<=50K +34;Private;225548;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;30;United-States;<=50K +26;Private;240842;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +53;Private;103931;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +60;Private;232618;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +49;Local-gov;288548;Masters;14;Separated;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +40;Private;220609;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;26145;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +23;Private;268525;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +68;?;133758;7th-8th;4;Widowed;?;Not-in-family;Black;Male;0;0;10;United-States;<=50K +42;Private;121264;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Self-emp-not-inc;29814;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;85;United-States;<=50K +27;Private;193701;HS-grad;9;Never-married;Craft-repair;Own-child;White;Female;0;0;45;United-States;<=50K +38;Private;183279;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +27;Private;163942;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;Ireland;<=50K +75;Private;188612;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Self-emp-inc;102771;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +27;Private;85625;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +36;Self-emp-not-inc;245090;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;Mexico;<=50K +35;Private;182074;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +36;Private;187046;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +53;Private;90624;11th;7;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;37933;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +61;Private;716416;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;>50K +29;Private;190562;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;56;United-States;<=50K +40;State-gov;141583;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +37;Private;98941;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +22;Private;201729;9th;5;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;30;United-States;<=50K +43;Self-emp-inc;175485;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;149168;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +28;Private;115971;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;161708;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +64;Local-gov;244903;11th;7;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +46;Private;155664;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;112754;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;178385;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;48;India;<=50K +20;Private;44064;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;25;United-States;<=50K +62;Self-emp-not-inc;120939;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;165134;Assoc-voc;11;Never-married;Exec-managerial;Unmarried;White;Female;0;0;35;Columbia;<=50K +29;Private;100405;10th;6;Married-civ-spouse;Farming-fishing;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;361888;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;Japan;<=50K +39;Local-gov;167864;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +39;Private;202950;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +37;Private;218188;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;White;Female;0;0;32;United-States;<=50K +72;?;177226;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +31;Private;259931;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;189528;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +38;Private;34996;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;112584;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +25;Private;117589;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;?;145234;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +37;Private;267086;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;52;United-States;<=50K +49;Private;44434;Some-college;10;Divorced;Tech-support;Other-relative;White;Male;0;0;35;United-States;<=50K +26;Private;96130;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +35;Private;181382;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +44;Self-emp-inc;168845;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;60;United-States;<=50K +37;Private;271767;Masters;14;Separated;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +42;Private;194636;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +28;Private;132686;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +40;State-gov;184378;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +55;Federal-gov;270859;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +21;Private;231866;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;65;United-States;<=50K +49;Private;36032;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +51;State-gov;172962;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Private;24185;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +38;Private;53930;10th;6;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;?;<=50K +45;Self-emp-not-inc;94962;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;England;<=50K +28;Private;480861;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;52262;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;State-gov;52636;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +60;Private;175273;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;125892;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;75;United-States;>50K +40;?;78255;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;25;United-States;<=50K +30;Private;398827;HS-grad;9;Married-AF-spouse;Adm-clerical;Husband;White;Male;0;0;60;United-States;<=50K +61;Private;208919;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +71;Local-gov;365996;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;6;United-States;<=50K +42;Private;307638;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +44;Local-gov;33068;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +46;Self-emp-not-inc;254291;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +50;Local-gov;125417;Prof-school;15;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;52;United-States;>50K +27;State-gov;28848;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;9;United-States;<=50K +40;?;273425;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +21;Private;194723;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;Mexico;<=50K +25;Private;195118;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;35;United-States;<=50K +54;Private;220115;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +31;Private;265706;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;279129;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +48;Private;119199;Bachelors;13;Divorced;Sales;Unmarried;White;Female;0;0;44;United-States;<=50K +30;Private;107793;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;56;United-States;>50K +35;Private;237943;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +42;Self-emp-not-inc;64632;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +34;Self-emp-not-inc;96245;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;361494;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +69;Local-gov;122850;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +29;Private;173652;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;164663;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;98678;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +40;Private;245529;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;55294;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;140583;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;79797;HS-grad;9;Married-spouse-absent;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Japan;>50K +72;?;113044;HS-grad;9;Widowed;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;283499;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +41;Local-gov;51111;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;232475;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +48;Private;176140;11th;7;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;301654;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +28;?;192569;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +27;Private;229803;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +20;Private;337639;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;130849;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +32;Private;296282;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;266645;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +23;State-gov;110128;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;90196;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +40;State-gov;40024;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +35;Private;144322;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +74;Self-emp-inc;162340;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +28;Private;169069;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;113601;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;111275;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;56;United-States;<=50K +46;Local-gov;102076;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;25;United-States;<=50K +20;?;182117;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;190122;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;193188;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Local-gov;267588;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;70;United-States;<=50K +48;Self-emp-inc;200471;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +22;?;175586;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;35;United-States;<=50K +24;Local-gov;322658;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;State-gov;263982;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Private;266287;12th;8;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +39;Private;278187;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;221745;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;140764;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +28;Private;206351;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +61;State-gov;124971;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +18;Private;179203;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +24;Federal-gov;44075;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +45;Private;178319;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;56;United-States;>50K +24;Private;219754;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;168165;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +52;Self-emp-inc;210736;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;130431;5th-6th;3;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;36;Mexico;<=50K +35;?;169809;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +54;Private;197481;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;155066;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;31290;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +42;Private;54102;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;181546;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +44;State-gov;351228;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;131976;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;55;United-States;<=50K +26;Private;200639;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +64;Federal-gov;267546;Assoc-acdm;12;Separated;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +41;Private;179875;11th;7;Divorced;Other-service;Unmarried;Other;Female;0;0;40;United-States;<=50K +25;?;237865;Some-college;10;Never-married;?;Own-child;Black;Male;0;0;40;?;<=50K +43;Private;300528;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Federal-gov;326048;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +60;Private;191188;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;32172;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Federal-gov;334314;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;83704;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;160574;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;>50K +27;Private;203776;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +47;Local-gov;328610;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;174373;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +41;Private;247752;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +32;?;199244;10th;6;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;139992;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;95680;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +55;Self-emp-inc;189933;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +38;Private;498785;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;State-gov;177526;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;15;United-States;<=50K +64;Self-emp-not-inc;150121;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;>50K +56;Federal-gov;130454;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;Private;119079;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;49;United-States;>50K +33;Private;94235;Prof-school;15;Never-married;Prof-specialty;Own-child;White;Male;0;0;42;United-States;>50K +21;Private;305874;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +59;Local-gov;62020;HS-grad;9;Widowed;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Private;235624;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Germany;>50K +43;Local-gov;247514;Masters;14;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;275726;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +45;Private;72896;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Local-gov;110510;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +41;Private;173938;Prof-school;15;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;?;>50K +27;Private;200641;10th;6;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;Mexico;<=50K +53;Private;211654;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;?;>50K +38;Private;242720;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +31;Private;111567;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +41;Private;179533;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +22;State-gov;334693;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;198096;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +41;State-gov;355756;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;19395;Some-college;10;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;35;United-States;<=50K +41;Local-gov;242586;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;160647;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +20;Private;227943;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +58;Self-emp-not-inc;197665;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +35;Self-emp-not-inc;216129;12th;8;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;Trinadad&Tobago;<=50K +30;Local-gov;326104;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +21;Private;57211;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;100219;Assoc-acdm;12;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;45;United-States;<=50K +40;Private;291192;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;State-gov;93415;Bachelors;13;Never-married;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;>50K +35;Private;191502;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +35;Private;261382;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;170230;Bachelors;13;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;0;40;?;<=50K +59;Private;374924;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;320984;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;338320;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +51;Private;135190;7th-8th;4;Separated;Machine-op-inspct;Not-in-family;Black;Female;0;0;30;United-States;<=50K +33;Private;637222;12th;8;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;430084;HS-grad;9;Divorced;Other-service;Own-child;Black;Male;0;0;35;United-States;<=50K +30;Private;125279;HS-grad;9;Married-spouse-absent;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +20;Private;221955;5th-6th;3;Married-spouse-absent;Farming-fishing;Other-relative;White;Male;0;0;40;Mexico;<=50K +51;Self-emp-inc;180195;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;208778;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;>50K +62;Private;81534;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +37;Private;325538;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;60;?;<=50K +28;Private;142264;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;Dominican-Republic;<=50K +23;Private;128604;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;48;South;<=50K +39;Private;277886;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;30;United-States;<=50K +50;Self-emp-inc;100029;Bachelors;13;Widowed;Sales;Unmarried;White;Male;0;0;65;United-States;>50K +31;Private;169269;7th-8th;4;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +23;?;123983;Bachelors;13;Never-married;?;Own-child;Other;Male;0;0;40;United-States;<=50K +47;Private;297884;10th;6;Widowed;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;99131;HS-grad;9;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;18;United-States;<=50K +32;Private;44392;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +82;?;29441;7th-8th;4;Widowed;?;Not-in-family;White;Male;0;0;5;United-States;<=50K +74;Federal-gov;181508;HS-grad;9;Widowed;Other-service;Not-in-family;White;Male;0;0;17;United-States;<=50K +22;Private;190625;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +32;Private;194740;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;Greece;<=50K +34;Private;27380;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +59;Private;160631;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +36;Private;224531;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +59;Private;283005;11th;7;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Self-emp-inc;101926;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;>50K +25;Self-emp-not-inc;113436;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +44;Private;248973;Bachelors;13;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;65;United-States;<=50K +58;Local-gov;310085;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;?;53042;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +45;Private;204205;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;48;United-States;<=50K +47;Private;169324;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;35;United-States;>50K +52;?;134447;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +56;Self-emp-not-inc;236731;1st-4th;2;Separated;Exec-managerial;Not-in-family;White;Male;0;0;25;?;<=50K +52;Private;141301;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;235124;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +36;Self-emp-not-inc;367020;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +41;Private;149102;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Poland;<=50K +30;Private;423770;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;Mexico;<=50K +44;Private;211759;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Other;Male;0;0;40;Puerto-Rico;<=50K +17;?;110998;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +34;Private;56883;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;223062;Some-college;10;Separated;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +29;Private;406662;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;206600;9th;5;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;48;Mexico;<=50K +42;Local-gov;147510;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;187577;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +46;Self-emp-inc;278322;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +49;State-gov;203039;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;145651;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +46;Local-gov;144531;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +30;Private;91145;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;55;United-States;<=50K +49;Self-emp-not-inc;211762;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;?;111563;Assoc-voc;11;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;180985;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;?;>50K +19;Private;417657;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +26;Private;108658;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;190023;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +31;Private;222130;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +36;Self-emp-inc;164866;Assoc-acdm;12;Separated;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +31;Private;170983;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +30;Private;186269;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;286026;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;403433;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;50;United-States;>50K +21;?;224209;HS-grad;9;Married-civ-spouse;?;Wife;Black;Female;0;0;30;United-States;<=50K +73;Private;123160;10th;6;Widowed;Other-service;Not-in-family;White;Female;0;0;10;United-States;<=50K +38;Federal-gov;99527;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;123178;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Private;231043;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +58;Private;241056;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;46;United-States;<=50K +34;Local-gov;220066;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +35;Private;180342;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Federal-gov;31840;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;183168;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;386036;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;48;United-States;<=50K +31;Local-gov;446358;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;Mexico;>50K +45;Private;28035;Some-college;10;Never-married;Farming-fishing;Other-relative;White;Male;0;0;50;United-States;<=50K +40;Private;282155;HS-grad;9;Separated;Other-service;Other-relative;White;Female;0;0;25;United-States;<=50K +27;Private;192384;Prof-school;15;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;383637;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +29;Private;457402;5th-6th;3;Never-married;Other-service;Not-in-family;White;Male;0;0;25;Mexico;<=50K +34;Self-emp-inc;80249;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +32;State-gov;159537;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;240859;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Cuba;<=50K +33;Private;83446;11th;7;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +74;?;29866;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;<=50K +62;Private;185503;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +39;Self-emp-not-inc;68781;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;220589;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;51136;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;60;United-States;<=50K +24;Private;54560;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +76;?;28221;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;Canada;>50K +25;Private;201413;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;40425;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;28;United-States;<=50K +31;Private;189461;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;41;United-States;<=50K +53;Private;200576;11th;7;Divorced;Craft-repair;Other-relative;White;Female;0;0;40;United-States;<=50K +61;Private;92691;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;3;United-States;<=50K +47;Private;664821;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;El-Salvador;<=50K +37;Private;175130;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +50;Self-emp-not-inc;391016;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;30;United-States;<=50K +27;Private;249315;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;44;United-States;<=50K +58;Private;111169;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;334946;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +39;Private;352248;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;173804;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +56;Private;155449;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;73689;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +23;Private;227594;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;38;United-States;<=50K +47;Private;161676;11th;7;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +68;Private;75913;12th;8;Widowed;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +47;Local-gov;242552;Some-college;10;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;159732;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +46;Private;180695;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;189922;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +37;Private;409189;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +43;Private;111252;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;42;United-States;<=50K +59;Private;294395;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;172718;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +63;Private;111963;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;16;United-States;<=50K +45;Private;247869;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +59;Private;114032;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;?;356838;12th;8;Never-married;?;Not-in-family;White;Male;0;0;35;United-States;<=50K +26;Private;179633;HS-grad;9;Never-married;Tech-support;Other-relative;White;Male;0;0;40;United-States;<=50K +34;Private;19847;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;231689;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;209942;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +53;Private;197492;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;262439;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +46;Private;283037;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +79;?;144533;HS-grad;9;Widowed;?;Not-in-family;Black;Female;0;0;30;United-States;<=50K +31;Private;83446;HS-grad;9;Widowed;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;215443;HS-grad;9;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Local-gov;268252;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;62;United-States;<=50K +40;Private;181015;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;47;United-States;<=50K +20;Private;195770;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;26;United-States;<=50K +45;Private;125194;11th;7;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +27;Private;58654;Assoc-voc;11;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;252327;5th-6th;3;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +30;Private;116508;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Germany;<=50K +36;Private;166988;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +25;Private;374163;HS-grad;9;Married-spouse-absent;Farming-fishing;Not-in-family;Other;Male;0;0;40;Mexico;<=50K +31;Private;196788;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +26;Private;245628;11th;7;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;20;United-States;<=50K +25;Private;159732;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;129856;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;314322;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +35;Private;102976;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +57;Self-emp-inc;42959;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +21;Private;256356;11th;7;Never-married;Priv-house-serv;Other-relative;White;Female;0;0;40;Mexico;<=50K +29;Private;136277;10th;6;Never-married;Other-service;Own-child;Black;Female;0;0;32;United-States;<=50K +36;Private;284616;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;185554;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +51;Private;138847;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;33487;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;149653;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;348739;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +20;?;235442;Some-college;10;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +21;Private;34506;HS-grad;9;Separated;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +40;Private;346964;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;192208;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +21;Private;305874;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;54;United-States;<=50K +35;Self-emp-not-inc;462890;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;50;United-States;<=50K +39;Private;89508;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;200153;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;179446;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;208965;9th;5;Never-married;Machine-op-inspct;Unmarried;Other;Male;0;0;40;Mexico;<=50K +32;Private;40142;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Self-emp-not-inc;57452;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;327573;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;265266;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;?;163998;HS-grad;9;Married-spouse-absent;?;Not-in-family;White;Male;0;0;20;United-States;>50K +46;Self-emp-not-inc;28281;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +20;Private;368852;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +44;Private;353396;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;161745;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +18;Private;97963;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +61;Self-emp-inc;156542;Prof-school;15;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +50;State-gov;198103;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;55377;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +34;Private;173730;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +53;Private;374588;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;60;United-States;<=50K +39;Self-emp-not-inc;174330;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;78141;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +66;?;190324;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;18;United-States;<=50K +26;Private;31350;11th;7;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;243607;5th-6th;3;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Mexico;<=50K +47;Local-gov;134671;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;197023;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +52;Private;117674;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Private;169815;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +43;Private;598606;9th;5;Separated;Handlers-cleaners;Unmarried;Black;Female;0;0;50;United-States;<=50K +42;Federal-gov;122861;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Private;166235;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;30;United-States;<=50K +52;Self-emp-not-inc;194791;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;231323;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;305597;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +19;Private;25429;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +39;Private;346478;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;341368;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;State-gov;295612;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;168936;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +37;Private;336598;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;36;Mexico;<=50K +23;Private;308205;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +39;Local-gov;357173;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;59;United-States;<=50K +54;Private;457237;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;284799;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +20;Private;179423;Some-college;10;Never-married;Transport-moving;Own-child;White;Female;0;0;40;United-States;<=50K +50;Self-emp-not-inc;363405;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;50;United-States;>50K +17;Private;139183;10th;6;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +36;Private;203482;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;112554;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +53;Private;99476;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +50;Private;93690;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +38;Private;220585;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;194638;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;32;United-States;<=50K +53;Private;154785;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +40;?;162108;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Self-emp-inc;214542;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +20;Private;161922;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;43;United-States;<=50K +46;Private;207940;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +28;Private;259351;10th;6;Never-married;Other-service;Other-relative;Amer-Indian-Eskimo;Male;0;0;40;Mexico;<=50K +59;Private;208395;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;116391;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;239781;Preschool;1;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +56;Private;174351;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Italy;<=50K +31;Local-gov;188798;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +41;Private;50122;Assoc-voc;11;Divorced;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +25;State-gov;152035;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +18;?;139003;HS-grad;9;Never-married;?;Other-relative;Other;Female;0;0;12;United-States;<=50K +49;Local-gov;249289;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Private;257726;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +22;?;113175;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +21;Private;151158;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;25;United-States;<=50K +35;Private;465326;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;?;356772;HS-grad;9;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;364782;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +55;Private;198385;7th-8th;4;Widowed;Other-service;Unmarried;White;Female;0;0;20;?;<=50K +31;Private;329301;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +17;Self-emp-inc;254859;11th;7;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +25;Local-gov;222800;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;96452;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +50;Private;170050;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Local-gov;116580;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +50;Private;400004;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +63;Private;183608;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;194055;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;210443;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;43272;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +43;Local-gov;108945;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;48;United-States;<=50K +34;Private;114691;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +18;Private;304169;11th;7;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +35;Private;340428;Bachelors;13;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;>50K +46;State-gov;106705;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +31;Private;235389;7th-8th;4;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;30;Portugal;<=50K +27;Private;39665;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;37;United-States;<=50K +41;Private;113823;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;England;<=50K +42;Private;217826;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;?;<=50K +55;Private;349304;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;?;197688;HS-grad;9;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +44;Private;54507;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;163396;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +33;Private;323619;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;75755;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;148903;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;16;United-States;>50K +25;Private;40915;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +21;Private;182606;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;?;<=50K +18;Private;131033;11th;7;Never-married;Other-service;Other-relative;Black;Male;0;0;15;United-States;<=50K +35;Self-emp-not-inc;168475;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +20;Private;121568;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;357338;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;283268;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;36;United-States;<=50K +31;Private;120461;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;65278;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;Self-emp-not-inc;208503;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +25;Local-gov;112835;Masters;14;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;265038;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;89478;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +55;Private;276229;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +52;Private;366232;9th;5;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;Cuba;<=50K +26;Private;152035;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;205339;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;>50K +39;Private;75995;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +62;Self-emp-not-inc;192236;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +19;?;188618;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +47;Private;229737;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +51;Local-gov;199688;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +55;Private;52953;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;221043;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +59;Federal-gov;115389;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +45;Self-emp-not-inc;204205;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +21;Private;197387;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +31;Private;42485;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;55;United-States;<=50K +29;Private;367706;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +24;Private;102493;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;263746;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +47;Private;115358;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +46;Private;189680;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +32;?;282622;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;28;United-States;<=50K +34;Private;127651;10th;6;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;44;?;<=50K +63;Private;230823;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Cuba;<=50K +21;Private;300812;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +18;Private;174732;HS-grad;9;Never-married;Other-service;Other-relative;Black;Male;0;0;36;United-States;<=50K +49;State-gov;183710;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +81;Self-emp-not-inc;137018;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +36;Self-emp-inc;213008;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Private;357848;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;165799;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +39;Self-emp-not-inc;188571;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +46;Private;97883;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +39;Local-gov;57424;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +29;Private;151476;Some-college;10;Separated;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;129583;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Female;0;0;16;United-States;<=50K +57;Private;180920;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +38;Self-emp-not-inc;182416;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;42;United-States;<=50K +25;Private;251915;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +39;Local-gov;187127;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;69045;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;40;Jamaica;<=50K +39;Private;74163;12th;8;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;60847;Assoc-voc;11;Never-married;Sales;Unmarried;White;Female;0;0;60;United-States;<=50K +17;?;213055;11th;7;Never-married;?;Not-in-family;Other;Female;0;0;20;United-States;<=50K +41;Private;82393;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;50;United-States;<=50K +24;Local-gov;134181;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;50;United-States;<=50K +30;Self-emp-inc;117570;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;60;United-States;<=50K +56;Private;56331;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;32;United-States;<=50K +51;Private;35576;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +57;Self-emp-not-inc;149168;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +34;Private;157165;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;278130;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;257200;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;283122;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +23;Private;580248;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;230054;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +58;Private;519006;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;<=50K +19;?;365871;7th-8th;4;Never-married;?;Not-in-family;White;Male;0;0;40;Mexico;<=50K +17;Private;115551;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +37;Self-emp-inc;382802;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;99;United-States;>50K +21;?;180303;Bachelors;13;Never-married;?;Not-in-family;Asian-Pac-Islander;Male;0;0;25;?;<=50K +63;Private;106023;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;Private;332379;Some-college;10;Married-spouse-absent;Transport-moving;Unmarried;White;Male;0;0;50;United-States;<=50K +29;Private;95465;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;36440;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;65;United-States;>50K +25;Self-emp-not-inc;209384;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;32;United-States;<=50K +28;Private;50814;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;143865;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +74;?;104661;Some-college;10;Widowed;?;Not-in-family;White;Female;0;0;12;United-States;<=50K +31;Local-gov;50442;Some-college;10;Never-married;Exec-managerial;Own-child;Amer-Indian-Eskimo;Female;0;0;32;United-States;<=50K +23;Private;236601;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;48;United-States;<=50K +19;Private;100999;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;30;United-States;<=50K +39;?;362685;Preschool;1;Widowed;?;Not-in-family;White;Female;0;0;20;El-Salvador;<=50K +27;Self-emp-inc;153546;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;White;Female;0;0;36;United-States;>50K +19;Private;182355;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +23;?;191444;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +25;Local-gov;44216;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Female;0;0;35;United-States;<=50K +40;Private;97688;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;48;United-States;>50K +53;Private;209022;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;37;United-States;<=50K +32;Private;96016;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +61;Private;159046;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;138634;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +73;Private;247355;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;16;Canada;<=50K +41;Self-emp-not-inc;227065;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;244771;Some-college;10;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;20;Jamaica;<=50K +23;Private;215616;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;Canada;<=50K +65;Private;386672;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;15;United-States;<=50K +45;Self-emp-inc;177543;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +24;Local-gov;117109;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Female;0;0;27;United-States;<=50K +23;Private;373550;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;19847;Some-college;10;Divorced;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;189590;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;58343;HS-grad;9;Divorced;Farming-fishing;Unmarried;White;Male;0;0;56;United-States;<=50K +17;Private;354201;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;119422;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;363405;HS-grad;9;Separated;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +63;Private;181863;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;27;United-States;<=50K +27;Private;194472;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;60;United-States;<=50K +71;Self-emp-not-inc;130731;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +35;Private;236910;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;378251;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;38;United-States;<=50K +36;Private;120760;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +22;Private;203182;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Female;0;0;20;United-States;<=50K +30;Local-gov;352542;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +60;?;191024;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;197728;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +76;Private;316185;7th-8th;4;Widowed;Protective-serv;Not-in-family;White;Female;0;0;12;United-States;<=50K +41;Private;89226;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;292353;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;United-States;<=50K +45;Private;304570;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +32;Private;180296;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;361487;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;231777;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;189832;Assoc-acdm;12;Never-married;Transport-moving;Unmarried;White;Female;0;0;40;United-States;<=50K +61;Private;232308;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;State-gov;33308;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;333677;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +39;Private;343403;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;36;United-States;<=50K +53;Private;166386;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;40;China;<=50K +26;Federal-gov;48099;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;143062;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;32;United-States;<=50K +18;Private;104704;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +31;Private;286675;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +44;Private;59474;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +43;Private;245842;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;Mexico;<=50K +21;Private;342575;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;30;United-States;<=50K +30;Private;206051;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +55;Private;234213;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +57;Private;145189;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;233490;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;344129;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +62;Self-emp-not-inc;171315;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +31;Self-emp-not-inc;181485;Bachelors;13;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;>50K +51;Private;255412;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;France;>50K +45;Private;199590;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;38;Mexico;<=50K +47;Private;84726;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;?;226883;HS-grad;9;Divorced;?;Own-child;White;Male;0;0;75;United-States;<=50K +75;Self-emp-not-inc;184335;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +43;Private;102025;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;50;United-States;<=50K +30;Private;55291;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;150025;5th-6th;3;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Guatemala;<=50K +44;Private;100584;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +53;Local-gov;181755;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;>50K +40;Private;150528;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;107277;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +33;Private;247205;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;England;<=50K +20;Private;291979;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;270985;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;<=50K +48;Private;62605;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Self-emp-not-inc;176863;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;53197;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;267776;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;30;United-States;<=50K +24;Private;308205;7th-8th;4;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +30;Private;306383;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +70;Private;35494;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +26;Private;291968;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;<=50K +46;Private;271828;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +70;Private;121993;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;5;United-States;<=50K +37;Local-gov;31023;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;36425;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +23;Private;407684;9th;5;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;Mexico;<=50K +44;Self-emp-not-inc;158555;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +53;Private;123429;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +23;Private;40060;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;290286;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +21;?;249271;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;106169;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Private;76487;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;437994;Some-college;10;Never-married;Other-service;Other-relative;Black;Male;0;0;20;United-States;<=50K +36;Private;160120;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +42;Self-emp-not-inc;37618;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;114158;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +41;Private;115562;HS-grad;9;Divorced;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;353994;Bachelors;13;Married-civ-spouse;Exec-managerial;Other-relative;Asian-Pac-Islander;Female;0;0;40;China;>50K +21;Private;344891;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +44;Private;286750;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;>50K +29;Private;194197;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +19;Self-emp-not-inc;206599;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;22;United-States;<=50K +21;Local-gov;596776;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;Guatemala;<=50K +46;Private;56841;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;112561;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +43;Private;147110;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Male;0;0;48;United-States;>50K +54;Self-emp-inc;175339;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +18;?;298133;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;217083;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +30;Private;97757;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;36;United-States;>50K +30;Private;151868;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Local-gov;25864;HS-grad;9;Never-married;Exec-managerial;Unmarried;Amer-Indian-Eskimo;Female;0;0;35;United-States;<=50K +26;Private;109419;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +37;Federal-gov;203070;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +64;State-gov;264544;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;5;United-States;>50K +18;Private;148644;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;28;United-States;<=50K +30;Private;125762;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;United-States;<=50K +18;Private;193741;11th;7;Never-married;Other-service;Other-relative;Black;Male;0;0;30;United-States;<=50K +27;Private;588905;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;115613;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;State-gov;222374;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;43;United-States;>50K +37;Private;185359;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;173647;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;31166;HS-grad;9;Divorced;Prof-specialty;Not-in-family;Other;Female;0;0;30;Germany;<=50K +22;?;517995;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;Mexico;<=50K +25;Self-emp-not-inc;189027;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +38;Private;296125;HS-grad;9;Separated;Priv-house-serv;Unmarried;Black;Female;0;0;30;United-States;<=50K +32;?;640383;Bachelors;13;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;334291;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +56;Private;318450;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;80;United-States;>50K +29;Private;174163;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;119721;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;142719;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;162593;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +46;Self-emp-not-inc;236852;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +39;Private;168894;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +42;Self-emp-not-inc;344920;Some-college;10;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;50;United-States;<=50K +68;?;196782;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +57;Private;170244;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;369549;Some-college;10;Never-married;Other-service;Not-in-family;Black;Female;0;0;30;United-States;<=50K +24;Private;23438;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;>50K +19;Private;202673;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +55;Private;171780;Assoc-acdm;12;Divorced;Sales;Unmarried;Black;Female;0;0;30;United-States;<=50K +37;Local-gov;264503;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +37;Local-gov;244341;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;209109;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;187392;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;State-gov;119578;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;20;United-States;<=50K +51;Private;195105;HS-grad;9;Divorced;Priv-house-serv;Own-child;White;Female;0;0;40;United-States;<=50K +52;Private;101752;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;56;United-States;<=50K +74;?;95825;Some-college;10;Widowed;?;Not-in-family;White;Female;0;0;3;United-States;<=50K +20;?;29810;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +40;Federal-gov;77332;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +63;Private;113324;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;96299;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;45;United-States;>50K +51;Private;237729;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;200973;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;Self-emp-not-inc;212456;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Male;0;0;20;United-States;<=50K +33;Self-emp-not-inc;131568;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;66;United-States;<=50K +49;Private;185859;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +20;Private;231981;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;32;United-States;<=50K +26;Private;78172;Some-college;10;Married-AF-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;164135;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Private;171216;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +47;Private;140664;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Private;249277;HS-grad;9;Never-married;Exec-managerial;Own-child;Black;Male;0;0;75;United-States;<=50K +53;Federal-gov;117847;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;52372;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +53;Private;137428;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +65;Private;169047;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;10;United-States;<=50K +68;Private;339168;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +30;Private;504725;10th;6;Never-married;Sales;Other-relative;White;Male;0;0;18;Guatemala;<=50K +28;Private;132870;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +54;Local-gov;135840;10th;6;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;35644;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +22;Private;198148;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;50;United-States;<=50K +25;Private;220098;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +19;Private;262515;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;20;United-States;<=50K +19;?;423863;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +32;Federal-gov;111567;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;Private;194096;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +51;Local-gov;420917;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;197871;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;>50K +46;Local-gov;253116;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +38;Private;206535;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;50;United-States;<=50K +26;State-gov;70447;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +46;Private;201217;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;209970;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Local-gov;175262;Masters;14;Married-civ-spouse;Prof-specialty;Other-relative;White;Male;0;0;35;United-States;<=50K +51;Self-emp-inc;304955;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Private;181265;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;<=50K +24;Private;200973;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Self-emp-not-inc;37440;Bachelors;13;Never-married;Farming-fishing;Unmarried;White;Male;0;0;50;United-States;<=50K +31;Private;395170;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;Amer-Indian-Eskimo;Female;0;0;24;Mexico;<=50K +54;?;32385;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +34;Private;353213;Assoc-acdm;12;Separated;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +19;Private;38619;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;66;United-States;<=50K +21;Private;177711;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +21;Private;190761;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +23;Private;27776;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;24;United-States;<=50K +37;Federal-gov;470663;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;71738;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;46;United-States;>50K +57;Private;74156;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +24;Private;123983;11th;7;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +43;Private;193494;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +32;?;169886;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;20;?;<=50K +40;Private;130571;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;83444;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Local-gov;151369;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;56630;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;117095;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Federal-gov;189985;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;?;34862;Some-college;10;Never-married;?;Own-child;Amer-Indian-Eskimo;Male;0;0;72;United-States;<=50K +37;Self-emp-inc;126675;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +43;State-gov;199806;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +29;Private;57596;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;103459;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +28;Private;282398;Some-college;10;Separated;Tech-support;Unmarried;White;Male;0;0;40;United-States;>50K +38;Private;298841;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +22;?;306031;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;306467;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +20;Private;189888;12th;8;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;83861;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;117393;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;129934;Some-college;10;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;40;?;<=50K +51;Private;179010;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +31;Private;375680;Bachelors;13;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;40;?;<=50K +48;Private;316101;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Local-gov;175750;HS-grad;9;Divorced;Transport-moving;Unmarried;Black;Male;0;0;40;United-States;<=50K +50;State-gov;229272;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +46;Private;142828;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +68;Private;76371;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;>50K +23;Self-emp-not-inc;216129;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +49;Private;107425;Masters;14;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;611029;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +30;Local-gov;363032;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +34;Private;137900;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +22;Private;322674;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;23778;7th-8th;4;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;147845;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;31;United-States;<=50K +36;Private;175759;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +51;Self-emp-inc;166459;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;128212;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;40;Vietnam;>50K +54;Federal-gov;127455;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;>50K +63;Private;134699;HS-grad;9;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;25;United-States;<=50K +51;Private;254230;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +63;Self-emp-not-inc;159715;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Local-gov;116286;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +27;Private;146719;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +35;Private;361888;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +31;?;26553;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;25;United-States;>50K +46;Self-emp-not-inc;32825;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +53;Private;225768;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +26;Federal-gov;393728;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;0;0;24;United-States;<=50K +43;Private;160369;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +54;Federal-gov;33863;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +62;?;182687;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;45;United-States;>50K +57;State-gov;141459;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +19;?;174233;Some-college;10;Never-married;?;Own-child;Black;Male;0;0;24;United-States;<=50K +29;Local-gov;95393;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +20;Private;221095;HS-grad;9;Never-married;Craft-repair;Other-relative;Black;Male;0;0;40;United-States;<=50K +18;?;437851;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +22;?;131230;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;495888;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;El-Salvador;<=50K +69;Private;185691;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;20;United-States;<=50K +53;Local-gov;549341;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;35;United-States;<=50K +28;Private;247445;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;199566;Bachelors;13;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +33;Self-emp-inc;139057;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;84;Taiwan;>50K +48;Private;185039;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +61;Private;166124;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +48;Private;109275;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;408328;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;186338;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;?;130856;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;251579;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;14;United-States;<=50K +47;Private;76612;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;22546;Bachelors;13;Never-married;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +72;Private;53684;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;183627;11th;7;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;73203;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +57;Private;108426;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;48;England;<=50K +50;Private;116287;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;Columbia;<=50K +45;Self-emp-inc;145697;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +52;Private;326156;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +53;Private;201127;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +36;Private;250791;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;<=50K +46;Private;328216;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;400443;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +75;Private;95985;5th-6th;3;Widowed;Other-service;Unmarried;Black;Male;0;0;10;United-States;<=50K +32;Local-gov;127651;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;Private;250679;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;103950;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;200199;11th;7;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +46;State-gov;295791;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +39;Private;191841;Assoc-acdm;12;Separated;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Private;82622;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Private;160728;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +63;Local-gov;109849;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;21;United-States;<=50K +28;Private;339897;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;Mexico;<=50K +28;?;37215;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;45;United-States;<=50K +49;Private;371299;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +43;Private;421837;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +38;Private;29702;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +39;Private;117381;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;62;England;<=50K +42;?;240027;HS-grad;9;Divorced;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;Private;338740;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +45;?;28359;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;10;United-States;<=50K +29;?;315026;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;173005;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +44;Private;286750;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;163985;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;24;United-States;<=50K +30;Private;219318;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;35;Puerto-Rico;<=50K +52;Self-emp-not-inc;103794;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +42;Private;310632;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +39;Private;153976;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +43;Private;174575;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Male;0;0;45;United-States;<=50K +30;Private;207253;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;England;<=50K +83;?;251951;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +39;Private;746786;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +41;Private;308296;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;20;United-States;<=50K +25;Private;109009;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;?;117751;Assoc-acdm;12;Divorced;?;Not-in-family;White;Male;0;0;8;United-States;<=50K +44;State-gov;296326;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;120277;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;Ireland;<=50K +21;Private;193219;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;35;Jamaica;<=50K +41;Private;86399;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +24;Private;215251;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +67;Self-emp-not-inc;124470;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;228649;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;38;United-States;<=50K +50;Self-emp-not-inc;386397;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +48;Private;96798;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +55;?;106707;Assoc-acdm;12;Married-civ-spouse;?;Husband;Black;Male;0;0;20;United-States;>50K +50;Private;139464;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;36;Ireland;<=50K +64;State-gov;550848;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +49;Private;68505;9th;5;Divorced;Other-service;Not-in-family;Black;Male;0;0;37;United-States;<=50K +20;Private;122215;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;52;United-States;<=50K +30;Private;159442;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;80638;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;30;China;<=50K +52;Private;192390;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +22;Private;191324;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;25;United-States;<=50K +77;?;147284;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;14;United-States;<=50K +19;State-gov;73009;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;15;United-States;<=50K +52;Private;177858;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Male;0;0;55;United-States;>50K +42;Private;163003;Bachelors;13;Married-spouse-absent;Tech-support;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +35;Private;95551;HS-grad;9;Separated;Exec-managerial;Not-in-family;White;Female;0;0;36;United-States;<=50K +27;Private;125298;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +54;State-gov;198186;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;38;United-States;<=50K +37;Private;182668;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +28;Private;124905;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +63;Private;171635;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;376240;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;42;United-States;<=50K +28;Private;157391;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +23;?;114357;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;178134;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +31;Private;207201;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;124483;Bachelors;13;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;50;?;>50K +64;Private;102103;HS-grad;9;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;50;United-States;<=50K +40;Private;92036;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +59;Local-gov;236426;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +22;Private;400966;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;404573;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;44;United-States;<=50K +35;Private;227571;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +20;Private;145917;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +35;Local-gov;190226;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;356555;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +28;Private;66473;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +37;?;172256;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +25;Self-emp-inc;163039;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +37;Private;89559;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;?;35507;Some-college;10;Never-married;?;Own-child;White;Female;0;0;45;United-States;<=50K +31;Private;163303;Assoc-voc;11;Divorced;Sales;Own-child;White;Female;0;0;38;United-States;<=50K +41;Private;192712;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +31;Private;381153;10th;6;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +44;Private;222434;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;34706;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;47;United-States;<=50K +57;Self-emp-not-inc;47857;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;195216;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;12;United-States;<=50K +29;Local-gov;329426;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;184105;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;211385;Assoc-acdm;12;Never-married;Other-service;Not-in-family;Black;Male;0;0;35;Jamaica;<=50K +21;Private;61777;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;70;United-States;<=50K +34;Self-emp-not-inc;320194;Prof-school;15;Separated;Prof-specialty;Unmarried;White;Male;0;0;48;United-States;>50K +24;Private;199444;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;15;United-States;<=50K +28;Private;312588;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;168675;HS-grad;9;Separated;Transport-moving;Own-child;White;Male;0;0;50;United-States;<=50K +35;Private;87556;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;State-gov;220421;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Federal-gov;404599;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Private;99065;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;40;Poland;>50K +57;Local-gov;109973;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;246652;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;57423;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +23;Private;291248;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Black;Male;0;0;40;United-States;<=50K +50;Private;163708;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Self-emp-not-inc;240358;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +28;Private;25955;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +44;Private;101593;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +29;Self-emp-not-inc;227890;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +31;Private;225053;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +27;Private;228472;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +34;Private;245378;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +27;Private;35032;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +31;Private;258849;Assoc-voc;11;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;190115;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;63910;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +40;Private;510072;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +28;Private;210867;11th;7;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;263024;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;306785;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Self-emp-inc;104333;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +66;Private;340734;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;288585;HS-grad;9;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;20;South;<=50K +38;Private;241765;11th;7;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;60;United-States;<=50K +25;Private;111058;Assoc-acdm;12;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;104662;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;22;United-States;<=50K +90;Private;313986;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +41;Local-gov;52037;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;?;146589;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;254221;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Self-emp-not-inc;211785;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Female;0;0;20;United-States;<=50K +59;Private;160362;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +19;?;208874;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;169631;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +52;Private;202956;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;80467;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +28;Private;407672;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;243425;HS-grad;9;Divorced;Other-service;Other-relative;White;Female;0;0;50;Peru;<=50K +50;?;174964;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;99;United-States;<=50K +36;Private;347491;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +34;Private;146161;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +23;Private;449432;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +19;?;175499;11th;7;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +27;Local-gov;134813;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;52;United-States;<=50K +31;Local-gov;190401;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;260617;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;36;United-States;<=50K +31;Private;45604;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;54;United-States;<=50K +59;Private;67841;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +19;Private;430471;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;194698;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;94235;Bachelors;13;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +57;Private;188330;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;78;United-States;<=50K +51;Local-gov;146181;9th;5;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +21;Private;177125;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;20;United-States;<=50K +30;Self-emp-inc;68330;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;95636;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +40;Private;238329;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +52;Private;416129;Preschool;1;Married-civ-spouse;Other-service;Not-in-family;White;Male;0;0;40;El-Salvador;<=50K +23;Private;285004;Bachelors;13;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;50;Taiwan;<=50K +25;Private;186294;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Private;188786;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +38;State-gov;31352;Some-college;10;Divorced;Protective-serv;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;>50K +22;Private;197613;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +65;Private;361721;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +50;Private;144968;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;15;United-States;<=50K +25;Private;178037;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;306985;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;87928;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +44;Private;242619;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;154165;9th;5;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;511331;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;38;United-States;<=50K +65;Local-gov;221026;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +56;Self-emp-not-inc;222182;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;45;United-States;<=50K +23;Private;202344;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;190423;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +24;Private;238917;5th-6th;3;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;El-Salvador;<=50K +40;Self-emp-inc;37997;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;147098;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +38;Private;278253;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +23;Private;195411;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Private;76196;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +20;Self-emp-not-inc;186014;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;Germany;<=50K +29;Private;205903;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +43;State-gov;125405;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;219838;12th;8;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;State-gov;19395;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +31;Private;223327;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +52;Private;114062;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;95654;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;Iran;>50K +38;Private;177305;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +66;?;299616;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;117681;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;237651;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +33;State-gov;150570;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;?;174714;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +33;Private;144064;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +66;?;107112;7th-8th;4;Never-married;?;Other-relative;Black;Male;0;0;30;United-States;<=50K +20;Private;54152;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;?;<=50K +28;Private;152951;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;190487;HS-grad;9;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;28;Ecuador;<=50K +25;Private;306666;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;45;United-States;<=50K +31;Self-emp-not-inc;226624;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +49;Private;157569;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;State-gov;22966;Some-college;10;Married-spouse-absent;Tech-support;Unmarried;White;Male;0;0;20;United-States;<=50K +52;Private;379682;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;White;Female;0;0;20;United-States;>50K +29;Private;446559;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;<=50K +18;Private;41794;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +31;Local-gov;90409;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +23;Private;125491;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;35;Vietnam;<=50K +27;?;129661;Assoc-voc;11;Married-civ-spouse;?;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;>50K +54;Self-emp-not-inc;104748;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +50;Local-gov;169182;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;49;Dominican-Republic;<=50K +24;Private;122272;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Female;0;0;40;United-States;<=50K +17;?;114798;11th;7;Never-married;?;Own-child;White;Female;0;0;18;United-States;<=50K +49;Self-emp-inc;289707;HS-grad;9;Separated;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +54;Local-gov;137691;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +49;Private;166789;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +36;Local-gov;348728;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +23;Private;348092;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;Haiti;<=50K +63;Private;154526;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Private;288371;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Canada;>50K +23;Private;182342;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;244366;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +66;Private;102423;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;United-States;<=50K +25;Private;259688;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;98733;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;20;United-States;<=50K +67;Self-emp-not-inc;141797;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;327202;12th;8;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;76996;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;38;United-States;<=50K +34;Private;260560;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;370990;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;129010;12th;8;Never-married;Craft-repair;Own-child;White;Male;0;0;10;United-States;<=50K +21;Private;452640;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +76;Self-emp-inc;120796;9th;5;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +51;Federal-gov;45334;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;70;?;<=50K +26;Private;229523;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;56;United-States;<=50K +18;Private;127388;12th;8;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +18;?;395567;11th;7;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +59;Private;193895;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;155343;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;72;United-States;<=50K +25;Private;73895;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +48;Private;107682;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;10;United-States;<=50K +64;Private;321166;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;5;United-States;<=50K +47;Local-gov;154940;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;>50K +26;Private;103700;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;63509;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +21;Private;243842;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +54;?;187221;7th-8th;4;Never-married;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +30;Private;58597;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;44;United-States;<=50K +41;Self-emp-not-inc;190290;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;62165;Some-college;10;Never-married;Sales;Other-relative;Black;Male;0;0;30;United-States;<=50K +20;?;307149;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +24;Private;280134;10th;6;Never-married;Sales;Not-in-family;White;Male;0;0;49;El-Salvador;<=50K +26;Private;118736;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +25;Private;171114;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;48;United-States;<=50K +35;Private;169638;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;36;United-States;<=50K +41;Private;125461;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +33;Private;145434;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;152182;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +27;Self-emp-inc;233724;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Male;0;0;38;United-States;<=50K +32;Private;153963;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +51;Local-gov;88120;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +38;Private;96330;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Local-gov;66118;Some-college;10;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;25;United-States;<=50K +38;Self-emp-not-inc;53628;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;White;Male;0;0;35;United-States;<=50K +54;Private;174865;9th;5;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +30;Private;66194;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;Outlying-US(Guam-USVI-etc);<=50K +31;Private;73796;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Female;0;0;30;United-States;<=50K +26;State-gov;28366;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;237865;Masters;14;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +61;Private;195453;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +24;Private;116934;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +22;?;87867;12th;8;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Private;456399;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;263608;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;263498;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;183765;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;?;<=50K +39;Local-gov;113253;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +20;Private;138768;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;302146;11th;7;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +68;Private;253866;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +28;Federal-gov;214858;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;48;United-States;<=50K +43;Private;243476;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;169104;Some-college;10;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;103218;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;57233;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;228320;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +20;Private;217421;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +46;Private;185041;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;75;United-States;>50K +32;Private;261059;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +46;Private;59767;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +26;Private;333541;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;24;United-States;<=50K +20;Private;133352;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +36;Private;99270;HS-grad;9;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;40;United-States;<=50K +49;Private;204629;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;281021;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;275385;Some-college;10;Never-married;Other-service;Other-relative;White;Male;0;0;25;United-States;<=50K +52;Federal-gov;129177;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;385591;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;?;201179;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +72;Private;38360;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;16;United-States;<=50K +30;Local-gov;73796;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;67671;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;257621;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +22;Private;180052;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +59;Private;656036;Bachelors;13;Separated;Adm-clerical;Unmarried;White;Male;0;0;60;United-States;<=50K +46;Private;215943;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;488720;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +64;Federal-gov;199298;7th-8th;4;Widowed;Other-service;Unmarried;White;Female;0;0;30;Puerto-Rico;<=50K +31;Private;305692;Some-college;10;Married-civ-spouse;Sales;Wife;Black;Female;0;0;40;United-States;<=50K +64;Private;114994;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +45;Private;88265;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;175413;HS-grad;9;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;40;Jamaica;<=50K +43;Private;161226;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +23;Private;208598;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +49;Self-emp-not-inc;200471;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;256609;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +49;Private;176684;Assoc-voc;11;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;206512;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;212640;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;85;United-States;<=50K +47;Private;148724;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;<=50K +41;Private;266510;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +34;Local-gov;240252;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;358975;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +20;?;124242;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;434710;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +25;Private;204338;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;30;?;<=50K +46;Private;241844;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;191342;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;<=50K +41;Private;221947;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;>50K +30;Private;65278;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +54;Private;133403;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;166416;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;<=50K +58;?;142158;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;12;United-States;<=50K +21;Private;221480;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;25;Ecuador;<=50K +35;Self-emp-not-inc;189878;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +35;Private;278403;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;>50K +19;Private;184710;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +48;Private;177775;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;?;275943;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;Nicaragua;<=50K +65;Self-emp-not-inc;225473;Some-college;10;Widowed;Craft-repair;Not-in-family;White;Female;0;0;35;United-States;<=50K +40;Private;289403;Bachelors;13;Separated;Adm-clerical;Unmarried;Black;Male;0;0;35;United-States;<=50K +26;Private;269060;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;449354;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;214413;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;80058;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +22;Self-emp-not-inc;123440;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;<=50K +37;Private;191524;Assoc-voc;11;Separated;Prof-specialty;Own-child;White;Female;0;0;38;United-States;<=50K +25;Private;308144;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +64;Private;164204;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;53;?;<=50K +46;Private;205100;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +30;Private;195750;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;27;United-States;<=50K +63;Private;149756;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +51;Local-gov;240358;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +68;Self-emp-not-inc;241174;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;16;United-States;<=50K +36;Private;356838;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;Canada;<=50K +28;Self-emp-inc;115705;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Local-gov;137142;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;296066;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;401335;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +33;?;182771;Bachelors;13;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;80;Philippines;<=50K +46;Federal-gov;162187;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;98010;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;172538;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +18;Private;80163;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +56;Self-emp-not-inc;115422;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +54;Private;100933;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;270379;HS-grad;9;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +40;Private;20109;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;Amer-Indian-Eskimo;Female;0;0;84;United-States;<=50K +22;Private;100345;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +33;Private;184901;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +28;Private;87239;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +63;Private;127363;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;12;United-States;<=50K +37;Private;143058;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +50;Federal-gov;36489;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;141698;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +40;Federal-gov;26358;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;30039;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;125159;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;Jamaica;<=50K +20;Private;246250;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;77370;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;355569;Assoc-voc;11;Never-married;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +32;Private;180603;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +42;Private;201785;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +33;Private;256211;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +27;Private;146764;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +22;?;211968;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;Iran;<=50K +29;Private;200515;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;38;United-States;<=50K +29;Private;52636;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;27049;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;20;United-States;<=50K +35;Private;111128;10th;6;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;93930;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +46;Private;33794;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;10;United-States;<=50K +45;Private;178215;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;>50K +17;Local-gov;191910;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +48;Self-emp-not-inc;133694;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;Black;Male;0;0;40;Jamaica;>50K +49;Private;148398;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;Private;133515;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +64;Private;159715;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +53;Federal-gov;174040;Some-college;10;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +52;Private;117700;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;37215;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +48;Self-emp-not-inc;317360;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +30;Private;425627;Some-college;10;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +34;Private;82623;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +19;?;63574;Some-college;10;Never-married;?;Own-child;White;Male;0;0;50;United-States;<=50K +39;Private;140854;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Private;185061;11th;7;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +17;Private;160118;12th;8;Never-married;Sales;Not-in-family;White;Female;0;0;10;?;<=50K +54;Private;282680;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +25;Private;198163;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;132749;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;12;United-States;<=50K +24;Private;399449;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;27494;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;50;Taiwan;<=50K +47;Private;368561;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;102096;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +19;Private;406078;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +52;Private;29658;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +19;?;20469;HS-grad;9;Never-married;?;Other-relative;Asian-Pac-Islander;Female;0;0;12;South;<=50K +60;Private;181953;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;28;United-States;<=50K +43;Private;304175;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;170070;Assoc-acdm;12;Divorced;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +20;?;193416;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;194908;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;357962;9th;5;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;214716;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +40;Self-emp-inc;207578;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +54;Private;146409;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;341643;Bachelors;13;Never-married;Other-service;Other-relative;White;Male;0;0;50;United-States;<=50K +52;Private;131631;11th;7;Separated;Machine-op-inspct;Unmarried;Black;Male;0;0;40;United-States;<=50K +56;?;128900;Some-college;10;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Private;417136;HS-grad;9;Divorced;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +29;Private;209301;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Canada;<=50K +29;Private;120986;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;65;United-States;<=50K +27;Private;51025;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Private;218281;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Mexico;<=50K +64;Private;114994;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;18;United-States;<=50K +53;Private;335481;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;32;United-States;<=50K +21;Private;174503;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +40;Self-emp-not-inc;230478;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;30;United-States;<=50K +52;State-gov;149650;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Iran;>50K +38;Private;149419;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +40;?;341539;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +39;Private;185099;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +56;?;132930;Masters;14;Never-married;?;Not-in-family;White;Female;0;0;50;United-States;>50K +68;Private;128472;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +24;Private;124971;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;38;United-States;<=50K +40;Self-emp-inc;344060;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;Self-emp-inc;286750;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;99;United-States;>50K +38;Private;296999;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;70;United-States;<=50K +45;Private;123681;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +18;Private;232024;11th;7;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;55;United-States;<=50K +57;Local-gov;52267;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +49;Private;119182;HS-grad;9;Separated;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +25;Private;191230;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;Yugoslavia;<=50K +52;Federal-gov;23780;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;184553;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;56;United-States;<=50K +26;Self-emp-inc;242651;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +19;Private;246226;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Self-emp-inc;86745;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +25;Private;106889;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;<=50K +21;Private;460835;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;45;United-States;<=50K +48;Self-emp-not-inc;213140;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Italy;<=50K +33;State-gov;37070;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;Canada;<=50K +31;State-gov;93589;HS-grad;9;Divorced;Protective-serv;Own-child;Other;Male;0;0;40;United-States;<=50K +26;Self-emp-not-inc;213258;HS-grad;9;Divorced;Farming-fishing;Unmarried;White;Male;0;0;65;United-States;<=50K +37;State-gov;46814;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +29;?;168873;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;30;United-States;<=50K +20;Private;284737;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +28;Private;309620;Some-college;10;Married-civ-spouse;Sales;Husband;Other;Male;0;0;60;?;<=50K +49;Private;197418;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +73;?;132737;10th;6;Never-married;?;Not-in-family;White;Male;0;0;4;United-States;<=50K +51;Private;159604;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +40;Private;123557;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;275421;Assoc-voc;11;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;167147;12th;8;Never-married;Sales;Own-child;White;Male;0;0;24;United-States;<=50K +41;Private;197583;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +46;Private;117502;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +64;Private;180401;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +50;Self-emp-not-inc;146603;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;State-gov;143822;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;>50K +21;Private;51985;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;State-gov;48121;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;United-States;<=50K +39;Federal-gov;65324;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +30;Private;302149;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +26;Private;159897;Some-college;10;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +43;Private;416338;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +59;Private;370615;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;60;United-States;<=50K +27;Private;219371;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;Jamaica;<=50K +55;Private;120970;10th;6;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +20;Private;22966;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;12;Canada;<=50K +25;Private;34541;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;36;Canada;<=50K +28;Private;191027;Assoc-acdm;12;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;107458;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +60;Private;121832;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +25;Private;73839;11th;7;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;109165;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +50;State-gov;103063;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Private;111979;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;47;United-States;<=50K +35;Private;150125;Assoc-voc;11;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;?;301853;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;118001;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +49;Private;149337;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Private;36601;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +39;Private;279272;Assoc-acdm;12;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;60;United-States;<=50K +35;Private;181020;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;60;United-States;<=50K +52;Private;165998;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;218136;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;Outlying-US(Guam-USVI-etc);<=50K +20;Self-emp-inc;182200;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +46;Private;39363;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;10;?;<=50K +24;Private;140001;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;193260;Bachelors;13;Married-civ-spouse;Craft-repair;Other-relative;Asian-Pac-Islander;Male;0;0;30;India;<=50K +21;Private;191243;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +37;Federal-gov;207887;Bachelors;13;Divorced;Exec-managerial;Other-relative;White;Female;0;0;50;United-States;<=50K +43;Federal-gov;211450;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;184759;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;26;United-States;<=50K +47;Private;197836;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +61;Private;232308;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +21;?;189888;Assoc-acdm;12;Never-married;?;Not-in-family;White;Male;0;0;55;United-States;<=50K +35;Private;301614;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +60;Private;146674;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;225291;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Local-gov;148509;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;35;India;<=50K +56;Private;136413;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;126060;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;73064;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;35;United-States;<=50K +19;Private;39026;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +28;Self-emp-not-inc;33035;12th;8;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +43;Private;193494;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +63;Local-gov;147440;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +22;?;153131;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;64671;HS-grad;9;Divorced;Handlers-cleaners;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +20;Private;174391;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +48;Private;377757;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +30;Local-gov;364310;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;Germany;<=50K +31;Private;110643;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;70240;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;24;Philippines;<=50K +57;State-gov;32694;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +33;Private;264936;HS-grad;9;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +27;Private;367329;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;56026;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +22;Private;186452;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +50;Private;125417;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;>50K +40;Self-emp-not-inc;242082;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +37;Private;31023;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;51;United-States;<=50K +40;?;397346;Assoc-acdm;12;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;State-gov;261979;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;55507;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +22;?;291407;12th;8;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +18;Private;353358;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +33;Private;235109;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;208180;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;State-gov;423561;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;403671;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Local-gov;49325;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;370494;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +25;Private;267012;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +33;Private;191856;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Private;80445;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;379798;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +32;Local-gov;168387;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;274809;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +58;Private;233193;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;27;United-States;<=50K +19;Private;236396;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;688355;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Self-emp-inc;37019;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +43;Private;122975;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;21;Trinadad&Tobago;<=50K +52;State-gov;349795;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;229846;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Female;0;0;40;?;<=50K +43;Private;108945;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +22;Private;237498;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;324019;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;82488;Some-college;10;Divorced;Sales;Unmarried;Asian-Pac-Islander;Female;0;0;38;United-States;<=50K +54;Private;206964;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Private;37088;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;152540;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +65;Private;143554;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +30;Private;126242;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +22;Private;127185;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;210184;11th;7;Separated;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;?;117528;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;>50K +23;Private;182117;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;60;United-States;<=50K +42;Private;220049;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +39;Self-emp-not-inc;247975;Some-college;10;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;30;United-States;<=50K +55;Private;50164;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +24;State-gov;123160;Masters;14;Married-spouse-absent;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;10;China;<=50K +53;Private;79324;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;Private;129100;11th;7;Separated;Other-service;Unmarried;Black;Female;0;0;60;United-States;<=50K +40;Private;210275;HS-grad;9;Separated;Transport-moving;Unmarried;Black;Female;0;0;40;United-States;<=50K +26;Private;171114;Assoc-voc;11;Separated;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +22;Private;201799;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +35;?;200426;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;12;United-States;<=50K +20;?;24395;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;20;United-States;<=50K +43;Private;191149;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Local-gov;34173;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;United-States;<=50K +30;Private;350979;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Laos;<=50K +41;Private;147314;HS-grad;9;Married-civ-spouse;Sales;Husband;Amer-Indian-Eskimo;Male;0;0;50;United-States;<=50K +38;Private;136081;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +77;?;232894;9th;5;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;373403;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;120601;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +32;Federal-gov;72338;Assoc-voc;11;Never-married;Prof-specialty;Other-relative;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +27;Private;129624;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;State-gov;328697;Some-college;10;Divorced;Protective-serv;Other-relative;White;Male;0;0;45;United-States;<=50K +40;Private;191196;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;191117;11th;7;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +49;Private;110243;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +17;Private;181580;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +29;Private;89030;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Self-emp-not-inc;277700;Some-college;10;Separated;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +58;?;198478;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +29;Private;250679;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;168837;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;24;Canada;>50K +30;Private;142675;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;299050;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +47;Private;121958;7th-8th;4;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +28;Private;176683;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;France;<=50K +46;Private;34377;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;209833;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +66;State-gov;41506;10th;6;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;147206;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;12;United-States;<=50K +21;Private;315065;7th-8th;4;Never-married;Other-service;Other-relative;White;Male;0;0;48;Mexico;<=50K +59;Private;381851;9th;5;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Local-gov;185769;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;312667;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;343925;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;Jamaica;<=50K +26;Private;195994;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +48;Private;398843;Some-college;10;Separated;Sales;Unmarried;Black;Female;0;0;35;United-States;<=50K +31;Private;73514;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +36;Private;288049;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +48;Private;54759;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +33;Private;401104;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;>50K +19;?;124884;9th;5;Never-married;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +53;Private;113995;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +18;Private;146378;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;?;<=50K +34;Private;34374;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;Private;162187;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +33;Local-gov;147654;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +35;Private;182467;Assoc-voc;11;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;44;United-States;<=50K +22;Private;183970;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +35;Private;332588;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +45;Private;26781;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;8;United-States;<=50K +17;Private;48610;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;45;United-States;<=50K +50;Private;162632;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +38;Local-gov;91711;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +46;Private;179048;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;?;<=50K +64;Private;102470;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Self-emp-not-inc;123170;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;10;United-States;<=50K +32;Private;164243;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;>50K +17;Private;262511;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +61;Private;51170;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +40;State-gov;91949;Doctorate;16;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +21;Private;123727;HS-grad;9;Never-married;Exec-managerial;Other-relative;White;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;120301;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;250967;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;Federal-gov;285432;Assoc-acdm;12;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Private;36235;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;?;317219;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;>50K +51;Local-gov;110965;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;123283;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;15;United-States;<=50K +20;?;249087;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;152940;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;376680;HS-grad;9;Never-married;Tech-support;Own-child;Black;Male;0;0;40;United-States;<=50K +56;Private;231232;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;Canada;<=50K +55;Self-emp-not-inc;168625;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;12;United-States;>50K +26;Private;33939;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;20;United-States;<=50K +32;Local-gov;190228;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;216178;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;587310;7th-8th;4;Never-married;Other-service;Other-relative;White;Male;0;0;35;Guatemala;<=50K +23;Private;155919;9th;5;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +59;Private;227386;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;138152;12th;8;Never-married;Craft-repair;Other-relative;Other;Male;0;0;48;Guatemala;<=50K +36;Private;167482;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;57957;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +33;Private;157747;9th;5;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;70;United-States;<=50K +60;Self-emp-not-inc;88570;Assoc-voc;11;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;15;Germany;>50K +40;Private;273308;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;48;Mexico;<=50K +48;Private;216292;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;43;United-States;<=50K +27;Self-emp-not-inc;131298;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +19;Private;386378;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +38;Private;179668;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +26;Private;210812;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;43;United-States;<=50K +20;Private;215247;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +32;Federal-gov;125856;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;74631;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;13;United-States;<=50K +22;Private;24008;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;308334;1st-4th;2;Widowed;Other-service;Unmarried;Other;Female;0;0;30;Mexico;<=50K +39;Private;245361;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;25;United-States;<=50K +79;Self-emp-not-inc;158319;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +60;?;204486;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;>50K +24;Private;314823;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;Dominican-Republic;<=50K +23;Private;126550;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +29;Private;114224;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;State-gov;64292;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;43;United-States;<=50K +69;?;628797;Some-college;10;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +55;Local-gov;219775;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +43;Private;212894;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +23;Private;260019;7th-8th;4;Never-married;Farming-fishing;Unmarried;Other;Male;0;0;36;Mexico;<=50K +29;Private;228075;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;35;Mexico;<=50K +22;Private;239806;Assoc-voc;11;Never-married;Other-service;Other-relative;White;Female;0;0;40;Mexico;<=50K +22;Private;324637;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;42;United-States;<=50K +29;Private;194200;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;45;United-States;<=50K +25;State-gov;129200;Some-college;10;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +33;Federal-gov;207172;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;135312;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +31;Private;100734;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;28;United-States;<=50K +55;Private;110871;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +47;?;224108;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;107762;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Private;183611;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Male;0;0;55;Germany;<=50K +62;Local-gov;249078;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +65;Self-emp-inc;208452;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +23;Private;302195;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +60;?;199947;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;32;United-States;<=50K +47;Private;379118;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;60;United-States;>50K +50;Self-emp-inc;174855;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +70;?;173736;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +32;Self-emp-not-inc;39369;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Federal-gov;196348;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +76;Private;97077;10th;6;Widowed;Sales;Unmarried;Black;Female;0;0;12;United-States;<=50K +54;Private;200098;Bachelors;13;Divorced;Sales;Not-in-family;Black;Female;0;0;60;United-States;<=50K +32;Federal-gov;127651;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Private;315128;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;52;United-States;<=50K +31;Federal-gov;206823;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;50;United-States;>50K +30;Private;112115;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;Ireland;>50K +63;?;203821;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;250051;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;10;United-States;<=50K +26;State-gov;109193;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;130849;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;8;United-States;<=50K +34;Local-gov;43959;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +44;Self-emp-not-inc;27242;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;60;United-States;<=50K +30;Private;53158;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;206520;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;164190;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +22;Private;287988;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +28;?;200819;7th-8th;4;Divorced;?;Own-child;White;Male;0;0;84;United-States;<=50K +23;Private;83891;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;363418;Bachelors;13;Separated;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +19;Private;278870;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +25;Private;228608;Some-college;10;Never-married;Craft-repair;Other-relative;Asian-Pac-Islander;Female;0;0;40;Cambodia;<=50K +24;Private;184400;HS-grad;9;Never-married;Transport-moving;Own-child;Asian-Pac-Islander;Male;0;0;30;?;<=50K +46;Private;263568;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;117381;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +41;Federal-gov;83411;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +40;Self-emp-not-inc;49156;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +44;Private;421449;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;238944;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;188982;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;20;United-States;>50K +48;Private;175925;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +34;Private;164190;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;232914;Assoc-voc;11;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +46;Self-emp-inc;120121;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +36;Local-gov;180805;HS-grad;9;Never-married;Transport-moving;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +59;Local-gov;161944;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;38;United-States;<=50K +29;Private;319149;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Mexico;<=50K +50;?;22428;Masters;14;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;290528;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;123984;Assoc-acdm;12;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;35;Philippines;<=50K +48;Private;34186;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +49;State-gov;55938;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +33;Private;209900;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;150361;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +69;?;164102;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;>50K +59;Private;252714;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;30;Italy;<=50K +30;Private;205204;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +31;Local-gov;168906;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +30;Private;112115;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +27;Private;116531;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;?;202994;Some-college;10;Never-married;?;Own-child;White;Female;0;0;16;United-States;<=50K +24;Private;341294;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;216734;Bachelors;13;Divorced;Sales;Unmarried;White;Female;0;0;50;United-States;<=50K +51;Private;182187;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;35;United-States;<=50K +34;Private;424988;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +47;Private;379118;HS-grad;9;Divorced;Other-service;Unmarried;Black;Male;0;0;9;United-States;<=50K +47;Private;168232;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;44;United-States;>50K +20;Private;147171;Some-college;10;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +34;Self-emp-inc;207668;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;54;?;>50K +31;Private;193650;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;200187;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +52;Private;188644;5th-6th;3;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +56;Private;398067;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;29658;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;154966;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +81;Private;364099;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +28;?;291374;10th;6;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +57;Federal-gov;97837;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;>50K +34;Private;117983;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;?;345497;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;64167;Assoc-voc;11;Never-married;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +60;Private;225526;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;32;United-States;<=50K +37;Federal-gov;289653;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;179462;7th-8th;4;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Federal-gov;67317;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;77764;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;253438;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +31;Private;150309;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Female;0;0;70;United-States;<=50K +47;Self-emp-not-inc;83064;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +60;Self-emp-not-inc;376973;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;>50K +75;Private;311184;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;24;United-States;<=50K +43;Local-gov;159449;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;168288;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;275190;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;189838;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +57;Self-emp-inc;101338;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +43;Private;331894;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +18;Self-emp-not-inc;40293;HS-grad;9;Never-married;Farming-fishing;Other-relative;White;Male;0;0;40;United-States;<=50K +41;Local-gov;88904;Bachelors;13;Separated;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;145041;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Dominican-Republic;<=50K +41;State-gov;363591;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;267859;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;El-Salvador;<=50K +58;Private;190747;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;162869;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;65;United-States;<=50K +33;Private;141229;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;Self-emp-not-inc;174216;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +25;Private;366416;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;172538;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +35;Private;193026;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +49;Local-gov;337768;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Local-gov;179059;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;99549;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;72619;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +42;State-gov;55764;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Private;30267;11th;7;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;>50K +25;Private;308144;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +26;Private;282304;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +26;?;176077;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;142719;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Private;114973;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;30;United-States;<=50K +33;Federal-gov;159548;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +43;Private;91209;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;196564;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +51;Self-emp-not-inc;149220;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;75;United-States;<=50K +21;Private;169699;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +23;Private;218215;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +30;Private;156718;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;55720;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +38;Self-emp-inc;257250;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +20;Private;194630;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;196266;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Local-gov;197332;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;97842;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;57324;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +43;Private;116852;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;36;Portugal;>50K +37;Private;38468;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Local-gov;188808;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +41;Private;187322;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +38;Private;168680;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +23;Private;256755;Bachelors;13;Never-married;Handlers-cleaners;Other-relative;White;Female;0;0;40;Cuba;<=50K +18;Private;188476;11th;7;Never-married;Exec-managerial;Own-child;White;Male;0;0;20;United-States;<=50K +47;Private;30457;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;252752;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;8;United-States;<=50K +41;Self-emp-not-inc;443508;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;244408;Some-college;10;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;24;Vietnam;<=50K +41;Private;178983;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +30;Local-gov;247328;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;201732;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +35;Private;246829;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +28;?;290267;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;18;United-States;<=50K +29;Private;119170;Some-college;10;Separated;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;207923;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +48;State-gov;170142;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +44;Self-emp-not-inc;187164;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;60;United-States;<=50K +34;Local-gov;303867;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;291429;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;213179;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;>50K +31;State-gov;111843;Assoc-acdm;12;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +47;Federal-gov;68493;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +46;Federal-gov;340718;11th;7;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;194059;12th;8;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +28;State-gov;286310;HS-grad;9;Married-civ-spouse;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;207202;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +33;Self-emp-inc;132601;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +17;?;139183;10th;6;Never-married;?;Own-child;White;Female;0;0;15;United-States;<=50K +41;Private;160785;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Local-gov;225605;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;<=50K +24;Private;190290;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +49;Private;164799;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +60;Federal-gov;21876;Some-college;10;Divorced;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +44;Private;160785;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +63;Self-emp-inc;272425;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;168538;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +45;Self-emp-inc;204205;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +36;Private;169926;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Local-gov;205024;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;8;United-States;<=50K +41;Private;374764;Bachelors;13;Widowed;Exec-managerial;Unmarried;White;Male;0;0;20;United-States;<=50K +25;Private;108779;Masters;14;Separated;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +20;?;293136;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +60;Private;227332;Assoc-voc;11;Widowed;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Local-gov;246308;11th;7;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;Puerto-Rico;<=50K +28;Private;51331;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;16;United-States;>50K +31;Private;153078;Assoc-acdm;12;Never-married;Craft-repair;Own-child;Other;Male;0;0;50;United-States;<=50K +47;Private;169180;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +45;Self-emp-not-inc;193451;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +51;Private;305147;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;138892;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +34;Private;223267;HS-grad;9;Never-married;Exec-managerial;Other-relative;White;Male;0;0;50;United-States;<=50K +19;Private;29250;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +51;?;203953;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +46;State-gov;29696;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;632613;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;Mexico;<=50K +56;Private;282023;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +29;Private;77760;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +46;Self-emp-not-inc;148599;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +55;Private;414994;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;499249;HS-grad;9;Married-spouse-absent;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +45;?;144354;9th;5;Separated;?;Own-child;Black;Male;0;0;40;United-States;<=50K +41;Private;252058;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;?;99543;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +34;Private;117963;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;194652;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +29;Private;299705;Some-college;10;Never-married;Handlers-cleaners;Unmarried;Black;Male;0;0;37;United-States;<=50K +19;Federal-gov;27433;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +47;Local-gov;39986;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-inc;135342;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +52;Private;270142;Assoc-voc;11;Separated;Exec-managerial;Unmarried;Black;Female;0;0;60;United-States;<=50K +33;Self-emp-not-inc;118267;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +29;Private;266043;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;35633;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;74568;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;214816;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +43;Private;222971;5th-6th;3;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;Mexico;<=50K +31;Private;259425;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;Self-emp-inc;212120;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;245880;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;60;United-States;<=50K +58;Local-gov;54947;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +28;Private;161674;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;62346;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;227236;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;283033;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;251229;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +76;Private;199949;9th;5;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;13;United-States;<=50K +23;State-gov;305498;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;203836;5th-6th;3;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;State-gov;79440;Masters;14;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;30;Japan;<=50K +48;Local-gov;142719;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +56;Private;119859;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;>50K +32;Private;141410;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +44;Local-gov;202872;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;25;United-States;<=50K +27;Private;198813;HS-grad;9;Divorced;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +33;Federal-gov;129707;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;445758;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Mexico;<=50K +18;?;30246;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +44;Private;173981;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;108506;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +34;Private;134886;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Self-emp-inc;282913;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Cuba;<=50K +59;Local-gov;196013;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Federal-gov;348491;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;>50K +52;Private;416164;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Other;Male;0;0;49;Mexico;<=50K +17;Private;121037;12th;8;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +29;Private;103111;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;Canada;<=50K +63;Self-emp-not-inc;147589;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +20;Private;24008;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;24;United-States;<=50K +50;Self-emp-not-inc;175456;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;84774;HS-grad;9;Married-civ-spouse;Priv-house-serv;Wife;White;Female;0;0;30;United-States;<=50K +27;Private;194590;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;25;United-States;<=50K +28;Private;134566;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +55;Private;211678;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +44;Federal-gov;44822;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;State-gov;144586;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;119156;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;371987;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;State-gov;144125;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Self-emp-not-inc;121124;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +46;Private;58126;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;318518;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;296509;7th-8th;4;Separated;Farming-fishing;Not-in-family;White;Male;0;0;45;Mexico;<=50K +32;Private;473133;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +52;Private;155434;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +39;Private;56648;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;47;United-States;<=50K +22;State-gov;119838;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +26;Private;330695;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +26;State-gov;58039;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;313022;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +42;Private;178134;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +40;Private;165309;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;43;United-States;<=50K +22;Private;216181;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;45;United-States;<=50K +62;Private;178745;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +44;Private;111067;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;?;163788;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;295591;1st-4th;2;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +45;Private;123075;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;78045;11th;7;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +32;Local-gov;255004;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;254221;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;>50K +20;Private;174714;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;15;United-States;<=50K +68;Self-emp-not-inc;450580;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +61;Private;128230;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +48;Private;192894;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +45;Private;325390;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +32;Federal-gov;128714;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;32;United-States;<=50K +35;Private;170797;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;269186;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;127671;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;211840;Some-college;10;Separated;Sales;Unmarried;Black;Female;0;0;16;United-States;<=50K +37;Private;163392;HS-grad;9;Never-married;Transport-moving;Other-relative;Asian-Pac-Islander;Male;0;0;40;?;<=50K +40;Private;201495;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;251854;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +41;Private;279297;HS-grad;9;Never-married;Sales;Not-in-family;Black;Female;0;0;60;United-States;<=50K +52;Self-emp-not-inc;195462;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;98;United-States;>50K +33;Private;170769;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;142443;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;121441;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +44;Private;275094;1st-4th;2;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +35;Private;170263;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;172571;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;0;0;58;Poland;<=50K +34;Private;178615;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;279524;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;State-gov;165201;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;45;United-States;<=50K +65;Local-gov;323006;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +29;Private;235168;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +46;Local-gov;216414;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +47;State-gov;80914;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;47;United-States;>50K +62;Private;73292;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;212165;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +90;Private;52386;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;35;United-States;<=50K +33;Private;205649;Assoc-acdm;12;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;20;United-States;<=50K +25;Private;200408;Assoc-acdm;12;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +44;Self-emp-inc;187720;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +52;Private;236180;Bachelors;13;Married-spouse-absent;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;118693;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;363130;HS-grad;9;Never-married;Other-service;Unmarried;Black;Male;0;0;18;United-States;<=50K +39;Private;225544;Masters;14;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Poland;<=50K +59;Federal-gov;243612;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Self-emp-not-inc;160786;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +49;Private;234320;7th-8th;4;Never-married;Prof-specialty;Other-relative;Black;Male;0;0;45;United-States;<=50K +34;Private;314646;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;124971;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;209184;Bachelors;13;Married-civ-spouse;Sales;Husband;Other;Male;0;0;40;Puerto-Rico;<=50K +39;State-gov;121838;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;265275;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;45522;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;120283;12th;8;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +20;Private;216972;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;116791;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +55;State-gov;26290;Assoc-voc;11;Widowed;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;0;0;38;United-States;<=50K +22;Private;216134;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +60;Self-emp-not-inc;143932;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;217120;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;State-gov;223944;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;<=50K +23;Private;185452;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;Canada;<=50K +57;Local-gov;44273;HS-grad;9;Widowed;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Private;178983;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;219288;7th-8th;4;Widowed;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +25;Private;349190;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +41;Federal-gov;57924;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +40;State-gov;270324;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;30;United-States;<=50K +38;Private;33001;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +58;Private;204021;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;Canada;<=50K +26;Private;192506;Bachelors;13;Never-married;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +57;Private;372967;10th;6;Divorced;Adm-clerical;Other-relative;White;Female;0;0;70;Germany;<=50K +42;Private;195821;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +17;?;127003;9th;5;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;124090;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;199600;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;218311;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;50;United-States;<=50K +27;Private;167336;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;39;United-States;<=50K +41;Private;59938;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;43;United-States;<=50K +28;Private;263728;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +73;?;180603;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;8;United-States;<=50K +49;Private;43910;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;<=50K +47;Private;190139;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;109001;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;49;United-States;<=50K +42;Local-gov;159931;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +32;Private;194987;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +32;Local-gov;87310;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;41;United-States;<=50K +27;Private;133937;Masters;14;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;207064;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Private;36011;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +58;Self-emp-not-inc;49884;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;229977;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +21;Private;64520;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +32;?;134886;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;2;United-States;>50K +37;Private;305379;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;202284;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +42;Self-emp-not-inc;99185;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;159662;HS-grad;9;Married-civ-spouse;Sales;Own-child;White;Male;0;0;26;United-States;>50K +67;Private;197865;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Local-gov;175149;HS-grad;9;Divorced;Transport-moving;Not-in-family;Black;Female;0;0;38;United-States;<=50K +49;Local-gov;349633;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +18;Private;242893;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +25;Private;218667;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +43;State-gov;144811;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;206861;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;?;<=50K +65;Self-emp-not-inc;226215;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;<=50K +66;Private;114447;Assoc-voc;11;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +33;Private;124187;11th;7;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;60;United-States;<=50K +17;Private;156501;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +61;?;161279;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;36;United-States;<=50K +38;Private;225707;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Cuba;>50K +43;Local-gov;115603;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;State-gov;506329;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;>50K +76;?;172637;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;>50K +42;Private;56483;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;144778;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +76;Self-emp-not-inc;33213;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;?;>50K +17;Private;137042;10th;6;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +30;Self-emp-not-inc;33308;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;158420;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;Iran;<=50K +22;Private;41763;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +53;?;220640;Bachelors;13;Divorced;?;Other-relative;Other;Female;0;0;20;United-States;<=50K +28;Private;149734;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;52;United-States;<=50K +24;Private;349691;Some-college;10;Never-married;Sales;Other-relative;Black;Female;0;0;40;United-States;<=50K +47;Private;185385;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-not-inc;174463;Assoc-voc;11;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +26;Private;236068;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;20;United-States;<=50K +63;?;445168;Bachelors;13;Widowed;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;56;United-States;<=50K +25;Private;91334;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;75;United-States;<=50K +28;Private;33895;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +36;Private;214816;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;229773;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Self-emp-inc;166386;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;35;Taiwan;<=50K +44;Private;266135;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +18;Private;300379;12th;8;Never-married;Adm-clerical;Own-child;White;Male;0;0;12;United-States;<=50K +54;Federal-gov;392502;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +61;Private;73809;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;193720;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +43;Private;316183;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;162944;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Local-gov;186888;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;>50K +27;?;330132;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +24;Private;192017;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;30;United-States;<=50K +20;State-gov;161978;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +52;Private;202930;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +57;Local-gov;323309;7th-8th;4;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;197332;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +42;Self-emp-inc;204033;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;?;<=50K +22;Private;271274;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;174242;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +21;Private;209483;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +52;Self-emp-not-inc;102346;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;<=50K +25;Private;181666;Assoc-acdm;12;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;207367;Some-college;10;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;0;40;Cuba;<=50K +35;State-gov;82622;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;<=50K +50;Private;202296;Assoc-voc;11;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Private;142182;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +48;Federal-gov;94342;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +30;Private;41493;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;Canada;<=50K +18;Private;181712;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +29;Self-emp-not-inc;164607;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;41496;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +36;Local-gov;196529;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +24;Private;157332;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;42;United-States;<=50K +30;Local-gov;154935;Assoc-acdm;12;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +23;Private;223231;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Mexico;<=50K +35;?;253860;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;20;United-States;<=50K +21;Private;362589;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +28;Private;94880;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;43;Mexico;<=50K +20;Private;309580;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;130389;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;Scotland;<=50K +21;Private;349365;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +27;Private;376936;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;179557;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;105577;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +51;Private;224207;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Federal-gov;47907;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Self-emp-not-inc;191283;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +22;State-gov;186569;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;12;United-States;<=50K +59;Private;43221;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +38;Private;161141;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;203003;HS-grad;9;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +90;Private;141758;9th;5;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;113322;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;343847;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;>50K +45;Private;214068;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +44;Private;116632;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;240160;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;516337;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +23;Self-emp-inc;284651;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;43;United-States;<=50K +39;State-gov;141420;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;42750;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;55;United-States;<=50K +54;Private;165278;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;167265;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;43;United-States;<=50K +44;Private;139907;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +31;Self-emp-inc;236415;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +25;Private;312966;9th;5;Separated;Handlers-cleaners;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +33;Private;118941;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;32;United-States;>50K +32;Private;198068;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +36;Private;373952;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;236111;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;55;United-States;>50K +80;Private;157778;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;10;United-States;<=50K +21;Private;143604;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +35;Self-emp-not-inc;319831;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +77;?;132728;Masters;14;Divorced;?;Not-in-family;White;Male;0;0;45;United-States;<=50K +35;?;61343;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;268234;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;34973;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;323790;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;55;United-States;<=50K +57;Private;319733;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Poland;>50K +21;?;180339;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +19;Private;125591;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;60772;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;45;United-States;<=50K +29;Self-emp-not-inc;141185;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +38;?;204668;Assoc-voc;11;Separated;?;Unmarried;White;Female;0;0;25;United-States;<=50K +26;Private;273792;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +40;Private;343068;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;177907;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +28;Private;144063;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +25;Self-emp-not-inc;257574;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;20;United-States;<=50K +42;Self-emp-not-inc;67065;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;183356;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;152940;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +37;Private;227128;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;45607;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;<=50K +49;Private;155489;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;?;230704;HS-grad;9;Never-married;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +24;?;267955;9th;5;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +19;Private;165115;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;49923;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;272240;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;255476;7th-8th;4;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;Mexico;<=50K +59;Private;194290;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;48;United-States;<=50K +52;Private;145548;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +27;Private;175262;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +45;Local-gov;37306;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +58;Private;137547;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +53;Private;276515;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;Cuba;<=50K +23;Private;174626;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +35;Private;215310;11th;7;Divorced;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Private;332355;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;204057;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;391591;12th;8;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;169092;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;>50K +28;Private;230743;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;190963;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +74;?;204840;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;56;Mexico;<=50K +19;Private;169853;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;24;United-States;<=50K +31;Private;202822;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +61;?;226989;Some-college;10;Married-spouse-absent;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;140011;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;53;United-States;<=50K +20;?;432376;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;Germany;<=50K +35;Private;90273;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;?;>50K +23;Private;224424;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;168943;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;30;United-States;>50K +19;Private;571853;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +30;Private;156464;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +26;Private;108542;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +34;Local-gov;194325;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +49;Private;114797;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;204756;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;228190;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;20;United-States;<=50K +33;Private;163392;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;48;United-States;>50K +54;Private;138845;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Local-gov;169853;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +18;Never-worked;206359;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +60;Private;224097;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;160786;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;190044;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +49;Local-gov;145290;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;120268;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;70;United-States;<=50K +17;Private;327434;10th;6;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +41;Self-emp-inc;218302;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +30;Private;1184622;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;35;United-States;<=50K +25;Private;206343;HS-grad;9;Never-married;Protective-serv;Other-relative;White;Male;0;0;40;United-States;<=50K +27;Private;36851;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +29;Private;148550;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;157079;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;?;>50K +31;Federal-gov;142470;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;Private;86750;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;99;United-States;<=50K +63;Private;361631;Masters;14;Separated;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +46;Private;163229;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;179594;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;254773;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;50;United-States;>50K +26;Private;58065;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +26;Private;205428;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +20;?;41183;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +19;?;308064;HS-grad;9;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +61;Private;173924;9th;5;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Puerto-Rico;>50K +23;State-gov;142547;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;119704;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;207392;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;12;United-States;<=50K +31;Private;147215;12th;8;Divorced;Other-service;Unmarried;White;Female;0;0;21;United-States;<=50K +31;Private;101562;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;55;United-States;<=50K +63;Private;216413;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +43;State-gov;52849;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;304710;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;10;Vietnam;<=50K +17;Private;265657;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +35;Private;360814;9th;5;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +32;Private;53260;HS-grad;9;Divorced;Other-service;Unmarried;Other;Female;0;0;28;United-States;<=50K +25;Private;233777;HS-grad;9;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;?;<=50K +26;Local-gov;197530;Masters;14;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;340940;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;88432;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;183810;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +90;Private;51744;Masters;14;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;50;United-States;>50K +35;Private;175614;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +31;Self-emp-not-inc;235237;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;60;United-States;>50K +60;Private;227266;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;33;United-States;<=50K +71;Local-gov;337064;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;141003;Assoc-voc;11;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +50;Local-gov;117791;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;172846;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +23;Private;73514;HS-grad;9;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +74;Private;211075;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +59;Private;43221;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;>50K +45;Private;26781;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;271550;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +39;Private;250157;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;63;United-States;<=50K +33;State-gov;913447;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +32;Private;153078;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;South;<=50K +39;Private;231491;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +29;State-gov;95423;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;36;United-States;<=50K +22;Private;234663;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;328669;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +51;Private;143741;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +56;State-gov;81954;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;261375;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +52;Private;310045;9th;5;Married-spouse-absent;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Female;0;0;30;China;<=50K +39;Private;316211;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +37;Private;61299;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;113364;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +35;?;476573;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;4;United-States;<=50K +46;Private;267107;5th-6th;3;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;45;Italy;<=50K +35;Private;48123;12th;8;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;50;United-States;<=50K +33;Private;214635;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;<=50K +48;Private;115585;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;194141;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;50;United-States;<=50K +18;?;23233;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;89991;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +35;Private;101709;HS-grad;9;Never-married;Transport-moving;Own-child;Asian-Pac-Islander;Male;0;0;60;United-States;<=50K +19;Private;237455;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;25;United-States;<=50K +21;Private;206492;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;?;<=50K +56;Private;28729;11th;7;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;153475;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;El-Salvador;<=50K +45;Private;275517;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;128002;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;45;United-States;<=50K +44;Private;175485;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;12;United-States;<=50K +55;Private;189664;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +34;Private;209808;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +33;Private;176992;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Private;154669;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;55;United-States;<=50K +25;Private;191271;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;375482;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;169182;10th;6;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Columbia;<=50K +49;Self-emp-inc;30751;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +22;Private;145477;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +31;Private;91964;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +44;Self-emp-inc;49249;Some-college;10;Divorced;Other-service;Unmarried;White;Male;0;0;80;United-States;<=50K +19;Private;218956;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;241306;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;?;251572;HS-grad;9;Widowed;?;Not-in-family;White;Male;0;0;35;Poland;<=50K +23;Private;319842;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +54;Local-gov;182388;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +23;Private;205939;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +21;Private;203914;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +19;State-gov;156294;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;25;United-States;<=50K +51;Private;254211;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;>50K +19;Self-emp-not-inc;30800;10th;6;Married-spouse-absent;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +22;Private;131230;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;61850;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;227800;7th-8th;4;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;32;United-States;<=50K +35;Private;133454;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +38;Private;104094;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;105422;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +56;Private;142182;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +41;Private;336643;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;80;United-States;<=50K +62;Self-emp-inc;200577;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +27;Private;208703;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;Japan;<=50K +55;?;193895;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;England;<=50K +26;Private;288592;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;266439;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Federal-gov;276868;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +43;Private;131435;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;175127;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +25;Private;277444;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +60;Private;63296;Masters;14;Divorced;Prof-specialty;Other-relative;Black;Male;0;0;40;United-States;<=50K +28;Private;96337;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;221955;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;Mexico;<=50K +29;Private;632593;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +20;Private;205970;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;25;United-States;<=50K +25;Private;139730;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;80;United-States;>50K +18;Private;201901;11th;7;Never-married;Sales;Own-child;White;Female;0;0;10;United-States;<=50K +32;State-gov;230224;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +27;Private;113464;1st-4th;2;Never-married;Other-service;Own-child;Other;Male;0;0;35;Dominican-Republic;<=50K +48;Private;94461;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;16;United-States;<=50K +20;Private;271379;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +55;Private;231738;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;England;<=50K +33;Local-gov;198183;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +21;State-gov;140764;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +43;Self-emp-not-inc;183479;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +35;Private;165767;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;139364;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +19;Private;227491;HS-grad;9;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +25;Private;222254;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +44;Private;193494;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;72;United-States;>50K +27;Private;29261;Assoc-acdm;12;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +39;Private;174368;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +69;Private;108196;10th;6;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +34;Private;110622;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +20;?;201680;Some-college;10;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +37;Private;130277;5th-6th;3;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Local-gov;98130;Bachelors;13;Divorced;Prof-specialty;Own-child;White;Female;0;0;39;United-States;<=50K +62;?;235521;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;48;United-States;<=50K +34;State-gov;595000;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;>50K +31;Self-emp-not-inc;349148;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +26;Private;164583;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +39;Private;340091;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;75;United-States;<=50K +25;Private;49092;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +54;Local-gov;186884;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;30;United-States;<=50K +44;State-gov;167265;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +21;Self-emp-inc;265116;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;128378;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;55;?;<=50K +33;Private;158416;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Self-emp-inc;169878;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +44;Private;296728;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;342458;Assoc-acdm;12;Divorced;Protective-serv;Not-in-family;White;Male;0;0;56;United-States;<=50K +21;Local-gov;38771;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;269300;Bachelors;13;Never-married;Other-service;Not-in-family;Black;Female;0;0;60;United-States;<=50K +57;?;199114;10th;6;Separated;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +51;Local-gov;33863;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;132874;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Local-gov;277024;HS-grad;9;Separated;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;112160;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;703067;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +58;Private;127264;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +57;Self-emp-inc;257200;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +19;Private;57206;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;201319;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;114079;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +45;Private;230979;Some-college;10;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;292472;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;>50K +64;?;286732;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Local-gov;134444;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;72;United-States;<=50K +30;Private;172403;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +46;Private;191357;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +18;?;279288;10th;6;Never-married;?;Other-relative;White;Female;0;0;30;United-States;<=50K +60;Private;389254;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;303867;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;44;United-States;<=50K +39;Private;111499;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;61580;Some-college;10;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +44;Private;231348;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;164748;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;205337;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +58;Self-emp-not-inc;54566;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +45;Private;34419;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;0;0;30;United-States;<=50K +59;Private;116442;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;290740;Assoc-acdm;12;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;Private;255582;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;112517;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;20;United-States;>50K +44;Private;169397;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +33;Private;172664;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +27;Private;329005;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;123253;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +55;Private;81865;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;173314;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;60;United-States;<=50K +31;Private;34572;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;149184;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +78;?;363134;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;1;United-States;<=50K +28;Private;308709;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +29;Private;168479;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +66;Private;142501;HS-grad;9;Never-married;Other-service;Other-relative;Black;Female;0;0;3;United-States;<=50K +60;Private;338345;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +31;Private;177675;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;200997;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +29;Private;176683;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +44;Private;376072;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +34;Local-gov;177675;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +23;Private;320451;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Male;0;0;24;United-States;<=50K +23;Private;38151;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;40;Philippines;<=50K +55;Local-gov;123382;Assoc-voc;11;Separated;Prof-specialty;Unmarried;Black;Female;0;0;35;United-States;<=50K +39;Self-emp-inc;151029;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;484475;11th;7;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +57;Private;329792;7th-8th;4;Divorced;Transport-moving;Unmarried;White;Male;0;0;75;United-States;<=50K +35;Private;148903;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Local-gov;301614;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;>50K +47;Private;176319;HS-grad;9;Married-civ-spouse;Sales;Own-child;White;Female;0;0;38;United-States;>50K +53;State-gov;53197;Doctorate;16;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +23;Private;291407;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;25;United-States;<=50K +35;Private;204527;Masters;14;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +44;Private;476391;Some-college;10;Divorced;Farming-fishing;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;224964;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +26;Private;306225;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Poland;<=50K +23;Private;292023;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +32;Private;94041;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;Ireland;<=50K +49;Self-emp-inc;187563;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +36;Private;749105;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +41;?;230020;5th-6th;3;Married-civ-spouse;?;Husband;Other;Male;0;0;40;United-States;<=50K +21;Private;216070;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;Amer-Indian-Eskimo;Female;0;0;46;United-States;>50K +54;Self-emp-not-inc;105010;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +43;Private;198203;Some-college;10;Married-spouse-absent;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Local-gov;215419;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;120460;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +46;Private;199316;Some-college;10;Married-civ-spouse;Craft-repair;Other-relative;Asian-Pac-Islander;Male;0;0;40;India;<=50K +46;Private;146919;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;174744;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +45;?;189564;Masters;14;Married-civ-spouse;?;Wife;White;Female;0;0;1;United-States;<=50K +21;Private;249957;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;146574;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +47;State-gov;156417;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Male;0;0;20;United-States;<=50K +42;Private;236110;5th-6th;3;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +19;Private;63363;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +25;Private;190107;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;126569;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;>50K +35;Private;176756;12th;8;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;115161;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +57;Self-emp-not-inc;138892;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;<=50K +38;Private;256864;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +48;Private;265083;10th;6;Divorced;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +34;Private;249948;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;34;United-States;<=50K +46;Federal-gov;31141;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;164190;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;38;?;<=50K +45;State-gov;67544;Masters;14;Divorced;Protective-serv;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Self-emp-not-inc;174789;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +35;Private;199753;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;48;United-States;<=50K +56;?;188166;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;96586;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;189590;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;140590;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;33;United-States;<=50K +35;Private;255702;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;27;United-States;<=50K +33;Private;260782;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;>50K +37;State-gov;151322;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;192869;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +31;Private;86958;9th;5;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +53;Local-gov;228723;HS-grad;9;Divorced;Craft-repair;Not-in-family;Other;Male;0;0;40;?;>50K +33;Private;192644;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Male;0;0;35;Puerto-Rico;<=50K +72;Private;284080;1st-4th;2;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +54;Private;43269;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +30;Private;190040;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;306108;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Private;381645;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;216361;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;16;United-States;<=50K +30;Private;213722;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +35;Private;112271;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;208277;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;44;United-States;>50K +38;State-gov;352628;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;129620;10th;6;Never-married;Other-service;Other-relative;White;Female;0;0;30;United-States;<=50K +32;Private;249550;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;44;United-States;<=50K +49;Private;178749;Masters;14;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +76;?;173542;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +60;Private;167670;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +60;Private;81578;9th;5;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;160662;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;>50K +41;Private;163322;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Female;0;0;30;?;<=50K +24;Private;152189;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;78410;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +32;Private;131379;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;166929;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;380357;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;79190;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +40;Private;342164;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +44;Private;182616;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +63;Private;339473;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +51;Private;300816;Bachelors;13;Never-married;Adm-clerical;Unmarried;White;Male;0;0;20;United-States;<=50K +51;Private;240988;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +23;Private;149224;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;168216;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +39;Private;305597;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +30;Self-emp-not-inc;188798;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;240170;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Germany;<=50K +31;Private;459465;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +44;Local-gov;162506;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +43;Self-emp-not-inc;145441;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;>50K +37;Federal-gov;129573;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;72;?;>50K +41;Private;27444;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;46;United-States;>50K +43;Private;195258;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +47;State-gov;55272;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Private;27802;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;State-gov;165289;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;274657;5th-6th;3;Never-married;Other-service;Not-in-family;White;Male;0;0;50;Guatemala;<=50K +24;Private;317175;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +39;Self-emp-inc;163237;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +37;Private;170408;Assoc-voc;11;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;30;United-States;<=50K +28;?;55950;Bachelors;13;Never-married;?;Own-child;Black;Female;0;0;40;Germany;<=50K +40;Private;76625;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +27;Private;366066;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;349368;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +21;Private;286824;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +32;Private;373263;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +20;Private;161978;HS-grad;9;Separated;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +46;Local-gov;109089;Prof-school;15;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +46;Private;110151;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +26;Private;34110;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;44;United-States;<=50K +47;Self-emp-not-inc;118506;Bachelors;13;Married-civ-spouse;Exec-managerial;Own-child;White;Male;0;0;60;United-States;<=50K +22;Private;117789;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;10;United-States;<=50K +34;Self-emp-not-inc;353881;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +49;Private;200471;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;<=50K +20;Private;258517;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +28;Private;190367;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;174704;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +23;Private;179413;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;329530;9th;5;Never-married;Priv-house-serv;Own-child;White;Male;0;0;40;Mexico;<=50K +31;Private;273818;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;55;Mexico;<=50K +46;Private;256522;1st-4th;2;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;Puerto-Rico;<=50K +42;Private;196001;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Self-emp-not-inc;282660;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;72630;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;50295;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +20;Private;203240;9th;5;Never-married;Sales;Own-child;White;Female;0;0;32;United-States;<=50K +41;Private;202168;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +61;Private;176839;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;176140;HS-grad;9;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;>50K +33;Private;292465;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +40;?;161285;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;25;United-States;<=50K +48;Private;355320;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Canada;>50K +56;Private;182460;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +57;Self-emp-not-inc;102058;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;165804;Some-college;10;Never-married;Adm-clerical;Own-child;Other;Female;0;0;40;United-States;<=50K +46;Private;318259;Assoc-voc;11;Divorced;Tech-support;Other-relative;White;Female;0;0;36;United-States;<=50K +21;Private;117606;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;170718;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;413297;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;190457;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +62;?;97231;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;1;United-States;<=50K +50;Private;123429;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +49;Federal-gov;420282;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;498325;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;248533;Some-college;10;Never-married;Sales;Other-relative;Black;Female;0;0;40;United-States;<=50K +46;Private;137354;Masters;14;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +42;Private;272910;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Self-emp-inc;206054;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Local-gov;92141;Assoc-acdm;12;Widowed;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +37;Private;163199;Some-college;10;Divorced;Tech-support;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +34;Private;195860;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;120029;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;20;United-States;<=50K +33;Private;221762;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +41;Private;342164;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +21;Private;176356;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;133239;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Federal-gov;169101;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;159442;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +24;Private;174461;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;45;United-States;<=50K +43;Private;361280;10th;6;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;42;China;<=50K +52;State-gov;447579;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;England;<=50K +27;?;308995;Some-college;10;Divorced;?;Own-child;Black;Female;0;0;40;United-States;<=50K +61;Private;248448;7th-8th;4;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;161141;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;212465;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +43;Local-gov;233865;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +51;Private;163052;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +35;Private;348690;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;34845;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;Germany;>50K +22;Private;206861;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;349230;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +20;Private;130840;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +19;Private;415354;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;132191;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;202466;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +27;?;224421;Some-college;10;Divorced;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Self-emp-not-inc;236804;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;35;United-States;<=50K +20;Private;107658;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;10;United-States;<=50K +47;Private;102771;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;221403;12th;8;Never-married;Other-service;Own-child;Black;Male;0;0;18;United-States;<=50K +76;?;211574;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;1;United-States;<=50K +39;Private;52645;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;276310;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +31;Private;134613;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;43;United-States;<=50K +44;Private;215479;HS-grad;9;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;20;Haiti;<=50K +53;Private;266529;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Private;265807;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +45;Self-emp-not-inc;67716;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;178951;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;241126;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Private;176544;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +45;Private;169180;Some-college;10;Widowed;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +37;Self-emp-not-inc;282461;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +53;Private;157069;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +38;Self-emp-not-inc;414991;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;70;?;<=50K +65;Self-emp-inc;338316;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;59612;10th;6;Divorced;Farming-fishing;Unmarried;White;Male;0;0;70;United-States;<=50K +24;Private;220426;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;115912;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;27032;10th;6;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +19;Private;170720;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +60;Private;183162;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;192360;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +78;?;165694;Masters;14;Widowed;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +26;Private;128553;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +58;Private;209423;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;38;Cuba;<=50K +37;Self-emp-not-inc;121510;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;55;United-States;<=50K +41;Private;93793;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +30;Private;133602;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;391329;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +48;Private;96359;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Greece;>50K +22;Private;203894;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Female;0;0;24;United-States;<=50K +50;Private;196193;Masters;14;Married-spouse-absent;Prof-specialty;Other-relative;White;Male;0;0;60;?;<=50K +25;Private;195994;1st-4th;2;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;Guatemala;<=50K +18;Private;50879;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;6;United-States;<=50K +21;Private;186849;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;201127;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;110998;HS-grad;9;Never-married;Other-service;Other-relative;Amer-Indian-Eskimo;Female;0;0;36;United-States;<=50K +67;Self-emp-not-inc;173935;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;8;United-States;>50K +18;Private;110230;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;11;United-States;<=50K +36;Private;287658;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +23;Private;224954;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;25;United-States;<=50K +25;?;394820;Some-college;10;Separated;?;Unmarried;White;Female;0;0;20;United-States;<=50K +40;Private;37618;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +73;Self-emp-not-inc;29306;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;420749;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;482732;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;206215;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;101364;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +66;Self-emp-inc;185369;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +66;Private;216856;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +64;Private;256019;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;190293;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Self-emp-not-inc;25932;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;176729;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +33;Private;166961;11th;7;Separated;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +50;Private;86373;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +51;Private;320513;7th-8th;4;Married-spouse-absent;Craft-repair;Not-in-family;Black;Male;0;0;50;Dominican-Republic;<=50K +34;State-gov;190290;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +41;Local-gov;111891;7th-8th;4;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;45796;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;323155;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;85;Mexico;<=50K +28;Private;65389;HS-grad;9;Never-married;Other-service;Not-in-family;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +19;Private;414871;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;161607;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +62;Private;224953;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;231818;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Greece;<=50K +43;Self-emp-inc;133060;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;35032;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;State-gov;304212;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +64;Local-gov;50442;9th;5;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +39;Private;146091;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +26;Private;267431;Bachelors;13;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +19;Private;121240;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +21;Private;192572;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;45;United-States;<=50K +32;Private;211028;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;202203;Bachelors;13;Never-married;Adm-clerical;Other-relative;White;Female;0;0;50;United-States;<=50K +20;Private;159297;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;15;United-States;<=50K +19;Private;310158;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +33;Federal-gov;193246;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;42;United-States;>50K +23;Private;200089;Some-college;10;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +29;Private;38353;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +42;Private;76280;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;243665;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +63;Private;68872;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +34;Private;103596;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;88055;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;24;United-States;<=50K +48;Private;186203;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;257910;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;200227;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +32;Private;227669;Some-college;10;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +22;Private;117210;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;Greece;<=50K +25;Private;76144;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;Private;98667;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +24;Local-gov;155818;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;44;United-States;<=50K +29;Private;283760;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +73;?;281907;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;3;United-States;<=50K +39;Private;186183;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +33;Self-emp-inc;202153;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;365683;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;>50K +22;Private;187538;10th;6;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +33;?;209432;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;20;United-States;<=50K +33;Private;126950;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +42;Private;110028;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;104660;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Male;0;0;45;United-States;<=50K +57;Self-emp-not-inc;437281;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;>50K +21;?;134746;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +42;Self-emp-not-inc;120539;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +39;Private;25803;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +41;Private;63596;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;32;United-States;>50K +20;Local-gov;325493;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +47;Private;211239;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;206686;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;427965;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +71;Private;163385;Some-college;10;Widowed;Sales;Not-in-family;White;Male;0;0;35;United-States;>50K +52;Private;124993;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;55;United-States;<=50K +36;Private;107410;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;152373;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;>50K +37;Private;161226;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;>50K +26;Private;213799;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;204461;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +35;Private;377798;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +20;Private;116375;9th;5;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;258752;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +39;Private;327435;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;36;United-States;>50K +24;Private;301199;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;20;United-States;<=50K +24;Private;186221;11th;7;Divorced;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +23;Private;203924;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;192236;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;152035;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;201454;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;156580;Some-college;10;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;37;United-States;>50K +51;Private;115851;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;359292;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +29;Private;83003;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +18;Private;78817;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +24;Private;200967;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;36;United-States;<=50K +38;State-gov;107164;Some-college;10;Separated;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;189674;HS-grad;9;Never-married;Priv-house-serv;Unmarried;Black;Female;0;0;28;?;<=50K +34;Self-emp-not-inc;90614;HS-grad;9;Separated;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;Self-emp-not-inc;242552;12th;8;Divorced;Craft-repair;Other-relative;Black;Male;0;0;35;United-States;<=50K +21;Private;90935;Assoc-voc;11;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;162604;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Black;Male;0;0;40;United-States;<=50K +45;Private;205424;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +53;Private;97411;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Laos;<=50K +42;Private;184857;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;16;United-States;<=50K +32;Private;165226;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;115784;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;368476;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;24;Mexico;<=50K +28;Private;53063;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +29;?;134566;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +32;Private;153471;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;35;United-States;<=50K +38;Private;180303;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;Japan;>50K +44;Local-gov;236321;HS-grad;9;Divorced;Transport-moving;Own-child;White;Male;0;0;25;United-States;<=50K +19;Private;141868;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +22;?;367655;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;203518;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Private;119558;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +56;Private;108276;Bachelors;13;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;385452;10th;6;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;162003;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;349028;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;45114;Bachelors;13;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +44;Private;112797;9th;5;Divorced;Other-service;Own-child;White;Female;0;0;50;United-States;<=50K +28;Private;183639;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Private;177121;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +38;Private;239755;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;150361;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;293091;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +24;Private;200089;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;Mexico;>50K +40;Private;91836;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Private;324960;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +79;Local-gov;84616;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;7;United-States;<=50K +44;Private;252930;10th;6;Divorced;Adm-clerical;Unmarried;Other;Female;0;0;42;United-States;<=50K +30;Private;154843;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;182567;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +33;Private;93206;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +50;Private;100109;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;45;United-States;>50K +41;Private;121287;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;189916;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;30;United-States;>50K +28;Private;39232;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +31;Self-emp-inc;133861;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;505980;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;140752;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +23;Private;549349;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;179008;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +57;Self-emp-not-inc;190554;10th;6;Divorced;Exec-managerial;Own-child;White;Male;0;0;60;United-States;>50K +47;Private;80924;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +51;Local-gov;319054;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;60;United-States;<=50K +34;Private;297094;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +52;Private;170562;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +29;Private;240738;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +29;Private;297544;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Local-gov;169905;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;149637;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;182526;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;158315;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +61;Self-emp-inc;227232;Bachelors;13;Separated;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +41;Private;286970;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +27;Local-gov;223529;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Male;0;0;43;United-States;<=50K +40;Private;170214;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +26;Self-emp-not-inc;224361;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;75;United-States;<=50K +43;Private;124919;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;60;Japan;<=50K +55;?;103654;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +25;Private;306352;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;Mexico;<=50K +26;Self-emp-not-inc;227858;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;48;United-States;<=50K +43;Self-emp-inc;150533;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;68;United-States;>50K +25;Private;144478;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;Poland;<=50K +22;Private;254547;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;30;Jamaica;<=50K +52;Self-emp-not-inc;313243;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +42;Private;125461;Bachelors;13;Never-married;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;306967;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;192976;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +56;?;131608;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;10;United-States;<=50K +33;Federal-gov;339388;Assoc-acdm;12;Divorced;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;203240;10th;6;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;83827;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;24;United-States;<=50K +45;Self-emp-inc;160440;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;42;United-States;<=50K +42;Private;108502;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;42;United-States;<=50K +37;Private;410913;HS-grad;9;Married-spouse-absent;Farming-fishing;Unmarried;Other;Male;0;0;40;Mexico;<=50K +56;Private;193818;9th;5;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;?;163582;10th;6;Divorced;?;Unmarried;White;Female;0;0;16;?;<=50K +40;Private;103789;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;32;United-States;<=50K +31;Private;34572;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +26;Private;43408;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +26;State-gov;105787;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +42;Self-emp-inc;90693;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +45;Self-emp-not-inc;285575;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +22;Private;496025;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +33;Private;382764;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;259284;HS-grad;9;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;50;United-States;<=50K +48;Self-emp-not-inc;185385;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;98;United-States;<=50K +57;Self-emp-not-inc;286836;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;8;United-States;<=50K +47;Private;139145;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +58;Local-gov;44246;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;169611;11th;7;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;133403;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +29;Private;187327;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;180032;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;46561;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +23;Private;86065;12th;8;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +46;Self-emp-not-inc;256014;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;188403;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;60485;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +32;Private;271276;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;80;United-States;>50K +56;Private;229525;9th;5;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +33;Private;34574;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;43;United-States;<=50K +19;State-gov;112432;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;United-States;<=50K +20;Private;105312;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;18;United-States;<=50K +34;Private;221396;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;304872;9th;5;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;319733;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;176012;9th;5;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;23;United-States;<=50K +31;Private;213750;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +30;Private;248384;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;351187;HS-grad;9;Divorced;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +59;Private;50223;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;117477;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;36;United-States;<=50K +40;Private;194360;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;118108;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +18;Self-emp-inc;38307;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;30;United-States;<=50K +41;Private;116391;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;210496;10th;6;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;168475;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Private;174386;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;24;United-States;<=50K +39;Private;166744;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;38;United-States;<=50K +19;Private;375114;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;373469;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;339667;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;41;United-States;<=50K +39;Private;91711;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Private;82049;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;236242;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +57;Self-emp-inc;140319;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +33;Local-gov;34080;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +56;Private;204816;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +60;Private;187124;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;72310;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +58;Private;175127;12th;8;Married-civ-spouse;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +18;Private;71792;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +56;Private;87584;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;136878;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +38;Private;110607;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +58;Private;109015;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;235071;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;50;United-States;<=50K +63;Private;88653;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +51;Private;332243;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;?;291547;5th-6th;3;Married-civ-spouse;?;Wife;Other;Female;0;0;40;Mexico;<=50K +44;Private;45093;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +46;Federal-gov;161337;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +64;State-gov;211222;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;295117;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;England;>50K +31;Private;206541;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;238415;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +21;Private;29810;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +30;Private;108023;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;114324;Assoc-voc;11;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +59;Local-gov;197290;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +28;Local-gov;191177;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +57;Private;562558;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;79531;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +53;Self-emp-inc;157881;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +58;Self-emp-not-inc;204816;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +19;Private;185695;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +39;Self-emp-inc;167482;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Self-emp-inc;83748;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;70;South;<=50K +27;Private;39232;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;236827;9th;5;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;154410;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;135308;Bachelors;13;Never-married;Sales;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;204042;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +20;Private;308239;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +55;Private;183884;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +39;Private;98948;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;141642;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;162623;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Self-emp-inc;186934;Bachelors;13;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;179512;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +25;Private;391192;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;24;United-States;<=50K +31;Private;87054;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +51;Private;30008;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;113466;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +70;Private;642830;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Female;0;0;32;United-States;<=50K +23;Private;182117;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +61;Private;162432;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;242184;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +56;Private;435022;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +20;Private;170800;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +30;Private;268575;HS-grad;9;Never-married;Craft-repair;Unmarried;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +27;Private;269354;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;?;<=50K +40;Private;224232;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +60;?;153072;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;5;United-States;<=50K +58;Private;177368;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +71;Self-emp-not-inc;163293;Prof-school;15;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;2;United-States;<=50K +50;Private;178530;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +29;Local-gov;183523;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;Iran;<=50K +60;State-gov;27037;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +33;Private;176711;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +43;Private;163215;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;?;>50K +33;Private;394727;10th;6;Never-married;Handlers-cleaners;Unmarried;Black;Male;0;0;40;United-States;<=50K +33;Private;195488;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;52;United-States;<=50K +32;State-gov;443546;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;<=50K +21;Private;121023;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;9;United-States;<=50K +38;Private;51838;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +38;Private;258888;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +39;State-gov;189385;Some-college;10;Separated;Exec-managerial;Unmarried;Black;Female;0;0;30;United-States;<=50K +17;Private;198146;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +21;Private;337766;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;210525;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;20;United-States;>50K +42;Private;185602;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +36;Private;173804;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;251243;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +37;Self-emp-not-inc;415847;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;119793;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;181705;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;182360;HS-grad;9;Separated;Prof-specialty;Unmarried;Other;Female;0;0;60;Puerto-Rico;<=50K +49;Private;61885;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;146520;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;323790;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;146268;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Local-gov;292217;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;88126;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;143046;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;401623;Some-college;10;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;Jamaica;>50K +84;Self-emp-not-inc;155057;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +23;Private;260254;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;152292;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +30;Self-emp-not-inc;523095;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +46;Private;175262;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +34;Private;316470;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;163815;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +27;Private;72208;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +52;Local-gov;74784;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +25;Self-emp-not-inc;266668;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;347519;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +24;Private;336088;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;0;0;50;United-States;<=50K +36;Private;190350;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +31;Private;204052;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +66;?;31362;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +47;Private;26994;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +55;Self-emp-not-inc;189933;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;101283;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;35;United-States;<=50K +48;Private;113598;Some-college;10;Separated;Adm-clerical;Other-relative;Black;Female;0;0;40;United-States;<=50K +21;Private;188793;HS-grad;9;Married-civ-spouse;Sales;Husband;Other;Male;0;0;35;United-States;<=50K +33;Private;109996;Assoc-acdm;12;Married-spouse-absent;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;195681;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;48;?;<=50K +47;Private;436770;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;84253;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +44;Self-emp-inc;383493;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +23;Private;216867;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;37;Mexico;<=50K +18;Private;401051;10th;6;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +56;Private;83196;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;325596;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +43;Private;187322;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;193949;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;60;United-States;<=50K +26;Private;133373;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;42;United-States;<=50K +42;Private;113324;HS-grad;9;Widowed;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +23;Private;178818;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Self-emp-not-inc;152810;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;436493;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +27;Private;704108;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Local-gov;150084;Some-college;10;Separated;Protective-serv;Not-in-family;White;Male;0;0;60;United-States;<=50K +42;Private;341204;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Female;0;0;40;United-States;<=50K +41;Private;187336;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;204209;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +42;Self-emp-not-inc;206066;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;<=50K +38;Private;63509;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +63;Self-emp-not-inc;391121;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +31;Private;56026;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Self-emp-not-inc;60981;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;4;United-States;<=50K +21;Private;228255;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +24;Private;86745;Bachelors;13;Married-civ-spouse;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +55;Private;234327;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;137814;Some-college;10;Divorced;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +23;Private;167692;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +35;Private;245090;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +51;Self-emp-not-inc;256963;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;160033;Some-college;10;Never-married;Protective-serv;Own-child;White;Female;0;0;30;United-States;<=50K +38;Local-gov;289430;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;56;United-States;<=50K +70;Self-emp-not-inc;172370;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;<=50K +53;Private;320510;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;171355;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;65027;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;43;United-States;<=50K +18;Private;215190;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +41;?;149385;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +19;?;169324;Some-college;10;Never-married;?;Own-child;White;Male;0;0;10;United-States;<=50K +24;Private;138938;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;557082;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +32;Private;273287;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;Jamaica;<=50K +35;Private;317153;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;302859;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +37;Private;333651;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;42;United-States;<=50K +30;Private;177596;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +22;Private;184779;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Local-gov;138358;Some-college;10;Separated;Other-service;Unmarried;Black;Female;0;0;28;United-States;<=50K +70;Private;176285;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;23;United-States;<=50K +43;Private;102180;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +77;Self-emp-not-inc;209507;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Self-emp-not-inc;229741;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;324546;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;39;United-States;<=50K +22;Private;250647;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;12;United-States;<=50K +33;Private;477106;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;104329;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;224566;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +32;Private;169841;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;55;United-States;<=50K +41;Private;42563;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;25;United-States;>50K +37;Private;31368;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;132755;11th;7;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +50;Private;279129;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +31;?;86143;HS-grad;9;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +54;State-gov;44172;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;38;United-States;<=50K +23;State-gov;93076;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +40;Private;146653;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +38;Private;189404;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;White;Male;0;0;35;?;<=50K +30;Private;172304;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +20;Private;116666;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;8;India;<=50K +43;Self-emp-not-inc;64112;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;55718;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;25;United-States;<=50K +39;Private;126675;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +48;Private;102112;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +41;Self-emp-not-inc;226505;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;211527;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;175069;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;Yugoslavia;<=50K +25;Private;25249;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;73411;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;207185;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;35;Puerto-Rico;>50K +66;Private;127139;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +34;Private;41809;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;141483;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +42;Local-gov;117227;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +34;Local-gov;167063;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;253759;Some-college;10;Married-civ-spouse;Tech-support;Wife;Black;Female;0;0;40;United-States;<=50K +42;Private;183096;Some-college;10;Divorced;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;269654;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +70;?;293076;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +32;Private;34104;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +46;Federal-gov;80057;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Germany;>50K +42;Self-emp-inc;369781;7th-8th;4;Divorced;Craft-repair;Unmarried;White;Male;0;0;25;United-States;<=50K +21;Private;223811;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;163053;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;189461;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;55;United-States;<=50K +37;Private;86310;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +19;?;263224;11th;7;Never-married;?;Unmarried;White;Female;0;0;30;United-States;<=50K +44;Federal-gov;280362;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;301031;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +30;Private;74966;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;24;United-States;<=50K +36;Private;254493;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +49;Self-emp-not-inc;204241;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +29;Private;225024;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Local-gov;148222;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +75;State-gov;113868;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;20;United-States;>50K +42;Private;132633;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;?;<=50K +37;Private;44780;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;86373;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;25;United-States;<=50K +61;Local-gov;176753;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;48;United-States;<=50K +50;Local-gov;370733;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +59;Private;216851;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;137951;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +22;Private;185279;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +56;Private;159724;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +44;Private;103233;Bachelors;13;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Private;63509;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;174353;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;159724;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;179112;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Male;0;0;40;?;<=50K +46;Private;364913;11th;7;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +48;Self-emp-inc;155664;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +61;Private;230568;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +33;Private;86492;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;87;United-States;<=50K +40;Private;71305;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;189933;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +35;Private;38948;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-inc;139127;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +37;Private;301568;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;197344;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;54;United-States;<=50K +44;Self-emp-not-inc;315406;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;88;United-States;<=50K +41;State-gov;47170;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Amer-Indian-Eskimo;Female;0;0;48;United-States;>50K +37;Private;196338;9th;5;Separated;Priv-house-serv;Unmarried;White;Female;0;0;16;Mexico;<=50K +34;Private;269243;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +24;Federal-gov;215115;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;40;?;<=50K +20;Private;117767;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;176101;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;138283;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Self-emp-not-inc;132320;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;45;United-States;<=50K +22;Federal-gov;471452;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;8;United-States;<=50K +55;Private;147653;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;73;United-States;<=50K +20;Private;49179;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +26;Private;174921;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Self-emp-inc;95997;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;70;United-States;<=50K +40;Private;247245;9th;5;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;67072;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +54;?;95329;Some-college;10;Divorced;?;Own-child;White;Male;0;0;50;United-States;<=50K +24;Private;107882;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;241825;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;46;United-States;<=50K +18;Private;79443;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;8;United-States;<=50K +49;Self-emp-not-inc;233059;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +17;Private;226980;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;17;United-States;<=50K +34;Self-emp-not-inc;181087;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;305597;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +49;Federal-gov;311671;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Private;83375;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;141657;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;35;United-States;>50K +44;Private;228057;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;Puerto-Rico;<=50K +40;Private;222848;10th;6;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;32;United-States;<=50K +58;Private;121111;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;Greece;<=50K +44;Private;298885;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;149909;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;>50K +39;Private;387430;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;18;United-States;<=50K +19;Private;121972;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +29;State-gov;191355;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Federal-gov;112115;Some-college;10;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +38;?;104094;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +54;Private;199307;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;48;United-States;<=50K +40;Private;205175;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;37;United-States;<=50K +19;Private;257750;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;25;United-States;<=50K +33;Private;342730;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;<=50K +80;Private;249983;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +24;Self-emp-not-inc;161508;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +28;Private;338376;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;334308;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;30;United-States;>50K +21;Private;133471;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;129177;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +19;Private;178811;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +42;Private;178537;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +60;Self-emp-not-inc;235535;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +20;?;298155;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +51;Private;145114;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;194096;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +37;State-gov;191779;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;159732;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;52;United-States;<=50K +40;Private;104719;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;163083;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;403552;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;32;United-States;<=50K +47;Private;179313;10th;6;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +26;Private;51961;12th;8;Never-married;Sales;Other-relative;Black;Male;0;0;51;United-States;<=50K +59;Private;426001;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;20;Puerto-Rico;<=50K +70;Local-gov;176493;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;17;United-States;<=50K +26;Private;124068;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +47;Private;108510;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +25;Private;181528;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;43;United-States;<=50K +46;Private;169699;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +67;Private;126849;10th;6;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;20;United-States;<=50K +34;Private;204470;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;117363;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +39;Local-gov;106297;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Male;0;0;42;United-States;<=50K +54;Self-emp-not-inc;108933;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +24;Private;190143;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;246677;HS-grad;9;Separated;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +41;Local-gov;210259;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +36;Private;166304;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;33;United-States;<=50K +39;Private;49308;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;192262;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +37;Self-emp-not-inc;48063;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +43;Private;170214;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +54;Federal-gov;51048;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;Self-emp-inc;246562;5th-6th;3;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Mexico;>50K +57;Local-gov;215175;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;114967;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +29;Private;464536;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;451996;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;138852;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;State-gov;353012;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +50;Self-emp-inc;321822;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;75;United-States;>50K +50;Self-emp-not-inc;324506;HS-grad;9;Widowed;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;48;South;<=50K +36;Private;162256;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Local-gov;356689;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;260199;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +36;Private;103605;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;316211;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;308691;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +18;Private;334427;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;36;United-States;<=50K +33;Private;213226;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;33105;Some-college;10;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +37;Private;147638;Bachelors;13;Separated;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;36;Philippines;<=50K +25;Private;315643;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +51;Federal-gov;106257;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;United-States;<=50K +35;Private;342768;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;108960;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +66;?;168071;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +32;Private;136935;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;13;United-States;<=50K +37;Self-emp-not-inc;188774;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Male;0;0;55;United-States;>50K +29;Private;280344;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +45;Private;202496;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;37;United-States;<=50K +61;Self-emp-inc;134768;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;175686;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;194748;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;0;0;49;United-States;<=50K +49;Private;61307;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;38;United-States;<=50K +34;Private;325658;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +28;?;201844;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;40;Mexico;<=50K +20;Private;505980;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;185336;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;37;United-States;<=50K +26;Private;126829;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;Private;264600;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +36;Private;82743;Assoc-acdm;12;Never-married;Transport-moving;Not-in-family;White;Male;0;0;55;Iran;<=50K +63;Self-emp-not-inc;125178;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;Private;128487;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;10;United-States;<=50K +40;Private;321758;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;Private;128220;7th-8th;4;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +49;Private;176814;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;Canada;<=50K +23;State-gov;156423;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +34;?;157289;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;176972;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +33;Private;91811;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;?;454614;11th;7;Never-married;?;Own-child;White;Female;0;0;8;United-States;<=50K +61;Private;132972;9th;5;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +53;Private;157947;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Local-gov;177482;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;>50K +48;Private;246891;Some-college;10;Widowed;Sales;Unmarried;White;Male;0;0;50;United-States;>50K +28;State-gov;158834;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +30;?;203834;Bachelors;13;Never-married;?;Not-in-family;Asian-Pac-Islander;Female;0;0;50;Taiwan;<=50K +29;Private;110442;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;240676;Some-college;10;Divorced;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;192939;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;260696;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;55;United-States;<=50K +40;Local-gov;55363;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;144949;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +31;Local-gov;357954;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Male;0;0;20;United-States;<=50K +21;?;170038;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;190290;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Italy;<=50K +26;Private;167761;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +44;Private;138845;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;144844;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;52;United-States;>50K +26;Private;55743;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;30;United-States;<=50K +40;Self-emp-not-inc;117721;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +19;Self-emp-not-inc;116385;11th;7;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Private;301867;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;238913;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-not-inc;123983;Some-college;10;Married-civ-spouse;Sales;Own-child;Asian-Pac-Islander;Male;0;0;63;South;<=50K +26;Private;165510;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +64;Private;183513;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +42;Self-emp-inc;119281;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +41;Private;152629;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +45;Private;110171;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;211440;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +41;Local-gov;359259;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;125796;11th;7;Separated;Other-service;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +34;Private;39609;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;120066;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +41;Private;132633;11th;7;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;25;Guatemala;<=50K +39;Private;192702;Masters;14;Never-married;Craft-repair;Not-in-family;White;Female;0;0;50;United-States;<=50K +41;Private;166813;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +33;Self-emp-inc;40444;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;290504;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +25;Private;175370;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +77;Self-emp-not-inc;72931;7th-8th;4;Married-spouse-absent;Adm-clerical;Not-in-family;White;Male;0;0;20;Italy;>50K +33;?;234542;Assoc-voc;11;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +66;Private;284021;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;277974;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +44;Private;111275;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;38;United-States;<=50K +28;Private;125527;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Private;198660;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;216116;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +62;Private;200922;7th-8th;4;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;153372;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +41;Private;406603;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;6;Iran;<=50K +23;Local-gov;248344;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;30;United-States;<=50K +48;Private;240629;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Italy;>50K +38;Private;314310;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;259785;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +45;Private;127111;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +29;Private;178272;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +66;Local-gov;75134;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;25;United-States;<=50K +19;Private;195985;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Private;221955;9th;5;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;39;Mexico;<=50K +34;Private;177675;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +39;Private;182828;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +33;Self-emp-not-inc;270889;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +43;Private;183096;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;10;United-States;<=50K +27;Private;336951;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;99;United-States;<=50K +33;State-gov;295589;Some-college;10;Separated;Adm-clerical;Own-child;Black;Male;0;0;35;United-States;<=50K +26;Private;289980;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;Mexico;<=50K +46;Private;163352;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;36;United-States;<=50K +38;Private;190776;Assoc-acdm;12;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +90;Private;313986;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +72;Self-emp-inc;473748;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;>50K +20;Private;163003;HS-grad;9;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;15;United-States;<=50K +29;Private;183061;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;48;United-States;<=50K +49;Private;123584;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;75;United-States;<=50K +23;Private;120910;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +20;Private;227554;Some-college;10;Married-spouse-absent;Sales;Own-child;Black;Female;0;0;18;United-States;<=50K +46;Private;214955;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;209768;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +24;Private;258120;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;55;Jamaica;<=50K +49;Private;110015;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;Greece;<=50K +54;Private;152652;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +31;Self-emp-not-inc;114639;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +18;?;128538;Some-college;10;Never-married;?;Own-child;White;Female;0;0;6;United-States;<=50K +19;Private;131615;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;353824;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;178417;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;178644;HS-grad;9;Widowed;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;271665;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +37;?;223732;Some-college;10;Separated;?;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Federal-gov;169003;12th;8;Never-married;Adm-clerical;Own-child;Black;Male;0;0;25;United-States;<=50K +52;State-gov;338816;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;70;United-States;>50K +34;Private;506858;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;32;United-States;>50K +28;Private;265628;Assoc-voc;11;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;173495;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;177413;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +39;Private;31670;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +49;Private;154451;11th;7;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;35;United-States;<=50K +35;Private;265535;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;50;Jamaica;>50K +31;Private;118941;Some-college;10;Divorced;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +18;Private;214617;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +43;Private;124692;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +21;Private;434102;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;?;387641;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +58;Private;87329;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;48;United-States;<=50K +36;Private;263130;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;262882;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +19;Private;27433;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;393945;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Female;0;0;36;United-States;<=50K +26;Private;173927;Assoc-voc;11;Never-married;Prof-specialty;Own-child;Other;Female;0;0;60;Jamaica;<=50K +38;Private;343403;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;16;United-States;<=50K +36;Private;111128;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +40;Private;193882;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +25;Private;310864;Bachelors;13;Never-married;Tech-support;Not-in-family;Black;Male;0;0;40;?;<=50K +41;Private;128354;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;25;United-States;>50K +33;Private;113364;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +63;?;198559;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;16;United-States;<=50K +51;Private;136913;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;115488;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;154227;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;279667;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +30;Self-emp-not-inc;281030;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;66;United-States;<=50K +19;Private;283945;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +47;Private;454989;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +26;Private;391349;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;State-gov;166704;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;14;United-States;<=50K +36;Private;151835;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;>50K +60;Private;199085;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;61487;HS-grad;9;Never-married;Prof-specialty;Unmarried;Black;Male;0;0;40;United-States;<=50K +19;Private;120251;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;14;United-States;<=50K +42;Private;273230;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;90;United-States;<=50K +36;Private;358373;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;Black;Female;0;0;36;United-States;<=50K +35;Private;267891;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;38;United-States;<=50K +22;Private;234880;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +54;Private;48358;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;96452;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +55;Private;204751;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +57;Private;375868;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;413373;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;36;United-States;<=50K +24;Private;537222;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +35;Local-gov;33975;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-inc;162327;11th;7;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;182691;HS-grad;9;Divorced;Exec-managerial;Own-child;White;Male;0;0;44;United-States;<=50K +36;Private;300829;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;42;United-States;<=50K +51;Local-gov;114508;9th;5;Separated;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +46;Self-emp-inc;214627;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +25;State-gov;120041;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;361138;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;50;United-States;<=50K +37;Private;76893;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;205424;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;40;United-States;>50K +40;Private;229148;12th;8;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;Jamaica;<=50K +58;Self-emp-inc;154537;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;20;United-States;>50K +52;Private;181901;HS-grad;9;Married-spouse-absent;Farming-fishing;Other-relative;White;Male;0;0;20;Mexico;<=50K +18;Private;152004;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +27;Private;205188;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;66634;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;16;United-States;<=50K +38;Self-emp-not-inc;180220;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +40;Self-emp-not-inc;99651;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +41;Private;327723;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;127384;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +30;Private;363296;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Black;Male;0;0;72;United-States;<=50K +28;Private;30070;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;595000;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Female;0;0;35;United-States;<=50K +21;?;152328;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +33;?;177824;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;40;United-States;<=50K +44;State-gov;111483;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;Private;199555;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;25;United-States;<=50K +42;Private;50018;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +36;Private;218490;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +31;Private;159187;HS-grad;9;Divorced;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;83033;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;25;Germany;<=50K +34;Self-emp-not-inc;24961;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +21;Private;182117;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +75;Self-emp-not-inc;146576;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Male;0;0;48;United-States;>50K +21;Private;176690;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +81;Private;122651;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;<=50K +54;Self-emp-inc;149650;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;Canada;<=50K +34;Private;454508;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;Iran;<=50K +41;Private;266530;HS-grad;9;Married-civ-spouse;Other-service;Husband;Amer-Indian-Eskimo;Male;0;0;45;United-States;<=50K +61;?;198542;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;217961;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;221661;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Mexico;<=50K +44;Local-gov;60735;Bachelors;13;Divorced;Prof-specialty;Own-child;White;Female;0;0;60;United-States;<=50K +47;Self-emp-not-inc;121124;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;Private;48588;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;240138;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;104196;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +37;Private;230035;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;>50K +28;Private;38918;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;Germany;>50K +71;?;205011;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +57;Private;176079;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;180052;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;10;United-States;<=50K +30;Private;378723;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;55;United-States;<=50K +20;Private;233624;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;192591;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +54;Private;249860;11th;7;Divorced;Priv-house-serv;Unmarried;Black;Female;0;0;10;United-States;<=50K +20;Private;247564;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +34;Private;238912;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;190227;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +29;State-gov;293287;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Private;180807;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;250217;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;70;United-States;<=50K +19;Private;217418;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;38;United-States;<=50K +22;Local-gov;137510;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +59;State-gov;163047;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +18;Private;577521;11th;7;Never-married;Sales;Own-child;White;Male;0;0;13;United-States;<=50K +22;Private;221533;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +42;Local-gov;255675;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;114079;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;155781;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +28;Private;243762;11th;7;Separated;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;113062;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;7;United-States;<=50K +67;Private;217028;Masters;14;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;110723;11th;7;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +47;Federal-gov;191858;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +23;Private;179423;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;5;United-States;<=50K +20;Private;339588;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Peru;<=50K +22;Private;206815;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;40;Peru;<=50K +47;State-gov;103743;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;235683;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +64;?;207321;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +35;State-gov;197495;Some-college;10;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +52;Federal-gov;424012;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;178469;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +73;Self-emp-inc;92886;10th;6;Widowed;Sales;Unmarried;White;Female;0;0;40;Canada;<=50K +38;Self-emp-not-inc;214008;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +18;Private;118376;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +24;Private;51799;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +33;Local-gov;115488;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;190621;Some-college;10;Divorced;Exec-managerial;Other-relative;Black;Female;0;0;55;United-States;<=50K +55;Private;193568;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;192878;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;264663;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;60;United-States;<=50K +22;Private;234731;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;308373;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +45;Private;205644;HS-grad;9;Separated;Tech-support;Not-in-family;White;Female;0;0;26;United-States;<=50K +47;Local-gov;321851;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +56;Private;206399;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;124563;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +32;State-gov;198211;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;38;United-States;<=50K +17;Private;130795;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +44;Private;71269;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Self-emp-not-inc;319280;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;80;United-States;<=50K +35;Private;125933;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +27;Private;107236;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;32732;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +68;Private;284763;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +20;Private;112668;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +33;Private;376483;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +24;Private;402778;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +48;Private;36177;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +45;Private;125489;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +48;Private;304791;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;209205;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +60;?;112821;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;>50K +39;Local-gov;178100;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;70261;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +23;State-gov;186634;12th;8;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;32958;Some-college;10;Separated;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +25;Private;254746;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +52;Private;158746;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;140854;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;51506;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;189564;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;42;United-States;>50K +37;Federal-gov;325538;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +58;Private;213975;Assoc-voc;11;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Self-emp-not-inc;431426;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;2;United-States;<=50K +48;Private;199763;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;8;United-States;<=50K +63;Private;161563;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +24;Local-gov;252024;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;72;United-States;>50K +43;Private;43945;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;178487;HS-grad;9;Divorced;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +32;Private;604506;HS-grad;9;Married-civ-spouse;Transport-moving;Own-child;White;Male;0;0;72;Mexico;<=50K +36;Private;228157;Some-college;10;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Laos;<=50K +43;Private;199191;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;Private;189775;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +17;Private;171080;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +45;Private;117310;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;46;United-States;<=50K +41;Self-emp-inc;82049;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;126094;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;<=50K +18;?;202516;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +48;Local-gov;246392;Assoc-acdm;12;Separated;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +51;?;69328;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +26;Private;292803;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +54;Private;286989;Preschool;1;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;190483;Some-college;10;Divorced;Sales;Own-child;White;Female;0;0;48;Iran;<=50K +19;Private;235849;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;35;United-States;<=50K +47;Private;359766;7th-8th;4;Divorced;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +32;Private;128016;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +30;Private;170154;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;>50K +35;Private;337286;Masters;14;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +73;Self-emp-not-inc;143833;12th;8;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;18;United-States;<=50K +17;Private;365613;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;10;Canada;<=50K +32;Private;100135;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +43;Local-gov;180096;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +19;?;371827;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;Portugal;<=50K +26;Private;61270;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Other;Female;0;0;40;Columbia;<=50K +41;Federal-gov;564135;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +52;State-gov;303462;Some-college;10;Separated;Protective-serv;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Private;193106;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;32;United-States;<=50K +57;Private;250201;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;52;United-States;<=50K +35;Private;200426;Assoc-voc;11;Married-spouse-absent;Prof-specialty;Unmarried;White;Female;0;0;44;United-States;<=50K +33;Private;222654;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;53366;7th-8th;4;Divorced;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +42;Private;132222;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;60;United-States;<=50K +17;Private;100828;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +49;Private;31264;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +39;Private;202027;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +34;Self-emp-not-inc;168906;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +37;Self-emp-not-inc;255454;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +22;Private;245524;12th;8;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +27;Private;386040;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +21;Private;35424;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +59;?;93655;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;151159;10th;6;Married-spouse-absent;Transport-moving;Not-in-family;White;Male;0;0;99;United-States;<=50K +26;Private;410240;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;138970;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +39;Private;269722;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +34;Private;223678;HS-grad;9;Never-married;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;32;United-States;<=50K +54;State-gov;197184;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;<=50K +50;Private;140516;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +48;Local-gov;85341;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +40;Self-emp-not-inc;192507;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +30;Private;186932;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +31;Private;236861;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +46;Local-gov;327886;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +62;Self-emp-inc;197060;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;229180;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;Cuba;<=50K +24;Private;284317;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +24;Private;73514;Some-college;10;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;50;Philippines;<=50K +27;Private;47907;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;48;United-States;<=50K +43;State-gov;134782;Assoc-acdm;12;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +48;Private;118831;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;Asian-Pac-Islander;Female;0;0;40;South;<=50K +41;Private;299505;HS-grad;9;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;267161;Some-college;10;Married-civ-spouse;Tech-support;Wife;Black;Female;0;0;45;United-States;<=50K +38;Private;119177;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +45;Private;327886;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +45;Private;187730;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;109015;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +46;Self-emp-not-inc;110015;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;75;Greece;<=50K +24;Private;104146;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +31;Local-gov;50442;Some-college;10;Never-married;Adm-clerical;Own-child;Amer-Indian-Eskimo;Female;0;0;25;United-States;<=50K +35;Private;57640;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +37;Local-gov;333664;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;224858;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;290641;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Private;245378;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;179136;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;116788;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;129699;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Federal-gov;39606;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;England;>50K +44;Self-emp-inc;95150;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +63;Private;102479;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;199191;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;<=50K +31;Private;229636;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;Mexico;<=50K +26;Private;53833;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;<=50K +37;Self-emp-inc;27997;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +60;?;124487;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;>50K +33;Private;111363;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +38;Private;107630;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;134287;Assoc-voc;11;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +46;Self-emp-inc;283004;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;63;Thailand;<=50K +24;Private;33616;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +47;Local-gov;121124;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +27;Private;188189;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;30;United-States;<=50K +46;Private;106255;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;282830;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +47;Private;243904;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;Honduras;<=50K +51;Private;427781;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +36;Private;334291;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +50;Local-gov;173224;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +29;Private;87507;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;60;India;<=50K +27;Private;204497;10th;6;Divorced;Transport-moving;Not-in-family;Amer-Indian-Eskimo;Male;0;0;75;United-States;<=50K +60;Private;230545;7th-8th;4;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;Cuba;<=50K +31;Private;118161;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;150499;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Local-gov;96554;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;288551;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;52;United-States;>50K +69;Self-emp-not-inc;104003;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +54;Self-emp-inc;124963;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +56;Private;198388;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;126204;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;91709;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;45;United-States;<=50K +34;Self-emp-not-inc;152109;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +24;Self-emp-not-inc;191954;7th-8th;4;Never-married;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +29;Local-gov;289991;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +64;Private;92115;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;320277;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;33610;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;60;United-States;<=50K +36;Private;168276;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;254973;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;40;United-States;>50K +37;Private;95336;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;65;United-States;<=50K +33;Private;227282;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;138153;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +20;?;111252;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +20;?;168863;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +25;Private;394503;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;141657;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;172230;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;282944;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +45;Local-gov;55377;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +35;State-gov;49352;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +32;Private;213887;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;45;United-States;<=50K +61;Self-emp-not-inc;24046;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +26;State-gov;208122;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;15;United-States;<=50K +22;Private;227994;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;39;United-States;<=50K +49;Private;215389;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;48;United-States;<=50K +40;Private;99434;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;12;United-States;<=50K +37;Private;190964;HS-grad;9;Separated;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +23;?;113700;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;50;United-States;<=50K +28;Private;259840;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +27;Private;168827;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Self-emp-inc;28984;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;182211;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;82393;Some-college;10;Never-married;Craft-repair;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +28;Private;183639;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;21;United-States;<=50K +38;Private;342448;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +28;Local-gov;211920;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +41;Federal-gov;34178;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;400630;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;>50K +73;Self-emp-not-inc;161251;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Male;0;0;24;United-States;<=50K +21;Private;255685;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;Outlying-US(Guam-USVI-etc);<=50K +38;Private;199256;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +64;?;143716;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;<=50K +47;Private;221666;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;39615;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;Private;104440;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +61;Self-emp-not-inc;503675;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;60;United-States;>50K +49;Private;50748;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;55;England;<=50K +23;Private;107190;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;20;United-States;<=50K +19;Private;206874;Assoc-voc;11;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +21;Private;83141;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;53;United-States;<=50K +56;Private;444089;11th;7;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;141896;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Federal-gov;33487;Some-college;10;Divorced;Tech-support;Unmarried;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +41;Private;65372;Doctorate;16;Divorced;Sales;Unmarried;White;Female;0;0;50;United-States;>50K +30;Private;341346;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;343403;Doctorate;16;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;20;?;<=50K +47;Private;287480;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;199067;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;32;United-States;<=50K +22;?;182771;Assoc-voc;11;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +31;Private;159737;10th;6;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +24;Private;117583;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;48;United-States;<=50K +49;Self-emp-not-inc;43479;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;203003;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;25;Germany;<=50K +50;Private;133963;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +38;Private;227794;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Self-emp-not-inc;112137;Some-college;10;Never-married;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;20;South;<=50K +49;Self-emp-not-inc;110457;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +45;Private;281565;HS-grad;9;Widowed;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;50;South;<=50K +46;Federal-gov;297906;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +19;Private;151506;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +31;Federal-gov;139455;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;Cuba;<=50K +38;Private;26987;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;233312;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +24;Private;161092;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +58;Local-gov;98361;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;188928;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;164922;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;185673;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;193598;Preschool;1;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;Mexico;<=50K +56;Private;274111;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +32;Private;245482;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +56;Private;160932;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;>50K +50;Private;44368;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;?;291374;HS-grad;9;Separated;?;Unmarried;Black;Female;0;0;30;United-States;<=50K +30;Private;280927;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;222993;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +42;Federal-gov;25240;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;204052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;74054;11th;7;Never-married;Sales;Own-child;Other;Female;0;0;20;?;<=50K +46;Private;169042;10th;6;Never-married;Other-service;Not-in-family;White;Female;0;0;25;Ecuador;<=50K +31;Private;104509;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;65;United-States;>50K +44;Local-gov;254146;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +19;Private;183041;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +45;Private;107682;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +50;Self-emp-inc;287598;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +53;Private;182186;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Dominican-Republic;<=50K +45;Private;112305;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;212661;10th;6;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;39;United-States;<=50K +37;Private;32709;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +42;Federal-gov;46366;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;24106;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;30;United-States;<=50K +45;Self-emp-not-inc;40666;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;182975;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;20;United-States;<=50K +30;Private;345122;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +57;?;208311;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;80;United-States;>50K +37;Private;120045;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;56;United-States;<=50K +18;?;201299;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;152940;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +43;Private;243580;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;?;176458;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;28;United-States;<=50K +33;Private;101562;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;108699;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;175878;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Female;0;0;40;United-States;<=50K +34;Local-gov;177675;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;50;United-States;>50K +33;Private;213887;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;357619;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;60;Germany;<=50K +39;Private;165799;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;71469;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +19;Private;229745;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +46;Private;28419;Assoc-voc;11;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;Private;26950;Masters;14;Divorced;Sales;Not-in-family;White;Female;0;0;6;United-States;<=50K +47;Self-emp-not-inc;107231;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +52;Local-gov;512103;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;245090;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +58;Private;314153;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +32;Private;243988;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +54;Self-emp-not-inc;82551;Assoc-voc;11;Married-civ-spouse;Tech-support;Other-relative;White;Female;0;0;10;United-States;<=50K +20;Private;42706;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;25;United-States;<=50K +25;Private;235795;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +25;Self-emp-not-inc;108001;9th;5;Never-married;Craft-repair;Not-in-family;White;Male;0;0;15;United-States;<=50K +69;Self-emp-not-inc;128206;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;30;United-States;<=50K +28;Private;224634;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +20;Private;362999;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +21;Private;346693;7th-8th;4;Never-married;Farming-fishing;Unmarried;White;Male;0;0;40;United-States;<=50K +37;Private;175759;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +21;Private;99199;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;32;United-States;<=50K +25;?;219987;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;13;United-States;<=50K +39;Private;143445;HS-grad;9;Married-civ-spouse;Other-service;Other-relative;Black;Female;0;0;40;United-States;<=50K +34;Private;118710;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;224185;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;118972;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +29;Private;165360;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;38950;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;89;United-States;<=50K +29;Private;247151;11th;7;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;213722;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;209955;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +41;Private;174395;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;?;179973;Assoc-voc;11;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;200207;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;44;United-States;<=50K +19;Private;156587;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +24;Private;33016;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;197496;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;?;<=50K +32;Private;153588;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;284166;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;60;United-States;>50K +18;Private;716066;10th;6;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;30;United-States;<=50K +27;Private;188519;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;109080;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +52;Private;174421;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +24;Private;259351;Some-college;10;Never-married;Craft-repair;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;Mexico;<=50K +42;Federal-gov;284403;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;?;201766;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +20;State-gov;340475;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +39;Private;487486;HS-grad;9;Widowed;Handlers-cleaners;Unmarried;White;Male;0;0;40;?;<=50K +68;?;484298;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +35;Private;170617;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;48;United-States;<=50K +54;Private;94055;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;117779;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;209770;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;8;United-States;<=50K +20;Private;317443;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;15;United-States;<=50K +64;?;140237;Preschool;1;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;107411;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +36;Self-emp-not-inc;122493;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;47;United-States;<=50K +44;Self-emp-inc;195124;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;?;<=50K +22;Private;335453;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +56;Private;318329;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;100321;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +24;Self-emp-not-inc;81145;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;75;United-States;<=50K +22;Private;62865;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;176262;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;30;United-States;<=50K +42;Private;168103;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Local-gov;208174;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;55;United-States;<=50K +67;Self-emp-not-inc;226092;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;44;United-States;<=50K +20;Private;212668;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +32;Private;381583;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;United-States;<=50K +46;Private;239439;HS-grad;9;Separated;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +52;Private;172493;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;36;United-States;<=50K +44;Private;239876;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Male;0;0;40;United-States;<=50K +65;?;221881;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;40;Mexico;<=50K +27;Self-emp-not-inc;206889;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;110668;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;35;United-States;<=50K +30;Private;211028;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +48;Private;20296;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;37;United-States;>50K +35;Private;194690;7th-8th;4;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;204984;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +40;Self-emp-not-inc;238574;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +33;Private;345360;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;192381;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +25;Private;479765;7th-8th;4;Never-married;Sales;Other-relative;White;Male;0;0;45;Guatemala;<=50K +45;Self-emp-inc;34091;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +30;Private;151773;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +53;Private;299080;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Local-gov;52156;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;318647;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;80145;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +39;State-gov;343646;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;Mexico;>50K +42;Self-emp-not-inc;198692;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +19;Private;266635;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;30;United-States;<=50K +31;Private;197672;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;185846;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;315110;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +27;Private;220754;Doctorate;16;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;64292;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;126060;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +32;Private;210562;Assoc-voc;11;Divorced;Craft-repair;Own-child;White;Male;0;0;46;United-States;<=50K +23;Private;350181;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;233421;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +53;Private;167170;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;260801;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;173370;Bachelors;13;Separated;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +27;Private;135520;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Dominican-Republic;<=50K +30;Private;121308;Some-college;10;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;444743;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;65225;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +58;State-gov;136982;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;40;Honduras;<=50K +45;State-gov;271962;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;204046;10th;6;Divorced;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;225823;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;121038;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;<=50K +26;Private;49092;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;148709;HS-grad;9;Separated;Handlers-cleaners;Other-relative;White;Female;0;0;40;United-States;<=50K +27;Private;209205;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +36;Local-gov;285865;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +22;Federal-gov;216129;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +37;Federal-gov;40955;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;Japan;<=50K +54;Private;197189;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;33001;HS-grad;9;Divorced;Farming-fishing;Unmarried;White;Male;0;0;50;United-States;<=50K +44;Private;227399;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +38;Private;164050;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +49;Private;259087;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;236262;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +26;Private;177929;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +48;Private;166929;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;?;>50K +32;Private;199963;11th;7;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +35;State-gov;98776;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;135056;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +42;State-gov;102343;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;72;India;>50K +30;Private;231263;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;226913;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +36;Private;129573;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +31;Private;191001;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Federal-gov;69345;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +38;Private;204556;HS-grad;9;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;192626;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +45;Private;202812;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +29;Private;405177;10th;6;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;227890;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;46;United-States;>50K +33;Private;101352;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +49;Private;82572;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;60;United-States;<=50K +28;Private;132686;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;245661;HS-grad;9;Separated;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +42;State-gov;104663;Doctorate;16;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;Italy;>50K +30;Private;347166;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +37;Local-gov;108540;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;333305;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;<=50K +51;Private;155408;HS-grad;9;Married-spouse-absent;Sales;Not-in-family;Black;Female;0;0;38;United-States;<=50K +27;Federal-gov;246372;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;30290;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;347321;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-inc;205852;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +40;Federal-gov;163215;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;?;<=50K +54;State-gov;93449;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +47;Self-emp-inc;116927;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +35;Private;164526;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Yugoslavia;>50K +33;Private;31573;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Local-gov;125159;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;40;Haiti;<=50K +39;State-gov;201105;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;55;United-States;>50K +33;Private;150570;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;118941;11th;7;Never-married;Other-service;Not-in-family;White;Female;0;0;40;Ireland;<=50K +53;Private;141388;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +21;Private;174714;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +63;Private;133144;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +21;Self-emp-not-inc;318865;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +59;Private;109638;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +50;Private;92969;1st-4th;2;Separated;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +66;?;376028;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +19;Private;144161;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +31;Private;183778;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Private;398904;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +45;Private;170846;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +35;Local-gov;204277;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;205152;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;225395;7th-8th;4;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;60;Mexico;<=50K +38;Private;33975;HS-grad;9;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;0;0;40;United-States;>50K +49;Private;147032;HS-grad;9;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;8;Philippines;<=50K +64;Private;174826;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Local-gov;232769;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +25;Private;36984;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +21;Private;292264;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +23;Private;287988;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;20;United-States;<=50K +67;Self-emp-inc;330144;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +24;Private;191948;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +46;Private;324601;1st-4th;2;Separated;Machine-op-inspct;Own-child;White;Female;0;0;40;Guatemala;<=50K +38;State-gov;200289;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +20;Private;113307;7th-8th;4;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +28;?;194087;Some-college;10;Never-married;?;Other-relative;White;Female;0;0;40;United-States;<=50K +26;Private;155213;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;<=50K +58;Private;175127;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;State-gov;358461;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +37;State-gov;354929;Assoc-acdm;12;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;38;United-States;<=50K +53;State-gov;104501;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +45;Private;112929;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;35;United-States;<=50K +33;Private;132832;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +33;State-gov;357691;Masters;14;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +35;Private;114605;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;25;United-States;<=50K +60;Self-emp-not-inc;525878;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +21;Private;68358;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +38;Private;174571;10th;6;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;45;United-States;<=50K +40;Private;42703;Assoc-voc;11;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;220589;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +44;Self-emp-not-inc;197558;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;>50K +27;Private;423250;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +34;Self-emp-not-inc;29254;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +20;?;308924;Some-college;10;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +49;Local-gov;276247;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;213841;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +52;Private;181677;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;>50K +46;Private;160061;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +20;Private;285295;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Female;0;0;40;?;<=50K +43;Private;265266;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;State-gov;194954;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;<=50K +48;Private;156926;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Local-gov;217414;Some-college;10;Divorced;Protective-serv;Unmarried;White;Male;0;0;55;United-States;<=50K +18;?;192399;Some-college;10;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +42;Private;383493;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +60;Private;193235;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;24;United-States;<=50K +37;Self-emp-inc;99452;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;>50K +44;Local-gov;254134;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;90446;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;116613;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Portugal;<=50K +42;Local-gov;238188;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +17;Private;95909;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +41;Private;82319;12th;8;Married-civ-spouse;Other-service;Wife;White;Female;0;0;10;United-States;<=50K +56;Private;179625;10th;6;Separated;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +28;Private;119793;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;254989;11th;7;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;104830;7th-8th;4;Never-married;Transport-moving;Unmarried;White;Male;0;0;25;Guatemala;<=50K +49;Federal-gov;110373;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-not-inc;135416;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;50;United-States;<=50K +25;Private;298225;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +42;Private;166740;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;276624;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;226789;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;58;United-States;<=50K +37;Private;31023;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +42;Private;136986;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +41;Private;179580;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;36;United-States;>50K +23;Private;103277;Some-college;10;Divorced;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +31;Federal-gov;351141;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +36;Local-gov;191161;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;57;United-States;>50K +20;Private;148709;Some-college;10;Never-married;Prof-specialty;Unmarried;White;Female;0;0;25;United-States;<=50K +36;Private;128382;Some-college;10;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;45;United-States;<=50K +50;Private;144361;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +37;Private;172538;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;46028;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;60;United-States;<=50K +32;Private;198452;HS-grad;9;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;40;United-States;<=50K +59;Private;193895;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +50;Private;378747;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +42;Private;31251;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;37;United-States;<=50K +32;Private;71540;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;36480;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +18;Private;116528;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +60;Private;52152;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +60;Private;216690;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +42;Local-gov;227065;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;22;United-States;<=50K +49;Private;84013;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +35;Self-emp-inc;82051;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;176185;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;Iran;<=50K +59;Private;115414;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +55;Private;354923;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;393712;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +39;Private;98941;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;141483;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;226145;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +23;Private;394612;Bachelors;13;Never-married;Tech-support;Own-child;Black;Male;0;0;40;United-States;<=50K +22;Private;231085;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +55;Self-emp-not-inc;183810;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +19;Private;186159;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;162282;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;25;United-States;<=50K +23;Private;273206;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;23;United-States;<=50K +23;Private;102729;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +42;Private;198096;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +22;State-gov;292933;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +18;Private;135924;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +34;Private;27409;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;299507;Assoc-acdm;12;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +62;Self-emp-not-inc;102631;Some-college;10;Widowed;Farming-fishing;Unmarried;White;Female;0;0;50;United-States;<=50K +51;Private;153486;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;434292;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;30;United-States;<=50K +28;Self-emp-not-inc;240172;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +56;Private;219426;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;295791;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;30;United-States;<=50K +23;Local-gov;496382;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;White;Female;0;0;40;Guatemala;<=50K +33;Private;376483;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;30;United-States;<=50K +27;Private;107218;HS-grad;9;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +21;Private;246207;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +18;?;80564;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +37;Local-gov;328301;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +39;Local-gov;301614;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;121040;Assoc-acdm;12;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +37;Private;125550;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +34;Private;170772;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;180551;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;48189;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;30;United-States;<=50K +20;Private;432154;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;8;Mexico;<=50K +26;Private;263200;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +47;Private;123207;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +17;Private;110798;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +31;Private;185528;Some-college;10;Divorced;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +34;Private;181311;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;528616;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +39;Private;272950;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +22;?;195532;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;197583;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +40;Private;48612;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +68;?;170182;Some-college;10;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Local-gov;230885;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;>50K +54;Private;174102;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +23;Private;352606;HS-grad;9;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;241153;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +54;Private;155433;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +40;Private;125461;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;42;United-States;<=50K +19;Private;331556;10th;6;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;?;138575;HS-grad;9;Never-married;?;Other-relative;White;Male;0;0;60;United-States;<=50K +35;Private;223514;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +41;Private;147206;12th;8;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +26;Private;174592;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;268620;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +70;Self-emp-not-inc;150886;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +45;Private;112362;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +83;Private;195507;HS-grad;9;Widowed;Protective-serv;Not-in-family;White;Male;0;0;55;United-States;<=50K +59;Private;192983;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;120544;9th;5;Never-married;Other-service;Own-child;Black;Male;0;0;15;United-States;<=50K +31;Private;59083;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;208277;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +24;Local-gov;184678;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;278736;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +48;Local-gov;39464;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;52;United-States;<=50K +27;Private;162343;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Dominican-Republic;<=50K +41;Private;204046;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;255647;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;Mexico;<=50K +53;Private;123011;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;>50K +66;Self-emp-not-inc;291362;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;159187;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +30;State-gov;126414;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;227626;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +74;Private;211075;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;331651;Some-college;10;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;515025;10th;6;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;40;United-States;<=50K +53;Private;394474;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Self-emp-not-inc;337505;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +42;Private;211860;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;102684;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;32;United-States;<=50K +62;?;225657;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +33;Private;121966;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;396790;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;20;United-States;<=50K +46;Local-gov;149949;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +25;Private;252187;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;209934;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +29;Federal-gov;229300;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;<=50K +50;Private;200618;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;216984;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +40;Private;212760;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;150309;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;45;United-States;<=50K +54;Private;174655;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;109621;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;225124;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;172695;11th;7;Widowed;Other-service;Not-in-family;White;Female;0;0;27;El-Salvador;<=50K +71;Self-emp-not-inc;238479;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;8;United-States;<=50K +27;Private;37754;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +56;Private;85018;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +64;Private;256466;HS-grad;9;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;60;Philippines;>50K +23;Private;169188;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;25;United-States;<=50K +36;Private;210945;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Local-gov;287031;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +26;Private;224361;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Federal-gov;108464;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;75826;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;120277;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;104439;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;Private;56870;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;200819;12th;8;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;170562;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;20;United-States;<=50K +30;Private;80933;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;33088;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;177651;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +31;Private;261943;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;169785;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;Italy;<=50K +20;Private;141481;11th;7;Married-civ-spouse;Sales;Other-relative;White;Female;0;0;50;United-States;<=50K +37;Private;433491;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +28;Local-gov;86615;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;30;United-States;<=50K +39;Private;125550;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +46;State-gov;421223;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;26999;Bachelors;13;Separated;Exec-managerial;Unmarried;White;Female;0;0;42;United-States;<=50K +34;?;133861;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +44;Private;115323;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-inc;23778;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Self-emp-not-inc;190836;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +38;Self-emp-inc;159179;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +64;?;205479;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +19;?;47713;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;163237;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +61;Private;202202;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;168837;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;112271;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;52537;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Male;0;0;30;United-States;<=50K +27;Private;38353;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;141698;10th;6;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;28856;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;175652;11th;7;Never-married;Other-service;Other-relative;White;Female;0;0;15;United-States;<=50K +36;Private;213008;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;92463;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +20;State-gov;125165;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +42;Self-emp-not-inc;103980;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +40;?;180362;Bachelors;13;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;53903;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;179735;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +41;?;277390;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;30;United-States;>50K +49;Private;122177;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;80;United-States;<=50K +46;Private;188161;HS-grad;9;Separated;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;170108;HS-grad;9;Separated;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Private;175262;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;Mexico;<=50K +19;?;204441;HS-grad;9;Never-married;?;Other-relative;Black;Male;0;0;20;United-States;<=50K +19;Private;164395;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +18;Private;115630;11th;7;Never-married;Adm-clerical;Own-child;Black;Male;0;0;20;United-States;<=50K +39;Private;178815;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +60;Self-emp-not-inc;168223;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Private;100295;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;50;Canada;>50K +36;Private;172256;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;>50K +45;Private;51664;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;115963;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;333910;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;43;United-States;<=50K +23;Private;148948;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +48;State-gov;130561;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;24;United-States;<=50K +46;Private;428350;HS-grad;9;Married-civ-spouse;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +43;Private;188808;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +25;Private;112847;HS-grad;9;Married-civ-spouse;Transport-moving;Own-child;Other;Male;0;0;40;United-States;<=50K +50;Private;110748;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Self-emp-inc;156653;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +35;Private;196491;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +65;Local-gov;254413;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;91262;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;45;United-States;<=50K +43;Self-emp-not-inc;154785;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;80;Thailand;<=50K +55;Private;84231;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;226327;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;248406;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;32;United-States;<=50K +22;?;32732;Some-college;10;Never-married;?;Own-child;White;Male;0;0;50;United-States;<=50K +20;Private;95918;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;375675;12th;8;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;>50K +43;Private;244172;HS-grad;9;Separated;Transport-moving;Unmarried;White;Male;0;0;40;Mexico;<=50K +46;Federal-gov;233555;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;?;<=50K +34;Private;77271;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;20;England;<=50K +35;Private;33397;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Private;446358;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;41;United-States;<=50K +25;Private;151810;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;28;United-States;<=50K +44;Private;125461;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +35;Private;133906;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;155106;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;232766;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;305319;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;121023;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +29;Private;198997;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +20;Private;38772;10th;6;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;50;United-States;<=50K +41;Private;253759;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;130067;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;65;United-States;<=50K +37;Private;203828;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;State-gov;221558;Masters;14;Separated;Prof-specialty;Unmarried;White;Female;0;0;24;?;<=50K +31;Private;156464;10th;6;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;72333;Some-college;10;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +33;Local-gov;83671;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;50;United-States;<=50K +19;Private;91928;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;35;United-States;<=50K +44;Private;99203;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Self-emp-inc;455995;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;65;United-States;>50K +62;Private;192515;HS-grad;9;Widowed;Farming-fishing;Unmarried;White;Female;0;0;40;United-States;<=50K +17;Private;221129;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +60;Private;85413;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;>50K +31;Private;196125;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;265638;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +53;Private;177727;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +44;Private;205822;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +43;Private;112607;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +18;Private;183315;11th;7;Never-married;Sales;Own-child;Black;Female;0;0;10;United-States;<=50K +47;Private;116279;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;43;United-States;<=50K +37;Private;215419;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;United-States;<=50K +40;Private;310101;Some-college;10;Separated;Sales;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +57;Self-emp-inc;61885;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;60;United-States;>50K +32;Private;227214;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;40;Ecuador;<=50K +64;Private;239450;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;118847;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +40;Self-emp-not-inc;95226;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +17;?;659273;11th;7;Never-married;?;Own-child;Black;Female;0;0;40;Trinadad&Tobago;<=50K +23;Private;215395;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;170600;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;91044;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;15;United-States;<=50K +27;Private;318639;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;60;Mexico;<=50K +23;Private;160398;Some-college;10;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;216824;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;30;United-States;<=50K +35;Private;308945;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;75;United-States;<=50K +47;Private;30840;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +33;Private;99309;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;188576;Bachelors;13;Separated;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +46;Private;83064;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +24;Private;403865;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;<=50K +40;Private;235786;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +44;Private;191893;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +31;Local-gov;149184;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;97;United-States;>50K +23;Private;435604;Assoc-voc;11;Separated;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +30;Self-emp-inc;109282;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +31;Private;248178;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;35;United-States;<=50K +24;?;112683;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;32;United-States;<=50K +27;Private;183639;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +35;Local-gov;107233;HS-grad;9;Never-married;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Male;0;0;55;United-States;<=50K +30;Self-emp-not-inc;178255;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;?;<=50K +33;Self-emp-not-inc;38223;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;70;United-States;<=50K +34;Private;228873;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +29;Private;202182;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +39;Self-emp-not-inc;152587;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;204304;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +53;Private;290640;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +29;Private;134890;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +33;Private;452924;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Mexico;<=50K +57;Private;245193;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +69;State-gov;34339;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;184756;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +56;Private;392160;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;25;Mexico;<=50K +49;Private;168337;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;309513;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +70;Private;77219;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;37;United-States;<=50K +44;Private;212888;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +58;Local-gov;237879;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;58;United-States;<=50K +42;Self-emp-not-inc;93099;Some-college;10;Married-civ-spouse;Prof-specialty;Own-child;White;Female;0;0;25;United-States;<=50K +41;Private;225193;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;50814;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;249351;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +18;Private;301762;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +50;Private;195298;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +84;Private;241065;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;66;United-States;<=50K +47;Private;129513;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +19;Private;374262;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;382146;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;?;185291;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +53;Private;30447;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +58;Private;49893;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;197387;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;24;Mexico;<=50K +36;Self-emp-not-inc;111957;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;<=50K +34;Private;340458;12th;8;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;185670;1st-4th;2;Widowed;Prof-specialty;Unmarried;White;Female;0;0;21;Mexico;<=50K +37;Private;210945;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;24;United-States;<=50K +43;Private;350661;Prof-school;15;Separated;Tech-support;Not-in-family;White;Male;0;0;50;Columbia;>50K +42;Private;190543;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +21;Private;70261;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +49;Self-emp-not-inc;179048;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;Greece;<=50K +35;Private;242094;HS-grad;9;Married-civ-spouse;Other-service;Other-relative;Black;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;117634;Some-college;10;Widowed;Craft-repair;Unmarried;White;Female;0;0;30;United-States;<=50K +28;Private;82531;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +51;Private;193374;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +30;?;186420;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;323605;7th-8th;4;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;>50K +56;Private;371064;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;39927;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;8;United-States;<=50K +22;Private;64292;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;37;United-States;<=50K +54;?;196975;HS-grad;9;Divorced;?;Other-relative;White;Male;0;0;45;United-States;<=50K +22;Private;210165;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +68;Private;144137;Some-college;10;Divorced;Priv-house-serv;Other-relative;White;Female;0;0;30;United-States;<=50K +56;Local-gov;155657;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +23;?;72953;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +69;Self-emp-not-inc;107548;9th;5;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;163258;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;221324;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;444822;11th;7;Never-married;Sales;Own-child;White;Female;0;0;8;Mexico;<=50K +17;Private;154398;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;16;Haiti;<=50K +50;Private;159650;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;>50K +62;Private;290754;10th;6;Widowed;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;49654;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;52;United-States;<=50K +20;Federal-gov;147352;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;227943;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +18;Private;423024;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +53;?;64322;7th-8th;4;Separated;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;445940;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +23;Private;230824;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;48882;HS-grad;9;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +47;Private;168195;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +53;Local-gov;188644;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +28;Private;136077;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;State-gov;119793;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;336513;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +58;Private;186991;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;?;218948;7th-8th;4;Never-married;?;Not-in-family;White;Female;0;0;32;Mexico;<=50K +26;Private;211435;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;109997;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;286789;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +25;Private;102460;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;287160;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +39;Private;198097;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +52;Private;119111;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;174461;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +26;Self-emp-not-inc;281678;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +24;?;377725;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;151053;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +49;Local-gov;186539;Masters;14;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +20;?;149478;Some-college;10;Never-married;?;Other-relative;White;Female;0;0;25;United-States;<=50K +40;Private;198452;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;176711;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;165310;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Other-relative;White;Male;0;0;20;United-States;<=50K +37;Private;213008;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Japan;<=50K +21;State-gov;38251;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;20;United-States;<=50K +33;Private;125761;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;36;United-States;<=50K +28;Private;148645;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;208613;Bachelors;13;Separated;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;192565;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;183885;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +47;Self-emp-not-inc;243631;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +37;Private;191754;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +26;Private;261278;Some-college;10;Separated;Sales;Other-relative;Black;Male;0;0;30;United-States;<=50K +55;Private;127014;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;197919;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;217460;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;86551;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +54;Self-emp-inc;98051;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;54;United-States;>50K +38;Private;215917;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +53;Self-emp-not-inc;192982;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;85;United-States;<=50K +27;Self-emp-not-inc;334132;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;78;United-States;<=50K +42;Private;136986;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +62;Private;116812;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;89648;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +33;?;190027;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;20;United-States;<=50K +59;Private;99248;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;57600;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +25;Private;199224;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +58;Private;140363;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;36;United-States;<=50K +30;Private;308812;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +21;Private;275421;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +61;Private;213321;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;157747;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;182314;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +70;Private;220589;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;12;United-States;<=50K +55;?;208640;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +46;Private;124071;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;44;United-States;<=50K +35;Federal-gov;20469;Some-college;10;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +31;Private;154227;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;>50K +37;Private;105044;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +43;Private;35910;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;43;United-States;>50K +23;Private;189203;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Local-gov;19700;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +45;Private;106113;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;256263;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +33;?;202498;7th-8th;4;Separated;?;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +38;Private;120074;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +28;Private;122922;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;Local-gov;222596;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;107302;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;India;<=50K +36;Private;156400;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;53373;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +22;Private;58916;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +45;Local-gov;167159;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;>50K +24;Private;283806;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;140426;1st-4th;2;Married-spouse-absent;Other-service;Not-in-family;White;Male;0;0;35;?;<=50K +41;Private;33310;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Self-emp-not-inc;202560;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;<=50K +25;Self-emp-not-inc;60828;Some-college;10;Never-married;Farming-fishing;Own-child;White;Female;0;0;50;United-States;<=50K +53;State-gov;153486;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +28;Local-gov;167536;Assoc-acdm;12;Widowed;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +30;Local-gov;370990;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;198867;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Local-gov;174924;Some-college;10;Divorced;Protective-serv;Unmarried;White;Male;0;0;48;Germany;<=50K +30;Private;175856;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;<=50K +41;Private;169628;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;40;?;<=50K +29;?;125159;Some-college;10;Never-married;?;Not-in-family;Black;Male;0;0;36;?;<=50K +31;Private;220690;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;80;United-States;<=50K +59;Self-emp-not-inc;116878;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Greece;<=50K +33;Self-emp-not-inc;134737;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +49;State-gov;122177;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +50;Federal-gov;69614;10th;6;Separated;Craft-repair;Not-in-family;White;Male;0;0;56;United-States;<=50K +28;Private;299422;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +81;?;162882;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;112854;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;16;United-States;<=50K +32;Self-emp-not-inc;33417;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +47;Federal-gov;224559;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +44;?;468706;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +24;Private;357028;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;186303;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +52;Private;127749;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;291386;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;138054;Assoc-acdm;12;Never-married;Other-service;Not-in-family;Other;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;174533;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;200835;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;108658;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +43;Private;180985;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +25;Private;34803;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;20;United-States;<=50K +59;Private;75867;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +29;Private;156819;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +30;Private;61272;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Portugal;<=50K +24;Private;39827;Some-college;10;Married-civ-spouse;Machine-op-inspct;Wife;Other;Female;0;0;40;Puerto-Rico;<=50K +38;Private;130007;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;80324;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +30;Private;140869;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +73;Local-gov;181902;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;10;Poland;>50K +30;Private;287908;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +33;Private;309630;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;28225;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;58;United-States;<=50K +18;Private;39222;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;122272;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +50;Self-emp-inc;198400;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;60;United-States;<=50K +62;?;73091;7th-8th;4;Widowed;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +22;Private;208946;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;348416;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;379046;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +29;Private;183887;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;127961;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +24;Private;211129;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +29;Local-gov;187649;HS-grad;9;Separated;Protective-serv;Other-relative;White;Female;0;0;40;United-States;<=50K +49;Federal-gov;94754;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +33;Private;231826;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +28;Private;142764;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;48;United-States;<=50K +22;Private;126822;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;60;United-States;<=50K +37;Private;188069;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;284395;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;31267;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;161444;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Columbia;<=50K +25;Private;144483;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;133655;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;State-gov;112074;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +21;Private;249727;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;22;United-States;<=50K +18;Private;165754;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +30;Local-gov;172822;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;288433;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +40;Private;33331;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;168071;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;<=50K +45;Private;207277;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +29;Private;130620;Some-college;10;Married-spouse-absent;Sales;Own-child;Asian-Pac-Islander;Female;0;0;26;India;<=50K +40;Private;136244;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;972354;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;48;United-States;<=50K +20;Private;245297;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +32;State-gov;71151;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;20;United-States;<=50K +19;Private;118352;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +21;Private;117210;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;120068;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;48343;11th;7;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +52;Private;84451;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +51;?;76437;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;281704;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +54;Private;123011;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +50;Private;104729;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;White;Female;0;0;48;United-States;<=50K +29;Private;110134;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;186067;10th;6;Never-married;Tech-support;Own-child;White;Male;0;0;10;United-States;<=50K +47;Private;214702;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;37;Puerto-Rico;<=50K +46;Private;384795;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;32;United-States;<=50K +30;Private;175931;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;44;United-States;<=50K +58;Private;366324;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;<=50K +48;Private;118717;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +23;Private;219835;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;Mexico;<=50K +23;Private;176486;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;36;United-States;<=50K +45;Private;273435;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;182661;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;20;United-States;<=50K +26;Private;212304;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;48;United-States;<=50K +50;Local-gov;133963;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;>50K +49;Private;165152;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +26;Private;274724;Some-college;10;Never-married;Other-service;Other-relative;White;Male;0;0;40;Nicaragua;<=50K +47;Private;196707;Prof-school;15;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;26620;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;361481;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +28;Self-emp-not-inc;214689;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;174907;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +50;Self-emp-not-inc;348099;10th;6;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +30;?;104965;9th;5;Never-married;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +31;Private;31600;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;286282;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +33;Private;238912;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +37;Private;197429;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;>50K +48;Private;47343;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +24;Private;249957;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;175942;HS-grad;9;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;40;France;<=50K +33;Private;142675;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +51;Federal-gov;190333;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;196396;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;166740;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;174533;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;210867;7th-8th;4;Never-married;Farming-fishing;Own-child;White;Male;0;0;50;?;<=50K +40;Private;144067;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;106964;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;178136;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +38;Private;196554;Prof-school;15;Separated;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;>50K +40;Self-emp-not-inc;403550;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;498216;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;192755;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;20;United-States;>50K +20;?;53738;Some-college;10;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +33;Private;156192;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +45;Private;189802;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;179171;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;38;Germany;<=50K +32;Private;77634;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;189830;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;50;United-States;<=50K +19;Private;127190;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +44;?;174147;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;138107;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;35;United-States;<=50K +44;Self-emp-inc;269733;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +19;Private;318822;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +48;Private;48885;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +45;Private;205424;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +40;Private;173858;7th-8th;4;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;42;Cambodia;<=50K +34;Private;202450;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +20;Private;154779;Some-college;10;Never-married;Sales;Other-relative;Other;Female;0;0;40;United-States;<=50K +33;Private;180551;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;177522;HS-grad;9;Married-civ-spouse;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;277328;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;32;Cuba;<=50K +34;Private;112584;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +48;State-gov;85384;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;?;123971;11th;7;Divorced;?;Not-in-family;White;Female;0;0;49;United-States;<=50K +42;Private;69019;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +22;Private;112847;HS-grad;9;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;52900;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;>50K +42;Private;37937;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +45;Private;59380;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +47;Private;114770;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +29;Private;216481;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +34;Private;176469;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;38;United-States;<=50K +34;Private;176831;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +39;Federal-gov;410034;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;93662;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;24;United-States;<=50K +42;Self-emp-inc;144236;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +48;Private;240917;11th;7;Separated;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +51;Private;243361;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +44;Self-emp-not-inc;35166;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;90;United-States;<=50K +46;Self-emp-inc;182655;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +32;Private;272944;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;228686;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +33;Private;236818;Assoc-voc;11;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;26;United-States;<=50K +47;Self-emp-not-inc;117865;HS-grad;9;Married-AF-spouse;Craft-repair;Husband;White;Male;0;0;90;United-States;<=50K +64;Self-emp-not-inc;106538;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +62;Private;153891;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +52;Private;190909;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;191002;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;Poland;<=50K +42;Private;89073;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +55;Private;259532;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +29;?;189282;HS-grad;9;Married-civ-spouse;?;Not-in-family;White;Female;0;0;27;United-States;<=50K +42;Private;132481;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;24;United-States;<=50K +30;Private;205659;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;Thailand;>50K +32;Private;182323;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;152246;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +47;Private;155659;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;155198;9th;5;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;35;United-States;<=50K +48;Self-emp-not-inc;100931;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;162945;7th-8th;4;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +31;Federal-gov;334346;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;181597;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;133969;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;63;South;<=50K +50;Private;210217;Bachelors;13;Divorced;Sales;Unmarried;Black;Male;0;0;40;United-States;<=50K +49;Private;169711;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Germany;>50K +19;Private;271521;HS-grad;9;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;24;United-States;<=50K +18;Private;51255;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +44;Self-emp-not-inc;26669;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;99;United-States;<=50K +54;Private;194580;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +35;State-gov;177974;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +27;State-gov;315640;Masters;14;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;20;China;<=50K +50;Self-emp-inc;136913;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +43;State-gov;230961;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;167062;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +47;Private;120131;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;243368;Preschool;1;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;Mexico;<=50K +30;Private;171876;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +19;Private;136866;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;45;United-States;<=50K +55;Private;185459;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +67;?;81761;HS-grad;9;Divorced;?;Own-child;White;Male;0;0;20;United-States;<=50K +31;Private;43716;Assoc-voc;11;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;43;United-States;<=50K +30;Private;220939;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;?;148657;Preschool;1;Married-civ-spouse;?;Wife;White;Female;0;0;40;Mexico;<=50K +51;Federal-gov;40808;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;0;0;43;United-States;<=50K +34;Private;183473;HS-grad;9;Divorced;Transport-moving;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;108496;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +50;Private;204838;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;38;United-States;<=50K +29;Private;132686;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +17;State-gov;117906;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;304386;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +52;?;248113;Preschool;1;Married-spouse-absent;?;Other-relative;White;Male;0;0;40;Mexico;<=50K +18;?;215463;12th;8;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;259719;Some-college;10;Divorced;Handlers-cleaners;Unmarried;Black;Male;0;0;40;Nicaragua;<=50K +25;?;35829;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;50;United-States;<=50K +34;Private;248795;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;45;United-States;<=50K +37;Local-gov;128054;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Self-emp-inc;113543;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;Private;252153;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +45;Federal-gov;45891;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Male;0;0;42;United-States;<=50K +30;Private;112263;11th;7;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;47791;12th;8;Divorced;Other-service;Not-in-family;White;Female;0;0;10;United-States;<=50K +41;Private;202980;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;4;Peru;<=50K +21;Private;34918;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +48;Private;91251;7th-8th;4;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;30;China;<=50K +34;Private;306215;Assoc-voc;11;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +25;Private;203570;HS-grad;9;Separated;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;355918;Bachelors;13;Separated;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +35;Self-emp-not-inc;198841;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +42;Private;282964;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;312197;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;75;Mexico;>50K +32;Private;200246;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;182771;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +23;Private;199908;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;172104;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Other;Male;0;0;40;India;>50K +53;Self-emp-not-inc;35295;Bachelors;13;Never-married;Sales;Unmarried;White;Male;0;0;60;United-States;>50K +27;Private;216858;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;52;United-States;<=50K +27;Private;332187;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;65;United-States;<=50K +57;Private;255109;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +17;Private;111332;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +59;Local-gov;238431;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +34;Private;131552;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +30;Private;110239;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +31;State-gov;255830;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;Black;Female;0;0;45;United-States;<=50K +18;?;175648;11th;7;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;82998;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +19;Private;164320;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +20;Self-emp-not-inc;263498;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;162381;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Local-gov;229651;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;357348;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +19;Private;269657;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +38;Local-gov;82880;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;15;United-States;<=50K +19;Private;389755;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +41;Private;207685;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;?;<=50K +24;?;196388;Assoc-acdm;12;Never-married;?;Not-in-family;White;Male;0;0;12;United-States;<=50K +24;Private;50341;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;214134;10th;6;Never-married;Transport-moving;Not-in-family;Amer-Indian-Eskimo;Male;0;0;84;United-States;<=50K +45;Private;114032;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +45;Private;192053;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +48;Private;240231;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Japan;>50K +42;Private;44402;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +35;Self-emp-not-inc;191503;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;163530;HS-grad;9;Divorced;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +51;Local-gov;136823;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;32;United-States;<=50K +59;Private;121912;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Local-gov;58624;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +27;Local-gov;74056;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +57;Private;182028;Assoc-acdm;12;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +40;Private;209040;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;206046;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;182494;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;185057;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;35;Scotland;<=50K +60;Private;147473;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +20;?;388811;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;221912;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;48189;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +29;State-gov;382272;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;48347;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;249571;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +79;Private;121318;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;20;United-States;<=50K +29;Private;185019;12th;8;Never-married;Other-service;Not-in-family;Other;Male;0;0;40;United-States;<=50K +60;Private;27886;7th-8th;4;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;94741;12th;8;Married-civ-spouse;Other-service;Wife;White;Female;0;0;24;United-States;<=50K +44;Private;191256;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;>50K +47;Private;256866;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +59;Private;197148;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;24;United-States;>50K +37;Private;312271;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;65;United-States;<=50K +21;Private;118657;HS-grad;9;Separated;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +68;Private;224338;Assoc-voc;11;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;?;234970;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +23;Private;227915;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Female;0;0;33;United-States;<=50K +45;Self-emp-not-inc;160962;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +22;Private;188950;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;201328;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;218678;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;49;United-States;<=50K +23;Private;184255;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +39;Federal-gov;200968;Some-college;10;Married-civ-spouse;Adm-clerical;Other-relative;White;Male;0;0;45;United-States;>50K +26;Private;102264;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;300584;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;208946;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +36;Private;105021;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +20;Private;124751;Some-college;10;Never-married;Priv-house-serv;Own-child;White;Female;0;0;20;United-States;<=50K +18;Private;274057;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;8;United-States;<=50K +38;Private;132879;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +43;Self-emp-inc;260960;Bachelors;13;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;35;United-States;<=50K +56;Private;208415;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Black;Male;0;0;40;?;<=50K +42;Private;356934;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Private;154410;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Private;35378;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +32;Private;73621;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;42;United-States;<=50K +66;Private;217198;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;10;United-States;<=50K +22;Private;157332;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +51;Private;202956;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;173495;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +39;Private;444219;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;Black;Female;0;0;45;United-States;<=50K +48;Private;125120;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;37;United-States;<=50K +20;Private;190429;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;?;190303;Assoc-acdm;12;Never-married;?;Other-relative;White;Male;0;0;40;United-States;<=50K +29;Federal-gov;208534;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;<=50K +36;Self-emp-not-inc;343721;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;?;>50K +35;Self-emp-inc;196373;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +31;Private;433788;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +48;State-gov;122086;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;137314;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +40;Self-emp-not-inc;33068;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;210688;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;United-States;<=50K +37;State-gov;103474;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +65;Private;115880;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Self-emp-not-inc;233933;10th;6;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;32;United-States;<=50K +42;Private;52781;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;586657;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Japan;>50K +62;Private;113080;7th-8th;4;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;251905;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Male;0;0;50;United-States;<=50K +76;Self-emp-not-inc;225964;Some-college;10;Widowed;Sales;Not-in-family;White;Male;0;0;8;United-States;<=50K +20;?;194096;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;263831;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;133136;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +32;Private;121634;10th;6;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;Mexico;<=50K +22;Self-emp-inc;40767;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Federal-gov;355789;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;50;United-States;<=50K +43;Local-gov;311914;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;91189;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +44;Federal-gov;344060;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;Private;113823;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;76107;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;>50K +23;Private;117618;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +39;Private;238008;HS-grad;9;Widowed;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;136480;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +19;Private;351040;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Puerto-Rico;<=50K +35;Private;1226583;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +23;Private;195767;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;187540;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;79372;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;226665;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;42;United-States;>50K +52;Private;213209;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +49;Private;211005;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;60;United-States;<=50K +24;Private;96178;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;110713;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +45;Self-emp-not-inc;225456;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +45;Private;180309;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +62;Self-emp-not-inc;39630;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;273828;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Mexico;<=50K +56;Private;172071;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;40;Jamaica;<=50K +28;Private;218887;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Female;0;0;35;United-States;<=50K +23;Private;664670;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +43;Private;209149;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +26;Private;84619;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;447346;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +55;Local-gov;37869;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +48;State-gov;99086;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +38;Private;326886;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +18;Private;181755;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +56;Self-emp-not-inc;249368;HS-grad;9;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;<=50K +39;Self-emp-not-inc;326400;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;504725;5th-6th;3;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;50;Mexico;<=50K +36;Private;88967;11th;7;Never-married;Transport-moving;Unmarried;Amer-Indian-Eskimo;Male;0;0;65;United-States;<=50K +50;Private;148953;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +17;Private;342752;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +57;Private;220871;7th-8th;4;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +73;Private;29675;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;0;12;United-States;<=50K +50;Federal-gov;183611;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;115215;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;45;United-States;<=50K +27;Private;152231;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +24;?;41356;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;225142;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +23;Self-emp-not-inc;121313;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;134821;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;311350;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;102106;10th;6;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +47;Private;427055;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;Mexico;<=50K +40;Private;117860;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Private;285885;9th;5;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;212800;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;194864;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;18;United-States;<=50K +36;Private;31438;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;43;United-States;<=50K +46;Private;148254;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +69;Private;113035;1st-4th;2;Widowed;Priv-house-serv;Not-in-family;Black;Female;0;0;4;United-States;<=50K +28;Private;144521;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +20;Private;172232;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;48;United-States;<=50K +25;Private;191921;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;208463;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +53;Federal-gov;68985;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;22418;9th;5;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +57;Private;163047;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;38;United-States;<=50K +20;?;124954;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +47;Private;197702;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;166415;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;52;United-States;<=50K +50;State-gov;116211;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;>50K +20;Private;33644;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +46;Private;73019;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;169182;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;38;Puerto-Rico;<=50K +53;Private;20438;Some-college;10;Separated;Exec-managerial;Unmarried;Amer-Indian-Eskimo;Female;0;0;15;United-States;<=50K +21;Private;109869;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +58;Private;316849;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;208043;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +61;Private;153790;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +56;State-gov;153451;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +59;Private;96840;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +72;Private;192732;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;20;United-States;<=50K +33;Private;209101;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;146919;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +46;Local-gov;192323;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;>50K +48;Private;217019;HS-grad;9;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;28;United-States;<=50K +33;Private;198211;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;222490;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;106758;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +31;Private;561334;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;203710;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Local-gov;203322;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +46;State-gov;312015;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +25;Private;209428;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;El-Salvador;<=50K +17;Private;114420;11th;7;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +35;Private;100375;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +33;Self-emp-not-inc;42485;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +37;Private;130620;12th;8;Married-civ-spouse;Sales;Wife;Asian-Pac-Islander;Female;0;0;33;?;<=50K +39;Local-gov;134367;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +42;Private;147099;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +45;Private;119904;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;50;United-States;>50K +47;Self-emp-inc;105779;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;>50K +64;Private;165020;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +43;?;142030;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;241360;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +31;Private;162572;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;35917;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-inc;35723;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +43;Private;194773;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;62155;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;35;United-States;<=50K +46;Private;174370;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +26;Private;161007;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;80;United-States;<=50K +24;Private;270517;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;Mexico;<=50K +43;Private;163847;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +40;Private;193882;Assoc-voc;11;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +61;Private;160037;7th-8th;4;Divorced;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +34;Federal-gov;189944;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;72;United-States;<=50K +85;Private;115364;HS-grad;9;Widowed;Sales;Unmarried;White;Male;0;0;35;United-States;<=50K +41;Private;163174;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;214399;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +60;Private;156616;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;204862;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +34;?;55921;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;153082;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +45;Local-gov;195418;Masters;14;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +21;Local-gov;276840;12th;8;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +50;Self-emp-inc;119099;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;99;United-States;>50K +41;Self-emp-not-inc;83411;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +21;Private;198992;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;33;United-States;<=50K +45;Private;337825;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +34;Private;192002;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;189346;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;231962;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +48;Private;200471;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +41;Private;184846;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;233851;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;499001;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;Mexico;<=50K +65;Local-gov;125768;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;28;United-States;<=50K +28;Private;157624;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;146767;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +45;Private;118291;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;80;United-States;<=50K +43;Private;313181;HS-grad;9;Divorced;Adm-clerical;Other-relative;Black;Male;0;0;38;United-States;<=50K +31;Private;87891;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;226443;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +45;Private;81132;Some-college;10;Married-civ-spouse;Craft-repair;Other-relative;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +20;Private;216436;Bachelors;13;Never-married;Sales;Other-relative;Black;Female;0;0;30;United-States;<=50K +25;Private;213412;Bachelors;13;Never-married;Tech-support;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Private;179358;HS-grad;9;Widowed;Handlers-cleaners;Unmarried;White;Female;0;0;30;United-States;<=50K +56;Private;199763;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +26;Private;239390;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;18;United-States;<=50K +47;Self-emp-not-inc;173613;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;65;United-States;<=50K +40;Self-emp-inc;37869;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;302845;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;48;United-States;<=50K +34;State-gov;85218;Masters;14;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;24;United-States;<=50K +37;Private;48268;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +38;Private;173968;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;70982;Assoc-voc;11;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;16;United-States;<=50K +49;Private;166857;9th;5;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;?;256191;HS-grad;9;Never-married;?;Own-child;Black;Female;0;0;25;United-States;<=50K +26;Private;162872;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +82;Private;152148;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;2;United-States;<=50K +40;Private;139193;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;791084;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +23;Private;137214;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;37;United-States;<=50K +19;Private;183258;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +67;Private;154035;HS-grad;9;Widowed;Handlers-cleaners;Other-relative;Black;Male;0;0;32;United-States;<=50K +41;Private;213055;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Other;Female;0;0;50;United-States;<=50K +37;Private;155064;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;33551;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;169995;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;104196;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +39;State-gov;114055;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;274398;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +67;?;244122;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;1;United-States;<=50K +49;Private;196571;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +66;Private;101607;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;10;United-States;<=50K +59;Self-emp-inc;255822;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +72;Private;195184;HS-grad;9;Widowed;Priv-house-serv;Unmarried;White;Female;0;0;12;Cuba;<=50K +35;Federal-gov;245372;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;169583;Bachelors;13;Married-AF-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +36;Private;224531;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;186151;HS-grad;9;Separated;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;118693;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +39;Private;297449;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;125206;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;393264;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;108140;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +63;Private;264968;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;318106;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;156025;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +38;State-gov;149455;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +25;Private;359985;5th-6th;3;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;33;Mexico;<=50K +44;State-gov;165108;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +43;Private;115178;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +21;Private;149224;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +41;Local-gov;352056;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;174717;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +75;?;173064;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +52;Self-emp-not-inc;135716;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +47;Private;44216;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +24;Private;178255;Some-college;10;Married-civ-spouse;Priv-house-serv;Wife;White;Female;0;0;40;?;<=50K +30;State-gov;70617;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;10;China;<=50K +40;Private;356934;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +27;Private;271714;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +26;Private;247025;HS-grad;9;Never-married;Protective-serv;Unmarried;White;Male;0;0;44;United-States;<=50K +32;Private;107417;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;37;United-States;<=50K +36;State-gov;116554;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;917220;12th;8;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +25;Private;430084;Some-college;10;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Private;202937;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;Poland;<=50K +27;Private;62737;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;508548;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +35;Self-emp-not-inc;381931;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +29;Private;246974;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;105431;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +36;Private;146311;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;159869;Doctorate;16;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;204641;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;66297;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;>50K +38;Private;227615;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +66;?;107744;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;263340;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +18;Private;141918;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;22;United-States;<=50K +37;Private;294292;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;128736;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Local-gov;511289;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;>50K +27;Private;302406;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +34;Local-gov;101517;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +54;State-gov;161334;Masters;14;Married-spouse-absent;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;China;<=50K +24;Self-emp-inc;189148;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;103111;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +48;Self-emp-not-inc;51620;Bachelors;13;Separated;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;31606;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;34292;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;38;United-States;<=50K +21;Private;107882;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;9;United-States;<=50K +18;Private;39529;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +18;Private;135315;9th;5;Never-married;Sales;Own-child;Other;Female;0;0;32;United-States;<=50K +29;Private;107812;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;229729;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;111891;HS-grad;9;Separated;Machine-op-inspct;Other-relative;Black;Female;0;0;40;United-States;<=50K +32;Private;340917;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;202952;10th;6;Divorced;Other-service;Not-in-family;Black;Female;0;0;24;United-States;<=50K +79;Private;333230;HS-grad;9;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;6;United-States;<=50K +34;Private;114955;Assoc-acdm;12;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;159869;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Self-emp-not-inc;57758;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +29;Private;207064;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;151364;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;102828;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Greece;<=50K +20;?;210029;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;142519;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +49;Private;104455;Bachelors;13;Married-spouse-absent;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +77;Self-emp-inc;192230;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;292592;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +27;Private;330132;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +22;Private;51111;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Local-gov;258037;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Cuba;>50K +35;State-gov;349066;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +62;?;191188;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;146497;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;<=50K +38;Private;175120;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;416577;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;45;United-States;<=50K +29;Private;253814;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +33;Private;159247;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +35;Self-emp-not-inc;102471;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;80;Puerto-Rico;<=50K +42;Private;213464;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;211968;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +43;Federal-gov;32016;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +69;Private;512992;11th;7;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;45;United-States;<=50K +39;Private;135020;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;109133;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Portugal;<=50K +28;Private;142712;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Federal-gov;76900;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;112176;Some-college;10;Divorced;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +43;Federal-gov;262233;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +49;Private;122066;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;Hungary;<=50K +28;Private;194690;7th-8th;4;Separated;Other-service;Own-child;White;Male;0;0;60;Mexico;<=50K +35;Local-gov;308945;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +57;Private;46699;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +45;Private;377757;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;102147;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;113770;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +35;Private;139012;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +45;Private;148900;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +28;Federal-gov;329426;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +64;Self-emp-inc;181408;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;10;United-States;<=50K +44;Local-gov;101950;Prof-school;15;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Self-emp-not-inc;32537;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +41;Private;209547;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;202373;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;25;United-States;<=50K +22;Private;138768;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +49;Private;143482;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Private;200190;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;>50K +23;Private;148315;Some-college;10;Separated;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;270517;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;Mexico;<=50K +40;Private;53506;Bachelors;13;Divorced;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;105693;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;189589;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;164574;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +37;Private;185744;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;20;United-States;<=50K +40;Local-gov;33155;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;233571;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;211253;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;137895;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +62;State-gov;159699;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +31;Private;295922;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;175856;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;216129;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +62;Local-gov;407669;7th-8th;4;Widowed;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +43;Local-gov;214242;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;285457;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;50;United-States;<=50K +22;?;246386;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;142751;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Local-gov;283635;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;76482;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;State-gov;431745;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +33;Private;67006;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;45;United-States;<=50K +23;Private;240398;Bachelors;13;Never-married;Sales;Not-in-family;Black;Male;0;0;15;United-States;<=50K +33;Federal-gov;182714;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;65;United-States;>50K +50;Federal-gov;172046;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;185177;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;United-States;<=50K +21;Private;115895;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;184589;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;21;United-States;<=50K +32;Private;282611;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;218649;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +22;State-gov;157541;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;10;United-States;<=50K +70;Private;145419;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;5;United-States;<=50K +34;Private;122616;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;84;United-States;>50K +53;Private;204584;Masters;14;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;117210;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +37;Private;69481;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;29312;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;80;United-States;>50K +57;Private;120302;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +65;?;111916;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;182227;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +30;Private;219110;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;<=50K +31;Private;200192;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;Germany;<=50K +19;Private;427862;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +23;State-gov;33551;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;<=50K +44;Private;164043;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +43;?;116632;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;45;United-States;>50K +42;Private;175133;Some-college;10;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;289731;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;256362;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;282612;Assoc-voc;11;Never-married;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;73679;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;237824;HS-grad;9;Married-spouse-absent;Priv-house-serv;Other-relative;Black;Female;0;0;60;Jamaica;<=50K +36;Local-gov;357720;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Self-emp-not-inc;155489;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;Poland;<=50K +44;Private;138077;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;32;United-States;<=50K +42;Private;183479;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;103596;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;99;United-States;<=50K +33;Private;172304;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;313853;Bachelors;13;Divorced;Other-service;Unmarried;Black;Male;0;0;45;United-States;>50K +17;Private;294485;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +20;Private;637080;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +32;Private;385959;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +33;Self-emp-not-inc;116539;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;129263;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;60;United-States;<=50K +60;Private;141253;10th;6;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;48;United-States;<=50K +35;State-gov;35626;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;15;United-States;<=50K +43;Federal-gov;94937;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;220269;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +36;Private;214604;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;42;United-States;>50K +27;Private;81540;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +50;Private;24013;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;84;United-States;>50K +22;Private;124940;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Amer-Indian-Eskimo;Female;0;0;44;United-States;<=50K +33;State-gov;313729;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +61;Private;192237;10th;6;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +28;?;168524;Assoc-voc;11;Married-civ-spouse;?;Own-child;White;Female;0;0;40;United-States;<=50K +41;Self-emp-not-inc;113324;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;>50K +22;Private;215477;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;199903;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;431861;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;274679;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Private;206125;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Local-gov;221740;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;30;United-States;>50K +58;Private;202652;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;37;United-States;<=50K +39;Private;348960;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;171876;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Private;157932;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +58;Private;201344;Bachelors;13;Divorced;Craft-repair;Own-child;White;Female;0;0;20;United-States;<=50K +38;Private;354739;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;36;Philippines;>50K +34;Private;40067;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;326862;Some-college;10;Divorced;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +48;Local-gov;189762;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +65;?;149049;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;226246;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;38251;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;196385;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;37;United-States;>50K +38;Self-emp-not-inc;217054;Some-college;10;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;104973;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +40;State-gov;34218;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Local-gov;292962;HS-grad;9;Never-married;Craft-repair;Other-relative;Black;Female;0;0;40;United-States;<=50K +45;Private;235924;Bachelors;13;Divorced;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;98656;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +70;Private;102610;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;80;United-States;<=50K +32;Local-gov;296466;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +33;Private;323069;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;184756;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Local-gov;233993;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +22;Private;130724;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;25;United-States;<=50K +55;Private;113912;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;<=50K +29;Private;216479;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;Private;135480;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;16;United-States;<=50K +22;Private;204160;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +64;State-gov;114650;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;240172;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Male;0;0;50;United-States;<=50K +28;Private;184831;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;124590;HS-grad;9;Never-married;Exec-managerial;Other-relative;White;Male;0;0;40;United-States;<=50K +26;Private;202033;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +18;Private;156874;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;27;United-States;<=50K +48;Local-gov;334409;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +36;Private;311255;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;Haiti;<=50K +23;Private;214227;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +41;Private;115849;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +56;State-gov;671292;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;38;United-States;>50K +53;Private;31460;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;141824;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;137952;Some-college;10;Married-civ-spouse;Other-service;Husband;Other;Male;0;0;40;Puerto-Rico;<=50K +46;Private;174426;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;169955;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;36;Puerto-Rico;<=50K +43;Self-emp-not-inc;48087;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +37;State-gov;210452;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;<=50K +22;Local-gov;134181;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;50;United-States;<=50K +51;Federal-gov;45487;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;80;United-States;<=50K +47;Private;183522;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;>50K +40;Private;199303;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;83064;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;?;134997;Some-college;10;Separated;?;Unmarried;White;Female;0;0;20;United-States;<=50K +30;Private;44419;Some-college;10;Never-married;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Self-emp-not-inc;442612;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +31;Local-gov;158092;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +31;Private;374833;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +30;Private;112650;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +50;Local-gov;183390;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +27;Private;207418;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +22;?;335453;Some-college;10;Never-married;?;Own-child;White;Female;0;0;16;United-States;<=50K +29;Private;243660;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +28;Private;54243;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +54;Private;50385;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;45;United-States;>50K +47;State-gov;187581;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;48;United-States;>50K +34;Private;37380;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;247025;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;?;29231;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +23;State-gov;101094;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;60;United-States;<=50K +42;Local-gov;176716;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;118429;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +52;Federal-gov;221532;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;>50K +22;?;120572;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +27;Local-gov;124680;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;153160;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +49;State-gov;142856;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;277700;Preschool;1;Never-married;Other-service;Own-child;White;Male;0;0;32;United-States;<=50K +55;Self-emp-inc;67433;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +47;Private;121124;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;394447;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;33;United-States;>50K +36;Private;79649;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;203763;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Female;0;0;80;United-States;<=50K +21;?;494638;Assoc-acdm;12;Never-married;?;Own-child;White;Male;0;0;15;United-States;<=50K +48;Private;162816;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;109117;Assoc-voc;11;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +24;Private;32732;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +57;Self-emp-not-inc;217692;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Female;0;0;38;United-States;<=50K +20;Private;34590;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;60;United-States;<=50K +36;Private;91037;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +44;Private;171484;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +57;Private;36990;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;52;United-States;<=50K +33;Private;198211;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +61;?;30475;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +28;Private;245790;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +60;Private;182687;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Local-gov;247807;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +58;Private;163113;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;35;United-States;>50K +50;Private;180522;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;38;United-States;<=50K +23;Local-gov;203353;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;12;United-States;<=50K +30;Private;87469;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;?;216563;11th;7;Never-married;?;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Local-gov;173584;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +34;Private;319854;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;Taiwan;>50K +37;Federal-gov;408229;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;431307;10th;6;Married-civ-spouse;Protective-serv;Wife;Black;Female;0;0;50;United-States;<=50K +37;Private;134088;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;246396;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Mexico;<=50K +34;Private;159255;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +34;Private;106014;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;120130;Some-college;10;Separated;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +32;State-gov;203849;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;19;United-States;<=50K +24;Private;207940;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;<=50K +28;Private;302406;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +69;?;171050;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;9;United-States;<=50K +32;Private;459007;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;90;United-States;<=50K +58;Private;372181;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;>50K +47;Self-emp-not-inc;172034;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;75;United-States;>50K +35;Self-emp-inc;338320;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +24;Private;353696;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;Canada;<=50K +46;Self-emp-not-inc;342907;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;60;United-States;>50K +22;Private;103762;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +36;State-gov;47570;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;119432;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +23;Local-gov;144165;Bachelors;13;Never-married;Prof-specialty;Own-child;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +35;Private;180647;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;State-gov;150488;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;200876;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;16;United-States;<=50K +43;Private;188199;9th;5;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +53;State-gov;118793;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +54;Local-gov;204325;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;<=50K +29;Private;256671;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +46;Private;231515;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;47;Cuba;<=50K +24;Private;100669;Some-college;10;Never-married;Handlers-cleaners;Own-child;Asian-Pac-Islander;Male;0;0;30;United-States;<=50K +30;Private;88913;Some-college;10;Separated;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +23;Private;363219;Some-college;10;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;6;United-States;<=50K +27;?;291547;Bachelors;13;Married-civ-spouse;?;Not-in-family;Other;Female;0;0;6;Mexico;<=50K +36;Private;308945;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;100316;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +33;Private;296453;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;15;United-States;<=50K +66;Private;298834;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;Canada;<=50K +45;Self-emp-not-inc;188694;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +68;?;29240;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;12;United-States;<=50K +17;Private;154908;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +31;Private;22201;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +46;Private;216999;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +40;Private;186916;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;116677;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;95763;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +42;Private;266710;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;41;United-States;<=50K +46;Private;117849;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +30;Private;242460;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Self-emp-not-inc;202729;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;Private;181652;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;174760;Assoc-acdm;12;Married-spouse-absent;Farming-fishing;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +34;Private;56121;11th;7;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;390369;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;149726;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +22;Private;51262;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;190350;12th;8;Never-married;Other-service;Unmarried;Black;Female;0;0;35;?;<=50K +36;Private;154835;HS-grad;9;Separated;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +36;Private;194630;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Self-emp-not-inc;212207;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;11;United-States;<=50K +27;Private;204788;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;158688;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;97723;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Private;193026;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-not-inc;257250;7th-8th;4;Never-married;Farming-fishing;Own-child;White;Male;0;0;75;United-States;<=50K +48;Private;355978;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;376929;5th-6th;3;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;Mexico;<=50K +47;State-gov;123219;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +41;Private;82778;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +61;Self-emp-not-inc;115882;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +64;Private;103021;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;297767;Some-college;10;Separated;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +44;Private;259479;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;50;United-States;<=50K +20;Private;167787;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +23;Local-gov;40021;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;70;United-States;<=50K +52;Private;245275;10th;6;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +43;Private;37402;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;25;United-States;<=50K +32;Private;103608;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +63;Private;137192;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +29;Private;137618;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;41;United-States;>50K +42;Self-emp-inc;96509;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;60;Taiwan;<=50K +65;Private;196174;10th;6;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;28;United-States;<=50K +24;Private;172612;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;141186;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;228190;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +40;Self-emp-inc;190290;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;?;>50K +38;Federal-gov;307404;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;152436;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +39;Private;282153;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +29;?;41281;Bachelors;13;Married-spouse-absent;?;Not-in-family;White;Male;0;0;50;United-States;<=50K +42;Private;162003;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;36;United-States;>50K +36;Private;190759;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +26;Private;208122;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +55;Private;129173;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;287548;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +41;Private;216116;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;?;<=50K +24;Private;146706;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +47;Private;285200;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Self-emp-inc;314375;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +44;Private;203943;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;35;United-States;>50K +18;?;274746;HS-grad;9;Never-married;?;Unmarried;White;Female;0;0;20;United-States;<=50K +27;Private;517000;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;35;United-States;<=50K +36;Private;66173;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +21;Private;182823;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +29;Private;159479;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Other;Male;0;0;55;United-States;<=50K +25;Private;135568;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +73;Private;333676;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;201699;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +28;Private;96020;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +43;Private;176138;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +47;Private;47496;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;42;United-States;<=50K +20;Private;187158;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +22;Private;249727;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +76;Self-emp-not-inc;237624;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;10;United-States;<=50K +24;Private;175254;Some-college;10;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;42924;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;205950;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +33;Private;111985;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;58;United-States;<=50K +30;Private;167476;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +40;Private;221172;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +27;?;188711;Some-college;10;Divorced;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +49;Private;199448;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;313038;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;148431;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Other;Female;0;0;40;United-States;<=50K +19;Private;112432;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;58;United-States;<=50K +46;Private;57914;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;145166;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +56;Private;247119;7th-8th;4;Widowed;Machine-op-inspct;Unmarried;Other;Female;0;0;40;Dominican-Republic;<=50K +53;Private;196278;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;?;366531;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;216481;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;188027;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +37;Private;66686;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +41;Private;74775;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;30;Vietnam;<=50K +65;?;325537;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +30;Self-emp-not-inc;250499;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;55;United-States;>50K +57;Self-emp-not-inc;192869;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +44;Self-emp-inc;121352;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +27;Self-emp-not-inc;123116;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +57;Local-gov;339163;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;Mexico;<=50K +59;Self-emp-not-inc;124771;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +22;Private;199266;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +39;Private;190728;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Local-gov;421446;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;>50K +61;Private;215944;9th;5;Divorced;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +24;Private;72310;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;43;United-States;<=50K +25;Private;57512;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;Private;89413;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Local-gov;28151;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;>50K +30;Private;226943;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +44;Private;182402;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;305352;10th;6;Divorced;Craft-repair;Other-relative;Black;Male;0;0;40;United-States;<=50K +63;Self-emp-inc;189253;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +60;Private;296485;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;204375;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;>50K +49;Self-emp-not-inc;249585;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;<=50K +47;Private;148995;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +42;Self-emp-inc;168071;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;43;United-States;>50K +53;Private;194995;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;Italy;<=50K +28;?;196630;Assoc-voc;11;Separated;?;Unmarried;White;Female;0;0;40;Mexico;<=50K +20;Private;50397;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;35;United-States;<=50K +43;Private;60001;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;44;United-States;>50K +31;Private;223046;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +29;?;44921;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +24;Private;154571;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +39;Private;67136;Assoc-voc;11;Separated;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +29;Private;188675;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;Jamaica;>50K +20;Private;390817;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;25;Mexico;<=50K +23;?;145964;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;30424;11th;7;Separated;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +53;Private;548361;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;189148;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;<=50K +51;Self-emp-not-inc;311569;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;187653;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;48;United-States;<=50K +38;Private;235379;Assoc-acdm;12;Never-married;Prof-specialty;Unmarried;White;Female;0;0;36;United-States;<=50K +41;Private;188615;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +58;Private;322691;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +25;Private;184698;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Dominican-Republic;<=50K +50;Private;144361;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;130057;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +31;Self-emp-inc;117963;Doctorate;16;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;123876;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;248445;HS-grad;9;Divorced;Handlers-cleaners;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +32;Private;207172;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +62;Private;134768;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +40;Local-gov;269168;HS-grad;9;Married-civ-spouse;Other-service;Husband;Other;Male;0;0;40;?;<=50K +37;Private;60722;Some-college;10;Divorced;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Japan;>50K +41;Private;648223;1st-4th;2;Married-spouse-absent;Farming-fishing;Unmarried;White;Male;0;0;40;Mexico;<=50K +56;Private;298695;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +20;Private;219835;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Self-emp-not-inc;313729;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +45;Private;140644;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +30;Private;203488;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;132341;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +27;Private;161683;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;42;United-States;<=50K +38;Private;312771;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +39;Private;258102;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +57;?;24127;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +47;Private;254367;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +77;?;185426;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +43;Private;152629;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Local-gov;141058;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;<=50K +41;Private;233130;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;406641;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +30;State-gov;119422;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;255486;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;25;United-States;<=50K +22;Private;161532;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +25;Private;75759;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;>50K +18;Private;163332;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;22;United-States;<=50K +28;Private;37933;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;48;United-States;<=50K +21;Private;165107;Some-college;10;Never-married;Priv-house-serv;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;126011;Assoc-voc;11;Divorced;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +28;Federal-gov;56651;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +23;Private;522881;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;Mexico;<=50K +32;Private;191777;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;35;England;<=50K +27;Private;132686;12th;8;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;50;United-States;<=50K +55;Private;201112;HS-grad;9;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Private;174283;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;208591;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;126399;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;32;United-States;<=50K +50;Private;142073;HS-grad;9;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +18;Private;395567;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +74;Private;180455;Bachelors;13;Widowed;Other-service;Not-in-family;White;Female;0;0;8;United-States;<=50K +22;Private;235853;9th;5;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;160731;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;State-gov;31935;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;80;United-States;<=50K +23;Private;223019;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +46;State-gov;248895;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Private;200323;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +41;Private;230020;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;United-States;<=50K +29;Private;134890;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +48;Private;162096;9th;5;Married-civ-spouse;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Female;0;0;45;China;<=50K +51;Private;103824;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;Haiti;<=50K +34;State-gov;61431;12th;8;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +58;Private;197319;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +52;Private;183618;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;263729;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;39493;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +36;Private;185360;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;132661;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;60;United-States;<=50K +20;Private;266400;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;48;United-States;<=50K +23;Private;433669;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Self-emp-inc;216473;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +20;Self-emp-not-inc;217404;10th;6;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;227778;Assoc-voc;11;Never-married;Other-service;Other-relative;Black;Male;0;0;40;United-States;<=50K +73;State-gov;96262;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Private;247566;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;24;United-States;<=50K +56;Private;139616;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +32;Private;73585;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;165814;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +37;Private;108913;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;34975;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;157078;10th;6;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Private;232672;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +21;Private;294295;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;130454;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +24;Local-gov;461678;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;State-gov;252284;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;256737;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Local-gov;96480;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;Germany;<=50K +25;Private;234263;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;109952;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;262570;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;65716;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +68;Private;201732;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +66;Self-emp-not-inc;174788;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +38;Private;278924;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;101593;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +71;?;193863;7th-8th;4;Widowed;?;Other-relative;White;Female;0;0;16;Poland;<=50K +37;Private;342768;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;State-gov;176727;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;99179;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;State-gov;354104;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +25;Private;61956;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;Federal-gov;137917;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +40;Private;224658;Some-college;10;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +25;Private;224361;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;362912;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;50;United-States;<=50K +23;Private;218782;10th;6;Never-married;Handlers-cleaners;Other-relative;Other;Male;0;0;40;United-States;<=50K +28;Private;103389;Masters;14;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;308944;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;140092;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;202210;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +52;Private;416059;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +33;Self-emp-not-inc;281030;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;94;United-States;<=50K +19;Private;169758;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +41;Private;139907;10th;6;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;50;United-States;<=50K +18;Self-emp-inc;119422;HS-grad;9;Never-married;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;30;India;<=50K +40;Private;259307;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +51;Self-emp-not-inc;74160;Masters;14;Divorced;Prof-specialty;Unmarried;White;Male;0;0;60;United-States;>50K +49;Private;134797;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;State-gov;41103;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +38;Local-gov;193026;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +57;Private;303986;5th-6th;3;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Cuba;<=50K +66;Private;166461;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;26;United-States;<=50K +27;?;61387;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +25;Private;254746;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;?;180976;10th;6;Never-married;?;Unmarried;White;Female;0;0;35;United-States;<=50K +59;Self-emp-not-inc;136413;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;48;United-States;<=50K +25;Private;131463;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;218490;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;El-Salvador;>50K +75;?;260543;10th;6;Widowed;?;Other-relative;Asian-Pac-Islander;Female;0;0;1;China;<=50K +21;?;80680;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;117628;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;State-gov;175931;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;309566;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +53;Private;123703;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;369678;HS-grad;9;Never-married;?;Not-in-family;Other;Male;0;0;30;United-States;<=50K +58;Private;29928;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;36;United-States;<=50K +22;Private;167868;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +23;Private;235894;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +36;Private;111545;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +39;Private;175972;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;<=50K +34;Local-gov;254270;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Local-gov;185057;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;101345;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +32;Self-emp-not-inc;97723;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;127601;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +37;Private;227597;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;?;143995;Some-college;10;Never-married;?;Own-child;Black;Male;0;0;20;United-States;<=50K +21;Private;250051;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;10;United-States;<=50K +26;Private;284078;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;163787;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +27;Private;119170;11th;7;Never-married;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +20;Private;188612;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;38;Nicaragua;<=50K +36;Private;114605;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +31;?;317761;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;164197;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +54;Private;329266;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +34;Local-gov;207383;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;123598;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +33;Private;259931;11th;7;Separated;Machine-op-inspct;Other-relative;White;Male;0;0;30;United-States;<=50K +42;Private;106900;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;87054;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;82622;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +28;Private;181659;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;231348;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +40;Private;276096;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;290560;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +21;Private;307315;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +39;State-gov;99156;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;237928;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;39;United-States;<=50K +46;Private;153501;HS-grad;9;Never-married;Transport-moving;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +47;?;149700;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;36;United-States;>50K +35;Private;374524;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;75;United-States;>50K +60;Self-emp-not-inc;127805;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +35;Private;150217;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;24;Poland;<=50K +33;Private;295649;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;China;<=50K +21;Private;197182;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;241998;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +48;Federal-gov;156410;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;50;United-States;>50K +58;Private;473836;7th-8th;4;Widowed;Farming-fishing;Other-relative;White;Female;0;0;45;Guatemala;<=50K +21;Private;198431;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;113936;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;318915;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;175406;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;30;United-States;>50K +23;Federal-gov;320294;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;State-gov;400285;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +24;?;283731;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +38;Local-gov;227154;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +49;Private;298659;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;Mexico;<=50K +47;Private;212120;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +21;Private;175800;HS-grad;9;Never-married;Prof-specialty;Unmarried;White;Female;0;0;55;United-States;<=50K +55;Private;170169;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;344157;11th;7;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;199441;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;225456;HS-grad;9;Never-married;Tech-support;Other-relative;White;Male;0;0;50;United-States;<=50K +36;Private;61178;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;152568;HS-grad;9;Widowed;Sales;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +32;Private;208291;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;224358;10th;6;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;55176;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +60;State-gov;152711;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +53;Private;68684;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;185452;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Private;173851;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Local-gov;51424;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;262656;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;233194;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +22;Private;151105;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;18;United-States;<=50K +39;Private;317434;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Local-gov;745768;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;45;United-States;<=50K +19;Private;69927;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;16;United-States;<=50K +26;Private;302603;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;45;United-States;<=50K +52;Private;46788;Bachelors;13;Divorced;Craft-repair;Unmarried;White;Male;0;0;25;United-States;<=50K +45;Private;179135;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Federal-gov;175873;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +34;Private;57426;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +36;Private;312206;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;Without-pay;344858;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +26;State-gov;177035;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Private;88055;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;111095;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;192251;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;60;United-States;<=50K +27;Private;29807;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Female;0;0;40;Japan;<=50K +26;Federal-gov;211596;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;268276;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +59;Self-emp-not-inc;181070;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;England;>50K +53;Local-gov;20676;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;0;0;48;United-States;<=50K +35;Private;115803;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Local-gov;124827;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;95336;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +36;Private;257942;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;72593;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;147340;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;185325;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +59;Self-emp-not-inc;357943;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Local-gov;30682;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +24;Federal-gov;29591;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Other;Female;0;0;40;United-States;<=50K +36;Private;215392;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;133584;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;El-Salvador;<=50K +38;Private;210438;7th-8th;4;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;256916;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;73541;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;109952;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +54;Private;197975;5th-6th;3;Married-civ-spouse;Sales;Husband;White;Male;0;0;51;United-States;<=50K +27;Private;401723;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +42;Private;179524;Bachelors;13;Separated;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +33;State-gov;296282;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;145844;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +54;Private;96792;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +19;?;233779;Some-college;10;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +45;Private;347834;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;215373;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;<=50K +35;Self-emp-not-inc;169426;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;202856;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;36;United-States;<=50K +33;Private;50276;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Self-emp-not-inc;187454;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;126098;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;250639;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +64;Self-emp-inc;195366;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;186845;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;8;United-States;<=50K +20;Federal-gov;119156;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;20;United-States;<=50K +28;Private;162343;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +29;Self-emp-not-inc;394927;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +51;Private;172281;Bachelors;13;Separated;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;165681;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;258819;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +25;Private;130793;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +36;Private;118909;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;Jamaica;<=50K +44;Private;202466;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;60;United-States;<=50K +47;Private;161558;10th;6;Married-spouse-absent;Transport-moving;Not-in-family;Black;Male;0;0;45;United-States;<=50K +32;Private;188246;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;160120;Masters;14;Never-married;Prof-specialty;Unmarried;Asian-Pac-Islander;Male;0;0;40;South;<=50K +34;Self-emp-not-inc;123429;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +35;Self-emp-inc;340110;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +26;Private;523067;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;3;El-Salvador;<=50K +49;Self-emp-not-inc;113513;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +63;?;186809;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +46;Self-emp-not-inc;320421;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;25;United-States;<=50K +31;Local-gov;295589;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +22;Private;370548;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;120572;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;12;United-States;<=50K +52;Private;110977;Doctorate;16;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +26;Private;55860;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +34;Private;158800;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Private;131568;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;173613;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +22;Private;216867;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +38;Private;104089;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;208106;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Ecuador;<=50K +27;State-gov;340269;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;236246;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;213408;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;Cuba;<=50K +40;?;84232;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;4;United-States;<=50K +19;Private;302945;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;Thailand;<=50K +69;?;28197;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;>50K +20;Private;262749;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +34;Federal-gov;198265;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;<=50K +49;Private;170871;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +27;Private;177761;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;Other;Male;0;0;50;United-States;<=50K +59;Private;175689;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;14;Cuba;>50K +21;Private;77759;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +51;State-gov;77905;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +64;?;193575;11th;7;Never-married;?;Unmarried;White;Male;0;0;40;United-States;<=50K +41;State-gov;116520;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +18;?;85154;12th;8;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;24;Germany;<=50K +49;Private;180532;Masters;14;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;508891;HS-grad;9;Divorced;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +20;Private;211345;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;20;United-States;<=50K +69;Self-emp-not-inc;170877;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +18;?;97318;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +43;Private;184105;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;150941;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;44;United-States;<=50K +32;Private;303942;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Local-gov;273929;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;197077;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;162825;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +46;Private;159869;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;44;United-States;<=50K +19;Private;158343;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;?;<=50K +17;?;406920;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;227986;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;137527;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +36;Private;180150;12th;8;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;239539;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +58;Private;281792;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +40;Private;224799;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +66;Private;22313;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +42;Private;194636;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;156089;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;218667;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;358837;Some-college;10;Never-married;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;Private;174685;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;168854;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;54;United-States;<=50K +28;Private;133696;Bachelors;13;Never-married;Sales;Unmarried;White;Male;0;0;65;United-States;<=50K +23;Federal-gov;350680;Assoc-acdm;12;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;Poland;<=50K +18;Private;115215;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +43;Self-emp-not-inc;152958;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +29;Private;217200;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;235124;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;46;Dominican-Republic;<=50K +31;Local-gov;144949;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +60;Private;135470;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +42;Private;281209;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;155489;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +38;Private;290306;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;182042;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;19;United-States;<=50K +31;Private;210008;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +27;Self-emp-not-inc;30244;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;80;United-States;<=50K +50;Local-gov;30008;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +38;Self-emp-not-inc;201328;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;56;United-States;<=50K +36;State-gov;96468;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;486332;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;Mexico;<=50K +19;Private;46162;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;25;United-States;<=50K +60;Local-gov;98350;Some-college;10;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;60;Philippines;<=50K +45;Local-gov;175958;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;204527;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +22;?;57827;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;418176;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;32;United-States;<=50K +23;Private;262744;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;177287;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;30;United-States;<=50K +30;Private;255004;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Male;0;0;52;United-States;<=50K +62;Private;183735;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Self-emp-not-inc;318644;Prof-school;15;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +42;Federal-gov;132125;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;>50K +33;Private;206051;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Self-emp-inc;99185;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;?;>50K +35;Private;225750;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +33;Private;245777;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;169092;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;55;United-States;<=50K +62;Private;211035;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;>50K +24;Private;285432;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +50;Local-gov;154779;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +54;Private;37237;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +58;Private;417419;7th-8th;4;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +39;Self-emp-inc;33975;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;42485;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +27;Private;170017;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;41721;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;60;United-States;<=50K +64;Private;66634;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-inc;257216;Masters;14;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;167882;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;43;United-States;<=50K +45;Private;179428;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +26;Private;57512;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;301614;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-inc;189092;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +47;Private;217509;HS-grad;9;Widowed;Priv-house-serv;Not-in-family;Asian-Pac-Islander;Female;0;0;45;Thailand;<=50K +35;Private;308691;Masters;14;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +38;Private;169672;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;120914;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;370156;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +28;Private;398220;5th-6th;3;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +44;Self-emp-not-inc;208277;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;45;United-States;<=50K +40;Private;337456;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Private;172666;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Self-emp-not-inc;32280;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;45;United-States;<=50K +33;Private;194901;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +19;?;57329;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;Japan;<=50K +45;Local-gov;153312;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;10;United-States;>50K +23;Private;274797;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +31;Private;359249;Assoc-voc;11;Never-married;Protective-serv;Own-child;Black;Male;0;0;40;United-States;<=50K +22;Private;152744;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +59;Private;188041;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;97723;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +49;State-gov;354529;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;249727;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +26;Private;189590;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +23;State-gov;298871;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +55;Self-emp-not-inc;205296;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +47;Private;303637;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;49;United-States;>50K +44;Private;242861;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;37599;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;24;United-States;<=50K +32;Self-emp-not-inc;56328;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;8;United-States;>50K +20;Private;256211;Some-college;10;Never-married;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +84;Local-gov;163685;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;33;United-States;<=50K +40;Private;266084;Some-college;10;Divorced;Craft-repair;Other-relative;White;Male;0;0;50;United-States;<=50K +37;Private;161111;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;166634;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;Germany;<=50K +62;Self-emp-not-inc;204085;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +19;?;369527;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +47;Private;464945;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;Local-gov;174684;HS-grad;9;Divorced;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +26;Local-gov;166295;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;41;United-States;<=50K +36;Private;220511;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;246936;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;104509;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +48;?;266337;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;252168;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +25;Private;92093;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +62;Private;88055;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;129591;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;142719;HS-grad;9;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;0;0;65;United-States;<=50K +18;?;264924;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +46;Private;128796;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +38;Private;115336;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;70;United-States;<=50K +52;Private;190333;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +63;Self-emp-not-inc;179444;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;15;United-States;<=50K +49;Private;218676;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;<=50K +17;Local-gov;148194;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +33;Private;184833;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +19;Private;217769;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +27;?;180553;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;>50K +61;Private;56009;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;255334;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;>50K +29;Private;349154;10th;6;Separated;Farming-fishing;Unmarried;White;Female;0;0;40;Guatemala;<=50K +43;State-gov;41834;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;38;United-States;>50K +24;Private;113466;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;130856;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +61;Self-emp-not-inc;268797;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;17;United-States;<=50K +48;Private;202117;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;34;United-States;<=50K +19;Private;280146;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +30;Private;70377;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;236696;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +39;Local-gov;222572;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;0;43;United-States;<=50K +40;Private;96129;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;72;United-States;>50K +27;Local-gov;200492;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;193820;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +58;Private;220789;Bachelors;13;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +33;Private;101345;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;42;Canada;>50K +40;Private;140559;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +40;Self-emp-inc;64885;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +31;Private;402361;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;143582;HS-grad;9;Separated;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;48;China;<=50K +49;Private;185385;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;112706;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;130364;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +58;Local-gov;147428;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;205895;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +65;?;273569;HS-grad;9;Widowed;?;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Private;153160;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +48;Self-emp-not-inc;167918;Masters;14;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;50;India;<=50K +41;Private;195661;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;54;United-States;<=50K +27;State-gov;146243;Some-college;10;Separated;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +52;?;105428;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;12;United-States;<=50K +26;Private;149943;HS-grad;9;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;60;?;<=50K +52;Local-gov;246197;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Local-gov;192563;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +19;Private;244115;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;30;United-States;<=50K +39;Local-gov;98587;Some-college;10;Divorced;Prof-specialty;Own-child;White;Female;0;0;45;United-States;<=50K +47;Private;145886;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;244315;HS-grad;9;Divorced;Craft-repair;Other-relative;Other;Male;0;0;40;United-States;<=50K +48;Private;192779;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;209464;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +60;Private;25141;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;405793;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +47;Federal-gov;53498;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +69;?;476653;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +40;Self-emp-not-inc;162312;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;66;South;<=50K +41;State-gov;109762;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;123031;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;48;Trinadad&Tobago;<=50K +46;Federal-gov;119890;Assoc-voc;11;Separated;Tech-support;Not-in-family;Other;Female;0;0;30;United-States;<=50K +21;Self-emp-not-inc;409230;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;223308;Masters;14;Separated;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +38;?;129150;10th;6;Separated;?;Own-child;White;Male;0;0;35;United-States;<=50K +47;Self-emp-not-inc;119199;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +42;Local-gov;351161;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;174533;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +32;Private;324386;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;126568;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;33;United-States;<=50K +26;Private;275703;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;200471;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;<=50K +65;Private;155261;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +73;State-gov;74040;7th-8th;4;Divorced;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +34;Private;226296;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;211968;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +49;Local-gov;126446;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +25;Private;262885;11th;7;Never-married;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +39;Private;188069;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;25;United-States;<=50K +19;Private;113546;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;56;United-States;<=50K +24;Private;227070;10th;6;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +34;Private;136997;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +35;?;119006;HS-grad;9;Widowed;?;Own-child;White;Female;0;0;38;United-States;<=50K +21;Private;212407;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +43;Private;197810;Masters;14;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Federal-gov;35309;Bachelors;13;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;0;28;?;<=50K +39;Private;141802;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;?;184513;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;80;United-States;>50K +33;Self-emp-not-inc;124187;Assoc-acdm;12;Never-married;Other-service;Not-in-family;Black;Male;0;0;32;United-States;<=50K +19;Private;201743;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;26;United-States;<=50K +17;Private;156736;10th;6;Never-married;Sales;Unmarried;White;Female;0;0;12;United-States;<=50K +43;Self-emp-not-inc;47261;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +62;Private;150693;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;42;United-States;<=50K +53;Local-gov;233734;Masters;14;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;>50K +45;State-gov;35969;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +47;Private;159550;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +30;Private;190823;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +53;Private;213378;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;33;United-States;<=50K +24;Private;257500;HS-grad;9;Separated;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +41;Local-gov;488706;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +58;Local-gov;239405;5th-6th;3;Divorced;Other-service;Other-relative;Black;Female;0;0;40;Haiti;<=50K +63;State-gov;109735;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +50;Private;172942;Some-college;10;Divorced;Other-service;Own-child;White;Male;0;0;28;United-States;<=50K +29;Self-emp-inc;87745;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +55;Private;234125;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;272944;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Local-gov;129232;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;195835;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;251854;11th;7;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +40;Private;103474;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;30;United-States;<=50K +38;Private;22042;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;39;United-States;<=50K +37;Private;343721;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +19;Private;232368;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +55;Private;174478;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;29;United-States;<=50K +28;Private;274690;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Private;251675;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;El-Salvador;<=50K +32;?;647882;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;?;<=50K +32;Private;37380;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +34;Private;173730;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;353824;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +21;Private;225890;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;30;United-States;<=50K +24;State-gov;147147;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;20;United-States;<=50K +29;Private;394927;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +34;Local-gov;188682;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;?;115209;Prof-school;15;Married-spouse-absent;?;Unmarried;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +41;Private;277192;5th-6th;3;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;40;Mexico;<=50K +21;Private;314182;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;220776;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +31;Local-gov;189269;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +62;Private;161460;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;30;United-States;<=50K +51;Private;251487;7th-8th;4;Widowed;Machine-op-inspct;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +30;Private;177531;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;25;United-States;<=50K +24;Private;53942;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;113481;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;361324;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;330087;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +33;Private;276221;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;121055;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +62;Private;118696;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;Self-emp-not-inc;289741;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +18;Private;238401;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +43;Private;262038;5th-6th;3;Married-spouse-absent;Farming-fishing;Unmarried;White;Male;0;0;35;Mexico;<=50K +62;Self-emp-not-inc;26911;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;66;United-States;<=50K +29;Private;161155;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;252519;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;Haiti;>50K +69;?;167826;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;188900;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +25;Private;134113;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +47;Local-gov;165822;Some-college;10;Divorced;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +17;Private;99161;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;8;United-States;<=50K +41;Local-gov;74581;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;0;65;United-States;<=50K +19;Private;304643;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +57;Private;121821;1st-4th;2;Married-civ-spouse;Other-service;Husband;Other;Male;0;0;40;Dominican-Republic;<=50K +25;Private;154863;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Male;0;0;35;United-States;<=50K +37;Local-gov;365430;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Canada;>50K +29;Private;183111;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;50178;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +35;Private;186845;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +52;Private;159908;12th;8;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;128509;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Female;0;0;38;El-Salvador;<=50K +23;Private;143032;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;36;United-States;<=50K +31;Private;382368;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;210013;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;293928;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +21;Private;208503;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;10;United-States;<=50K +64;Local-gov;202738;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +37;Local-gov;144322;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +22;Private;160120;10th;6;Never-married;Transport-moving;Own-child;Asian-Pac-Islander;Male;0;0;30;United-States;<=50K +29;Self-emp-inc;190450;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;Germany;<=50K +37;Private;212900;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;115677;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;252250;11th;7;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;65;United-States;<=50K +27;Private;212041;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +58;State-gov;198145;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;>50K +60;Local-gov;113658;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +20;Private;32426;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +51;Private;98791;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +37;Private;203828;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +22;State-gov;186634;12th;8;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +56;Self-emp-not-inc;125147;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;97215;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +37;Private;330826;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;30;United-States;<=50K +27;Private;200802;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;156266;HS-grad;9;Never-married;Sales;Own-child;Amer-Indian-Eskimo;Male;0;0;20;United-States;<=50K +52;Self-emp-not-inc;72257;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;363087;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;25955;Some-college;10;Never-married;Craft-repair;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +20;Private;334633;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;109162;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +44;Private;569761;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +30;Private;209900;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;State-gov;272986;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;Black;Female;0;0;8;United-States;<=50K +55;?;52267;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;18;United-States;<=50K +46;Private;82946;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;104651;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +25;Local-gov;58441;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Local-gov;269733;HS-grad;9;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;128453;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;28;United-States;<=50K +36;Private;179468;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;183081;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;102938;Bachelors;13;Never-married;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +30;?;157289;11th;7;Never-married;?;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;359828;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +30;Private;155659;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +62;Private;173601;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;163352;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;85;United-States;>50K +36;Self-emp-not-inc;153976;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +49;State-gov;155372;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Private;329733;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;162576;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +26;Private;176520;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;53;United-States;<=50K +51;State-gov;226885;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;120781;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +30;Private;375827;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +46;Private;205504;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;20;United-States;<=50K +28;Private;198813;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Female;0;0;40;United-States;<=50K +62;Private;159908;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;38;United-States;>50K +69;Private;102874;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;24;United-States;<=50K +78;Private;180239;Masters;14;Widowed;Craft-repair;Unmarried;Asian-Pac-Islander;Male;0;0;40;South;<=50K +61;Private;539563;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +24;Private;261561;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;81057;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;160120;Bachelors;13;Married-civ-spouse;Sales;Husband;Other;Male;0;0;45;?;<=50K +17;Private;41979;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;275110;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;80;United-States;>50K +64;Private;265661;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;193246;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;France;<=50K +32;Private;236543;12th;8;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +19;Private;29510;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +42;State-gov;105804;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;194604;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +23;Private;1038553;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;45;United-States;<=50K +44;Private;307468;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;29;United-States;>50K +44;Local-gov;107845;Assoc-acdm;12;Divorced;Protective-serv;Not-in-family;White;Female;0;0;56;United-States;>50K +44;Self-emp-not-inc;567788;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +38;Private;91857;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +36;Private;732569;9th;5;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;86613;1st-4th;2;Never-married;Other-service;Not-in-family;White;Male;0;0;20;El-Salvador;<=50K +46;Private;35961;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Female;0;0;25;Germany;<=50K +47;Private;114754;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;329426;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +43;Private;181015;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;50;United-States;<=50K +44;Self-emp-not-inc;264740;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Private;381153;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Male;0;0;60;United-States;<=50K +36;Private;218542;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +78;Private;111189;7th-8th;4;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;35;Dominican-Republic;<=50K +24;Private;168997;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;168894;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;149809;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;344073;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +22;Private;416165;Some-college;10;Never-married;Sales;Unmarried;White;Female;0;0;32;United-States;<=50K +36;Private;41490;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +61;Private;40269;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +67;?;243256;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +42;Private;250536;Some-college;10;Separated;Other-service;Unmarried;Black;Female;0;0;21;Haiti;<=50K +49;Federal-gov;105586;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +58;Private;51499;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Local-gov;189878;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;299765;Some-college;10;Separated;Adm-clerical;Other-relative;Black;Female;0;0;40;Jamaica;<=50K +45;Self-emp-inc;155664;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;>50K +30;Private;54608;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +49;?;174702;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;35;United-States;<=50K +23;Private;201145;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;<=50K +51;Private;125796;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;35;Jamaica;<=50K +55;Private;249072;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +35;Private;99156;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;State-gov;94754;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;India;<=50K +36;Private;111128;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +32;Local-gov;157887;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;74194;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +47;Self-emp-inc;168191;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;28334;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +44;Private;721161;Some-college;10;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +36;Private;188069;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Private;145178;Some-college;10;Divorced;Craft-repair;Unmarried;Black;Female;0;0;30;United-States;<=50K +17;Private;52967;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;6;United-States;<=50K +18;Private;177578;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;38;United-States;<=50K +30;Self-emp-inc;185384;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;25;United-States;<=50K +66;Private;66008;HS-grad;9;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;50;England;<=50K +59;Private;329059;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Local-gov;348802;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +50;Private;34233;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;509629;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +28;Private;27956;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;99;Philippines;<=50K +44;Local-gov;83286;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +25;Private;309098;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;188950;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +20;Private;224217;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +67;Private;222899;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Self-emp-not-inc;123306;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +52;Federal-gov;279337;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;347166;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +37;Local-gov;251396;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Canada;>50K +17;Self-emp-inc;143034;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;4;United-States;<=50K +25;Private;57635;Assoc-voc;11;Married-civ-spouse;Sales;Wife;White;Female;0;0;42;United-States;>50K +35;Local-gov;162651;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +63;Private;28334;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +38;Local-gov;84570;Some-college;10;Never-married;Adm-clerical;Own-child;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +33;Private;181091;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;Iran;>50K +51;Local-gov;117496;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +64;State-gov;216160;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;Columbia;>50K +50;Self-emp-inc;204447;Some-college;10;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;374969;10th;6;Never-married;Transport-moving;Not-in-family;White;Male;0;0;56;United-States;<=50K +67;Private;35015;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;99;United-States;<=50K +46;Private;179869;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;137733;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;193125;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;103649;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Private;197932;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;40;Mexico;>50K +37;Private;249720;Bachelors;13;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;27;United-States;<=50K +55;Private;223613;1st-4th;2;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;30;Cuba;<=50K +24;Private;259865;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +21;Private;301694;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;Mexico;<=50K +46;Self-emp-inc;276934;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +25;Private;395512;12th;8;Married-civ-spouse;Machine-op-inspct;Other-relative;Other;Male;0;0;40;Mexico;<=50K +40;Private;168071;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;28;United-States;<=50K +23;Private;45317;Some-college;10;Separated;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;311177;Some-college;10;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;30;United-States;<=50K +59;Private;221336;10th;6;Widowed;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +18;Private;120691;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;35;?;<=50K +28;Private;107389;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;32;United-States;<=50K +17;Private;293440;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +53;Private;145409;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +22;Private;213902;5th-6th;3;Never-married;Priv-house-serv;Other-relative;White;Female;0;0;40;El-Salvador;<=50K +63;Private;100099;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;191856;Masters;14;Married-civ-spouse;Sales;Wife;White;Female;0;0;45;United-States;>50K +40;Local-gov;233891;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +61;Self-emp-not-inc;96073;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;England;>50K +43;Self-emp-not-inc;355856;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;Philippines;<=50K +48;Self-emp-not-inc;139212;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;State-gov;143931;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Federal-gov;160703;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;191291;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;119986;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +37;Private;227545;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;>50K +34;Private;228881;Some-college;10;Separated;Machine-op-inspct;Not-in-family;Other;Male;0;0;40;United-States;<=50K +23;Private;84648;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +63;Federal-gov;101996;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +63;?;68954;HS-grad;9;Widowed;?;Not-in-family;Black;Female;0;0;11;United-States;<=50K +55;Self-emp-inc;209569;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;50;United-States;>50K +31;Local-gov;331126;Bachelors;13;Never-married;Protective-serv;Own-child;Black;Male;0;0;48;United-States;<=50K +27;Private;279872;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Local-gov;185647;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;<=50K +52;Private;128871;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;64;United-States;<=50K +31;Federal-gov;386331;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;50;United-States;<=50K +53;Private;117814;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +43;Private;220609;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Local-gov;117022;HS-grad;9;Married-spouse-absent;Farming-fishing;Unmarried;Black;Male;0;0;40;United-States;<=50K +50;Self-emp-inc;176751;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;80;United-States;>50K +68;?;76371;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +37;Private;80410;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;127202;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;121471;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;219086;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +30;Private;241583;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;374253;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;55;United-States;<=50K +30;Private;214993;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Local-gov;199995;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +29;Private;120359;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;187513;Assoc-voc;11;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +65;Private;243569;Some-college;10;Widowed;Other-service;Unmarried;White;Female;0;0;24;United-States;<=50K +43;Private;295510;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +29;Private;29732;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;24;United-States;<=50K +32;Private;211743;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +37;Private;251396;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +64;Private;477697;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;16;United-States;<=50K +49;Private;151584;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;Private;193882;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Private;411395;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;36;United-States;<=50K +53;Private;191025;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +24;Private;154571;Assoc-voc;11;Never-married;Sales;Unmarried;Asian-Pac-Islander;Male;0;0;50;South;<=50K +31;Private;208657;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;29599;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;38;United-States;<=50K +36;Private;423711;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;122000;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +37;Private;148581;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +42;Self-emp-not-inc;222978;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +30;Private;149118;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Self-emp-inc;218407;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;70;Cuba;<=50K +44;Private;85604;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +19;Private;111232;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;99199;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +51;Private;199995;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +69;Private;122850;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;16;United-States;<=50K +73;?;90557;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +18;?;271935;11th;7;Never-married;?;Other-relative;White;Female;0;0;20;United-States;<=50K +33;Self-emp-not-inc;361497;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Local-gov;399020;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;55;United-States;<=50K +33;Private;345277;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;45;United-States;>50K +20;Federal-gov;55233;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;200515;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;188119;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;176683;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +22;Private;309178;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +67;Self-emp-not-inc;40021;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +31;Self-emp-inc;49923;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +36;?;36635;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;25;United-States;<=50K +43;Federal-gov;325706;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;India;>50K +33;Private;124407;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;301568;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;>50K +27;Private;339956;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;60;United-States;<=50K +36;Private;176335;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;198452;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +48;Private;171807;Bachelors;13;Divorced;Other-service;Unmarried;White;Female;0;0;56;United-States;>50K +25;Private;362826;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;45;United-States;<=50K +41;Self-emp-not-inc;344329;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;10;United-States;<=50K +26;Private;137678;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;175424;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +30;State-gov;137613;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;17;Taiwan;<=50K +67;Self-emp-not-inc;354405;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +32;Private;130057;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +48;Self-emp-not-inc;362883;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;>50K +51;Private;49017;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +39;Private;149943;Masters;14;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;40;China;<=50K +40;Self-emp-inc;99185;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;294708;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +19;Private;228238;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Mexico;<=50K +28;Private;156819;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;36;United-States;<=50K +47;Private;332727;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +20;Private;289944;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +29;Private;24153;Some-college;10;Married-civ-spouse;Other-service;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +40;Private;273425;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +61;Private;231183;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;313930;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +26;Private;114483;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;162108;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;168807;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +46;Local-gov;111558;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;69770;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +37;Private;291981;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;102460;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;287320;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;115677;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;239632;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;409172;Bachelors;13;Married-civ-spouse;Exec-managerial;Own-child;White;Male;0;0;55;United-States;<=50K +20;Private;186849;HS-grad;9;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +28;Private;118861;10th;6;Married-civ-spouse;Craft-repair;Wife;Other;Female;0;0;48;Guatemala;<=50K +26;Private;142689;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;?;<=50K +41;State-gov;170924;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +67;?;274451;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;153489;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;186489;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;46;United-States;<=50K +18;Private;192409;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +55;State-gov;337599;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;195545;HS-grad;9;Divorced;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +64;Private;61892;HS-grad;9;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;15;United-States;<=50K +34;Self-emp-not-inc;175697;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;75;United-States;<=50K +38;Private;80303;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +25;Private;419658;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;8;United-States;<=50K +21;Private;319163;Some-college;10;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +37;Private;126743;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;53;Mexico;<=50K +39;Private;301568;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;120461;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Private;268145;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +54;Private;257337;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +49;Self-emp-inc;213354;Masters;14;Separated;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;>50K +25;Private;303431;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +51;Private;124963;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;158218;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;35;United-States;<=50K +27;State-gov;553473;Bachelors;13;Married-civ-spouse;Protective-serv;Wife;Black;Female;0;0;48;United-States;<=50K +53;Private;46155;HS-grad;9;Married-civ-spouse;Priv-house-serv;Other-relative;White;Female;0;0;40;United-States;<=50K +68;Private;138714;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +56;Private;231781;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;496414;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;?;<=50K +24;Private;19410;HS-grad;9;Divorced;Sales;Unmarried;Amer-Indian-Eskimo;Female;0;0;48;United-States;<=50K +70;?;28471;9th;5;Widowed;?;Unmarried;White;Female;0;0;25;United-States;<=50K +24;Private;185821;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +74;?;272667;Assoc-acdm;12;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +23;?;194031;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +41;Local-gov;144995;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +45;Private;162494;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;19;United-States;<=50K +35;Private;171968;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;232569;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;161819;11th;7;Separated;Adm-clerical;Unmarried;Black;Female;0;0;25;United-States;<=50K +18;Private;123343;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;105449;Bachelors;13;Never-married;Priv-house-serv;Not-in-family;White;Male;0;0;25;United-States;<=50K +49;Private;181717;Assoc-voc;11;Separated;Prof-specialty;Own-child;White;Female;0;0;36;United-States;<=50K +45;Local-gov;102359;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;37;United-States;<=50K +27;Private;72887;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +28;Private;154571;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +35;Private;255191;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +33;Private;174789;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;110402;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +19;Private;208513;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;121904;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +49;Private;59380;Some-college;10;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Self-emp-inc;126675;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;<=50K +22;Private;217363;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;91836;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;184813;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;178142;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Self-emp-inc;281832;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Cuba;>50K +28;Private;96226;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +42;Private;195124;7th-8th;4;Married-spouse-absent;Prof-specialty;Other-relative;White;Male;0;0;35;Puerto-Rico;<=50K +50;Local-gov;97449;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;<=50K +32;Private;339773;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Federal-gov;210926;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;199499;Assoc-voc;11;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +46;Federal-gov;190729;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-inc;191385;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;77;United-States;<=50K +61;Private;193479;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;24;United-States;<=50K +43;Self-emp-not-inc;225165;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +35;Private;346766;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;State-gov;152307;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +18;?;79990;11th;7;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +42;Self-emp-not-inc;170649;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +23;Private;197207;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;229732;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +52;Private;204402;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;85;United-States;>50K +36;Private;181065;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +38;Private;179579;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;?;>50K +23;?;164574;Assoc-acdm;12;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +71;Private;179574;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;12;United-States;>50K +27;Private;191782;HS-grad;9;Never-married;Other-service;Other-relative;Black;Female;0;0;30;United-States;<=50K +56;Private;146660;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +28;Self-emp-not-inc;115945;Some-college;10;Never-married;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +45;Private;210875;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;137898;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +28;Local-gov;216965;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;201554;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;15;United-States;<=50K +62;Private;57970;7th-8th;4;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;208378;12th;8;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;61343;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;283872;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;20;United-States;<=50K +58;Private;225603;9th;5;Divorced;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;Private;401333;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;278228;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Private;145377;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;120238;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;144063;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +38;Private;238721;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;164920;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;152493;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +50;Private;92968;Bachelors;13;Never-married;Sales;Unmarried;White;Female;0;0;32;United-States;<=50K +50;Private;136836;HS-grad;9;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Federal-gov;216453;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;45;United-States;<=50K +30;Private;349148;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;<=50K +29;State-gov;309620;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;20;Taiwan;<=50K +22;State-gov;347803;Some-college;10;Never-married;Adm-clerical;Not-in-family;Other;Male;0;0;20;United-States;<=50K +42;Private;85995;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +19;?;167428;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;164569;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;48;United-States;<=50K +42;Self-emp-not-inc;308279;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;21;United-States;<=50K +20;Private;56322;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +51;?;203015;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;211654;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Self-emp-inc;120126;9th;5;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;239043;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;?;179761;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +20;Private;312017;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;Germany;<=50K +51;Private;257485;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +52;Private;49243;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;229716;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;38;United-States;<=50K +31;Private;341672;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;60;India;<=50K +24;Private;32311;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +56;Private;275236;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;?;400356;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;152420;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;50;United-States;<=50K +21;Private;235442;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;161691;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +20;?;173945;11th;7;Married-civ-spouse;?;Other-relative;White;Female;0;0;39;United-States;<=50K +41;Private;355918;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;>50K +45;State-gov;198660;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;122649;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +28;Private;421967;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;60;United-States;>50K +47;Private;74305;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +80;Self-emp-not-inc;34340;7th-8th;4;Widowed;Farming-fishing;Not-in-family;White;Male;0;0;35;United-States;<=50K +47;Self-emp-not-inc;182752;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;Iran;<=50K +19;?;48393;Some-college;10;Never-married;?;Own-child;White;Male;0;0;84;United-States;<=50K +45;Private;34248;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;186677;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +37;Private;167851;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;146460;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;209650;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +18;Self-emp-not-inc;132986;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +57;Private;94429;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;252406;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;174592;Masters;14;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;151322;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +51;Private;37237;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;>50K +38;Private;101192;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +77;?;152900;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +51;Private;94081;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +24;Private;329408;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;106028;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;65;United-States;<=50K +35;?;164866;10th;6;Divorced;?;Not-in-family;White;Male;0;0;99;United-States;<=50K +28;Private;138692;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Private;173968;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;228320;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;96585;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +42;Private;156580;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;Puerto-Rico;<=50K +58;Private;210673;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +52;Local-gov;137753;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;20;United-States;<=50K +29;Private;29865;HS-grad;9;Divorced;Sales;Not-in-family;Amer-Indian-Eskimo;Female;0;0;50;United-States;<=50K +27;Private;196044;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;308995;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;Jamaica;<=50K +28;Private;362491;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;94395;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;320047;10th;6;Married-spouse-absent;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;98535;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +65;Private;183170;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +18;?;331511;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +38;Private;195686;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;178244;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;127833;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +36;Private;269722;Masters;14;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +55;State-gov;136819;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;205604;5th-6th;3;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;30;Mexico;<=50K +28;Private;132078;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;234880;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +68;Self-emp-inc;140852;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;105614;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +18;Private;83492;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;225772;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;>50K +37;Private;242713;12th;8;Separated;Priv-house-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +60;Private;355865;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +43;Private;173316;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-inc;35662;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;70;United-States;>50K +17;Private;297246;11th;7;Never-married;Priv-house-serv;Own-child;White;Female;0;0;9;United-States;<=50K +43;Private;108945;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +39;Private;112158;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;26;?;<=50K +21;Self-emp-not-inc;57298;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +42;Self-emp-not-inc;115323;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;7;?;<=50K +21;Private;177265;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +28;Local-gov;336543;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;40;Hong;>50K +39;Self-emp-not-inc;52870;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +38;Local-gov;200153;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;453067;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;>50K +51;Federal-gov;27166;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;299598;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +23;Private;122048;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;345277;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;113147;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +43;Private;34007;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;255014;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +34;Private;152667;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;35;United-States;<=50K +21;Private;231053;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;30;United-States;<=50K +34;Private;103651;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-inc;124137;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;198183;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;466458;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +45;Self-emp-not-inc;114396;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +42;Private;186376;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;72;Philippines;>50K +90;Self-emp-not-inc;282095;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +44;State-gov;244974;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;44;United-States;>50K +34;Self-emp-not-inc;114691;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +35;Private;107160;12th;8;Separated;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +39;Self-emp-not-inc;142573;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;25;United-States;<=50K +29;Private;203833;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +24;Private;47791;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +49;Private;133729;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;17;United-States;<=50K +52;Self-emp-not-inc;135339;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +31;Private;128591;9th;5;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;133853;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +18;?;137363;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +27;Self-emp-not-inc;243569;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;119156;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;391114;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;252506;Some-college;10;Divorced;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +34;State-gov;117503;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;20;Italy;<=50K +25;State-gov;117833;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;19;United-States;<=50K +39;Private;294183;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;394927;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;259323;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +21;?;207988;HS-grad;9;Married-civ-spouse;?;Other-relative;White;Female;0;0;35;United-States;<=50K +33;Private;96635;Some-college;10;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;26;South;<=50K +27;Private;192283;Assoc-voc;11;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;38;United-States;<=50K +29;Private;214881;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;State-gov;167474;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;110713;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +20;Private;201204;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;197666;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;162002;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +41;Private;224799;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;89942;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;238685;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +54;Private;38795;9th;5;Separated;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +55;Private;90414;Bachelors;13;Married-spouse-absent;Craft-repair;Unmarried;White;Female;0;0;55;Ireland;<=50K +21;Private;190805;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;32;United-States;<=50K +19;Private;285263;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;177331;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +22;Private;347530;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +17;?;210547;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;204752;12th;8;Never-married;Sales;Own-child;White;Male;0;0;32;United-States;<=50K +74;Self-emp-not-inc;104001;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +45;Private;253116;10th;6;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;169037;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Self-emp-inc;202027;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +45;Private;170099;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;212847;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;85;United-States;<=50K +50;State-gov;307392;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;233428;HS-grad;9;Divorced;Exec-managerial;Other-relative;White;Female;0;0;40;United-States;<=50K +52;Private;177995;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;56;Mexico;>50K +24;Private;283613;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;43;United-States;<=50K +56;Self-emp-inc;184598;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;99;United-States;<=50K +27;Private;185647;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +38;Private;179579;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;131679;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Private;132973;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +22;Private;154713;HS-grad;9;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;121718;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Italy;<=50K +30;Private;255279;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +55;Private;202559;Bachelors;13;Married-civ-spouse;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;35;Philippines;<=50K +32;Private;153326;Bachelors;13;Married-civ-spouse;Prof-specialty;Other-relative;White;Male;0;0;40;United-States;<=50K +28;Private;75695;Some-college;10;Separated;Other-service;Not-in-family;White;Female;0;0;60;United-States;<=50K +33;Self-emp-inc;206609;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;234780;HS-grad;9;Never-married;Farming-fishing;Own-child;Black;Male;0;0;40;United-States;<=50K +27;Private;178778;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;171355;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;20;United-States;<=50K +63;Federal-gov;95680;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;18;United-States;>50K +67;Self-emp-not-inc;139960;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-inc;397280;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;72;?;<=50K +54;Private;421561;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +59;Private;245196;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +18;Private;27620;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +19;Private;187570;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +31;Private;102884;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;228399;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;7;United-States;<=50K +37;Private;176293;Some-college;10;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +51;Local-gov;108435;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;278391;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;157941;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;182866;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;206512;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;44;United-States;<=50K +33;Private;357954;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;35;India;<=50K +28;Private;189346;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;48;United-States;<=50K +45;Private;234652;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +25;Private;113436;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;15;United-States;<=50K +37;Private;204145;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +59;Private;157305;Preschool;1;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Dominican-Republic;<=50K +26;Private;104045;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +48;Private;280422;Some-college;10;Separated;Other-service;Not-in-family;White;Female;0;0;25;Peru;<=50K +64;Federal-gov;173754;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;211154;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;321435;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;State-gov;177083;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Private;178829;Masters;14;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;>50K +35;Federal-gov;287658;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +43;Private;209894;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +31;Private;334744;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;306967;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +35;Private;52187;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +35;Private;101978;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +35;State-gov;483530;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;77357;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +50;Private;149770;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +70;?;172652;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +46;Private;188293;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;116608;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;38;United-States;<=50K +37;State-gov;348960;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;>50K +24;Private;329530;9th;5;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;Mexico;<=50K +47;Local-gov;93476;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Female;0;0;70;United-States;<=50K +35;Self-emp-not-inc;195744;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +43;Private;125833;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +18;State-gov;191117;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +54;Private;311020;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +62;Private;210464;HS-grad;9;Never-married;Other-service;Other-relative;Black;Female;0;0;38;United-States;<=50K +36;Private;135289;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +27;Private;156266;9th;5;Married-civ-spouse;Farming-fishing;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +23;Private;154210;Some-college;10;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Male;0;0;14;Puerto-Rico;<=50K +33;Self-emp-not-inc;249249;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +28;Private;261725;1st-4th;2;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Mexico;<=50K +22;Private;239612;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +31;Self-emp-not-inc;226696;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +26;Private;190330;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +44;Private;193755;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +73;Private;192740;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +44;Private;201924;Bachelors;13;Divorced;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +35;Private;77146;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +33;Private;126414;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;?;<=50K +27;Private;43652;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;227244;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;50;United-States;>50K +29;Private;160731;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +33;Private;287878;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;26;United-States;<=50K +50;Private;166758;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +41;Self-emp-not-inc;254818;Masters;14;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;40;Peru;<=50K +19;?;220517;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +45;Private;295046;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +42;State-gov;211915;Some-college;10;Separated;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;295621;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;25;United-States;>50K +42;Private;204235;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +49;Private;186982;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +38;Private;133586;HS-grad;9;Married-civ-spouse;Protective-serv;Own-child;White;Male;0;0;45;United-States;<=50K +38;Private;165930;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;164898;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;<=50K +24;Private;278155;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;30;United-States;<=50K +27;Self-emp-not-inc;115705;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +25;Private;150553;9th;5;Married-spouse-absent;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +29;Private;185127;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;201595;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;<=50K +44;Self-emp-inc;165815;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;96;United-States;<=50K +26;Private;102420;Bachelors;13;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;40;South;<=50K +46;Local-gov;344172;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;49;United-States;>50K +38;Private;222450;Some-college;10;Separated;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +38;Private;212245;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;State-gov;190625;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +33;Private;203488;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;304260;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +31;Local-gov;243665;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;41;United-States;>50K +26;Self-emp-not-inc;189238;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;4;Mexico;<=50K +42;Private;77373;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;38;United-States;<=50K +27;Private;410351;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;36385;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +64;Private;110150;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;198316;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;127772;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;199058;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +56;Private;285730;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;66;United-States;<=50K +25;Local-gov;334133;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +60;State-gov;97030;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +52;Private;67090;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +46;Private;182533;Bachelors;13;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +19;Private;560804;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +56;Private;365050;7th-8th;4;Never-married;Farming-fishing;Unmarried;Black;Female;0;0;20;United-States;<=50K +22;Private;110200;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;150025;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +39;Private;299828;5th-6th;3;Separated;Sales;Unmarried;Black;Female;0;0;30;Puerto-Rico;<=50K +28;Private;109282;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;103435;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +22;Private;34747;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +39;Private;137522;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +39;Private;286789;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-not-inc;211032;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +31;Private;219318;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;Puerto-Rico;<=50K +50;Private;112873;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;73434;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Germany;>50K +51;Private;200576;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;172962;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;44006;Assoc-voc;11;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;234474;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +37;Private;212826;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +38;Private;234901;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +59;Federal-gov;200700;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;41258;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +51;Private;249644;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;>50K +60;?;230165;Bachelors;13;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;351731;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;114765;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;349884;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +28;Self-emp-inc;204247;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +34;Private;143392;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +50;Self-emp-not-inc;37913;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Italy;>50K +22;Self-emp-inc;150683;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;24;United-States;<=50K +27;Private;207611;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;52;United-States;<=50K +45;State-gov;319666;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Female;0;0;43;United-States;<=50K +39;Private;155961;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +25;Local-gov;117833;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +63;?;447079;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;15;United-States;<=50K +24;Self-emp-inc;142404;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;Private;155752;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;30;United-States;<=50K +19;?;252292;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;111450;12th;8;Never-married;Other-service;Unmarried;Black;Male;0;0;38;United-States;<=50K +20;Private;528616;5th-6th;3;Never-married;Other-service;Other-relative;White;Male;0;0;40;Mexico;<=50K +17;Self-emp-not-inc;228786;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +63;Self-emp-inc;80572;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +28;Local-gov;180271;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;65;United-States;>50K +51;Federal-gov;237819;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +64;Private;379062;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;12;United-States;<=50K +17;Private;191910;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +18;Private;312353;12th;8;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +31;Local-gov;213307;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +48;Self-emp-not-inc;209057;Bachelors;13;Married-spouse-absent;Sales;Own-child;White;Male;0;0;50;United-States;>50K +41;Private;340148;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +27;Private;94064;Assoc-voc;11;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;119098;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;388496;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;8;Puerto-Rico;>50K +49;Private;181363;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +58;?;210031;HS-grad;9;Divorced;?;Unmarried;White;Male;0;0;40;United-States;<=50K +25;Private;485496;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +41;Private;210259;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;37;United-States;<=50K +31;Private;118551;9th;5;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;State-gov;242517;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +63;Private;298113;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;277783;Masters;14;Never-married;Farming-fishing;Own-child;White;Male;0;0;99;United-States;<=50K +48;Private;155862;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +51;Self-emp-not-inc;171924;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;243900;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +23;Private;231160;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +38;Private;49020;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;?;105460;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;England;<=50K +56;Private;157749;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +31;Private;131568;7th-8th;4;Divorced;Transport-moving;Unmarried;White;Male;0;0;20;United-States;<=50K +46;Private;332355;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;204501;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +56;Local-gov;305767;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +31;Private;129761;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Private;102828;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +18;Private;160984;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +20;?;346341;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +31;Private;356689;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;394860;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;113129;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;24;United-States;<=50K +26;Private;55929;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Local-gov;177018;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +37;Private;161141;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;309463;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;49218;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;306850;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;187322;HS-grad;9;Divorced;Other-service;Unmarried;White;Male;0;0;45;United-States;<=50K +26;Private;148298;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +47;Private;34845;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;200733;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;55;United-States;<=50K +45;Private;191858;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +30;Private;425528;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;70;United-States;<=50K +33;Private;125856;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;100508;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;148294;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +42;Private;39324;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Federal-gov;147397;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;36;United-States;<=50K +46;Private;24728;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;48;United-States;<=50K +36;Private;177616;5th-6th;3;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;163826;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;199947;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +26;Local-gov;386949;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;25;United-States;<=50K +36;Self-emp-inc;116133;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;57;United-States;<=50K +56;Self-emp-not-inc;196307;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +37;Private;177181;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;324854;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +23;Private;188505;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +23;State-gov;502316;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;State-gov;26892;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;102058;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +39;Private;167728;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +67;Local-gov;233681;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +60;Private;26756;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +54;Private;101890;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;192337;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;England;>50K +49;State-gov;102308;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +19;Private;84747;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +20;Private;197752;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +66;Private;185336;HS-grad;9;Widowed;Sales;Other-relative;White;Female;0;0;35;United-States;<=50K +22;?;289984;Some-college;10;Never-married;?;Not-in-family;Black;Female;0;0;25;United-States;<=50K +51;Self-emp-not-inc;125417;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +19;Private;278480;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;146412;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;193042;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +78;?;33186;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +36;Private;144154;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;194901;Prof-school;15;Divorced;Sales;Own-child;White;Male;0;0;55;United-States;<=50K +35;Private;335777;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;Mexico;<=50K +46;Private;139268;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +38;Private;33887;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +24;Private;283613;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;141245;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Puerto-Rico;<=50K +49;Private;298130;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;186096;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;30;United-States;<=50K +77;Private;187656;Some-college;10;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;20;United-States;<=50K +46;Private;102308;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;56;United-States;>50K +41;Private;124639;Some-college;10;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +28;Private;388112;1st-4th;2;Never-married;Farming-fishing;Unmarried;White;Male;0;0;77;Mexico;<=50K +21;Private;109952;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;164529;12th;8;Never-married;Farming-fishing;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;247750;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;45;United-States;<=50K +23;State-gov;103588;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +29;Self-emp-not-inc;178551;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;136137;Some-college;10;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;0;0;50;United-States;>50K +47;Federal-gov;55377;Bachelors;13;Never-married;Adm-clerical;Unmarried;Black;Male;0;0;40;United-States;>50K +39;Local-gov;177728;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Local-gov;243580;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +21;?;188535;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;63910;HS-grad;9;Divorced;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +23;Private;219535;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +44;State-gov;180609;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;59313;Some-college;10;Separated;Other-service;Not-in-family;Black;Male;0;0;40;?;<=50K +70;Private;170428;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;20;Puerto-Rico;<=50K +66;Private;193132;9th;5;Separated;Other-service;Not-in-family;Black;Female;0;0;30;United-States;<=50K +57;Self-emp-inc;124137;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;136629;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +48;Self-emp-inc;148995;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +24;?;203076;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;63424;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +43;Private;241895;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +27;Private;266973;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;188048;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;366929;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +33;Private;214129;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;250818;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Local-gov;240979;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +35;Private;98283;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;India;>50K +39;Private;103710;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;60;United-States;<=50K +24;Private;159580;Bachelors;13;Never-married;Other-service;Own-child;Black;Female;0;0;75;United-States;<=50K +45;Private;117409;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;Private;140001;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +49;State-gov;31650;Bachelors;13;Married-civ-spouse;Prof-specialty;Other-relative;White;Female;0;0;45;United-States;<=50K +35;State-gov;80771;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;66278;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;206609;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;282461;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;188246;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;279763;11th;7;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;25;United-States;<=50K +44;Private;467799;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;137674;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +50;Private;158284;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;204219;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;Mexico;<=50K +28;State-gov;210498;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +60;Federal-gov;63526;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +38;Federal-gov;216924;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;372559;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +50;Private;168539;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Local-gov;189911;11th;7;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;204450;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +53;Private;311350;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;Private;113750;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;359591;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;301199;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +38;State-gov;267540;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +52;Private;185407;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;Poland;>50K +48;Self-emp-inc;191277;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +30;Private;78980;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +47;Private;216999;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +33;Local-gov;120508;Bachelors;13;Divorced;Protective-serv;Unmarried;White;Female;0;0;60;Germany;<=50K +33;Private;122612;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;35;Thailand;<=50K +20;Private;94057;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +41;State-gov;197558;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;121761;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;?;<=50K +36;Federal-gov;184556;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +46;Private;268281;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;235646;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;Private;186909;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +62;Private;35783;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;188861;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;363591;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +18;Private;469921;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;51150;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;174325;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +20;Private;347530;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +50;Private;72351;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +42;Local-gov;185129;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;?;>50K +36;Private;188571;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;255252;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;291951;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;223046;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Local-gov;37937;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;43;United-States;<=50K +38;Private;295127;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;183801;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;14;United-States;<=50K +40;Private;116218;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +40;Private;143069;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;235951;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +57;Private;112840;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +52;Federal-gov;43705;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +48;Private;101299;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +45;Private;96798;5th-6th;3;Divorced;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;194654;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +27;State-gov;206889;Assoc-acdm;12;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;200679;HS-grad;9;Never-married;Farming-fishing;Own-child;Black;Male;0;0;50;United-States;<=50K +71;Private;183678;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;16;United-States;<=50K +17;Private;33138;12th;8;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;188576;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +33;Private;169496;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;58124;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;356344;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;444134;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;15;United-States;<=50K +18;?;340117;11th;7;Never-married;?;Unmarried;Black;Female;0;0;50;United-States;<=50K +34;Private;219619;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;?;334585;10th;6;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +27;Local-gov;331046;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +46;?;443179;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;8;United-States;<=50K +24;Private;100345;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +23;Private;205653;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +33;Private;112383;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;135568;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;190532;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +53;Federal-gov;266598;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Local-gov;116608;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +36;Private;353263;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;>50K +25;State-gov;157617;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Federal-gov;21698;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;77143;12th;8;Separated;Transport-moving;Unmarried;Black;Male;0;0;40;United-States;<=50K +18;State-gov;342852;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;176602;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;146343;Some-college;10;Married-civ-spouse;Sales;Wife;Black;Female;0;0;40;United-States;<=50K +22;Private;215546;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +50;State-gov;173020;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;?;247734;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;252202;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;497300;HS-grad;9;Never-married;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;426431;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Federal-gov;162410;Some-college;10;Widowed;Tech-support;Not-in-family;White;Female;0;0;45;United-States;>50K +77;?;143516;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;>50K +25;Private;190350;10th;6;Married-civ-spouse;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +20;Private;194504;Some-college;10;Separated;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Federal-gov;110884;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +26;Private;187652;Assoc-acdm;12;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;81400;1st-4th;2;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;El-Salvador;<=50K +70;?;97831;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;4;United-States;<=50K +57;Private;180920;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +28;Private;189186;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;?;144172;Assoc-acdm;12;Married-civ-spouse;?;Wife;White;Female;0;0;16;United-States;<=50K +32;Private;207301;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;293073;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +36;Private;210452;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;0;45;United-States;<=50K +19;Private;41400;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +27;Private;164170;Bachelors;13;Never-married;Tech-support;Unmarried;Asian-Pac-Islander;Female;0;0;20;Philippines;<=50K +48;Private;112906;Masters;14;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;>50K +49;Self-emp-not-inc;126268;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +61;Private;28291;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Female;0;0;82;United-States;<=50K +42;Federal-gov;31621;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Local-gov;108386;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;134727;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;208391;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +35;Private;112271;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;173350;Assoc-voc;11;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;243190;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;20;India;>50K +55;Private;185436;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +36;Private;290409;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;80058;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;48;United-States;<=50K +56;Local-gov;370045;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Private;231180;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;119793;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;60;United-States;<=50K +38;Private;102178;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +76;?;135039;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +35;?;317780;Some-college;10;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;232840;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;43;United-States;<=50K +35;Private;33975;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;256997;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;298301;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;310380;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Local-gov;182100;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Private;501172;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Mexico;<=50K +43;State-gov;143939;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;>50K +23;Private;85088;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;37;United-States;<=50K +39;Private;230054;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +63;Private;236338;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;35;United-States;<=50K +37;Private;321943;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +26;Federal-gov;218782;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Other;Male;0;0;40;United-States;<=50K +33;Private;191385;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;Canada;<=50K +45;Self-emp-inc;185497;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;70;?;<=50K +28;Private;126129;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;199268;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +34;Private;255693;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +34;Private;203488;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;203233;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;203836;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +38;Private;116358;Some-college;10;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +43;Self-emp-not-inc;89636;Bachelors;13;Married-civ-spouse;Sales;Wife;Asian-Pac-Islander;Female;0;0;60;South;<=50K +49;Private;120629;Some-college;10;Widowed;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +26;Local-gov;150226;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;<=50K +28;Private;137898;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +54;Self-emp-inc;146574;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +53;Private;88725;HS-grad;9;Never-married;Craft-repair;Not-in-family;Other;Female;0;0;40;?;<=50K +24;Private;142022;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +23;Private;284898;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;30;United-States;<=50K +55;Local-gov;212448;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Self-emp-not-inc;203039;9th;5;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;227489;HS-grad;9;Never-married;Tech-support;Other-relative;Black;Male;0;0;40;?;<=50K +19;Private;105289;10th;6;Never-married;Other-service;Other-relative;Black;Female;0;0;20;United-States;<=50K +28;?;223745;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;242994;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;52;United-States;<=50K +30;Private;196385;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +76;Private;116202;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;33;United-States;<=50K +47;Private;140045;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;226585;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +24;Private;85041;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +24;Private;216563;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +43;Local-gov;231964;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;263855;12th;8;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;124915;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +61;Federal-gov;178312;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +21;State-gov;39236;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;50;United-States;<=50K +52;Private;75839;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;176711;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +25;?;34307;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;331776;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;111469;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;State-gov;198965;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +25;Private;288185;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +21;Private;198050;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +37;Private;173128;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;173704;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;323269;Some-college;10;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;<=50K +32;Private;133503;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;172296;Some-college;10;Separated;Sales;Unmarried;White;Male;0;0;60;United-States;<=50K +39;?;201105;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;30;United-States;<=50K +23;Private;176486;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;25;United-States;<=50K +25;Self-emp-inc;182750;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;>50K +23;Private;82497;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;28;United-States;<=50K +47;Private;208872;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;145269;11th;7;Divorced;Craft-repair;Not-in-family;White;Female;0;0;45;United-States;<=50K +25;Private;19214;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;149347;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +68;?;53850;7th-8th;4;Married-civ-spouse;?;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +47;Private;152073;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;189623;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +24;Private;341368;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;270572;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +30;Private;285295;Bachelors;13;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +17;Private;126779;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +49;?;202874;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;40;Columbia;<=50K +27;Private;373499;5th-6th;3;Never-married;Other-service;Not-in-family;White;Male;0;0;60;El-Salvador;<=50K +22;Private;244773;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;15;United-States;<=50K +22;State-gov;96862;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;162632;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;2;United-States;<=50K +51;Self-emp-not-inc;159755;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;>50K +27;Private;37088;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;30;United-States;<=50K +27;Private;335421;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +23;Never-worked;188535;7th-8th;4;Divorced;?;Not-in-family;White;Male;0;0;35;United-States;<=50K +20;State-gov;349365;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;33002;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +45;Private;146857;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +35;Private;275522;7th-8th;4;Widowed;Other-service;Unmarried;White;Female;0;0;80;United-States;<=50K +22;Private;43646;HS-grad;9;Married-civ-spouse;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;154548;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +28;Private;47907;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;238397;Bachelors;13;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;24;United-States;<=50K +48;Local-gov;195949;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;42;United-States;>50K +22;?;354351;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;349169;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +25;Private;158662;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;50;United-States;>50K +23;Local-gov;23438;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;107302;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +43;Private;174196;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Local-gov;226871;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +23;Private;124971;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;214061;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;441700;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +44;Self-emp-inc;104892;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;58;United-States;>50K +34;Private;234386;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Local-gov;188278;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;244395;11th;7;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Private;30916;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +48;Private;219565;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;377486;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;36;United-States;<=50K +42;Local-gov;137232;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Female;0;0;50;United-States;<=50K +53;Private;233369;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;71067;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +59;Private;195176;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;72;United-States;<=50K +31;Private;98639;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Private;183778;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;?;147471;HS-grad;9;Divorced;?;Own-child;White;Female;0;0;10;United-States;<=50K +46;Private;81497;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;48;United-States;<=50K +45;Private;189225;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;141264;Some-college;10;Never-married;Exec-managerial;Other-relative;Black;Female;0;0;40;United-States;<=50K +33;Private;97939;Assoc-acdm;12;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;42;United-States;<=50K +44;Private;160829;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;20;United-States;>50K +25;Private;483822;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;El-Salvador;<=50K +48;State-gov;148738;Some-college;10;Divorced;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;289982;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;146706;Some-college;10;Married-civ-spouse;Sales;Other-relative;White;Female;0;0;30;United-States;<=50K +23;Private;420973;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +71;Private;124959;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;State-gov;121471;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;280758;11th;7;Never-married;Craft-repair;Other-relative;White;Male;0;0;60;United-States;<=50K +40;Private;191544;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Private;261023;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;50;United-States;<=50K +30;State-gov;231043;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;340917;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;370795;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Federal-gov;209609;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +74;Private;209454;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +25;Private;88922;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +64;Private;86972;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;134367;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;37;United-States;>50K +47;Private;199058;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +33;Private;183612;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +40;Private;191982;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +22;Private;514033;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;80;United-States;<=50K +56;Private;172364;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;190105;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;55;United-States;<=50K +30;Self-emp-inc;119422;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +20;Private;236592;12th;8;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;Italy;<=50K +43;Private;194636;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +23;Private;235853;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;150528;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +30;Private;213722;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;41432;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;46;United-States;<=50K +22;Private;285775;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;470663;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +54;Self-emp-not-inc;114520;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;113466;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;224559;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +59;Private;186385;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;?;167094;10th;6;Divorced;?;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;?;216508;12th;8;Never-married;?;Not-in-family;White;Male;0;0;25;United-States;<=50K +41;Local-gov;384236;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;181265;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +58;Private;190997;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;98287;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;103456;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +25;Private;165622;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +29;Private;101597;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;54;United-States;<=50K +53;Private;146378;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Local-gov;152163;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +26;State-gov;106812;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +45;Private;187581;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;135296;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;210736;10th;6;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +21;Private;210165;9th;5;Married-spouse-absent;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;224584;Some-college;10;Divorced;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;80771;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +46;Private;164733;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;41;United-States;<=50K +31;Self-emp-not-inc;119411;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;60;United-States;>50K +68;Local-gov;177596;10th;6;Separated;Other-service;Not-in-family;Black;Female;0;0;90;United-States;<=50K +43;?;396116;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;185251;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;173590;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;3;United-States;<=50K +56;Federal-gov;196307;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;?;293091;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;12;United-States;<=50K +21;Private;51047;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +52;Local-gov;152795;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;121548;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;<=50K +29;Private;244566;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Private;75073;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;55;United-States;<=50K +29;Private;179008;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +21;Private;170800;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +58;Private;373344;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;127961;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;99392;Some-college;10;Divorced;Craft-repair;Not-in-family;Black;Female;0;0;45;United-States;<=50K +30;Private;392812;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;Germany;<=50K +29;Private;262478;HS-grad;9;Never-married;Farming-fishing;Own-child;Black;Male;0;0;30;United-States;<=50K +48;Self-emp-not-inc;32825;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;167380;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;203204;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;25;United-States;>50K +35;Federal-gov;105138;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +24;Private;182276;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;United-States;<=50K +20;Private;275385;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;45;United-States;<=50K +30;Self-emp-not-inc;292472;Some-college;10;Married-civ-spouse;Sales;Husband;Amer-Indian-Eskimo;Male;0;0;55;United-States;>50K +19;Self-emp-not-inc;73514;HS-grad;9;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;30;United-States;<=50K +26;Private;199600;HS-grad;9;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +25;Private;202560;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;99309;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +30;Private;287986;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;119411;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;198668;7th-8th;4;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;117583;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;234664;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;?;114357;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;State-gov;176949;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;<=50K +33;Private;189710;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;Mexico;<=50K +65;Private;205309;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;24;United-States;<=50K +34;Private;195576;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +20;Private;216825;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;25;Mexico;<=50K +23;?;329174;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;197036;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;206512;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +37;Private;312766;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;124827;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;77820;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +45;Private;190115;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +44;Private;106682;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +32;Local-gov;42596;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;143058;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;>50K +53;Private;102615;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;Canada;<=50K +43;Private;240124;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;132565;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +52;Private;96359;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;57;United-States;>50K +20;Private;165201;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;4;United-States;<=50K +45;Private;264526;Assoc-acdm;12;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;37359;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +61;?;232618;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +48;Local-gov;115497;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;157747;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +27;Self-emp-not-inc;41099;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +38;Private;472604;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;Mexico;<=50K +33;Private;348618;5th-6th;3;Married-spouse-absent;Transport-moving;Unmarried;Other;Male;0;0;20;El-Salvador;<=50K +43;Private;135606;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +36;Private;248445;HS-grad;9;Separated;Transport-moving;Other-relative;White;Male;0;0;60;Mexico;<=50K +38;Private;112093;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Local-gov;197552;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;303822;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;288566;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;?;487411;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +39;State-gov;239409;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +47;State-gov;118447;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +46;Private;234690;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +23;?;141003;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +45;Private;190482;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +55;Private;381965;Bachelors;13;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +68;Private;186943;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;8;United-States;<=50K +39;Private;142707;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;53447;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;127772;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;344414;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;194138;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +49;?;558183;Assoc-voc;11;Married-spouse-absent;?;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;150154;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;306114;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +72;?;177121;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;3;United-States;<=50K +58;Local-gov;368797;Masters;14;Widowed;Prof-specialty;Unmarried;White;Male;0;0;35;United-States;>50K +43;Self-emp-inc;175715;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;55;United-States;<=50K +62;Private;416829;11th;7;Separated;Other-service;Not-in-family;Black;Female;0;0;21;United-States;<=50K +21;Private;350001;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;339952;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;114967;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Local-gov;166039;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;250135;HS-grad;9;Never-married;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +29;Private;103628;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +58;Private;430005;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +45;Self-emp-inc;106517;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;162236;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;92430;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;Private;169388;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;15;United-States;<=50K +35;Private;150057;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +43;Private;75742;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;177675;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Germany;>50K +49;Local-gov;193249;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;266072;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;20;El-Salvador;<=50K +28;?;80165;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +25;Private;339324;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +69;?;111238;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +41;Self-emp-not-inc;284086;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +31;Private;206051;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +57;Private;426263;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;>50K +40;Private;277647;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +47;Private;193061;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +50;Private;121411;12th;8;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;89202;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;United-States;<=50K +17;Private;232900;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +30;Local-gov;319280;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +79;?;165209;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;193494;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +67;Self-emp-not-inc;195066;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;99146;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +35;Private;92028;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +27;Private;174419;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;57916;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;383384;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;109813;11th;7;Never-married;Tech-support;Other-relative;White;Male;0;0;40;United-States;<=50K +17;Private;174298;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +28;Private;263614;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;96128;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;220262;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;35340;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +47;Private;280483;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;351324;Some-college;10;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;58602;5th-6th;3;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +37;Private;64922;Bachelors;13;Separated;Other-service;Not-in-family;White;Male;0;0;70;England;<=50K +43;Private;185832;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +39;Federal-gov;32312;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +47;Self-emp-not-inc;109421;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;183205;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +48;Local-gov;145886;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;60;United-States;<=50K +27;Private;244566;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;253801;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Ecuador;<=50K +22;Private;181313;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +37;State-gov;150566;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +38;Private;237713;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +48;Local-gov;187969;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;80;United-States;<=50K +46;Self-emp-not-inc;224108;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;<=50K +51;Private;174754;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;38;United-States;<=50K +35;Private;167062;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;190325;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +45;Private;108859;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;344351;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +73;Private;153127;Some-college;10;Widowed;Priv-house-serv;Unmarried;White;Female;0;0;10;United-States;<=50K +52;Private;180881;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;183066;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +29;Federal-gov;339002;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;Private;185480;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;?;>50K +20;Private;172047;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;10;United-States;<=50K +37;Private;302604;Some-college;10;Separated;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +40;Private;248094;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;36467;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +29;Private;53181;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +20;Private;181032;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;248990;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +37;Private;117381;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;80;United-States;>50K +18;?;173125;12th;8;Never-married;?;Own-child;White;Female;0;0;24;United-States;<=50K +33;?;316663;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;50;United-States;<=50K +26;Private;154966;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +24;Private;198259;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +33;Private;167939;HS-grad;9;Married-civ-spouse;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +23;Private;131275;HS-grad;9;Never-married;Craft-repair;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +20;?;236523;10th;6;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;272950;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Private;174503;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +24;Private;116800;Assoc-voc;11;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;35;United-States;<=50K +38;Private;110713;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +50;Private;202044;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +44;Private;300528;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +57;Private;133126;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Female;0;0;40;United-States;<=50K +37;Private;74593;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +44;Private;302424;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;55;United-States;<=50K +21;Private;344492;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +31;Private;349148;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;234699;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;60;United-States;>50K +20;Local-gov;243178;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;189728;HS-grad;9;Separated;Priv-house-serv;Not-in-family;White;Female;0;0;50;United-States;<=50K +47;Self-emp-not-inc;318593;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;<=50K +41;Private;108681;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +40;Private;187376;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +41;State-gov;75409;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +49;Private;266150;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +65;Private;271092;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;?;<=50K +50;Private;135643;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Female;0;0;40;China;<=50K +59;Private;46466;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +18;Private;130652;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +45;Private;195554;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +17;Private;244589;11th;7;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;271901;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;32;United-States;>50K +73;Private;139978;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;180446;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +64;?;178724;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +38;State-gov;341643;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +37;Federal-gov;289653;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +26;Private;187891;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;116338;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +54;Federal-gov;439608;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;330144;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;251905;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;218955;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;188972;Doctorate;16;Separated;Prof-specialty;Unmarried;White;Female;0;0;10;Canada;<=50K +60;Self-emp-not-inc;25825;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +62;Private;116104;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;Germany;<=50K +20;Private;194891;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;?;285131;Assoc-acdm;12;Never-married;?;Unmarried;White;Male;0;0;20;United-States;<=50K +29;State-gov;409201;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +74;Private;97167;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;15;United-States;<=50K +37;Local-gov;244803;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +51;Self-emp-not-inc;115851;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;118058;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;258589;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +26;Private;158810;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;<=50K +58;Self-emp-not-inc;165695;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;<=50K +30;?;97281;Some-college;10;Separated;?;Not-in-family;White;Male;0;0;60;United-States;<=50K +23;Private;170482;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +35;Private;241001;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;<=50K +50;Private;165001;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +17;?;297117;11th;7;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;340260;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;48;United-States;<=50K +31;Private;96480;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +30;Private;185177;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;49;United-States;<=50K +84;Self-emp-inc;172907;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +35;Self-emp-not-inc;308874;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;54098;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +46;Private;288608;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +50;Local-gov;254148;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +37;Private;111128;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;171116;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +27;Federal-gov;276776;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +22;Private;152878;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;149211;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;58343;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +38;Private;127601;Some-college;10;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;35;United-States;<=50K +29;Private;357781;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;137367;Some-college;10;Never-married;Handlers-cleaners;Other-relative;Asian-Pac-Islander;Male;0;0;44;Philippines;<=50K +34;Private;110978;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +31;Private;34503;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;223515;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;372525;Masters;14;Divorced;Prof-specialty;Unmarried;White;Male;0;0;48;United-States;<=50K +32;Private;116365;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +36;Private;111268;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +78;?;83511;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;Portugal;<=50K +46;Self-emp-not-inc;199596;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +18;Private;301867;HS-grad;9;Never-married;Sales;Own-child;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +57;Private;191983;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;105803;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;456236;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;116255;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +32;Private;235109;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Federal-gov;91716;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +70;Private;235781;Some-college;10;Divorced;Farming-fishing;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +40;Private;136986;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +40;Self-emp-not-inc;33658;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;53878;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +29;Private;200928;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;173736;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +28;Private;214385;Assoc-voc;11;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +58;Private;102509;10th;6;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;50;United-States;<=50K +18;Private;329054;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +40;Private;274158;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-inc;241153;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;229516;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;72;Mexico;<=50K +62;?;250091;Bachelors;13;Divorced;?;Not-in-family;White;Male;0;0;5;United-States;<=50K +24;State-gov;247075;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;20;United-States;<=50K +22;Private;315524;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;30;Dominican-Republic;<=50K +23;Private;126945;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;29874;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;>50K +28;Private;115579;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;0;0;38;United-States;<=50K +44;Private;56483;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;37;United-States;<=50K +73;?;89852;1st-4th;2;Married-civ-spouse;?;Husband;White;Male;0;0;40;Portugal;<=50K +24;Private;420779;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;35;United-States;<=50K +24;Private;255474;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;241444;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;50;Puerto-Rico;<=50K +43;Private;85995;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +67;Self-emp-inc;116986;12th;8;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +31;Private;217962;12th;8;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;?;<=50K +43;Private;184099;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;117816;7th-8th;4;Divorced;Handlers-cleaners;Other-relative;White;Male;0;0;70;United-States;<=50K +23;Private;263899;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;20;Haiti;<=50K +26;Private;45869;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;186539;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;326310;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +55;Local-gov;84564;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;39;United-States;<=50K +49;Private;247294;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +34;Private;72793;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +29;Private;261375;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;60;United-States;<=50K +50;Private;77905;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;8;United-States;<=50K +19;Private;66838;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;9;United-States;<=50K +66;Private;180211;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;30;Philippines;<=50K +65;?;79272;Some-college;10;Widowed;?;Not-in-family;Asian-Pac-Islander;Female;0;0;6;United-States;<=50K +60;Private;101198;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +60;Private;80574;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +19;Private;198663;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +26;Self-emp-inc;160340;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +58;State-gov;69579;Some-college;10;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +18;Self-emp-not-inc;379242;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +26;Private;259505;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +45;Federal-gov;171335;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +19;?;541282;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +29;Federal-gov;155970;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +52;Private;99682;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;52;Canada;>50K +23;Private;117789;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;296158;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +48;Local-gov;78859;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +59;?;188070;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;>50K +50;Private;189811;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Private;360593;HS-grad;9;Divorced;Sales;Unmarried;Black;Female;0;0;30;United-States;<=50K +40;Private;145504;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +19;Private;459248;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +30;?;288419;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;40;Mexico;<=50K +42;State-gov;126094;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Male;0;0;39;United-States;<=50K +23;Private;209483;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;50;United-States;<=50K +21;Private;210355;11th;7;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;24;United-States;<=50K +28;Private;84547;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +50;?;260579;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +20;Private;105585;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +21;Private;132320;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +21;Private;129172;Some-college;10;Never-married;Other-service;Other-relative;White;Male;0;0;16;United-States;<=50K +45;Self-emp-not-inc;222374;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;201498;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;114157;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +48;Local-gov;148121;Bachelors;13;Married-spouse-absent;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +73;?;84053;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +34;Private;96480;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;179423;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +58;State-gov;123329;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;16;United-States;<=50K +41;Private;134130;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +53;Private;188644;Preschool;1;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +40;Private;226388;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +18;Private;28648;11th;7;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +37;State-gov;34996;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;281422;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;45;United-States;<=50K +22;Private;214716;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;314177;10th;6;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +51;Private;112310;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +63;Private;203783;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;72;United-States;<=50K +29;Private;205499;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;<=50K +44;Private;155701;7th-8th;4;Separated;Other-service;Unmarried;White;Female;0;0;38;Peru;<=50K +37;State-gov;186934;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +62;Federal-gov;209433;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +31;Private;80933;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;<=50K +20;Private;102607;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +24;Self-emp-not-inc;102942;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +56;State-gov;175057;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +36;Federal-gov;68781;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +29;Private;108594;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;56269;Some-college;10;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +29;Private;152503;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;45;United-States;<=50K +38;Self-emp-inc;206951;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;<=50K +23;Private;82393;9th;5;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;20;Philippines;<=50K +37;Private;167396;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Guatemala;<=50K +30;Self-emp-not-inc;123397;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +58;?;147653;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;36;United-States;<=50K +42;Private;118652;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;182689;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-inc;60949;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +49;Private;129513;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +37;Private;84306;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;117507;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;88050;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;6;United-States;<=50K +22;Private;305498;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;33;United-States;<=50K +17;Private;295308;11th;7;Never-married;Priv-house-serv;Own-child;White;Female;0;0;20;United-States;<=50K +47;Private;114459;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +17;Private;176017;10th;6;Never-married;Other-service;Other-relative;White;Male;0;0;15;United-States;<=50K +39;Private;248445;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +23;Private;214542;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;384508;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Federal-gov;403489;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +21;Private;254904;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;30;United-States;<=50K +33;Private;98995;10th;6;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;36;United-States;<=50K +17;?;237078;11th;7;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +41;Private;193995;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +19;Private;205829;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +38;Federal-gov;205852;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;>50K +24;Private;37072;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;State-gov;122353;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +19;Private;100009;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +31;?;37030;Assoc-acdm;12;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +42;Private;135056;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +36;Private;135162;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;45;?;<=50K +29;Private;280618;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;226717;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +47;Local-gov;173938;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +24;Private;291355;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +61;Federal-gov;160155;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;29762;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +31;?;82473;9th;5;Divorced;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +59;Private;172071;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;38;Jamaica;<=50K +29;Private;166210;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;55;United-States;<=50K +26;Private;330263;HS-grad;9;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;247043;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +56;Federal-gov;155238;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +25;Private;130557;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;56986;12th;8;Never-married;Sales;Own-child;White;Female;0;0;18;United-States;<=50K +29;Private;220692;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +23;Private;121650;5th-6th;3;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;30;United-States;<=50K +67;Private;174603;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +29;Private;341846;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +32;Private;34437;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;141058;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;62;Mexico;<=50K +49;Private;192323;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;117674;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +39;Private;28572;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;120277;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;164309;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +47;Federal-gov;102771;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;147951;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;1;United-States;<=50K +44;Private;173888;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;80;United-States;>50K +25;Private;247006;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;82889;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +52;Private;259363;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +62;Federal-gov;159165;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;36;United-States;<=50K +31;Private;112062;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;299050;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +22;?;186452;Some-college;10;Never-married;?;Own-child;White;Male;0;0;36;United-States;<=50K +53;Private;548580;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Guatemala;<=50K +25;Private;234057;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;241350;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;278322;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Private;157443;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;27;Taiwan;>50K +44;Self-emp-not-inc;37618;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +56;Local-gov;238582;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;>50K +37;State-gov;28887;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +37;Private;77820;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +22;Private;110946;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Local-gov;230420;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Private;206521;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;?;156877;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;20;United-States;<=50K +28;Local-gov;283227;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;<=50K +28;Private;141957;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;58337;10th;6;Never-married;Sales;Unmarried;White;Female;0;0;35;?;<=50K +73;Local-gov;161027;5th-6th;3;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;20;United-States;<=50K +37;Self-emp-not-inc;31670;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;205844;Bachelors;13;Never-married;Exec-managerial;Own-child;Black;Female;0;0;65;United-States;<=50K +30;State-gov;46144;HS-grad;9;Married-AF-spouse;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +38;Private;168055;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;98350;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +69;?;182668;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;45;United-States;>50K +42;Private;334522;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +54;State-gov;187686;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +27;State-gov;365916;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;58;United-States;<=50K +39;Private;190719;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +27;Private;218184;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +30;Private;222162;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;66;United-States;<=50K +37;Private;267085;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Federal-gov;307555;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +36;Private;229180;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;Cuba;<=50K +22;Private;279041;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;10;United-States;<=50K +21;Private;312017;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +76;Private;70697;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +22;?;263970;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;28;United-States;<=50K +37;Private;188774;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;302770;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +29;Private;183639;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;97;United-States;<=50K +29;Private;178551;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;175343;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +73;Self-emp-not-inc;190078;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +43;Private;117627;Some-college;10;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +39;Private;108419;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +74;Private;183701;10th;6;Widowed;Other-service;Not-in-family;Black;Female;0;0;6;United-States;<=50K +27;State-gov;208406;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +47;Private;148884;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +90;Private;87285;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +47;Private;199058;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +42;Private;173628;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +69;Private;370837;Bachelors;13;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;179484;12th;8;Never-married;?;Own-child;Other;Male;0;0;40;United-States;<=50K +23;Private;342769;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;20;United-States;<=50K +44;Local-gov;65145;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +47;Local-gov;272182;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +33;Private;252168;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;Private;80430;11th;7;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +39;Private;189623;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;60;United-States;<=50K +18;?;28357;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +52;Private;226084;HS-grad;9;Widowed;Priv-house-serv;Other-relative;White;Female;0;0;40;United-States;<=50K +18;Private;150817;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +27;Self-emp-inc;190911;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +45;Local-gov;255559;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +79;?;142370;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +24;Private;173679;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +25;Private;35854;Some-college;10;Married-spouse-absent;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;82161;10th;6;Widowed;Transport-moving;Unmarried;White;Male;0;0;35;United-States;<=50K +63;Self-emp-not-inc;129845;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;226505;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;46;United-States;>50K +42;Private;136419;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +42;Private;66460;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +63;Local-gov;379940;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Local-gov;102936;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;55;United-States;<=50K +65;Private;205309;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;20;United-States;<=50K +30;?;156890;10th;6;Divorced;?;Unmarried;White;Male;0;0;40;United-States;<=50K +46;Private;137547;HS-grad;9;Divorced;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +23;Private;220168;HS-grad;9;Never-married;Sales;Other-relative;Black;Female;0;0;25;Jamaica;<=50K +47;Local-gov;37672;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;<=50K +20;Private;196643;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +21;?;355686;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +28;Private;197484;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +61;Local-gov;115023;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +30;State-gov;234824;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;72;United-States;<=50K +30;State-gov;361497;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;72;United-States;>50K +29;Private;351871;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +39;Private;324231;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;123490;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +32;Private;188245;11th;7;Never-married;Priv-house-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +63;Private;50349;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;34;United-States;<=50K +19;Self-emp-not-inc;47176;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;15;United-States;<=50K +57;State-gov;290661;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +41;Private;221172;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;188950;Assoc-voc;11;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;356882;Doctorate;16;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +43;Self-emp-inc;150533;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +64;Self-emp-not-inc;167149;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;United-States;<=50K +56;Private;301835;5th-6th;3;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;313729;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;130957;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +17;Private;197732;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +17;Private;250541;10th;6;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +29;Private;218785;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;65;United-States;<=50K +23;?;232512;HS-grad;9;Separated;?;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;194630;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +39;Private;38721;HS-grad;9;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;22;United-States;<=50K +36;Private;201519;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +50;Private;279337;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +31;Private;87560;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;50;United-States;<=50K +56;Private;208431;Some-college;10;Widowed;Exec-managerial;Not-in-family;Black;Female;0;0;32;United-States;<=50K +20;Private;163205;Some-college;10;Separated;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +33;State-gov;137616;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;35;United-States;<=50K +45;Private;117556;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;32;United-States;<=50K +33;Self-emp-not-inc;24504;HS-grad;9;Separated;Craft-repair;Other-relative;White;Male;0;0;50;United-States;<=50K +27;?;157624;HS-grad;9;Separated;?;Other-relative;White;Female;0;0;40;United-States;<=50K +36;Private;181721;10th;6;Never-married;Farming-fishing;Own-child;Black;Male;0;0;60;United-States;<=50K +42;Local-gov;55363;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +33;Private;92865;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;258633;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;?;<=50K +52;Federal-gov;221532;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +41;Local-gov;183224;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;40;Taiwan;>50K +30;Private;381153;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;300871;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;158333;5th-6th;3;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;Columbia;<=50K +36;Private;288103;11th;7;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;108907;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +46;Private;358533;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +24;Private;126613;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;8;United-States;<=50K +38;Private;199816;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;98228;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +41;Local-gov;129060;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;22245;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +36;Private;226918;Bachelors;13;Never-married;Sales;Not-in-family;Black;Male;0;0;48;United-States;<=50K +47;Private;398652;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +59;Private;268840;Some-college;10;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;16;United-States;>50K +35;?;103710;Bachelors;13;Divorced;?;Unmarried;White;Female;0;0;16;?;<=50K +59;Private;91384;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +52;Private;174767;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +37;Self-emp-inc;126675;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +52;Private;82285;Bachelors;13;Married-spouse-absent;Other-service;Other-relative;Black;Female;0;0;40;Haiti;<=50K +51;Private;177727;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +67;Self-emp-not-inc;345236;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +58;?;347692;11th;7;Divorced;?;Not-in-family;Black;Male;0;0;15;United-States;<=50K +68;Private;156000;10th;6;Widowed;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +71;Private;228806;9th;5;Divorced;Priv-house-serv;Not-in-family;Black;Female;0;0;6;United-States;<=50K +49;Local-gov;184428;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Local-gov;102938;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;161063;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;253752;10th;6;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;274800;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;129804;9th;5;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +22;Federal-gov;65547;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Private;107658;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;10;United-States;<=50K +57;Private;161097;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;26;United-States;<=50K +18;Private;118376;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +32;Private;131224;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;120985;HS-grad;9;Divorced;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;215392;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;63685;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;50;Cambodia;<=50K +48;Private;131826;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +39;Private;211440;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;>50K +35;Private;31023;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;255161;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +28;Private;411950;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;318082;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +23;Local-gov;287988;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Federal-gov;115932;Bachelors;13;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;60358;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;140117;10th;6;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +34;Private;158040;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +29;Private;232784;Assoc-acdm;12;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;349368;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +46;Federal-gov;325573;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +69;Private;140176;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;24;United-States;<=50K +50;Private;128478;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +19;?;318264;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +59;Private;147989;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;?;<=50K +45;Federal-gov;155659;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;State-gov;288433;Masters;14;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +47;Federal-gov;329205;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +64;Private;171373;11th;7;Widowed;Farming-fishing;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;228860;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +17;Private;47771;11th;7;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +24;Private;201680;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;60;United-States;<=50K +28;Private;337378;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;227714;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +36;Private;177285;Assoc-voc;11;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;38;United-States;<=50K +38;Private;71701;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;Portugal;<=50K +42;Private;280167;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-inc;27408;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;167031;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Columbia;<=50K +41;Private;173682;Masters;14;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;278557;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +32;Private;113688;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +41;Self-emp-not-inc;252986;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;Private;33669;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +56;Private;100776;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +47;Self-emp-not-inc;177457;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +30;State-gov;312767;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +51;Private;43354;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Self-emp-inc;375422;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;South;<=50K +49;Self-emp-not-inc;263568;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +67;?;74335;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;10;Germany;<=50K +35;Private;248010;Bachelors;13;Married-spouse-absent;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +37;?;87369;9th;5;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;405577;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;State-gov;167065;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;102476;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;175878;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +55;Private;213894;11th;7;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +17;Private;150262;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +40;Private;75363;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;272671;Bachelors;13;Divorced;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +44;Private;222434;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;171236;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;367037;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;304651;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +62;Private;97017;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +45;State-gov;320818;Some-college;10;Married-spouse-absent;Other-service;Other-relative;Black;Male;0;0;40;Haiti;<=50K +47;Self-emp-not-inc;84735;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +49;Private;184428;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;326886;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;?;169624;HS-grad;9;Divorced;?;Unmarried;Black;Female;0;0;37;United-States;<=50K +29;Private;212102;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +23;Private;175837;11th;7;Never-married;Farming-fishing;Other-relative;White;Female;0;0;40;Puerto-Rico;<=50K +50;Private;177487;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;171424;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +32;Private;194981;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;36;United-States;<=50K +73;Private;199362;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +24;Private;204226;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;State-gov;72506;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;<=50K +37;Federal-gov;194630;Masters;14;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;391867;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;94080;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;289405;11th;7;Never-married;Machine-op-inspct;Own-child;Other;Male;0;0;12;United-States;<=50K +30;Private;170130;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;447739;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +76;?;312500;5th-6th;3;Widowed;?;Unmarried;White;Female;0;0;40;United-States;<=50K +65;?;293385;Preschool;1;Married-civ-spouse;?;Husband;Black;Male;0;0;30;United-States;<=50K +25;Private;106377;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;66118;Bachelors;13;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +47;Private;274883;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +27;Local-gov;123773;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +42;Local-gov;70655;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +49;Private;177426;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +19;State-gov;159269;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;15;United-States;<=50K +24;Private;235894;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +34;Local-gov;97723;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;167309;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;98106;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;108993;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;265954;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;100960;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;170092;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +54;Private;326156;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;216932;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;214014;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;99872;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +61;State-gov;151459;10th;6;Never-married;Other-service;Not-in-family;Black;Female;0;0;38;United-States;<=50K +56;Private;367200;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +51;Local-gov;168539;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +50;Private;140741;11th;7;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +25;Private;197651;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;43;United-States;<=50K +46;Private;123053;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;Japan;>50K +23;Private;330571;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +44;Private;204235;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;State-gov;346766;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +35;?;257250;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;163396;Some-college;10;Never-married;Tech-support;Not-in-family;Other;Female;0;0;40;United-States;<=50K +18;Private;36251;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +61;?;222395;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +31;State-gov;29152;12th;8;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +33;Private;79303;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;272338;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +55;State-gov;200497;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +19;Private;148392;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +43;State-gov;129298;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +49;Local-gov;174981;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;47;United-States;>50K +48;Local-gov;328610;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +27;Private;77774;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;34;United-States;<=50K +29;Private;153805;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Other;Male;0;0;40;Ecuador;<=50K +27;Private;168827;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;2;United-States;<=50K +31;Private;373432;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +26;Private;57600;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;302847;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +23;Private;227594;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +32;Federal-gov;44777;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;46;United-States;<=50K +54;?;133963;HS-grad;9;Widowed;?;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;279615;Bachelors;13;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;276133;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +62;Private;136314;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;184625;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +34;Self-emp-inc;265917;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;158647;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;22055;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +41;Local-gov;176716;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +42;Private;270721;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;32;United-States;<=50K +24;Private;100321;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;<=50K +35;Private;79050;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Male;0;0;72;United-States;<=50K +40;Local-gov;42703;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +46;Private;116952;7th-8th;4;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;<=50K +45;Private;331643;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +68;Private;223486;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;7;England;<=50K +33;Private;340332;Bachelors;13;Separated;Exec-managerial;Not-in-family;Black;Female;0;0;45;United-States;<=50K +23;Private;184813;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +42;Self-emp-not-inc;32185;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +30;Private;197886;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;>50K +35;State-gov;248374;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +40;Private;382499;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +46;Self-emp-inc;161386;9th;5;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;50;United-States;<=50K +49;Local-gov;110172;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;144032;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +26;Private;224426;Masters;14;Never-married;Exec-managerial;Own-child;White;Male;0;0;38;United-States;<=50K +37;Private;230408;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;20;United-States;<=50K +50;Local-gov;20795;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +20;Private;174714;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +30;Private;149531;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;34113;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +44;Local-gov;323790;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +28;Private;331381;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;160647;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;Ireland;>50K +34;Private;339142;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Private;164857;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;99;United-States;<=50K +33;Local-gov;267859;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;167725;Bachelors;13;Married-spouse-absent;Transport-moving;Not-in-family;Other;Male;0;0;84;India;<=50K +67;Self-emp-not-inc;105907;1st-4th;2;Widowed;Other-service;Not-in-family;Black;Female;0;0;20;United-States;<=50K +23;Private;200677;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;193882;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +54;Private;138026;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +49;Private;122385;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Private;49020;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +26;Private;283715;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;166416;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;156334;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Local-gov;45607;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +40;Local-gov;112362;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;200419;Assoc-acdm;12;Separated;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;State-gov;341638;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +25;?;34161;12th;8;Separated;?;Unmarried;White;Female;0;0;30;United-States;<=50K +50;Self-emp-not-inc;127151;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;Canada;>50K +52;Private;321959;Some-college;10;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;United-States;>50K +51;Local-gov;35211;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +19;Private;214935;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;132130;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +57;Private;222247;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +35;Private;165799;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +30;Private;257874;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Private;357173;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;State-gov;305739;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;172047;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;110677;Some-college;10;Separated;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +21;?;405684;HS-grad;9;Never-married;?;Other-relative;White;Male;0;0;35;Mexico;<=50K +60;Private;82388;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;<=50K +45;Private;289230;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;48;United-States;>50K +49;State-gov;336509;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;383402;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +40;Private;280362;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +42;Private;173704;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;433375;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Mexico;<=50K +63;Self-emp-not-inc;106551;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;22418;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;54816;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;Private;358199;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +43;Private;190044;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;97698;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;32;United-States;<=50K +56;Private;53366;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;236136;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Private;326232;7th-8th;4;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;48;United-States;<=50K +34;Private;581071;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Male;0;0;48;United-States;>50K +40;Private;220589;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Federal-gov;161463;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +44;Private;95255;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Federal-gov;223267;Some-college;10;Divorced;Protective-serv;Own-child;White;Male;0;0;72;United-States;<=50K +22;Private;236769;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;England;<=50K +58;Self-emp-inc;229498;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;20;United-States;>50K +43;Private;177083;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;30;United-States;<=50K +23;Private;287681;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;Columbia;<=50K +41;Private;49797;Some-college;10;Separated;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +44;Private;174051;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +32;Private;194901;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +38;Local-gov;252250;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;>50K +47;Private;191277;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +24;Private;174907;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +39;Private;167140;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;236543;12th;8;Divorced;Protective-serv;Own-child;White;Male;0;0;54;Mexico;<=50K +40;Private;214242;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +71;Private;200418;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Local-gov;167334;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +54;Private;146834;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +26;Private;78424;Assoc-voc;11;Never-married;Sales;Unmarried;White;Female;0;0;54;United-States;<=50K +37;Private;182675;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +28;Self-emp-not-inc;38079;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +42;Private;115178;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;15;United-States;<=50K +45;Private;195949;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;167415;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;223214;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;22245;Bachelors;13;Married-civ-spouse;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +45;State-gov;81853;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;United-States;>50K +30;Private;147921;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;46;United-States;<=50K +27;Private;29261;HS-grad;9;Married-AF-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;Private;257758;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Private;205493;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;60;United-States;>50K +19;Private;71650;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;150217;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +55;Self-emp-inc;258648;10th;6;Widowed;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;114798;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +43;Private;186188;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Local-gov;175255;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +45;Private;249935;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;120277;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +26;Private;193165;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;52;United-States;>50K +21;Private;221418;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;56063;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;153927;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;State-gov;163110;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +40;Self-emp-inc;175696;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;51;United-States;<=50K +46;Private;143189;5th-6th;3;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;Dominican-Republic;<=50K +20;?;114969;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +54;State-gov;32778;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;150683;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;78104;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +42;Self-emp-not-inc;201520;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;124111;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +60;Private;166386;11th;7;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;30;Hong;<=50K +43;State-gov;117471;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;361307;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;142038;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;45;United-States;<=50K +35;Private;276552;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;50402;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;174090;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +27;Private;277760;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;165278;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;22;United-States;<=50K +49;Private;182752;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +31;Private;173002;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;261232;11th;7;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;164607;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;129573;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +51;Federal-gov;36186;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +24;Private;325744;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;329793;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +46;Private;133616;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Private;83401;5th-6th;3;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +76;Private;239880;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;8;United-States;<=50K +25;Private;201737;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;143540;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;28334;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;245873;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +42;Local-gov;199095;Assoc-voc;11;Widowed;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Local-gov;575442;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;State-gov;184682;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;69251;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +31;Private;225507;Assoc-voc;11;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;407068;1st-4th;2;Married-spouse-absent;Other-service;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +40;Private;170019;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;?;<=50K +46;Local-gov;125892;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +43;Local-gov;35824;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +35;Private;67083;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +23;Private;107801;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +50;Self-emp-not-inc;95577;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;12;?;<=50K +43;Private;118536;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;Black;Male;0;0;40;United-States;<=50K +61;Private;198078;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +29;Private;78261;Prof-school;15;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;United-States;<=50K +21;Private;234108;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;92717;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;257683;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +90;Private;40388;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +24;Private;55424;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +40;Local-gov;319271;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +37;Self-emp-not-inc;75050;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +31;Private;182896;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;188274;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;211497;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;172246;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +48;Local-gov;219962;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;?;186815;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +26;?;132749;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;80;United-States;<=50K +28;Private;209801;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +20;State-gov;178517;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;169364;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;40;Ireland;<=50K +32;Federal-gov;164707;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +55;Private;144084;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;133692;Bachelors;13;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;145290;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +65;Local-gov;24824;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;235829;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +22;?;196280;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +42;Self-emp-not-inc;54202;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;59146;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +67;Private;64148;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;41;United-States;<=50K +28;Private;196621;HS-grad;9;Married-spouse-absent;Tech-support;Not-in-family;White;Female;0;0;37;United-States;<=50K +56;Private;195668;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;Cuba;>50K +31;State-gov;263000;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;<=50K +33;Private;554986;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +52;?;108211;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;217654;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Germany;>50K +47;Private;102771;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Portugal;<=50K +40;Private;213019;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +35;Private;228493;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;48;United-States;<=50K +65;Self-emp-not-inc;22907;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;24364;Some-college;10;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;30;United-States;<=50K +23;Federal-gov;41432;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;15;United-States;<=50K +39;Private;235259;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;343476;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +37;Private;326886;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;248313;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;30290;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;188540;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +39;Private;237943;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +25;Private;198870;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Male;0;0;35;United-States;<=50K +30;Private;233980;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;171090;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;48;United-States;<=50K +22;Private;353039;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Female;0;0;36;Mexico;<=50K +33;Private;130057;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +70;State-gov;345339;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;182074;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Local-gov;176557;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +17;Private;159849;11th;7;Never-married;Protective-serv;Own-child;White;Female;0;0;30;United-States;<=50K +36;Private;183425;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;125933;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +40;Local-gov;180123;HS-grad;9;Married-spouse-absent;Farming-fishing;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;592930;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;50;United-States;>50K +28;Private;183802;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +49;Private;80914;5th-6th;3;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +63;Self-emp-inc;165667;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;123991;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;20;United-States;<=50K +48;Self-emp-inc;181307;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +55;Private;124137;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Poland;<=50K +18;?;137363;Some-college;10;Never-married;?;Own-child;White;Female;0;0;4;United-States;<=50K +20;Private;291979;HS-grad;9;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;20;United-States;<=50K +49;Private;91251;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +27;Federal-gov;148153;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +37;Private;131463;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;33;United-States;<=50K +32;State-gov;127651;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-inc;239018;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +47;Private;276087;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;26;United-States;<=50K +34;Private;386877;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +61;Private;210464;HS-grad;9;Divorced;Adm-clerical;Other-relative;Black;Female;0;0;35;United-States;<=50K +25;Private;632834;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +26;Private;245465;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +18;Private;198087;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +35;Private;27408;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;242713;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;?;<=50K +56;Private;314727;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;>50K +40;State-gov;269733;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;177287;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;38;United-States;<=50K +66;Private;167711;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;>50K +42;Private;112181;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +28;Private;339002;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +39;State-gov;24721;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +65;Self-emp-not-inc;37092;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +20;Private;216563;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +39;Private;187089;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;423052;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;169180;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Hong;<=50K +21;Private;104981;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;48;United-States;<=50K +35;?;120074;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +38;Private;269323;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +55;Private;141549;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;214858;10th;6;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;55;United-States;<=50K +34;Private;173524;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +54;Local-gov;365049;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;Mexico;<=50K +38;Private;60355;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;86808;HS-grad;9;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +33;State-gov;174171;Some-college;10;Separated;Tech-support;Not-in-family;White;Male;0;0;12;United-States;<=50K +32;Federal-gov;504951;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;294064;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;France;<=50K +46;Private;120131;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;>50K +48;Private;199058;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;Private;152328;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +48;Federal-gov;88564;7th-8th;4;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +67;Private;95113;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;37;United-States;>50K +25;Private;178421;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +27;Local-gov;225291;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;205735;1st-4th;2;Separated;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;184362;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;25;United-States;<=50K +27;Private;347513;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;138768;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;29810;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;126501;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;60783;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;15;United-States;<=50K +26;Private;179772;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +45;Self-emp-inc;281911;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +33;Private;70447;HS-grad;9;Never-married;Transport-moving;Other-relative;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +55;?;449576;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;48;Mexico;<=50K +29;Private;327964;9th;5;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;153066;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +53;State-gov;77651;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;119493;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;256240;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +41;Local-gov;37848;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +45;Private;129336;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +27;Private;183511;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;190508;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;35;United-States;<=50K +31;Private;363130;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +45;Private;240356;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;55;United-States;<=50K +64;Private;133166;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;5;United-States;<=50K +38;Private;32916;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +17;Private;117477;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;459463;12th;8;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;50;United-States;<=50K +23;Private;95989;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +25;Private;118088;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +31;?;505438;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;30;Mexico;<=50K +37;Private;179731;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +28;Local-gov;163942;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;106670;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +41;Private;123403;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +61;Self-emp-inc;119986;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;66622;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +20;?;40060;Some-college;10;Never-married;?;Own-child;White;Male;0;0;56;United-States;<=50K +35;Private;260578;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +64;Local-gov;96076;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;70604;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;38;United-States;<=50K +53;Private;49715;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +28;Private;116531;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Federal-gov;214542;Some-college;10;Divorced;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +25;Local-gov;335005;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;Italy;<=50K +19;Private;258633;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +20;Private;203240;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +27;Private;104457;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;40;?;<=50K +21;?;479482;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +30;Private;167790;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;106843;10th;6;Never-married;Craft-repair;Other-relative;White;Male;0;0;30;United-States;<=50K +26;Private;174921;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;134152;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +57;Private;99364;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +18;Local-gov;155905;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;60;United-States;<=50K +30;Private;467108;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +34;Self-emp-not-inc;304622;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +60;Private;178050;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;38;United-States;<=50K +25;Private;162687;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;113151;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +48;Private;158924;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +27;Self-emp-not-inc;141795;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +33;Self-emp-not-inc;33404;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;>50K +65;Self-emp-inc;178771;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;110648;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;151053;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;142871;Some-college;10;Separated;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +18;?;343161;11th;7;Never-married;?;Own-child;White;Male;0;0;16;United-States;<=50K +27;Private;183523;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +57;Self-emp-not-inc;222216;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;60;United-States;<=50K +44;Private;121874;Some-college;10;Divorced;Sales;Unmarried;White;Male;0;0;55;United-States;>50K +30;Private;467108;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +26;Private;34393;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Federal-gov;42003;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +61;Private;180418;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +49;Self-emp-not-inc;199590;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;Mexico;<=50K +50;Private;155594;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +53;Self-emp-not-inc;162576;7th-8th;4;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;99;United-States;<=50K +33;Private;232475;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Private;269474;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;United-States;<=50K +45;Local-gov;140644;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +26;?;39640;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;60;United-States;<=50K +50;?;346014;7th-8th;4;Separated;?;Own-child;White;Female;0;0;20;United-States;<=50K +47;Self-emp-not-inc;159726;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +52;Federal-gov;290856;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +57;Private;217886;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;36;United-States;<=50K +21;?;199915;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +50;Local-gov;220640;Masters;14;Divorced;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;0;0;50;United-States;>50K +33;Federal-gov;88913;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;288486;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;227411;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +57;Private;201112;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;123778;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +21;Private;204596;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;8;United-States;<=50K +40;Private;190290;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;196674;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;108435;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;20;United-States;<=50K +38;Private;186359;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +22;State-gov;262819;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;171655;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;42;United-States;<=50K +42;Private;183319;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;El-Salvador;<=50K +36;Private;127306;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;47;United-States;<=50K +22;Private;68678;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;<=50K +40;State-gov;140108;9th;5;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;263444;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +46;State-gov;265554;HS-grad;9;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +28;Private;410216;11th;7;Married-civ-spouse;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;>50K +46;State-gov;20534;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +55;Private;188917;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +76;Private;98695;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +27;Private;411950;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +50;Private;237819;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +75;Private;187424;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +42;Federal-gov;198316;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;139703;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +51;Private;152596;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;82601;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;?;229843;Some-college;10;Never-married;?;Not-in-family;Black;Female;0;0;20;United-States;<=50K +60;Private;122276;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;Italy;<=50K +47;State-gov;188386;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +73;Private;92298;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;15;United-States;<=50K +27;Private;390657;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +35;Private;314897;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +31;Private;166343;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;50;?;<=50K +45;Private;88781;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Germany;>50K +57;Private;41762;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;South;>50K +34;Private;849857;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Nicaragua;<=50K +19;Private;307496;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +25;Private;324372;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +39;Private;99270;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;Germany;>50K +28;Private;160731;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Poland;>50K +48;State-gov;148306;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;259019;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +53;Private;224894;5th-6th;3;Married-civ-spouse;Priv-house-serv;Wife;Black;Female;0;0;10;Haiti;<=50K +19;Private;258470;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;197919;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;60;United-States;<=50K +23;Private;213719;Assoc-acdm;12;Never-married;Sales;Own-child;Black;Female;0;0;36;United-States;<=50K +32;Private;226535;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;146042;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +24;Private;99970;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;300687;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +29;Local-gov;219906;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;25;United-States;>50K +24;Private;122234;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;20;?;<=50K +55;Private;158641;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;239539;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +46;Local-gov;102308;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;186934;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;234447;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Private;125933;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +29;Private;142760;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +41;State-gov;309056;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +40;Self-emp-not-inc;48859;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;32;United-States;<=50K +30;Private;110594;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +72;Private;426562;11th;7;Divorced;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +17;Private;169037;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;123075;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;70;United-States;<=50K +38;Private;195744;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +36;Private;81896;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +24;Self-emp-not-inc;172047;Assoc-acdm;12;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;253814;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +28;Private;66473;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;271521;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Other;Male;0;0;40;United-States;>50K +48;Private;265295;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Self-emp-not-inc;174308;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;196342;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Private;149787;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +68;Private;124686;7th-8th;4;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;10;United-States;<=50K +45;Private;50163;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +26;Private;175789;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;218215;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;166371;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;145081;7th-8th;4;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +68;Private;214521;Prof-school;15;Widowed;Prof-specialty;Unmarried;White;Female;0;0;16;United-States;<=50K +26;Local-gov;287233;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;>50K +52;Private;201310;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;?;<=50K +17;Private;127366;11th;7;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +29;Private;203697;Bachelors;13;Married-civ-spouse;Prof-specialty;Own-child;White;Male;0;0;75;United-States;<=50K +41;Private;168730;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +45;Private;165232;Some-college;10;Divorced;Tech-support;Not-in-family;Black;Female;0;0;40;Trinadad&Tobago;<=50K +57;Private;175942;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +30;Federal-gov;356689;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;Japan;<=50K +46;Private;132912;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +45;Private;187226;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +59;?;254765;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +40;Private;202565;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;<=50K +22;Private;112164;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;?;<=50K +59;Self-emp-not-inc;70623;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;85;United-States;<=50K +36;Private;102729;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;558944;7th-8th;4;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;256967;10th;6;Never-married;Sales;Other-relative;Black;Female;0;0;40;United-States;<=50K +62;?;144583;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;102412;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;159788;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;80;United-States;<=50K +27;Private;55743;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;45;United-States;>50K +47;State-gov;148171;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Male;0;0;50;France;>50K +20;Local-gov;271354;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;98524;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;272913;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;Mexico;<=50K +22;Private;324445;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;155469;Assoc-acdm;12;Widowed;Tech-support;Unmarried;White;Female;0;0;24;United-States;<=50K +36;Private;102945;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;291904;10th;6;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +41;Federal-gov;186601;HS-grad;9;Separated;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;Private;172401;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +33;Private;193285;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +34;Private;176244;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +32;Private;117779;HS-grad;9;Never-married;Transport-moving;Own-child;White;Female;0;0;35;United-States;<=50K +22;?;34616;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +52;Private;169182;9th;5;Widowed;Other-service;Not-in-family;White;Female;0;0;25;Puerto-Rico;<=50K +27;Private;180758;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Local-gov;141637;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-not-inc;101266;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;62;United-States;<=50K +30;Private;164190;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Private;142282;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +39;Federal-gov;103984;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +64;Private;187601;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Self-emp-not-inc;36218;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +29;State-gov;106334;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;?;<=50K +37;Local-gov;249392;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +43;Self-emp-not-inc;110355;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +30;Self-emp-not-inc;117944;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;<=50K +17;Private;163836;10th;6;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +29;Private;145592;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +24;Private;108495;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;India;<=50K +27;Self-emp-not-inc;212041;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +69;Self-emp-inc;182451;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;124020;HS-grad;9;Married-spouse-absent;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;199116;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +17;?;144114;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +70;Private;405362;7th-8th;4;Widowed;Other-service;Unmarried;Black;Female;0;0;38;United-States;<=50K +21;?;262241;HS-grad;9;Never-married;?;Other-relative;White;Male;0;0;40;United-States;<=50K +27;Private;86681;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;187161;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +44;State-gov;691903;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;60;United-States;>50K +36;Private;219483;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;192010;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;Poland;<=50K +28;Local-gov;356089;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Male;0;0;50;United-States;<=50K +34;Private;684015;5th-6th;3;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;El-Salvador;<=50K +18;Private;36882;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +39;Private;203180;Some-college;10;Divorced;Farming-fishing;Unmarried;White;Female;0;0;45;United-States;<=50K +34;Private;183811;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Local-gov;103966;Masters;14;Divorced;Adm-clerical;Unmarried;White;Female;0;0;41;United-States;<=50K +24;Private;304602;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;57233;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +68;Private;224019;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;30;United-States;<=50K +35;Private;267966;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;Private;214800;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;241528;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;197365;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;296724;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;17;United-States;<=50K +26;Private;136226;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;40623;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;264874;HS-grad;9;Never-married;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;112847;HS-grad;9;Never-married;Farming-fishing;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +18;?;236090;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;89028;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +71;State-gov;210673;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;28;United-States;<=50K +55;Private;60193;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;216137;11th;7;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +36;Private;139743;Some-college;10;Widowed;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +25;?;32276;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;298871;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +42;Private;318255;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +57;Private;279636;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +34;Private;405386;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;28;United-States;<=50K +31;Private;297188;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +24;Private;182342;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;229148;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;60;Jamaica;<=50K +17;Private;413557;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;32;United-States;<=50K +26;Self-emp-inc;246025;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;20;Honduras;<=50K +32;Private;390997;1st-4th;2;Never-married;Farming-fishing;Not-in-family;Other;Male;0;0;50;Mexico;<=50K +55;Private;102058;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;247298;12th;8;Married-spouse-absent;Other-service;Own-child;Other;Female;0;0;20;United-States;<=50K +28;Private;140108;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +49;Private;81654;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +23;Private;177526;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;64631;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;110028;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;203761;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;Private;163870;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;50648;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +21;Private;166517;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +28;?;173800;Bachelors;13;Married-spouse-absent;?;Not-in-family;Asian-Pac-Islander;Female;0;0;10;Taiwan;<=50K +44;Self-emp-inc;181762;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +31;Self-emp-not-inc;340880;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +54;Private;138847;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +28;Private;215014;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;183778;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;273629;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-inc;113870;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +29;Private;114982;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +35;Private;205338;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +90;?;225063;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;10;South;<=50K +20;Private;281356;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Other;Male;0;0;40;United-States;<=50K +31;Private;38223;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +23;Private;172232;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;50;United-States;<=50K +60;Private;140544;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;221366;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;180799;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +44;Self-emp-not-inc;155930;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;201122;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +27;Private;101709;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +49;Private;140121;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;<=50K +48;Private;172709;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +47;Private;120131;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +34;Private;117444;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +27;Private;256764;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;223811;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;201603;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +25;Private;138765;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;133974;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Federal-gov;137953;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +57;Private;103403;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;461678;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +41;State-gov;70884;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +56;State-gov;466498;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;60;United-States;>50K +19;Private;148644;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;190739;HS-grad;9;Never-married;Other-service;Other-relative;Black;Male;0;0;32;United-States;<=50K +34;Private;299507;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;211424;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +27;State-gov;106721;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;192017;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;119153;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;202450;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;>50K +21;Private;50341;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +24;Private;140001;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Italy;<=50K +19;?;220517;Some-college;10;Never-married;?;Own-child;White;Female;0;0;15;United-States;<=50K +82;?;52921;Some-college;10;Widowed;?;Not-in-family;Amer-Indian-Eskimo;Male;0;0;3;United-States;<=50K +35;Private;31964;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +32;Private;148207;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;151627;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +30;Private;402539;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;188278;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +28;Self-emp-not-inc;96219;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;5;United-States;<=50K +29;Private;340534;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;44;United-States;<=50K +60;Private;160339;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Columbia;<=50K +28;Private;120135;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Federal-gov;303817;Some-college;10;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +31;Private;181091;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +28;Private;200515;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;>50K +42;Private;160893;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;23;United-States;<=50K +40;Local-gov;183096;9th;5;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Yugoslavia;>50K +24;Private;241367;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-inc;342084;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +36;Private;193855;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;80410;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;554317;9th;5;Married-spouse-absent;Other-service;Other-relative;White;Male;0;0;35;Mexico;<=50K +28;Private;108569;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;43;United-States;<=50K +34;Private;120959;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;222011;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;43;United-States;<=50K +43;Private;238530;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;48404;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;243923;HS-grad;9;Married-civ-spouse;Transport-moving;Other-relative;White;Male;0;0;80;United-States;<=50K +39;Private;305597;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;129764;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;150993;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +63;Self-emp-not-inc;147140;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +48;Private;167967;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;133278;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +39;Private;192251;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;>50K +43;Private;210844;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;>50K +28;Private;263015;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;State-gov;232918;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +48;Private;143542;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;45607;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Private;29828;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;104118;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;27484;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Private;205987;Prof-school;15;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;Cuba;<=50K +39;Local-gov;143385;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;?;200508;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;186995;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;54159;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +39;Private;113481;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +30;Local-gov;235271;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +32;Private;349365;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;65;United-States;<=50K +18;Private;283637;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;70282;Assoc-acdm;12;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +26;Private;166051;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;193720;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +35;?;124836;Some-college;10;Divorced;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;36;United-States;<=50K +33;Private;236379;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;122026;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +40;Private;114537;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +34;Private;191834;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +29;Private;420054;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;160045;Some-college;10;Widowed;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +34;Private;303187;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +45;Private;190088;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +53;Private;126977;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +52;Self-emp-not-inc;63004;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +64;Private;391121;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +42;Private;211450;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +44;Private;156413;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;44;United-States;>50K +53;Local-gov;204447;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;United-States;>50K +25;Private;66935;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +20;Private;344278;11th;7;Separated;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;108574;Assoc-voc;11;Never-married;Priv-house-serv;Own-child;White;Female;0;0;40;United-States;<=50K +56;Private;244605;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;219762;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;35;United-States;<=50K +62;Private;77884;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +28;Self-emp-not-inc;70100;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +24;Private;69640;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +65;Private;170012;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;34;United-States;<=50K +40;Private;329924;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;30;United-States;<=50K +31;Private;193285;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;296618;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +30;Local-gov;257796;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;155320;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;45;United-States;<=50K +22;Private;151888;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +56;Private;92444;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;>50K +51;Private;229272;HS-grad;9;Divorced;Other-service;Other-relative;Black;Male;0;0;32;Haiti;<=50K +36;Self-emp-not-inc;207202;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;205337;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;343021;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;<=50K +39;Private;185053;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;212864;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;66473;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;285169;11th;7;Never-married;Priv-house-serv;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;175431;9th;5;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;?;152641;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;339346;Masters;14;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +39;Private;287306;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;88926;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +36;Private;91275;Some-college;10;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +56;Private;244554;10th;6;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Private;232586;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-inc;127678;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;<=50K +44;Private;162184;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;408229;1st-4th;2;Never-married;Other-service;Not-in-family;White;Male;0;0;45;El-Salvador;<=50K +62;Private;197286;12th;8;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;48;Germany;<=50K +25;Private;252803;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +63;Self-emp-inc;110890;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;>50K +51;Private;160724;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;99;South;<=50K +25;Private;89625;HS-grad;9;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +62;?;266037;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;126730;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Federal-gov;96854;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +32;Private;186788;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;28996;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +30;Self-emp-not-inc;347166;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;State-gov;110311;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;310850;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;220694;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;37;United-States;<=50K +61;Private;149405;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +70;Self-emp-inc;131699;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;<=50K +55;Private;49996;11th;7;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Private;187112;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +36;Private;180859;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;38;United-States;<=50K +29;Private;185647;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;60;United-States;<=50K +30;Private;316606;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +45;Private;274657;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +18;Private;338836;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +28;Private;216814;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;106935;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +38;Private;223433;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;174789;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;135603;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +25;?;344719;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;4;United-States;<=50K +38;Private;372484;11th;7;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +23;Private;181820;Some-college;10;Never-married;Farming-fishing;Unmarried;White;Male;0;0;45;United-States;<=50K +40;Private;235371;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +20;Private;299399;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;202508;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +44;Private;172025;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +49;Self-emp-inc;246891;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +22;Private;450920;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +26;Private;53598;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;103757;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;76017;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +28;Self-emp-inc;80158;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;427952;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +20;?;230955;12th;8;Never-married;?;Not-in-family;Black;Female;0;0;35;United-States;<=50K +36;Private;342642;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;15;United-States;<=50K +77;Private;253642;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;30;United-States;<=50K +21;Private;219086;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +24;Private;162593;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +30;Private;87561;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Local-gov;142411;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +22;Private;154422;Some-college;10;Divorced;Sales;Own-child;Asian-Pac-Islander;Female;0;0;30;Philippines;<=50K +23;Private;169104;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;25;United-States;<=50K +17;Private;151141;12th;8;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +48;Private;267912;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;50;Mexico;>50K +43;Private;137126;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Private;152453;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Guatemala;<=50K +19;Private;357059;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +42;State-gov;202011;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;98283;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;176965;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +63;Private;187919;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +65;Private;274916;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Local-gov;193524;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +35;Private;152734;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;?;<=50K +21;Private;263641;HS-grad;9;Divorced;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +48;Local-gov;102076;Bachelors;13;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +43;Private;33331;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +22;State-gov;156773;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;15;?;<=50K +56;Self-emp-not-inc;115439;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +47;Private;181652;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;120268;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;24;United-States;<=50K +39;Private;196308;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;24;United-States;<=50K +45;Self-emp-not-inc;40690;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;75;United-States;<=50K +49;Private;228583;HS-grad;9;Divorced;Other-service;Unmarried;White;Male;0;0;40;Columbia;<=50K +23;Private;695136;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +69;Private;209236;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;36;United-States;<=50K +41;Federal-gov;214838;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +40;Self-emp-not-inc;188436;HS-grad;9;Separated;Exec-managerial;Other-relative;White;Male;0;0;40;United-States;<=50K +25;Private;177625;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;124591;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +50;Federal-gov;221532;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;232577;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;0;0;30;United-States;<=50K +48;Private;168216;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Private;214702;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +63;Private;237620;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +47;State-gov;54887;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;224506;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;?;<=50K +58;Private;183870;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;208330;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;51;United-States;<=50K +67;Self-emp-inc;168370;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +62;Self-emp-not-inc;320376;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;48;United-States;<=50K +28;Private;192384;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +26;Private;167350;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +46;Self-emp-not-inc;103538;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +29;Private;58522;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;191342;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +25;Private;193820;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;<=50K +20;Private;258490;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +21;Private;56520;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;102476;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +44;Self-emp-inc;311357;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +37;Private;166497;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;38;United-States;<=50K +29;Private;338270;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Private;282394;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;21;United-States;<=50K +32;Private;383269;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Private;119386;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +50;Private;196975;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;334221;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;18;United-States;<=50K +58;Private;27385;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +29;State-gov;133846;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;361888;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +21;Private;230429;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +49;Private;328776;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Private;243829;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +30;Private;280069;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +55;Private;305759;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;?;<=50K +64;Local-gov;164876;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;20;United-States;<=50K +29;Self-emp-inc;138597;Assoc-acdm;12;Never-married;Prof-specialty;Other-relative;Black;Female;0;0;40;United-States;<=50K +42;Private;144778;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;171015;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;112494;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;Private;408473;12th;8;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +46;State-gov;27802;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;>50K +34;Private;236318;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;315971;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;698418;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;25;United-States;<=50K +21;Private;329530;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +65;Private;194456;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;England;>50K +20;Private;282579;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;State-gov;26401;Masters;14;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +22;Private;83998;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;94364;Some-college;10;Never-married;Prof-specialty;Not-in-family;Other;Female;0;0;20;United-States;<=50K +44;Private;174189;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +44;Local-gov;101967;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +41;Private;146908;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +21;Private;31606;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;Germany;<=50K +24;Private;132327;Some-college;10;Married-spouse-absent;Sales;Unmarried;Other;Female;0;0;30;Ecuador;<=50K +24;Private;112459;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +28;Private;48894;HS-grad;9;Married-civ-spouse;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;181943;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Local-gov;195808;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;172052;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;35;South;>50K +68;Private;351711;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;State-gov;190305;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;464103;1st-4th;2;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +18;?;36348;Some-college;10;Never-married;?;Own-child;White;Male;0;0;48;United-States;<=50K +25;Private;120238;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Poland;<=50K +28;Private;354095;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Local-gov;308901;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +24;State-gov;208826;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;99;England;<=50K +20;Private;369677;10th;6;Separated;Sales;Not-in-family;White;Female;0;0;36;United-States;<=50K +45;Federal-gov;98524;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +57;Private;231232;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;?;119156;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;320451;Some-college;10;Never-married;Protective-serv;Own-child;Asian-Pac-Islander;Male;0;0;24;India;<=50K +41;Private;38397;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Self-emp-inc;189183;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;199281;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +52;Private;286342;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;38;United-States;<=50K +50;Private;152810;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +26;Self-emp-inc;176981;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;50;United-States;<=50K +17;Private;117549;10th;6;Never-married;Sales;Other-relative;Black;Female;0;0;12;United-States;<=50K +64;Private;254797;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;133336;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-not-inc;182826;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +51;Private;136224;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;272778;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +44;Private;279183;Some-college;10;Married-civ-spouse;Other-service;Own-child;White;Female;0;0;40;United-States;>50K +47;Private;110243;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;202071;HS-grad;9;Widowed;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +58;Private;197642;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;39;United-States;<=50K +19;Private;125591;11th;7;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;197462;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +23;Private;238831;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;182177;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Yugoslavia;<=50K +40;Local-gov;240504;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +48;Self-emp-inc;125892;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;38;United-States;>50K +46;Private;154430;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +50;Private;222020;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;243240;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;37;United-States;<=50K +26;Private;158734;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +36;Private;257691;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +19;Private;209826;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +54;Private;133050;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;41;United-States;<=50K +29;Private;138332;Some-college;10;Married-civ-spouse;Adm-clerical;Own-child;White;Female;0;0;6;United-States;<=50K +81;Private;201398;Masters;14;Widowed;Prof-specialty;Unmarried;White;Male;0;0;60;?;<=50K +37;Private;526968;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;38;United-States;>50K +40;Private;79036;Assoc-voc;11;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;>50K +36;Private;240323;Some-college;10;Widowed;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;270544;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +44;State-gov;199551;11th;7;Separated;Tech-support;Not-in-family;Black;Male;0;0;40;United-States;<=50K +36;Private;231052;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +69;State-gov;203072;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +17;Private;126771;12th;8;Never-married;Prof-specialty;Own-child;White;Male;0;0;7;United-States;<=50K +38;Private;31848;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Private;328981;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Male;0;0;40;United-States;<=50K +52;Private;159670;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;450695;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +57;Private;182028;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +19;Private;349620;10th;6;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;161066;HS-grad;9;Divorced;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;50;United-States;<=50K +21;Private;548303;HS-grad;9;Married-civ-spouse;Prof-specialty;Own-child;White;Male;0;0;40;Mexico;>50K +29;Private;150861;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;Japan;<=50K +33;?;335625;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;133766;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +28;Private;200511;HS-grad;9;Separated;Farming-fishing;Not-in-family;White;Male;0;0;55;United-States;<=50K +26;Private;50103;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +37;?;148266;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;6;Mexico;<=50K +49;Private;177211;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;132686;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +57;Federal-gov;21626;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;52900;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;?;150084;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +38;Private;248886;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;42;United-States;<=50K +60;Private;145493;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Federal-gov;399155;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Female;0;0;40;United-States;<=50K +19;Self-emp-not-inc;227310;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +59;Private;333270;Masters;14;Married-civ-spouse;Craft-repair;Wife;Asian-Pac-Islander;Female;0;0;35;Philippines;<=50K +50;Private;231495;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +35;Federal-gov;133935;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Federal-gov;55237;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +18;Private;183034;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;35;United-States;<=50K +32;Private;245487;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;40;Mexico;<=50K +32;Private;185480;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;114251;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;181814;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Female;0;0;40;United-States;<=50K +38;Self-emp-inc;125324;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;>50K +36;Private;34744;Assoc-acdm;12;Divorced;Other-service;Unmarried;White;Female;0;0;37;United-States;<=50K +56;Private;131608;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +35;Federal-gov;226916;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +56;Private;124137;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;41;United-States;<=50K +17;Private;96282;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;14;United-States;<=50K +56;Private;229335;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;State-gov;199495;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;111675;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;43;United-States;<=50K +27;Private;139209;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +50;Self-emp-not-inc;32372;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +33;Self-emp-not-inc;203784;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;62;United-States;<=50K +38;Private;64875;Some-college;10;Never-married;Farming-fishing;Unmarried;White;Male;0;0;60;United-States;<=50K +51;Private;41806;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;208725;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;42;United-States;<=50K +49;Local-gov;79019;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;0;0;16;United-States;<=50K +26;Private;136951;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +42;Private;203554;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +38;Private;170861;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +48;Private;199590;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;>50K +30;Private;182177;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Ireland;<=50K +25;State-gov;183678;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +50;Private;209320;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +54;Self-emp-inc;206862;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;36;United-States;>50K +37;Private;168941;11th;7;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;75333;10th;6;Never-married;Sales;Own-child;Black;Female;0;0;24;United-States;<=50K +57;Private;139290;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;38;United-States;<=50K +33;Private;400416;10th;6;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +41;Self-emp-not-inc;223763;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +45;Private;77927;Bachelors;13;Widowed;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +50;Private;175804;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +18;Private;91525;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;25;United-States;<=50K +19;Private;279968;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +26;Private;77698;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +61;?;198686;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;>50K +67;?;190340;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;113491;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +29;Private;202878;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;108431;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;194490;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +37;Private;48093;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;90;United-States;>50K +22;Private;136824;11th;7;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;143280;10th;6;Never-married;Priv-house-serv;Own-child;White;Female;0;0;24;United-States;<=50K +26;Private;150062;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +27;Local-gov;298510;HS-grad;9;Divorced;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;115025;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;350440;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +60;Private;83850;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;62669;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +24;Private;229773;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +40;Local-gov;196234;HS-grad;9;Divorced;Craft-repair;Own-child;White;Female;0;0;40;Puerto-Rico;<=50K +69;?;163595;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +52;Self-emp-inc;49069;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +38;Private;122952;HS-grad;9;Separated;Craft-repair;Unmarried;White;Female;0;0;35;United-States;<=50K +18;Private;123856;11th;7;Never-married;Sales;Own-child;White;Female;0;0;49;United-States;<=50K +24;Private;216181;Assoc-voc;11;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;180062;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +21;Private;188535;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;44;United-States;<=50K +64;Self-emp-not-inc;170421;Some-college;10;Widowed;Craft-repair;Not-in-family;White;Female;0;0;8;United-States;<=50K +25;Private;283087;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Male;0;0;40;United-States;<=50K +34;Federal-gov;341051;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +39;Self-emp-not-inc;34378;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;380674;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;52;United-States;<=50K +19;Private;304469;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;25;United-States;<=50K +35;Private;99146;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +26;Private;205109;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;99156;HS-grad;9;Separated;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +45;Private;97842;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;65;United-States;<=50K +18;Private;100875;11th;7;Never-married;Other-service;Unmarried;White;Female;0;0;28;United-States;<=50K +51;Private;200576;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;63;United-States;<=50K +36;Private;355053;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;28;United-States;<=50K +18;Private;118376;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;?;<=50K +37;Private;117567;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +39;Federal-gov;189632;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +21;Private;170108;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;192663;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +23;Private;526164;Bachelors;13;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;146579;HS-grad;9;Divorced;Sales;Unmarried;Black;Male;0;0;40;United-States;<=50K +28;Private;60288;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +23;State-gov;241951;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Self-emp-inc;213140;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;218124;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +22;Self-emp-not-inc;279802;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;3;United-States;<=50K +26;Private;153078;HS-grad;9;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;80;?;>50K +40;Private;167919;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +90;Private;250832;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;193158;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;172032;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;269015;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;Germany;>50K +17;?;262196;10th;6;Never-married;?;Own-child;White;Male;0;0;8;United-States;<=50K +49;Federal-gov;125892;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;134890;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;50;United-States;<=50K +60;Self-emp-not-inc;261119;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;119409;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Other;Female;0;0;40;Columbia;<=50K +53;Self-emp-not-inc;118793;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +19;Private;184207;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;191027;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;207782;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +48;Self-emp-not-inc;209146;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;187724;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +58;Private;158002;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;<=50K +19;Self-emp-not-inc;305834;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;25;United-States;<=50K +37;?;122265;HS-grad;9;Divorced;?;Not-in-family;Asian-Pac-Islander;Female;0;0;42;?;<=50K +22;Private;211798;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;123011;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +31;Private;36302;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +62;Private;169204;HS-grad;9;Widowed;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;38232;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +64;State-gov;277657;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;24;United-States;<=50K +38;Private;32271;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;226198;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;28145;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;52;United-States;<=50K +39;Private;140477;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;10;United-States;<=50K +50;Private;165050;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Self-emp-inc;202937;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +36;Private;316298;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;203070;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;49;United-States;<=50K +51;Self-emp-inc;103995;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +28;Private;176137;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +57;Self-emp-not-inc;103948;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;>50K +40;Local-gov;39581;Prof-school;15;Separated;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +27;Private;506436;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;Peru;<=50K +49;State-gov;154493;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;44;United-States;<=50K +34;Self-emp-not-inc;137223;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;102323;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +54;Private;257765;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +52;Private;42924;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +43;Private;167599;11th;7;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;25;United-States;<=50K +84;?;368925;5th-6th;3;Widowed;?;Not-in-family;White;Male;0;0;15;United-States;<=50K +79;?;100881;Assoc-acdm;12;Married-civ-spouse;?;Wife;White;Female;0;0;2;United-States;>50K +35;Private;52738;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;46;United-States;<=50K +56;Private;98418;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;30;United-States;<=50K +30;Private;381153;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;103700;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;298635;Bachelors;13;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;50;United-States;<=50K +32;Private;127895;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +44;Self-emp-inc;212760;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +32;Private;281384;HS-grad;9;Married-AF-spouse;Other-service;Other-relative;White;Female;0;0;10;United-States;<=50K +60;Private;181200;12th;8;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;257364;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +50;Private;283281;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +58;Private;214502;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;>50K +41;Private;69333;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +28;Private;190060;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +53;Private;95864;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;35;United-States;<=50K +17;?;275778;9th;5;Never-married;?;Own-child;White;Female;0;0;25;Mexico;<=50K +45;Private;27332;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;24395;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;30;United-States;<=50K +25;Private;330695;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +40;Self-emp-not-inc;171615;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;>50K +28;Private;116372;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +27;Private;38599;12th;8;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Local-gov;202184;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;15;United-States;<=50K +24;Private;315303;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;25;United-States;<=50K +38;Private;103456;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +24;State-gov;163480;Masters;14;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;317425;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;7;United-States;<=50K +58;Private;216941;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;116541;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;44;United-States;>50K +43;Private;186396;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;20;United-States;<=50K +24;Private;385540;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Mexico;<=50K +63;Private;201631;9th;5;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;439919;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +21;Private;182117;Bachelors;13;Never-married;Other-service;Other-relative;White;Male;0;0;20;United-States;<=50K +20;State-gov;334113;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +49;?;228372;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;>50K +47;Federal-gov;211123;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Self-emp-inc;38819;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +23;?;302836;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;40;El-Salvador;<=50K +35;State-gov;89040;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Private;264210;Some-college;10;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;20;United-States;<=50K +18;Private;87157;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +28;Self-emp-not-inc;398918;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +62;?;123612;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;4;United-States;<=50K +20;Private;155818;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +28;Private;243660;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;134195;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;238638;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;159929;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;198668;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;215504;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;158002;Some-college;10;Never-married;Craft-repair;Other-relative;White;Male;0;0;55;Ecuador;<=50K +53;Local-gov;35305;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;57;United-States;<=50K +25;Private;195994;1st-4th;2;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;Guatemala;<=50K +44;State-gov;321824;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;<=50K +22;Private;180449;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;28;United-States;<=50K +40;Private;201764;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;250038;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;?;<=50K +30;Self-emp-not-inc;226535;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +51;Private;136121;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +17;Private;47199;11th;7;Never-married;Priv-house-serv;Own-child;White;Female;0;0;24;United-States;<=50K +46;Local-gov;215895;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +50;State-gov;24647;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +34;Private;734193;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;?;321086;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +41;Federal-gov;192589;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;326283;Bachelors;13;Never-married;Other-service;Unmarried;Other;Male;0;0;40;United-States;<=50K +32;Private;207284;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;109089;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;<=50K +50;Private;274528;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +77;Private;142646;7th-8th;4;Widowed;Priv-house-serv;Unmarried;White;Female;0;0;23;United-States;<=50K +33;Private;180859;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Self-emp-inc;188610;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +64;Private;169604;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;260560;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +34;Local-gov;188245;HS-grad;9;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;35;United-States;<=50K +37;Local-gov;52465;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;737315;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;?;195143;Some-college;10;Never-married;?;Own-child;White;Female;0;0;29;United-States;<=50K +50;Self-emp-not-inc;219420;Doctorate;16;Divorced;Sales;Not-in-family;White;Male;0;0;64;United-States;<=50K +60;Private;198170;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +46;Local-gov;183168;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;43;United-States;<=50K +43;Private;168412;HS-grad;9;Married-civ-spouse;Sales;Other-relative;White;Female;0;0;44;Poland;<=50K +48;Private;174386;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;El-Salvador;>50K +48;Private;95661;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +37;Private;468713;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;169112;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +52;Private;74024;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +27;Private;110622;5th-6th;3;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;20;Vietnam;<=50K +43;Local-gov;33331;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;Private;181557;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;25;United-States;<=50K +35;Private;146091;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;200949;10th;6;Never-married;Other-service;Unmarried;White;Female;0;0;38;Peru;<=50K +51;Local-gov;201560;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +71;Federal-gov;149386;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;9;United-States;<=50K +63;Private;38352;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;State-gov;180272;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;<=50K +24;State-gov;275421;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +41;Local-gov;173051;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +33;Local-gov;167474;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;267138;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +23;Private;135138;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +49;Private;218357;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;38;United-States;<=50K +28;Self-emp-not-inc;107236;12th;8;Married-civ-spouse;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;138416;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;56;Mexico;<=50K +28;Private;154863;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Male;0;0;35;United-States;<=50K +37;Private;194004;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +19;Private;339123;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +51;Local-gov;548361;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;26;United-States;<=50K +25;Private;101812;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;41;United-States;<=50K +49;Self-emp-inc;127111;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +47;Private;171807;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +48;Local-gov;40666;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;340682;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;175052;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;?;321629;HS-grad;9;Never-married;?;Unmarried;White;Female;0;0;16;United-States;<=50K +46;Private;154405;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +17;Private;108402;10th;6;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +34;Private;346275;11th;7;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;43;United-States;<=50K +44;Private;42476;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;30;United-States;<=50K +23;Private;161708;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +65;?;137354;Some-college;10;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +34;Private;250724;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;Jamaica;<=50K +34;Federal-gov;149368;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;154641;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;56150;11th;7;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;260254;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;108083;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +54;Self-emp-not-inc;71344;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +32;Private;174215;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +39;State-gov;114366;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +39;Private;158962;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;179498;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Germany;<=50K +29;Private;31935;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;149909;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;>50K +20;?;58740;Some-college;10;Never-married;?;Own-child;White;Male;0;0;15;United-States;<=50K +39;Private;216552;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;255348;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;176050;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +71;?;125101;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;?;197286;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;159737;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;58;United-States;<=50K +39;Private;316211;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +45;Local-gov;556652;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +19;Private;265576;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +43;Private;347653;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +32;Private;62374;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;170230;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +34;Private;203051;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;27;United-States;<=50K +66;Self-emp-inc;115880;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;181413;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;185554;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;350387;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +63;Private;225102;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;?;<=50K +35;Self-emp-not-inc;350247;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +28;Private;150025;9th;5;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;?;>50K +37;Private;107737;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +63;?;334741;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +43;Private;115562;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +30;Self-emp-not-inc;131584;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;60;United-States;<=50K +36;Local-gov;95855;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;60;United-States;>50K +54;Private;391016;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Federal-gov;51089;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +77;Private;117898;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +28;Private;70240;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +39;Self-emp-not-inc;187693;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;72;United-States;>50K +37;Private;341672;Bachelors;13;Separated;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +22;Local-gov;289982;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;<=50K +54;Private;76344;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +21;Private;200973;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +36;Private;111377;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Self-emp-not-inc;136684;HS-grad;9;Widowed;Adm-clerical;Other-relative;White;Female;0;0;30;United-States;<=50K +40;Private;176716;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +47;Self-emp-not-inc;166894;Some-college;10;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;243872;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +28;Private;155621;5th-6th;3;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Columbia;<=50K +46;Private;102597;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;60331;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +37;Private;75024;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;25;Canada;<=50K +69;Private;174474;10th;6;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;28;Peru;<=50K +43;Private;145441;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +53;Private;83434;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;21;Japan;>50K +20;Private;691830;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;35;United-States;<=50K +22;Private;189203;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +48;Private;115784;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +40;Federal-gov;280167;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +68;?;407338;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +23;Private;315065;10th;6;Never-married;Other-service;Unmarried;White;Male;0;0;60;Mexico;<=50K +25;Local-gov;167835;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;38;United-States;>50K +22;Private;63105;HS-grad;9;Never-married;Prof-specialty;Own-child;Black;Male;0;0;40;United-States;<=50K +23;Private;520775;12th;8;Never-married;Priv-house-serv;Own-child;White;Male;0;0;30;United-States;<=50K +41;Local-gov;47902;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +25;Private;145434;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;25;United-States;<=50K +58;Private;56392;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;162312;HS-grad;9;Divorced;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;45;Japan;<=50K +28;Private;204074;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +19;Private;99246;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;25;United-States;<=50K +44;Private;102085;Some-college;10;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +68;Private;168794;Preschool;1;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;10;United-States;<=50K +33;State-gov;332379;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;Private;233419;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;57233;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;442429;HS-grad;9;Separated;Craft-repair;Unmarried;White;Female;0;0;40;Mexico;<=50K +29;Private;369114;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;261334;9th;5;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Private;160303;HS-grad;9;Widowed;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +49;Private;50474;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;321577;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +41;Private;29591;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +33;Self-emp-not-inc;334744;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +22;Self-emp-not-inc;269474;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +66;Private;33619;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;4;United-States;<=50K +38;Private;149347;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +43;Private;96249;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;42;United-States;>50K +40;Local-gov;370502;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +32;Private;188246;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;167558;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;35;Mexico;<=50K +35;Private;292185;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +33;Local-gov;70164;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +36;Private;269722;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +33;Self-emp-not-inc;175502;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +53;Private;233165;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +27;Private;177351;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;212114;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;15;United-States;<=50K +26;Private;288959;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;36;United-States;<=50K +64;Private;231619;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;21;United-States;<=50K +48;Private;146919;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +23;Private;388811;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;243560;Some-college;10;Never-married;Sales;Unmarried;White;Female;0;0;40;?;<=50K +35;Self-emp-not-inc;98360;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;369538;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +65;Self-emp-not-inc;31740;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +18;Private;333611;5th-6th;3;Never-married;Other-service;Other-relative;White;Male;0;0;54;Mexico;<=50K +34;Self-emp-not-inc;108247;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +28;Private;76129;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;Guatemala;<=50K +37;Private;91711;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +61;?;166855;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +31;Private;43953;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;<=50K +25;Local-gov;84224;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +81;Private;100675;1st-4th;2;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;Poland;<=50K +47;Private;155509;HS-grad;9;Separated;Other-service;Other-relative;Black;Female;0;0;35;United-States;<=50K +39;Private;29814;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;241805;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;30;United-States;<=50K +44;Private;214838;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +37;Private;240810;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;154076;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +27;?;175552;5th-6th;3;Married-civ-spouse;?;Wife;White;Female;0;0;40;Mexico;<=50K +55;Private;170287;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Poland;>50K +60;Private;145995;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +22;Private;433669;Assoc-acdm;12;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;36;?;<=50K +23;Private;233626;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +19;Private;607799;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;60;United-States;<=50K +45;Private;88500;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;>50K +36;Private;127809;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +46;Private;243743;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;Private;177211;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;231180;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;253856;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +39;Private;177075;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;152855;HS-grad;9;Never-married;Exec-managerial;Own-child;Other;Female;0;0;40;Mexico;<=50K +37;Private;191137;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Male;0;0;25;United-States;<=50K +49;Private;255559;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +27;Private;169815;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;221215;10th;6;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +35;Private;270059;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +17;Private;345403;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;194897;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +33;Private;388741;Some-college;10;Never-married;Adm-clerical;Unmarried;Other;Female;0;0;38;United-States;<=50K +33;Private;355856;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;60;United-States;<=50K +51;Private;122109;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +49;Private;75673;HS-grad;9;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +41;Private;47902;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +64;Private;221343;1st-4th;2;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;12;United-States;<=50K +40;Private;255675;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +49;Federal-gov;203505;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;125106;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;139890;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;28035;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;86;United-States;<=50K +36;Private;163237;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +23;Local-gov;55890;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;255934;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;<=50K +61;Private;168654;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;Canada;<=50K +47;Self-emp-not-inc;39986;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;208451;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;206681;12th;8;Never-married;Sales;Not-in-family;White;Female;0;0;55;United-States;<=50K +33;Private;117779;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;46;United-States;>50K +36;Self-emp-not-inc;129150;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +38;?;177273;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;35;United-States;<=50K +34;Local-gov;226443;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +56;Private;146326;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;187901;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;23;United-States;<=50K +49;Private;188694;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +71;Private;187493;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +19;Private;212468;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +20;Private;84726;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;137907;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +51;Private;34361;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;20;United-States;>50K +38;Private;254114;Some-college;10;Married-spouse-absent;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +38;Private;170174;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +35;Self-emp-not-inc;190895;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;25;United-States;<=50K +24;Local-gov;317443;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;<=50K +40;Private;375603;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Male;0;0;40;United-States;<=50K +21;Private;203076;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +49;Private;53893;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;171748;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;24;United-States;<=50K +52;Private;204584;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;42;United-States;<=50K +27;Private;660870;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +20;Private;105686;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;148607;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;255849;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Federal-gov;255921;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;England;<=50K +33;Private;113326;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;440456;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;105493;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Local-gov;89491;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;171818;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;51151;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;188957;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;97933;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Self-emp-inc;195447;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +63;?;46907;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;>50K +54;Self-emp-inc;383365;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +32;Self-emp-not-inc;203408;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +29;Local-gov;148182;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +26;Local-gov;211497;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;48063;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +54;Private;185407;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;225927;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Federal-gov;314525;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;208577;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +42;Private;222884;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +31;Private;209538;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Local-gov;177114;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +50;Private;173754;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;121370;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +37;Private;67125;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +26;Private;67240;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;198346;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;141003;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;25;United-States;<=50K +24;Self-emp-inc;60668;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;104256;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;34;United-States;<=50K +47;Private;131002;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +26;Private;177720;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +20;Private;39615;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;112264;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;169100;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;155659;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Germany;>50K +29;Private;224215;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;270502;11th;7;Never-married;Exec-managerial;Own-child;White;Female;0;0;20;United-States;<=50K +46;Private;125487;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;51385;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +41;Private;112763;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;108926;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +36;Local-gov;109766;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Male;0;0;60;United-States;<=50K +38;Private;226106;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +75;Self-emp-not-inc;92792;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +26;Private;186950;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +44;Private;230478;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;231638;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;120461;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;33673;12th;8;Never-married;Transport-moving;Not-in-family;Asian-Pac-Islander;Male;0;0;35;United-States;<=50K +34;Private;191385;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +31;Self-emp-not-inc;229946;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Columbia;<=50K +47;Self-emp-not-inc;160131;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;126021;HS-grad;9;Never-married;Craft-repair;Own-child;White;Female;0;0;20;United-States;<=50K +42;Private;203542;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;144592;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +38;Local-gov;223004;Some-college;10;Divorced;Protective-serv;Not-in-family;White;Male;0;0;75;United-States;<=50K +22;Private;183257;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +32;Private;172714;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;131611;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;48;United-States;<=50K +41;Private;253060;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;471990;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;46;United-States;>50K +44;Private;138966;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;38;United-States;<=50K +35;Private;385412;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;?;184101;Some-college;10;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +36;Local-gov;135786;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +30;Private;227359;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +40;State-gov;86912;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +25;Private;172581;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;483822;7th-8th;4;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;40;Guatemala;<=50K +66;Self-emp-inc;220543;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +48;Private;152953;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;32;Dominican-Republic;<=50K +35;Private;239755;Some-college;10;Never-married;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +41;Private;177905;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +19;Private;200136;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +55;Self-emp-not-inc;111625;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;162915;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;116662;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +65;Private;225580;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +30;Private;169104;Assoc-acdm;12;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +43;Private;212894;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;93997;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Italy;<=50K +22;Private;189924;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Private;274424;11th;7;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;188246;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;284211;HS-grad;9;Widowed;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +21;Private;198259;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +31;Private;368517;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +34;Private;168768;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +33;Federal-gov;122220;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;>50K +44;Private;175641;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +21;State-gov;173324;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +75;Local-gov;31195;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +55;Federal-gov;88876;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;60;United-States;>50K +43;Self-emp-not-inc;176069;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;16;United-States;<=50K +31;Private;215297;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;198425;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +26;Local-gov;180957;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;206129;Assoc-voc;11;Never-married;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +42;Federal-gov;65950;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;197618;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;185357;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Private;134890;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +64;?;193043;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +35;Federal-gov;153633;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +65;Private;115890;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +58;Private;343957;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +63;?;247986;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +59;Private;159048;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;89735;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;31778;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +51;?;157327;5th-6th;3;Married-civ-spouse;?;Husband;Black;Male;0;0;8;United-States;<=50K +34;Private;236543;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +51;State-gov;194475;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;303510;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;171242;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-not-inc;39388;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +62;Local-gov;197218;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;18;United-States;<=50K +22;State-gov;151991;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;20;United-States;<=50K +38;Private;374524;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +34;?;267352;11th;7;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +45;Local-gov;364563;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +37;Private;186035;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +21;Private;47541;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Private;151107;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +24;Private;500509;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +20;Federal-gov;225515;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;24;United-States;<=50K +27;Private;153291;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +40;Private;169885;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;?;112780;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +31;Local-gov;175778;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;174330;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +50;Private;35224;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;175622;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;164678;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;<=50K +50;?;87263;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;55;United-States;>50K +17;Self-emp-not-inc;181317;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;35;United-States;<=50K +33;Federal-gov;177945;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +28;Private;47168;10th;6;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +39;Self-emp-not-inc;190023;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;168782;Assoc-voc;11;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +59;Private;175290;7th-8th;4;Never-married;Other-service;Other-relative;White;Male;0;0;32;United-States;<=50K +74;Private;145463;1st-4th;2;Widowed;Priv-house-serv;Not-in-family;Black;Female;0;0;15;United-States;<=50K +54;Private;159755;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +31;Private;113364;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;55;United-States;<=50K +31;Private;487742;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;304710;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +57;Self-emp-not-inc;315460;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;<=50K +49;Private;135643;HS-grad;9;Widowed;Craft-repair;Unmarried;Asian-Pac-Islander;Female;0;0;40;South;<=50K +19;?;117444;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +38;Private;202683;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;164866;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;42;United-States;>50K +32;?;227160;Some-college;10;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;158077;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +38;Private;191103;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;99;United-States;>50K +25;Private;193701;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +40;Private;143046;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +34;Private;206297;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +35;Self-emp-not-inc;188563;HS-grad;9;Divorced;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +53;Private;35102;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;34;United-States;<=50K +21;Private;203055;Some-college;10;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Private;309932;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;243432;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;177107;Assoc-voc;11;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;35;United-States;<=50K +64;Self-emp-not-inc;113929;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +19;?;291509;12th;8;Never-married;?;Own-child;White;Male;0;0;28;United-States;<=50K +34;Private;186824;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;70;United-States;<=50K +46;Private;192768;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +35;Private;234962;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Mexico;<=50K +32;Private;83253;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +26;Private;248990;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;346159;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;272656;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;55;United-States;>50K +22;Private;60552;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +29;State-gov;33798;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +38;Self-emp-not-inc;112158;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;99;United-States;<=50K +55;Private;200992;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +26;Private;98155;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;Self-emp-inc;79586;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Other;Male;0;0;60;United-States;<=50K +25;State-gov;143062;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +18;?;284450;11th;7;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +58;State-gov;159021;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;353270;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +29;Self-emp-not-inc;162312;Some-college;10;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Male;0;0;45;South;<=50K +49;State-gov;231961;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Male;0;0;50;United-States;>50K +38;Private;181943;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +21;Private;163595;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +28;Private;130856;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +42;Private;208875;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;El-Salvador;>50K +29;Self-emp-not-inc;58744;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;60;United-States;<=50K +48;Private;116641;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +40;Private;69333;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;320811;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +34;Private;197886;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +57;Self-emp-not-inc;253914;1st-4th;2;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;Mexico;<=50K +24;Private;89154;9th;5;Never-married;Other-service;Not-in-family;White;Male;0;0;40;El-Salvador;<=50K +32;Private;372317;9th;5;Separated;Other-service;Unmarried;White;Female;0;0;23;Mexico;<=50K +18;Self-emp-not-inc;296090;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;48;?;<=50K +39;Private;192614;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;56;United-States;<=50K +39;Private;403489;11th;7;Divorced;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;169652;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +20;Private;217467;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +27;?;162104;9th;5;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +54;Private;175912;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +40;Self-emp-not-inc;179533;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;75;United-States;>50K +27;Private;149624;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;United-States;<=50K +27;Private;289147;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;347720;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;406978;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Female;0;0;40;United-States;<=50K +17;Private;193199;11th;7;Never-married;Sales;Unmarried;White;Female;0;0;12;Poland;<=50K +37;Self-emp-inc;163998;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +33;Private;333701;Assoc-voc;11;Never-married;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +45;Private;186256;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;104525;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +71;Private;212806;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;36;United-States;<=50K +23;Local-gov;203353;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;45;United-States;<=50K +41;Private;130126;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;>50K +21;?;270043;10th;6;Never-married;?;Unmarried;White;Female;0;0;30;United-States;<=50K +47;Private;218435;HS-grad;9;Married-spouse-absent;Sales;Unmarried;White;Female;0;0;20;Cuba;<=50K +30;Private;154120;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;<=50K +40;Private;193537;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Dominican-Republic;<=50K +44;Private;84535;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +31;State-gov;157673;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +68;Private;217424;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;24;United-States;<=50K +38;Private;186191;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +78;Self-emp-inc;212660;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;10;United-States;<=50K +31;Self-emp-inc;31740;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +39;Private;498785;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Local-gov;162566;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;Canada;<=50K +30;Private;118861;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +34;Private;206609;Some-college;10;Never-married;Sales;Unmarried;White;Male;0;0;35;United-States;<=50K +30;Federal-gov;423064;HS-grad;9;Separated;Adm-clerical;Other-relative;Black;Male;0;0;35;United-States;<=50K +47;Private;191957;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +40;Private;223934;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;17;United-States;>50K +62;?;129246;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;195486;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;70;Jamaica;<=50K +40;Private;114580;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Female;0;0;40;Vietnam;<=50K +20;Private;119215;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;240554;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +51;Private;144084;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;358682;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +49;Local-gov;59612;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Local-gov;101345;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;26;United-States;<=50K +20;Private;117618;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;231238;9th;5;Separated;Farming-fishing;Unmarried;Black;Male;0;0;40;United-States;<=50K +42;Local-gov;143046;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;203642;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +62;Private;88579;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +21;Private;240517;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;70;United-States;<=50K +58;Local-gov;156649;1st-4th;2;Widowed;Handlers-cleaners;Unmarried;Black;Male;0;0;40;United-States;<=50K +30;Private;143392;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +37;Private;365465;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;70;Philippines;<=50K +22;State-gov;264710;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +64;State-gov;223830;9th;5;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +42;Private;154374;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +43;State-gov;242521;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;124569;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;209230;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;6;United-States;<=50K +21;Private;162228;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +45;Federal-gov;60267;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;76901;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +24;Private;137876;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +70;Self-emp-not-inc;347910;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +27;Local-gov;138917;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +34;Private;532379;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;31532;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;30973;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;117295;1st-4th;2;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +32;Private;295282;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +42;Private;190786;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;246207;Bachelors;13;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +50;Private;130780;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +36;Private;186212;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;175526;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Federal-gov;82622;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +38;State-gov;318886;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;52;United-States;<=50K +18;Private;256005;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;217715;5th-6th;3;Never-married;Sales;Not-in-family;White;Female;0;0;3;United-States;<=50K +82;Self-emp-not-inc;240491;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Cuba;<=50K +33;Private;154120;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +37;Private;69251;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +24;Private;333505;HS-grad;9;Married-spouse-absent;Transport-moving;Own-child;White;Male;0;0;40;Peru;<=50K +31;Private;168521;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +59;Private;193568;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;426895;12th;8;Never-married;Farming-fishing;Own-child;White;Male;0;0;55;United-States;<=50K +47;Self-emp-not-inc;131826;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;79646;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;167031;Bachelors;13;Never-married;Prof-specialty;Unmarried;Other;Female;0;0;33;United-States;<=50K +34;Private;73199;11th;7;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +50;Private;114056;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;84;United-States;<=50K +57;Self-emp-not-inc;110417;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;75;United-States;<=50K +60;Private;33266;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;154410;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +56;?;154537;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;50;United-States;>50K +18;Private;27780;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +26;Private;142914;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;75;United-States;<=50K +20;Private;314422;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +29;Local-gov;273771;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +30;Private;175083;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;52;United-States;<=50K +21;Private;63665;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +24;Local-gov;193416;Some-college;10;Never-married;Protective-serv;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;74275;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;122609;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Local-gov;116892;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;196971;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;72;United-States;<=50K +20;Private;105312;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Private;108699;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +44;Private;171615;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +39;Private;388023;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +39;Private;181553;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +45;Private;170850;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;>50K +28;Private;187479;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +44;Private;277720;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +27;Private;220754;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;70;United-States;<=50K +34;Self-emp-not-inc;209768;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;93225;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Federal-gov;341709;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;236242;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +21;Private;121889;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +18;Private;318190;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +63;Self-emp-not-inc;111306;7th-8th;4;Widowed;Farming-fishing;Unmarried;White;Female;0;0;10;United-States;<=50K +18;Private;198614;11th;7;Never-married;Sales;Own-child;Black;Female;0;0;8;United-States;<=50K +32;Private;193231;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;?;104614;11th;7;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;172368;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +23;Private;60331;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +38;Private;154568;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +45;Private;238567;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;England;>50K +30;Private;208068;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;Mexico;<=50K +24;Federal-gov;283918;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;25;United-States;<=50K +23;Private;37783;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;263552;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +48;Private;255439;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Self-emp-inc;344275;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +31;Private;70568;1st-4th;2;Never-married;Other-service;Other-relative;White;Female;0;0;25;El-Salvador;<=50K +18;Private;127827;12th;8;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +36;Private;185203;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;187052;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +72;Private;177769;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;<=50K +61;Private;68268;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +37;Federal-gov;81853;HS-grad;9;Divorced;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;?;<=50K +30;Self-emp-inc;153549;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Private;271393;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;198148;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +65;Private;469602;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;<=50K +36;Private;163290;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;295949;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;125279;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +64;Local-gov;182866;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +61;Self-emp-not-inc;111563;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;>50K +38;Private;34173;Bachelors;13;Never-married;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +24;Private;197757;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +39;Private;98941;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +44;Private;205474;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +47;Private;206659;Some-college;10;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +73;?;191394;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +66;Private;244661;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +53;Private;47396;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +43;State-gov;270721;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +57;State-gov;32694;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +44;Private;171256;Assoc-acdm;12;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;45;United-States;<=50K +52;Self-emp-not-inc;217210;HS-grad;9;Widowed;Other-service;Other-relative;Black;Female;0;0;40;United-States;<=50K +46;Private;218329;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;386643;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +37;Federal-gov;125933;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;155767;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;54929;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +59;Private;162136;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;56;United-States;<=50K +22;Private;256504;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;162098;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +39;Self-emp-not-inc;103110;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;227610;10th;6;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;58;United-States;<=50K +63;Private;176696;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +51;Private;220019;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Self-emp-inc;242984;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +38;Private;187847;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +17;Private;132636;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +20;Private;108887;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +42;Self-emp-not-inc;195897;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;112181;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;12;United-States;>50K +56;Local-gov;391926;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;195505;10th;6;Never-married;Sales;Own-child;White;Male;0;0;5;United-States;<=50K +23;Private;145389;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +33;?;186824;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +36;Local-gov;101833;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;82283;5th-6th;3;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +52;Private;99602;HS-grad;9;Separated;Craft-repair;Own-child;Black;Female;0;0;40;United-States;<=50K +28;Private;213276;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +59;Private;424468;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +30;Private;176123;10th;6;Never-married;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +32;Private;38797;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;101859;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +53;Private;87158;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;205066;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +26;Private;56929;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;50;?;<=50K +31;Private;87950;Assoc-voc;11;Divorced;Sales;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +34;Private;150154;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +30;State-gov;112139;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;149217;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +27;Private;189974;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;109199;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +24;Private;190290;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +33;Federal-gov;428271;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +22;State-gov;134192;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;10;United-States;<=50K +47;Private;168211;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +44;Federal-gov;316120;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;>50K +41;Private;107276;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +45;?;112453;HS-grad;9;Separated;?;Not-in-family;Asian-Pac-Islander;Male;0;0;4;United-States;<=50K +24;Private;346909;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;Mexico;<=50K +65;?;105017;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;317360;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +23;Private;189017;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +54;Private;138179;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;299813;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;37;Dominican-Republic;<=50K +45;Private;265083;5th-6th;3;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;35;Mexico;<=50K +50;Private;185846;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;184655;Assoc-acdm;12;Never-married;Other-service;Other-relative;White;Male;0;0;25;United-States;<=50K +24;Private;200295;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;63000;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +58;Self-emp-not-inc;106942;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +47;Private;52795;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;46;United-States;<=50K +37;Private;51264;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;99;France;>50K +37;Self-emp-not-inc;410919;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +22;Private;105592;Assoc-acdm;12;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +29;Self-emp-not-inc;183151;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +45;Private;209912;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +49;Self-emp-not-inc;275845;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +72;Private;89299;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;16;United-States;<=50K +63;Self-emp-not-inc;106648;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;12;United-States;<=50K +26;Private;58426;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +58;Self-emp-not-inc;121912;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +40;Private;170730;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +56;Private;257555;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;51499;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +28;Private;195000;Bachelors;13;Never-married;Sales;Other-relative;White;Female;0;0;45;United-States;<=50K +57;Private;108741;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +37;Private;184964;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +44;Private;156815;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;49325;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;121718;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Germany;<=50K +18;Private;172076;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +57;Self-emp-not-inc;327901;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Local-gov;215990;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +38;Private;210866;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +33;Private;322873;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;Private;265698;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +70;?;26990;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +50;Private;177896;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;189107;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;306830;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Nicaragua;<=50K +72;Federal-gov;39110;11th;7;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;8;Canada;<=50K +33;Private;155475;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;135803;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;25;Philippines;<=50K +48;Private;117849;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +64;Self-emp-not-inc;339321;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;24;United-States;>50K +19;Private;318822;11th;7;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;35;United-States;<=50K +48;Private;174794;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;193920;Masters;14;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;45;?;<=50K +42;Federal-gov;91468;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;106760;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;50;Canada;>50K +34;Private;375680;Assoc-acdm;12;Never-married;Craft-repair;Own-child;Black;Female;0;0;40;United-States;<=50K +55;Self-emp-inc;222615;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;190968;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;76767;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +50;Self-emp-not-inc;203098;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +25;Private;242729;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +52;Private;253784;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +30;Private;206051;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;181553;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +73;Self-emp-inc;80986;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +50;Private;200783;7th-8th;4;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +34;Private;42596;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;464502;Assoc-acdm;12;Never-married;Sales;Not-in-family;Black;Male;0;0;40;?;<=50K +66;Private;205724;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;24;United-States;>50K +22;Private;446140;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;55;United-States;<=50K +69;Local-gov;32287;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;25;United-States;<=50K +23;Private;56774;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;308118;Bachelors;13;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;?;<=50K +35;Private;176279;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +20;Private;103277;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +70;Self-emp-inc;225780;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;>50K +34;Private;149943;HS-grad;9;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Japan;<=50K +38;State-gov;22245;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +33;Private;93056;7th-8th;4;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;270522;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;26;United-States;<=50K +60;Self-emp-inc;123218;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;103642;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +34;Private;157747;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +46;Self-emp-not-inc;154083;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;25;United-States;<=50K +30;State-gov;23037;Some-college;10;Never-married;Other-service;Own-child;Amer-Indian-Eskimo;Male;0;0;84;United-States;<=50K +23;?;226891;HS-grad;9;Never-married;?;Other-relative;Asian-Pac-Islander;Female;0;0;20;South;<=50K +29;Private;50028;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;138251;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;369825;7th-8th;4;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;25;United-States;<=50K +36;Federal-gov;44364;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;36;United-States;<=50K +23;Private;230704;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;22;United-States;<=50K +35;Private;42044;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;30;United-States;<=50K +28;Local-gov;56340;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;State-gov;156015;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;163434;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;85251;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +38;Self-emp-inc;187411;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;396633;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;56;United-States;>50K +38;Private;52596;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +66;?;260111;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +65;Local-gov;143570;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +30;Private;160634;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;>50K +54;Private;29909;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;43;United-States;<=50K +49;Private;94215;12th;8;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Self-emp-not-inc;151990;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;15;United-States;>50K +48;Federal-gov;188081;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +23;Private;218445;5th-6th;3;Never-married;Priv-house-serv;Unmarried;White;Female;0;0;12;Mexico;<=50K +77;Private;235775;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;Cuba;<=50K +19;Private;98605;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +30;Private;188398;HS-grad;9;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +35;Private;202950;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;Iran;>50K +20;Private;218215;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;147002;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Female;0;0;40;Puerto-Rico;<=50K +52;Private;138497;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +24;Private;57711;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;>50K +50;Private;169925;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;15;United-States;<=50K +22;Private;72310;11th;7;Never-married;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +19;Private;170800;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +39;Private;215095;11th;7;Never-married;Prof-specialty;Unmarried;White;Female;0;0;30;Puerto-Rico;<=50K +45;Private;480717;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;38;?;<=50K +61;Local-gov;34632;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +45;Private;140664;Assoc-acdm;12;Divorced;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +36;Local-gov;177858;Bachelors;13;Married-civ-spouse;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;129102;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +52;Local-gov;278522;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +29;Federal-gov;124953;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;42;United-States;>50K +33;Private;63184;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Self-emp-not-inc;165815;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;248584;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +46;Local-gov;226871;Bachelors;13;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;50;United-States;>50K +19;Private;60367;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;13;United-States;<=50K +44;Private;134120;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +40;Private;95639;HS-grad;9;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +20;Private;132053;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;2;United-States;<=50K +24;Private;138768;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +76;Private;203910;HS-grad;9;Widowed;Other-service;Not-in-family;White;Male;0;0;17;United-States;<=50K +20;Private;109952;HS-grad;9;Married-civ-spouse;Tech-support;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;155781;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +31;Private;49398;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;159303;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;248339;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +30;Private;183620;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +42;Private;201495;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;52221;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;176027;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +42;Local-gov;266135;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;>50K +76;?;164835;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +21;Private;363192;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;31360;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;63503;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +44;Private;157614;HS-grad;9;Divorced;Sales;Own-child;White;Male;0;0;38;United-States;<=50K +38;Private;363395;Some-college;10;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;338376;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +29;Private;87523;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;280714;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;119565;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;171482;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;>50K +40;Self-emp-inc;49249;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +17;Private;331552;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +45;Private;174426;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;184105;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;28;United-States;<=50K +29;Private;37933;Bachelors;13;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;376416;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;263612;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;Haiti;<=50K +23;Private;227471;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;24;United-States;<=50K +39;Private;191103;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;35644;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +43;Self-emp-not-inc;227298;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;State-gov;187508;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;184378;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;Puerto-Rico;<=50K +52;Self-emp-not-inc;190333;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;25;United-States;<=50K +48;Private;155372;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;36;United-States;<=50K +37;Private;259882;Assoc-voc;11;Never-married;Sales;Unmarried;Black;Female;0;0;6;United-States;<=50K +36;Private;217077;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;103596;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +36;Local-gov;188236;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +24;Private;353010;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;10;United-States;<=50K +42;Local-gov;70655;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Self-emp-inc;64874;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +40;Federal-gov;219240;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;22;United-States;<=50K +50;Self-emp-inc;104849;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +40;Private;173590;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;412316;HS-grad;9;Never-married;Sales;Other-relative;Black;Male;0;0;40;?;<=50K +57;Self-emp-inc;195835;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +51;Local-gov;170579;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +61;Federal-gov;230545;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;Puerto-Rico;<=50K +71;Private;162297;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;20;United-States;<=50K +47;Private;169549;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +38;Private;117528;Bachelors;13;Never-married;Other-service;Other-relative;White;Female;0;0;45;United-States;<=50K +25;Private;273876;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;<=50K +33;Private;529104;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +40;State-gov;456110;11th;7;Divorced;Transport-moving;Unmarried;White;Female;0;0;52;United-States;<=50K +39;?;180868;11th;7;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;55717;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;166181;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;36;United-States;<=50K +24;Private;52242;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +28;Private;224629;Masters;14;Never-married;Exec-managerial;Not-in-family;Other;Male;0;0;30;Cuba;<=50K +20;Private;197997;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;46144;Some-college;10;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +34;State-gov;180871;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;55;United-States;<=50K +25;Private;212311;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;232874;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;175999;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;177121;Some-college;10;Separated;Other-service;Not-in-family;White;Female;0;0;58;United-States;<=50K +20;?;326624;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +56;Private;129836;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;10;United-States;<=50K +24;Private;225515;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;145664;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +37;Private;151764;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;183523;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +54;Private;257869;Some-college;10;Separated;Other-service;Not-in-family;White;Male;0;0;28;Columbia;<=50K +40;Private;73025;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;30;China;<=50K +18;Private;165532;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +51;Federal-gov;140035;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;325159;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +64;Federal-gov;161926;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;8;United-States;<=50K +33;Private;106938;HS-grad;9;Married-civ-spouse;Tech-support;Wife;Black;Female;0;0;38;United-States;<=50K +31;Private;97453;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;248653;1st-4th;2;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;37;Mexico;<=50K +39;Private;59313;12th;8;Married-spouse-absent;Transport-moving;Not-in-family;Black;Male;0;0;45;?;<=50K +22;Private;141297;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;227325;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +68;Private;123653;5th-6th;3;Separated;Other-service;Not-in-family;White;Male;0;0;12;Italy;<=50K +59;Federal-gov;176317;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;37;United-States;<=50K +25;Private;169124;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;179413;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Private;180137;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;60;United-States;<=50K +17;State-gov;179319;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +19;Private;45766;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Private;214052;5th-6th;3;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;201141;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;37;United-States;<=50K +74;Self-emp-not-inc;43599;HS-grad;9;Widowed;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +28;Private;292536;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +40;Private;82161;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;180656;Some-college;10;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +20;Private;181370;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +80;Private;148623;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +51;Private;84399;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +17;Private;143331;10th;6;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +37;Federal-gov;48779;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +19;?;175495;HS-grad;9;Never-married;?;Own-child;Black;Female;0;0;24;United-States;<=50K +58;Private;83542;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;214619;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;160035;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Federal-gov;39603;Some-college;10;Never-married;Craft-repair;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +36;Private;181589;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;32;Columbia;<=50K +33;Private;261511;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;29522;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +30;Private;36340;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;24;United-States;<=50K +57;?;403625;Some-college;10;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;60;United-States;>50K +23;Private;122346;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;152883;HS-grad;9;Widowed;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +31;State-gov;123037;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;13;United-States;<=50K +41;?;339682;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;40;Mexico;<=50K +36;Private;182074;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +30;Private;248588;12th;8;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;187584;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;Canada;<=50K +36;Private;46706;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;190290;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;Self-emp-not-inc;247294;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;Peru;<=50K +22;Private;117779;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;121602;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;451744;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +35;Private;339772;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +21;Private;185582;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;43;United-States;<=50K +26;Private;260614;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;Local-gov;53220;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Private;213844;HS-grad;9;Married-AF-spouse;Craft-repair;Wife;Black;Female;0;0;42;United-States;>50K +33;Private;213226;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;58582;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;10;United-States;<=50K +52;Private;193116;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +38;Local-gov;201410;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;190525;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;46;United-States;>50K +57;Self-emp-not-inc;138285;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Iran;<=50K +51;Private;111939;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +50;Private;109277;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +32;Private;331539;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;China;>50K +37;Private;126675;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +69;Self-emp-not-inc;349022;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;33;United-States;<=50K +33;?;98145;Some-college;10;Divorced;?;Unmarried;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +37;Private;234901;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Germany;>50K +47;Self-emp-not-inc;265097;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +63;Private;237379;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;44793;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;65;United-States;<=50K +17;Private;270942;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;35;Mexico;<=50K +56;Private;193622;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +90;Local-gov;187749;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;20;Philippines;<=50K +27;Private;160178;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +38;Private;680390;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +33;Private;96245;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;34803;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;170091;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +42;Private;231813;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;23789;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;State-gov;438711;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;<=50K +49;Private;28791;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;162814;HS-grad;9;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;45;United-States;<=50K +38;Private;58108;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Self-emp-inc;102226;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Federal-gov;209131;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +46;Self-emp-not-inc;157117;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;172865;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;29798;12th;8;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;20;United-States;<=50K +71;?;229424;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Local-gov;238959;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;32;United-States;>50K +27;Private;189462;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;46;United-States;<=50K +52;Private;139347;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;40;United-States;<=50K +37;Self-emp-inc;111128;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +28;Private;81540;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;257562;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +31;Private;59496;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;29974;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;102597;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +69;Private;41419;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +50;Private;118565;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +54;State-gov;312897;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;46;England;>50K +17;Private;166290;9th;5;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +32;Self-emp-not-inc;116834;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;5;?;<=50K +23;Private;203076;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +66;Private;201197;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +61;Private;273803;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;156797;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;283896;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;156926;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +21;?;163911;Some-college;10;Never-married;?;Own-child;White;Female;0;0;3;United-States;<=50K +56;Self-emp-inc;165881;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +25;Private;86872;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;167523;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;154950;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +40;Federal-gov;171231;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +62;Private;244933;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +54;Private;256908;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;25;United-States;>50K +34;Self-emp-not-inc;33442;Assoc-voc;11;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +18;Private;126142;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +28;?;268222;11th;7;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +32;Private;167106;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;Hong;<=50K +22;Local-gov;50065;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +34;State-gov;252529;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;<=50K +53;?;199665;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +47;Private;343579;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +19;Private;190817;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;210731;7th-8th;4;Divorced;Sales;Other-relative;White;Male;0;0;20;Mexico;<=50K +42;Private;123816;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +42;Private;115085;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +57;Self-emp-not-inc;34297;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;180985;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +62;Local-gov;33365;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;40;Canada;<=50K +20;Private;197752;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;16;United-States;<=50K +47;Private;180551;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;77975;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;159297;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;40;?;>50K +48;Private;94342;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +39;Self-emp-inc;34180;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +46;Local-gov;367251;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +53;Private;303462;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;30;United-States;<=50K +47;Federal-gov;220269;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;45093;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;Canada;<=50K +34;Private;101709;HS-grad;9;Separated;Transport-moving;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +41;Private;219591;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;76625;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;342599;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +42;Self-emp-inc;125846;1st-4th;2;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;?;<=50K +54;Local-gov;238257;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +39;Self-emp-inc;206253;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +37;Private;172571;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;95165;Doctorate;16;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;267843;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;35;United-States;<=50K +21;?;207782;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +68;?;103161;HS-grad;9;Widowed;?;Not-in-family;White;Male;0;0;32;United-States;<=50K +20;Private;132320;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Self-emp-not-inc;201138;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +48;Private;239058;12th;8;Widowed;Handlers-cleaners;Unmarried;White;Female;0;0;50;United-States;<=50K +21;Private;176262;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;18;United-States;<=50K +22;Private;264738;HS-grad;9;Never-married;Exec-managerial;Other-relative;White;Female;0;0;42;Germany;<=50K +34;Private;182218;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;318982;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +46;Private;216666;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Guatemala;<=50K +65;Private;150095;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;Private;192978;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;68021;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +34;Self-emp-not-inc;28568;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;>50K +20;Private;115057;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;139568;11th;7;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Self-emp-inc;138497;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +40;State-gov;182460;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;38;China;>50K +22;Private;253310;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;7;United-States;<=50K +29;Self-emp-inc;130856;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +31;Self-emp-not-inc;389765;7th-8th;4;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +38;Private;146178;HS-grad;9;Never-married;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +22;Private;231053;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;70;United-States;>50K +21;?;145964;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;483450;9th;5;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Mexico;<=50K +43;Self-emp-inc;198316;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Private;160614;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +17;Self-emp-inc;325171;10th;6;Never-married;Other-service;Own-child;Black;Male;0;0;35;United-States;<=50K +45;Private;186473;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Local-gov;286967;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +51;Self-emp-not-inc;111939;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;>50K +65;Federal-gov;325089;10th;6;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;143582;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;45;United-States;<=50K +40;Private;308027;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +58;Private;105060;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;37;United-States;<=50K +53;Federal-gov;39643;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;58;United-States;<=50K +56;Local-gov;267763;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;124293;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;36271;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;143459;9th;5;Separated;Handlers-cleaners;Own-child;White;Male;0;0;38;United-States;<=50K +36;Private;186376;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +59;Self-emp-inc;52822;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;104509;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;192302;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;25;United-States;<=50K +25;Private;214413;Masters;14;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;108574;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;15;United-States;<=50K +41;Private;223934;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +45;Private;200559;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +43;Private;137722;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;261677;9th;5;Never-married;Handlers-cleaners;Unmarried;Black;Male;0;0;40;United-States;<=50K +33;Private;136331;HS-grad;9;Married-spouse-absent;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +34;Private;329993;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;91819;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +48;Private;315423;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;103277;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +47;Private;236805;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;60;United-States;<=50K +27;Private;74883;Bachelors;13;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +18;Private;115443;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;25;United-States;<=50K +43;Private;150528;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Private;43701;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +37;Federal-gov;419053;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;183594;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;390348;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;247895;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +75;Private;191446;1st-4th;2;Married-civ-spouse;Other-service;Other-relative;Black;Female;0;0;16;United-States;<=50K +43;Self-emp-not-inc;33521;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;>50K +64;Private;46087;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +36;Private;356824;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;158746;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;153323;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;20;United-States;<=50K +73;Self-emp-not-inc;130391;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;36;United-States;<=50K +46;Private;173613;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;182757;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;50397;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;20;United-States;<=50K +43;Federal-gov;101709;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +21;Private;202570;12th;8;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;48;?;<=50K +40;Private;145649;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;25;United-States;<=50K +36;Private;136343;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +64;Self-emp-inc;142166;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +19;?;242001;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +46;Local-gov;124071;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;65;United-States;>50K +41;Local-gov;190368;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;70;United-States;<=50K +29;?;19793;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;8;United-States;<=50K +28;Private;67661;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +23;Private;62278;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +30;Federal-gov;295010;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Female;0;0;60;United-States;>50K +44;Private;203897;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;40;Cuba;<=50K +27;Private;265314;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +25;Private;159603;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;34;United-States;<=50K +29;Private;134331;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;123011;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Poland;>50K +27;Private;274964;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;65;United-States;<=50K +34;Private;66309;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +38;Private;73471;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +24;?;26671;HS-grad;9;Never-married;?;Other-relative;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +56;Private;357118;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +35;Self-emp-inc;184655;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;62;United-States;<=50K +23;?;55492;Assoc-voc;11;Never-married;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;30;United-States;<=50K +23;Private;175266;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;188008;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +48;Self-emp-inc;56975;HS-grad;9;Divorced;Sales;Unmarried;Asian-Pac-Islander;Female;0;0;84;?;<=50K +27;Private;150025;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +22;?;189203;Assoc-acdm;12;Never-married;?;Other-relative;White;Male;0;0;15;United-States;<=50K +49;Self-emp-inc;330874;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +23;Private;136824;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;201179;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;324654;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Asian-Pac-Islander;Male;0;0;40;China;<=50K +25;Federal-gov;366207;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;103860;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;106700;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;27;United-States;<=50K +54;Local-gov;163557;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +39;Self-emp-inc;286261;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;123083;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +75;Self-emp-inc;125197;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;26;United-States;<=50K +28;Self-emp-not-inc;278073;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Black;Male;0;0;30;United-States;<=50K +50;Private;133963;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +62;Self-emp-not-inc;71467;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +40;Private;76487;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +58;Local-gov;215245;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;37;United-States;<=50K +24;Federal-gov;127185;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +21;Private;179720;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;30;United-States;<=50K +48;Private;173938;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;344275;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +23;Private;150463;HS-grad;9;Never-married;Priv-house-serv;Unmarried;Other;Female;0;0;40;Guatemala;<=50K +42;Local-gov;201723;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Self-emp-inc;77392;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +21;?;171156;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +56;Self-emp-not-inc;357118;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +48;Federal-gov;167749;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +37;Self-emp-not-inc;352882;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;70;South;>50K +25;Private;51201;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +40;Private;365986;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;>50K +34;Private;400416;11th;7;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;45;United-States;<=50K +52;Private;31533;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Local-gov;192337;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;301654;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;145162;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;?;>50K +20;Private;88126;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;9;England;<=50K +68;Private;165017;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Italy;>50K +35;Private;238342;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;857532;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +64;Private;134378;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +17;Private;260797;10th;6;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;23;United-States;<=50K +25;Private;138765;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +74;?;256674;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +31;Private;247444;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Columbia;<=50K +67;Private;180539;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;10;United-States;<=50K +29;Private;107160;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;262024;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +21;Private;131230;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;37;United-States;<=50K +67;Private;274451;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;16;United-States;<=50K +41;State-gov;365986;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +27;Private;204515;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;36;United-States;<=50K +51;Private;99316;12th;8;Divorced;Transport-moving;Unmarried;White;Male;0;0;50;United-States;<=50K +21;?;206681;11th;7;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +28;Private;268726;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;<=50K +21;Private;275395;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;383322;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +29;Private;126822;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +39;Self-emp-inc;168355;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +21;Private;162667;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;Columbia;<=50K +43;Private;373403;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;249362;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;111567;9th;5;Never-married;Sales;Not-in-family;White;Male;0;0;43;United-States;>50K +18;?;216508;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +27;Private;145784;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Amer-Indian-Eskimo;Female;0;0;45;United-States;<=50K +34;State-gov;209317;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;259505;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;345360;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;England;<=50K +40;Self-emp-inc;33126;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;206354;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +25;Private;1484705;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;25;United-States;<=50K +21;Private;26410;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Self-emp-not-inc;220901;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +49;Self-emp-inc;44671;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;38620;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +36;Private;89040;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;47;United-States;<=50K +32;Private;370160;Some-college;10;Separated;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;208946;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;32;United-States;<=50K +21;Private;131230;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;10;United-States;<=50K +25;Private;60358;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;350853;5th-6th;3;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;?;<=50K +24;Private;209782;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;351952;Some-college;10;Never-married;Prof-specialty;Unmarried;White;Female;0;0;20;United-States;<=50K +26;Private;142081;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Mexico;<=50K +22;Private;164775;9th;5;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;Guatemala;<=50K +41;Local-gov;47858;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +18;Private;404085;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +24;Private;218678;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;321760;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;17;United-States;<=50K +45;Local-gov;185399;Masters;14;Divorced;Prof-specialty;Own-child;White;Female;0;0;55;United-States;<=50K +38;Local-gov;409200;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +38;Private;40077;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +34;Self-emp-not-inc;31740;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Local-gov;233722;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;192039;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +17;Private;222618;11th;7;Never-married;Sales;Own-child;Black;Female;0;0;30;United-States;<=50K +31;Local-gov;194141;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;<=50K +47;State-gov;80282;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +27;Private;166350;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +61;Federal-gov;60641;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;<=50K +33;Private;124827;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +67;Private;105438;HS-grad;9;Separated;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +38;Private;85244;Bachelors;13;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;120535;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Local-gov;269604;5th-6th;3;Never-married;Other-service;Unmarried;Other;Female;0;0;40;El-Salvador;<=50K +27;Private;247711;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +45;Private;380922;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +24;Private;281221;Bachelors;13;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;40;Taiwan;<=50K +23;Private;269687;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;181758;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +61;Federal-gov;136787;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +22;Private;107882;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +34;Private;172579;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Federal-gov;38905;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +36;Private;168826;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;424034;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +60;Private;117509;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;?;196971;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;43;United-States;<=50K +64;Private;69525;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;20;United-States;<=50K +22;Private;374116;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +27;Private;283913;5th-6th;3;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;65;England;<=50K +36;State-gov;147258;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +27;Private;139903;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;30;United-States;<=50K +52;Private;112959;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;264148;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;256211;Some-college;10;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;24;Vietnam;<=50K +29;Self-emp-not-inc;142519;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;281852;HS-grad;9;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;80;United-States;<=50K +38;Private;380543;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +50;Self-emp-not-inc;204402;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;>50K +50;Private;192203;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;199005;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +17;Self-emp-inc;61838;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;210095;11th;7;Married-spouse-absent;Handlers-cleaners;Not-in-family;White;Female;0;0;40;Mexico;<=50K +19;Private;187352;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;32451;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;79443;9th;5;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;Mexico;<=50K +27;Private;212622;Masters;14;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;32650;Assoc-voc;11;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +44;Private;125461;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +19;Private;219867;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;35;United-States;<=50K +32;Local-gov;206609;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;101299;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Private;29437;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +65;Private;87164;11th;7;Widowed;Sales;Other-relative;White;Female;0;0;20;United-States;<=50K +57;Self-emp-inc;146103;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +48;Private;169324;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;32;Haiti;<=50K +27;Private;29523;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +21;?;247075;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;25;United-States;<=50K +20;?;200967;Some-college;10;Never-married;?;Own-child;White;Female;0;0;12;United-States;<=50K +51;?;175985;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;267661;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +65;Private;243858;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +20;?;43587;HS-grad;9;Married-spouse-absent;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +47;Federal-gov;31339;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;73145;9th;5;Never-married;Craft-repair;Own-child;White;Female;0;0;16;United-States;<=50K +38;Local-gov;218184;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +38;Local-gov;223237;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Self-emp-not-inc;93319;HS-grad;9;Never-married;Sales;Other-relative;White;Female;0;0;4;United-States;<=50K +24;?;212300;HS-grad;9;Separated;?;Not-in-family;White;Female;0;0;38;United-States;<=50K +52;Private;187356;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;41;United-States;<=50K +46;Self-emp-not-inc;220832;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;58;United-States;>50K +22;Private;211361;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +56;Private;134195;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Self-emp-not-inc;218249;11th;7;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;30;United-States;<=50K +59;Private;70720;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;55;United-States;>50K +31;Private;237317;9th;5;Never-married;Craft-repair;Not-in-family;Other;Male;0;0;45;United-States;<=50K +22;Private;359759;Some-college;10;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;20;Philippines;<=50K +48;Self-emp-not-inc;181758;Doctorate;16;Never-married;Prof-specialty;Unmarried;White;Female;0;0;60;United-States;>50K +63;Self-emp-inc;267101;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +53;Private;55139;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;10;United-States;<=50K +38;Private;220237;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;>50K +39;Private;101073;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;24;United-States;<=50K +59;Private;69884;Prof-school;15;Married-spouse-absent;Prof-specialty;Unmarried;White;Male;0;0;50;United-States;<=50K +45;Private;201127;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;164733;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +60;State-gov;129447;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +38;Private;32837;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;56;United-States;<=50K +31;Private;200117;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;219183;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +66;?;188842;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +26;Private;272669;Bachelors;13;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;20;South;<=50K +68;?;191288;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +32;Private;176185;Some-college;10;Divorced;Exec-managerial;Other-relative;White;Male;0;0;60;United-States;<=50K +25;Local-gov;197728;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;20;United-States;<=50K +43;Local-gov;144778;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;<=50K +26;?;133373;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;44;United-States;<=50K +66;Private;86010;10th;6;Widowed;Transport-moving;Not-in-family;White;Female;0;0;11;United-States;<=50K +31;Private;228873;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;187415;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;50;?;<=50K +56;Private;98361;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +22;Private;129172;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +46;Local-gov;316205;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +33;Private;226629;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +26;State-gov;180886;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +42;Self-emp-not-inc;69333;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;213620;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +43;Private;197397;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;Other;Female;0;0;6;Puerto-Rico;<=50K +19;Private;223648;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;?;<=50K +27;Private;179915;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;99;United-States;<=50K +42;Private;112956;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;187999;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +44;Private;77313;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;231948;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;64;United-States;>50K +37;Private;37109;HS-grad;9;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;60;Philippines;<=50K +29;Private;79387;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +53;?;133963;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;177937;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;45;Poland;<=50K +80;Private;173488;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +61;Private;183355;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;289944;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +23;Private;62278;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +48;Federal-gov;110457;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;Private;295763;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;50;United-States;<=50K +71;State-gov;100063;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +49;Private;194962;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;6;United-States;<=50K +39;Federal-gov;227597;HS-grad;9;Never-married;Armed-Forces;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;117606;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +67;Federal-gov;44774;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;177648;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +38;?;203482;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;45;United-States;<=50K +50;Private;153931;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;84774;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;157127;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +26;Private;170786;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;281030;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;167405;HS-grad;9;Married-spouse-absent;Farming-fishing;Own-child;White;Female;0;0;40;Mexico;<=50K +43;Private;388849;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +31;State-gov;176998;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;>50K +57;Private;200316;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;160300;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +22;Private;236684;Assoc-voc;11;Never-married;Other-service;Own-child;Black;Female;0;0;36;United-States;<=50K +20;Local-gov;247794;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +39;Private;279490;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;Mexico;<=50K +27;State-gov;280618;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Local-gov;248406;HS-grad;9;Separated;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +31;Local-gov;226494;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +41;Private;220460;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +25;Private;108317;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;State-gov;147256;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;>50K +22;Private;110371;HS-grad;9;Married-civ-spouse;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +62;Private;114060;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;91;United-States;<=50K +29;Federal-gov;31161;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Other;Female;0;0;40;United-States;<=50K +44;Private;105862;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;70;United-States;>50K +32;Private;402089;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;2;United-States;<=50K +19;?;425447;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;Private;137300;Assoc-voc;11;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +65;State-gov;326691;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +24;Private;275093;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;36;United-States;<=50K +37;Self-emp-not-inc;112497;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +43;Local-gov;174491;HS-grad;9;Divorced;Tech-support;Not-in-family;Black;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;114835;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;60;United-States;>50K +28;Private;137898;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +32;Private;134886;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +38;Private;193815;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +33;Private;237833;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;101593;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +27;Private;164924;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;174201;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +47;Local-gov;36169;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +55;Private;144071;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +30;Self-emp-not-inc;180859;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;8;United-States;<=50K +54;Private;221915;Some-college;10;Widowed;Craft-repair;Unmarried;White;Female;0;0;50;United-States;<=50K +40;Private;26892;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +21;Private;351084;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;97306;Bachelors;13;Divorced;Craft-repair;Unmarried;White;Female;0;0;25;United-States;<=50K +30;Private;185027;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Private;182539;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +22;Private;215395;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;37;United-States;<=50K +37;Private;186434;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;>50K +41;?;217921;9th;5;Married-civ-spouse;?;Wife;Asian-Pac-Islander;Female;0;0;40;Hong;<=50K +52;Local-gov;346668;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +57;Self-emp-inc;412952;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;167009;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;48;United-States;<=50K +58;Private;316000;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Self-emp-not-inc;216256;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;341835;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +30;Private;169841;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +26;Self-emp-not-inc;200681;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Outlying-US(Guam-USVI-etc);<=50K +46;Self-emp-not-inc;456956;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +26;Federal-gov;276075;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +50;Federal-gov;96657;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +22;Private;374313;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +36;Private;110998;Masters;14;Widowed;Tech-support;Unmarried;Asian-Pac-Islander;Female;0;0;40;India;<=50K +30;Private;53285;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +58;Private;104613;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +17;?;303317;11th;7;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;318822;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;375078;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Mexico;<=50K +20;?;232799;HS-grad;9;Never-married;?;Own-child;Black;Female;0;0;25;United-States;<=50K +30;Private;210851;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;213745;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +51;Private;204447;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +26;Private;318934;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;237386;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;42;United-States;<=50K +44;Private;182629;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;0;24;Iran;<=50K +43;Private;144778;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +35;Private;117166;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;171550;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;165302;Some-college;10;Divorced;Adm-clerical;Unmarried;Other;Female;0;0;40;United-States;<=50K +54;Private;284952;10th;6;Separated;Sales;Unmarried;White;Female;0;0;43;Italy;<=50K +62;Private;96099;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;198759;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;227886;HS-grad;9;Never-married;Exec-managerial;Own-child;Black;Female;0;0;35;Jamaica;<=50K +32;Private;391874;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Self-emp-not-inc;184370;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +84;Local-gov;135839;Assoc-voc;11;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;14;United-States;<=50K +46;Private;194698;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;60;United-States;<=50K +29;Private;67218;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;205152;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +23;Private;434467;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;42;United-States;<=50K +63;?;110150;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;55;United-States;>50K +42;State-gov;404573;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +17;Private;99462;11th;7;Never-married;Other-service;Own-child;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +60;Private;170310;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;199883;12th;8;Divorced;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;70034;7th-8th;4;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;Portugal;<=50K +31;Private;393357;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;48;United-States;<=50K +61;Private;223133;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;State-gov;345969;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +40;State-gov;195520;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;49;United-States;<=50K +39;Private;257942;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Local-gov;269300;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;27;United-States;<=50K +47;Private;137354;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +45;Federal-gov;232997;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;>50K +30;Private;77266;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +30;Self-emp-not-inc;164190;Prof-school;15;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +51;Local-gov;26832;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;Private;188096;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;72;United-States;>50K +48;Self-emp-inc;369522;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;25;United-States;>50K +20;Private;110998;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;30;United-States;<=50K +31;?;163890;Some-college;10;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;358631;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;25;United-States;<=50K +50;Private;185354;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +33;Private;336061;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +25;?;47011;Bachelors;13;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +30;Private;59496;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;32950;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;199555;Assoc-voc;11;Never-married;Sales;Unmarried;White;Male;0;0;5;United-States;<=50K +28;Private;91299;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;45;United-States;<=50K +38;Private;242559;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +52;Federal-gov;22428;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +32;Private;239150;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Private;170563;Assoc-voc;11;Separated;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +36;Private;173542;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;286026;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +49;Local-gov;163229;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;<=50K +40;Local-gov;165726;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;70055;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;184655;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;139906;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;81;United-States;<=50K +32;Local-gov;198211;Assoc-voc;11;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;146540;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +53;Local-gov;132304;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;190916;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Never-worked;237272;10th;6;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;755858;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;>50K +52;Private;127315;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +42;State-gov;304302;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +34;Private;184942;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;267989;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;188377;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;340787;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;169071;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;28;United-States;<=50K +36;Self-emp-not-inc;151094;Assoc-voc;11;Separated;Exec-managerial;Not-in-family;White;Male;0;0;48;United-States;<=50K +27;Private;122922;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;151141;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +30;Private;136651;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +37;Private;177285;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;48;United-States;>50K +31;Local-gov;128016;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;200318;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +32;Private;250354;10th;6;Never-married;Craft-repair;Other-relative;White;Male;0;0;45;United-States;<=50K +58;Private;191069;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;Private;27856;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;8;United-States;<=50K +44;Private;523484;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +42;Private;196029;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;>50K +45;Private;200471;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +20;Private;353195;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +35;Private;222868;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;221791;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;United-States;<=50K +56;Private;197114;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;28;United-States;<=50K +48;Private;160220;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +58;Self-emp-not-inc;274917;Masters;14;Widowed;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +32;Private;348460;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;112683;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +48;Private;345831;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;105370;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;70;United-States;<=50K +48;Private;345006;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Mexico;<=50K +40;Local-gov;108765;Assoc-voc;11;Never-married;Exec-managerial;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +50;Private;138022;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;175029;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +19;Private;189574;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +36;Self-emp-not-inc;186035;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +39;Private;165235;Bachelors;13;Separated;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;>50K +22;Private;105043;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;248584;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;200153;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +50;Private;398625;11th;7;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;114043;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;169544;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;343849;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +24;Private;291578;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;136162;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;302612;Masters;14;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +65;Local-gov;240166;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +44;Private;119281;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +73;Self-emp-not-inc;300404;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;6;United-States;>50K +21;Private;82847;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Federal-gov;287008;Masters;14;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;35;United-States;>50K +21;Private;654141;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;32;United-States;<=50K +30;Private;252646;Some-college;10;Separated;Transport-moving;Not-in-family;White;Male;0;0;20;United-States;<=50K +54;Private;171924;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;48;United-States;<=50K +19;Private;219742;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +55;State-gov;153788;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;37;United-States;<=50K +20;Private;60639;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;28;United-States;<=50K +53;Private;96062;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Greece;<=50K +51;Private;165614;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +33;Private;159888;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;110586;Some-college;10;Widowed;Priv-house-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Self-emp-not-inc;143062;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +17;Self-emp-inc;413557;9th;5;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;137658;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +36;Private;398931;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;311764;10th;6;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;35;United-States;<=50K +58;Private;98725;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +38;Private;140854;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +26;Federal-gov;352768;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +45;?;27184;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;38;United-States;<=50K +72;?;237229;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +27;Private;210313;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Guatemala;<=50K +38;Private;194538;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +28;Private;211032;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +38;Self-emp-inc;107909;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +29;Private;136077;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +28;Private;214689;Bachelors;13;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;25;United-States;<=50K +70;?;147558;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;7;United-States;<=50K +40;Self-emp-not-inc;93793;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +26;Private;247025;Assoc-voc;11;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;284403;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;Black;Male;0;0;60;United-States;<=50K +29;Private;221977;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +25;Federal-gov;339956;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;161097;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +60;Private;223696;1st-4th;2;Divorced;Craft-repair;Not-in-family;Other;Male;0;0;38;Dominican-Republic;<=50K +31;Private;234500;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +51;Local-gov;97005;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;242615;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +36;Private;174938;Bachelors;13;Divorced;Tech-support;Unmarried;White;Male;0;0;20;United-States;<=50K +35;Private;160120;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +48;Private;193775;Bachelors;13;Divorced;Adm-clerical;Own-child;White;Male;0;0;38;United-States;>50K +78;Self-emp-not-inc;59583;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +72;Private;157913;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;17;United-States;<=50K +24;Private;308205;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +58;?;158506;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;16;United-States;<=50K +48;Private;330470;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;30;United-States;<=50K +28;Private;184078;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;123384;Masters;14;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;330132;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +47;Private;274720;5th-6th;3;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;Jamaica;<=50K +50;Private;129673;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +35;Federal-gov;205584;5th-6th;3;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +17;Private;327127;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;225892;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +37;Private;224886;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;42;United-States;<=50K +35;Local-gov;27763;HS-grad;9;Married-civ-spouse;Other-service;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +56;Private;73684;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;<=50K +23;Private;107452;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;23871;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +79;Self-emp-inc;309272;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;469864;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +55;Private;286230;11th;7;Divorced;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +59;State-gov;186308;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;113062;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;86150;11th;7;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;19;Philippines;<=50K +41;Private;262038;5th-6th;3;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;0;0;35;Mexico;<=50K +32;Private;279231;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Italy;<=50K +45;Private;183786;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +61;Private;339358;5th-6th;3;Married-civ-spouse;Farming-fishing;Other-relative;White;Female;0;0;45;Mexico;<=50K +34;Private;287737;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;99203;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;113481;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +65;Private;204042;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;20;United-States;<=50K +24;Private;43387;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;England;>50K +37;Private;99233;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;313729;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;99679;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +18;Private;169745;7th-8th;4;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;19914;Some-college;10;Widowed;Exec-managerial;Unmarried;Amer-Indian-Eskimo;Female;0;0;15;United-States;<=50K +31;Private;113543;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +19;Private;224241;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +40;Self-emp-inc;137367;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;China;<=50K +32;Private;263908;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;280798;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Local-gov;203849;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;62546;Doctorate;16;Separated;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +40;Private;197344;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +36;Private;93225;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +33;Private;187560;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;36;United-States;<=50K +23;State-gov;61743;5th-6th;3;Never-married;Transport-moving;Not-in-family;White;Male;0;0;35;United-States;<=50K +21;Private;186648;10th;6;Separated;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;173321;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;32;United-States;<=50K +53;State-gov;246820;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +20;?;424034;Some-college;10;Never-married;?;Own-child;White;Male;0;0;15;United-States;<=50K +53;Self-emp-not-inc;291755;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;72;United-States;<=50K +58;Private;104945;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;60;United-States;<=50K +51;Private;85423;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +31;Private;214235;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;65;United-States;<=50K +35;Self-emp-not-inc;278632;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;?;27415;11th;7;Never-married;?;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +31;Local-gov;143392;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +21;Private;277408;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +39;Self-emp-not-inc;336793;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +51;Private;74660;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;395026;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +32;Private;171215;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;48;United-States;<=50K +56;Private;121362;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +35;Private;409200;Assoc-acdm;12;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;Private;268965;12th;8;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +61;Private;136262;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;141323;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +52;Local-gov;108083;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +19;Private;82210;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;State-gov;400943;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +35;Private;308489;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;50;United-States;<=50K +35;Private;187053;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Female;0;0;60;United-States;>50K +38;Private;75826;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;413345;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +22;Private;356567;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Male;0;0;60;United-States;<=50K +20;Private;223811;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;159313;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;250170;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +59;Private;135617;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;187346;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;108103;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;255476;5th-6th;3;Never-married;Other-service;Other-relative;White;Male;0;0;40;Mexico;<=50K +24;Private;68577;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;155961;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;35;Jamaica;<=50K +22;State-gov;264102;Some-college;10;Never-married;Other-service;Other-relative;Black;Male;0;0;39;Haiti;<=50K +37;Private;167777;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;52;United-States;<=50K +28;Private;199998;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +55;Private;199856;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +29;?;189765;5th-6th;3;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +32;Private;193042;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +66;?;222810;Some-college;10;Divorced;?;Other-relative;White;Female;0;0;35;United-States;<=50K +47;Local-gov;162595;Some-college;10;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;45;United-States;<=50K +23;Private;208826;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Local-gov;120190;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +40;Self-emp-not-inc;27242;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;<=50K +28;Private;309196;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;240698;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +36;Private;411797;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;35;United-States;>50K +25;Private;178843;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +42;Private;136177;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +35;Private;243409;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Germany;<=50K +34;Private;164748;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;State-gov;24185;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +30;Private;167476;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;106900;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +52;Private;53497;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;335704;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +36;Private;211022;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Private;163003;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Female;0;0;52;Taiwan;<=50K +39;Private;67433;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;458549;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;96;Mexico;<=50K +26;Private;190469;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;195411;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +20;Private;216889;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +70;?;336007;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +26;Private;167350;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;50;United-States;<=50K +24;Private;241857;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;35;United-States;<=50K +48;Private;125892;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +62;Private;272209;HS-grad;9;Divorced;Priv-house-serv;Unmarried;Black;Female;0;0;99;United-States;<=50K +48;Private;175221;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;180195;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +25;Private;38090;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;44;United-States;<=50K +58;Private;310085;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +40;Federal-gov;118686;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +29;?;112963;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;120131;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;?;<=50K +19;Private;43937;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;20;United-States;<=50K +37;Private;210438;11th;7;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +23;Private;176724;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +31;Self-emp-not-inc;113364;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +64;Self-emp-not-inc;73986;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +28;Local-gov;197932;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +32;Private;193285;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +49;Local-gov;223342;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;44;United-States;<=50K +35;Private;49749;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;>50K +19;?;211553;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +45;Private;201865;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +46;Self-emp-not-inc;275625;Bachelors;13;Divorced;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;60;South;>50K +19;Private;206599;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +29;Private;89813;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Scotland;<=50K +25;State-gov;156848;HS-grad;9;Married-civ-spouse;Protective-serv;Own-child;White;Male;0;0;35;United-States;<=50K +37;Private;162494;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;205407;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +28;Private;375313;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +32;Private;127895;Some-college;10;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;35;United-States;<=50K +34;Private;248754;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;188096;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;36;United-States;<=50K +20;Private;216811;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +27;Self-emp-inc;113870;Masters;14;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +36;Federal-gov;343052;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +35;Private;280966;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;42044;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +32;Private;309513;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;163604;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +52;Private;224198;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +50;Private;338283;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;242375;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +25;Private;81286;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +21;Private;243368;Preschool;1;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;Mexico;<=50K +31;Private;217803;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;32;United-States;<=50K +31;Self-emp-not-inc;323020;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;<=50K +41;Private;34278;Assoc-voc;11;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;184579;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;<=50K +20;?;210781;Some-college;10;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +20;Private;142673;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +29;Private;131714;10th;6;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;25;United-States;<=50K +51;Local-gov;74784;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Local-gov;181372;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;33;United-States;>50K +23;?;62507;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;12;United-States;<=50K +48;Private;155664;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;>50K +62;Private;113440;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +22;Private;147227;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;184678;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;32;United-States;<=50K +31;Private;98639;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;174201;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;123780;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;38;United-States;<=50K +20;Private;374116;HS-grad;9;Never-married;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +37;Local-gov;212005;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +65;Private;123965;Bachelors;13;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;113635;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;Ireland;<=50K +62;Private;664366;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +53;Private;218311;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +38;Private;278557;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +49;Private;314773;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;194861;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;400616;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;208117;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Male;0;0;40;United-States;<=50K +36;Private;184498;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;117674;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +19;Private;162621;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;14;United-States;<=50K +23;Private;368739;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +63;Self-emp-not-inc;196994;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;<=50K +63;Self-emp-not-inc;420629;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;<=50K +76;Local-gov;169133;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +45;Self-emp-inc;120131;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +44;Self-emp-inc;456236;Some-college;10;Divorced;Sales;Own-child;White;Male;0;0;45;United-States;>50K +51;Private;107123;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +43;Local-gov;36924;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;Private;167065;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;53642;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;154668;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +44;Federal-gov;102238;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +27;Private;152951;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;257042;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +60;Private;74243;Assoc-voc;11;Widowed;Craft-repair;Not-in-family;White;Female;0;0;30;United-States;<=50K +33;Private;117186;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;178322;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;State-gov;286911;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +57;Self-emp-not-inc;177271;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +30;Private;149427;9th;5;Never-married;Craft-repair;Own-child;White;Male;0;0;45;United-States;<=50K +45;Private;101656;10th;6;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +25;Private;241025;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;18;United-States;<=50K +51;Self-emp-inc;338836;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Private;210534;5th-6th;3;Separated;Adm-clerical;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +28;Private;95725;Assoc-voc;11;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +47;?;178013;10th;6;Married-civ-spouse;?;Wife;White;Female;0;0;20;Cuba;<=50K +53;Federal-gov;167410;Bachelors;13;Divorced;Tech-support;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +25;Federal-gov;406955;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +47;Private;341762;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;239303;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;?;<=50K +30;Private;38848;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;54744;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;332194;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;154950;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +33;Self-emp-not-inc;196342;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +31;Private;201292;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;339767;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;20;England;>50K +26;Private;250066;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;318886;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +50;Local-gov;124076;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +30;State-gov;242122;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +17;Private;34019;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +35;Local-gov;230754;Masters;14;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Private;213842;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;62165;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;?;<=50K +34;Private;134737;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;>50K +32;Private;515629;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;119199;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;90222;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;28443;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;159442;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;Ireland;<=50K +54;Private;315804;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;135840;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +38;Private;81232;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +43;Private;118001;7th-8th;4;Separated;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +25;Private;207875;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +39;Private;164898;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Local-gov;170066;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;25;United-States;>50K +47;Private;111994;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;34;United-States;<=50K +45;Private;166636;HS-grad;9;Divorced;Other-service;Other-relative;Black;Female;0;0;35;United-States;<=50K +24;State-gov;61737;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;241885;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;234190;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +57;Private;230899;5th-6th;3;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;222442;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;51;Cuba;<=50K +27;Private;157612;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +28;Private;199903;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +74;?;292627;1st-4th;2;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;156687;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;42;Japan;<=50K +27;Private;369522;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;45;United-States;<=50K +61;Private;226297;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;356017;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;99;United-States;<=50K +28;Private;189257;9th;5;Never-married;Handlers-cleaners;Own-child;Black;Female;0;0;24;United-States;<=50K +20;Private;157541;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;69251;Assoc-voc;11;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +38;State-gov;272944;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;113667;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;25;United-States;<=50K +40;Private;222011;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;>50K +43;Private;191196;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +38;Private;169104;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +19;Private;146679;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Male;0;0;30;United-States;<=50K +56;Private;226985;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;153066;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +30;?;159303;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;4;United-States;<=50K +18;State-gov;109445;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +68;Private;99491;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +35;Private;172571;Assoc-voc;11;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +42;Private;143582;7th-8th;4;Married-civ-spouse;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;48;?;<=50K +32;Private;207113;10th;6;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Federal-gov;192712;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +30;Private;154297;10th;6;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;110402;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;207213;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;606111;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;Germany;>50K +26;Private;34112;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;119156;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +19;Private;249787;HS-grad;9;Never-married;Other-service;Other-relative;Black;Male;0;0;40;United-States;<=50K +20;Private;153516;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +25;State-gov;260754;Bachelors;13;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;155621;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;50;Columbia;<=50K +36;Private;33983;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;42;United-States;>50K +23;Private;306601;Bachelors;13;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;Mexico;<=50K +24;Private;270075;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;50;United-States;<=50K +23;Private;109430;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;187115;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +25;Self-emp-not-inc;463667;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;8;United-States;<=50K +24;Private;52262;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;144064;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;62;United-States;<=50K +26;Private;147821;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;45;?;<=50K +62;?;232719;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;268620;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;33;United-States;<=50K +45;Private;81132;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +34;Private;242984;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;48;United-States;<=50K +65;Self-emp-inc;172684;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;Mexico;>50K +42;Private;103932;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +27;State-gov;431637;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;<=50K +40;Private;188942;Some-college;10;Married-civ-spouse;Sales;Wife;Black;Female;0;0;40;Puerto-Rico;<=50K +53;Federal-gov;170354;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +54;Private;28518;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +30;State-gov;193380;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Male;0;0;35;United-States;<=50K +59;Private;175942;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +42;Self-emp-not-inc;53956;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;55;United-States;<=50K +23;Private;120773;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;96219;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;<=50K +20;Private;104164;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;190429;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +73;?;243030;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +44;Private;368757;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;220563;12th;8;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;233571;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;37;United-States;>50K +39;Private;187847;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;50;United-States;<=50K +44;Self-emp-not-inc;254303;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +27;Private;109611;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;37;Portugal;<=50K +50;Private;189183;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;206951;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;Private;282882;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +55;Private;377061;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +53;Private;209906;1st-4th;2;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;35;Puerto-Rico;<=50K +53;Local-gov;176059;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +21;Private;347292;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;277314;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +74;?;29887;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;10;United-States;<=50K +53;Private;341439;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;>50K +60;Private;114263;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;Hungary;>50K +59;Private;230899;9th;5;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;Mexico;<=50K +37;Private;271767;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;48;United-States;>50K +49;Private;39986;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +73;Local-gov;45784;Some-college;10;Never-married;Prof-specialty;Other-relative;White;Female;0;0;11;United-States;<=50K +58;Private;126991;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +18;?;234648;11th;7;Never-married;?;Own-child;Black;Male;0;0;15;United-States;<=50K +35;Private;207676;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +24;State-gov;413345;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;<=50K +62;Private;122033;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +58;Private;169611;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +21;Private;372636;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +30;Private;340917;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;99844;HS-grad;9;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;45;United-States;<=50K +31;Private;207685;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;34;United-States;<=50K +30;Private;36069;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;100563;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;174308;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;109413;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +59;Local-gov;212600;Some-college;10;Separated;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +55;Private;271710;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +70;?;230816;Assoc-voc;11;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +22;Private;103277;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +42;Private;318947;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;187167;Assoc-acdm;12;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +32;Private;204742;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +44;Private;282062;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;?;283510;HS-grad;9;Never-married;?;Unmarried;Black;Male;0;0;45;United-States;<=50K +25;Private;280093;11th;7;Married-spouse-absent;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Mexico;<=50K +31;Private;202729;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;205950;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;392286;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +42;Self-emp-not-inc;119207;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;48;United-States;<=50K +49;Private;195554;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;<=50K +30;Private;173005;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;44;United-States;<=50K +54;Private;192862;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +39;Private;164712;Some-college;10;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;195808;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;199444;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;44;United-States;<=50K +23;Private;126346;9th;5;Never-married;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +54;Private;177675;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;42;United-States;<=50K +23;Private;50341;Masters;14;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +23;Private;126945;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;25;United-States;<=50K +67;?;92061;HS-grad;9;Widowed;?;Other-relative;White;Female;0;0;8;United-States;<=50K +19;?;109938;11th;7;Married-civ-spouse;?;Wife;Asian-Pac-Islander;Female;0;0;40;Laos;<=50K +32;Private;174704;11th;7;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +57;Private;124771;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;200603;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;30;United-States;<=50K +21;Private;301199;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +53;Private;215790;Some-college;10;Widowed;Adm-clerical;Other-relative;White;Female;0;0;22;United-States;<=50K +21;Private;111467;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;82646;Doctorate;16;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;>50K +24;Private;162282;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Federal-gov;239074;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;214925;Masters;14;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;60;United-States;<=50K +23;Private;194247;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;211531;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +32;Local-gov;223267;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +25;Private;201635;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +41;Self-emp-not-inc;188738;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;27;United-States;<=50K +18;Private;133055;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +29;Private;109814;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;225294;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;97277;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +52;Private;146711;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +28;Private;286452;10th;6;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;20308;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;224203;Some-college;10;Widowed;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;225978;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +23;Private;237720;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +31;Private;156743;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;76;United-States;>50K +31;Private;509364;5th-6th;3;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;Mexico;<=50K +46;Private;144351;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +18;Private;375515;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +57;Self-emp-not-inc;103529;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;>50K +25;Private;199472;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +32;Private;348152;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;221166;9th;5;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +17;?;634226;10th;6;Never-married;?;Own-child;White;Female;0;0;17;United-States;<=50K +43;State-gov;159449;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;110238;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +19;Private;458558;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;<=50K +20;Federal-gov;340217;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +42;Private;155106;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +90;Private;90523;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Male;0;0;99;United-States;<=50K +25;Private;122756;11th;7;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;35;United-States;<=50K +27;Private;293828;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +48;Private;299291;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;<=50K +48;Federal-gov;483261;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +27;Private;122038;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +46;Private;160647;Bachelors;13;Widowed;Tech-support;Unmarried;White;Female;0;0;38;United-States;<=50K +32;Private;106541;5th-6th;3;Married-civ-spouse;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +22;Private;126945;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;188505;Bachelors;13;Married-AF-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +31;Private;377850;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +20;Private;193586;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;18;United-States;<=50K +40;Self-emp-inc;57233;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +39;Private;195253;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +54;Local-gov;172991;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +59;Local-gov;223215;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;42;United-States;<=50K +17;Private;95799;11th;7;Never-married;Sales;Own-child;White;Female;0;0;18;United-States;<=50K +25;Self-emp-not-inc;213385;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;80;United-States;<=50K +49;Local-gov;202467;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +39;Private;147548;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +67;Private;105216;Some-college;10;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;16;United-States;<=50K +28;Private;77760;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Private;167990;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Canada;<=50K +44;Private;167005;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;48;United-States;>50K +51;Private;108435;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;47;United-States;>50K +55;Private;56645;Bachelors;13;Widowed;Farming-fishing;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +45;Local-gov;304973;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;78;United-States;>50K +32;Private;42596;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +45;Private;220641;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;188888;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;>50K +55;Local-gov;168790;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;<=50K +59;Private;98361;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Private;401762;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;55;United-States;<=50K +46;Local-gov;160187;Masters;14;Widowed;Exec-managerial;Unmarried;Black;Female;0;0;35;United-States;<=50K +23;Private;203715;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;144351;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +34;Private;420749;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;Germany;<=50K +51;Private;106151;11th;7;Divorced;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;362482;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +24;State-gov;38151;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;12;United-States;<=50K +20;Private;42706;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;72;United-States;<=50K +26;Private;165510;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Local-gov;216068;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +23;Private;215624;Some-college;10;Never-married;Machine-op-inspct;Unmarried;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +40;Private;239708;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +49;Local-gov;199378;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;230420;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;Private;395022;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +62;Private;210142;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Private;446358;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +47;Local-gov;352614;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +36;Private;293528;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;0;3;United-States;<=50K +44;State-gov;55395;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;128538;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +46;Private;428405;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Private;126838;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;136836;Assoc-acdm;12;Divorced;Transport-moving;Unmarried;Black;Female;0;0;30;United-States;<=50K +48;Private;105838;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +28;Private;139903;Bachelors;13;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +57;Self-emp-inc;106103;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;>50K +33;Private;186824;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;350387;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;15;United-States;<=50K +17;Private;142912;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +63;?;321403;9th;5;Separated;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +31;Self-emp-inc;114937;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +20;Private;451996;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;149833;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +24;Private;211968;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;24;United-States;<=50K +33;Private;287908;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;50;United-States;>50K +36;Private;166549;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;25216;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;162034;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +34;Private;82938;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;122048;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +33;Private;118710;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;243226;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Self-emp-not-inc;268514;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;365289;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;219266;HS-grad;9;Married-civ-spouse;Prof-specialty;Own-child;White;Female;0;0;36;?;<=50K +24;Private;283757;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;39;United-States;<=50K +44;Federal-gov;206553;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;113364;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;Private;328949;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;83930;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +20;Private;131852;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +64;Private;119506;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +47;State-gov;100818;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +36;Private;162302;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +48;Private;182211;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +19;Self-emp-not-inc;194205;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;Mexico;<=50K +22;Private;141040;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;35;United-States;<=50K +56;Private;346033;9th;5;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;177125;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Private;241174;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;99;United-States;>50K +57;Local-gov;130532;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +38;Private;168496;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +34;Private;362787;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +22;?;244771;11th;7;Separated;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Federal-gov;48123;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;207201;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +29;Private;37933;12th;8;Married-spouse-absent;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +56;Private;33323;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +71;Local-gov;229110;HS-grad;9;Widowed;Exec-managerial;Other-relative;White;Female;0;0;33;United-States;<=50K +20;Private;113511;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;333677;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;36;United-States;<=50K +42;Private;236021;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;>50K +20;?;371089;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +61;Private;115023;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;State-gov;133586;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +51;Private;91137;9th;5;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;105598;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;204829;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;247733;HS-grad;9;Divorced;Priv-house-serv;Unmarried;Black;Female;0;0;16;United-States;<=50K +36;?;370585;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;103257;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;178915;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;54260;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +43;Private;55395;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;318331;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;195985;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;38876;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +67;Self-emp-inc;81413;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;172618;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +61;Private;423297;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +55;Local-gov;88856;7th-8th;4;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;?;169104;Assoc-acdm;12;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;16;Philippines;<=50K +35;Federal-gov;39207;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;340018;10th;6;Never-married;Other-service;Unmarried;Black;Female;0;0;38;United-States;<=50K +20;State-gov;30796;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +51;Private;155403;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +23;Private;238092;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;225605;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;24;United-States;<=50K +36;Private;289148;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;339863;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +27;Private;178778;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;80;United-States;>50K +29;Private;568490;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;State-gov;129345;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;447882;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +24;Private;314165;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;20;United-States;<=50K +39;Federal-gov;382859;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +51;State-gov;82504;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;209844;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +49;Private;62546;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;Private;228686;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;326587;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;202091;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +54;Self-emp-not-inc;310774;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;450246;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;?;84375;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;45;United-States;<=50K +43;Private;142444;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;55;United-States;>50K +24;Private;192766;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;53109;11th;7;Never-married;Other-service;Own-child;Amer-Indian-Eskimo;Male;0;0;20;United-States;<=50K +45;Self-emp-inc;121836;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;?;>50K +45;Self-emp-not-inc;298130;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;<=50K +26;Private;135645;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;265275;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +54;?;410114;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +21;Without-pay;232719;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +29;Private;167716;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;99;United-States;<=50K +68;Private;107627;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;United-States;<=50K +21;Private;129674;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;48;Mexico;<=50K +28;Self-emp-inc;114053;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;30;United-States;<=50K +46;Private;202560;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +35;Private;219902;HS-grad;9;Separated;Transport-moving;Unmarried;Black;Female;0;0;48;United-States;<=50K +50;Self-emp-not-inc;192654;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;25;United-States;<=50K +48;Self-emp-inc;238966;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;?;112942;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;161874;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Male;0;0;40;United-States;<=50K +53;Private;260106;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +50;Self-emp-inc;240374;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +32;?;251612;5th-6th;3;Never-married;?;Unmarried;White;Female;0;0;45;Mexico;<=50K +53;Private;223696;12th;8;Married-spouse-absent;Handlers-cleaners;Not-in-family;Other;Male;0;0;56;Dominican-Republic;<=50K +52;Private;176134;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;48;United-States;<=50K +38;Private;186959;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;456236;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +35;Private;98948;Bachelors;13;Married-civ-spouse;Other-service;Wife;White;Female;0;0;32;United-States;<=50K +41;Private;166662;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;448626;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;167482;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;>50K +45;Private;189792;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;Private;399052;9th;5;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;42;United-States;<=50K +47;Self-emp-not-inc;152752;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +53;Private;268545;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;Jamaica;<=50K +53;Self-emp-inc;148532;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +24;Private;225724;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +34;Private;200192;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Self-emp-inc;170850;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +29;Federal-gov;224858;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;<=50K +61;State-gov;159908;11th;7;Widowed;Other-service;Unmarried;White;Female;0;0;32;United-States;>50K +31;Private;115488;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;1268339;HS-grad;9;Married-spouse-absent;Tech-support;Own-child;Black;Male;0;0;40;United-States;<=50K +42;Private;195755;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +50;Federal-gov;186272;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;181388;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;177181;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +74;Private;91488;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;20;United-States;<=50K +40;Private;230961;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +40;Local-gov;63042;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +36;Private;29814;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;?;116230;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +42;?;167678;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;22;Ecuador;<=50K +28;Private;191088;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +19;Private;63814;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;18;United-States;<=50K +36;Private;285865;Assoc-acdm;12;Separated;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +33;?;160776;Assoc-voc;11;Divorced;?;Not-in-family;White;Female;0;0;40;France;<=50K +48;Private;204990;HS-grad;9;Never-married;Tech-support;Unmarried;Black;Female;0;0;33;Jamaica;<=50K +60;Self-emp-inc;171315;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;296462;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;30;United-States;<=50K +32;Private;103860;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +51;Private;96586;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +53;Private;202720;9th;5;Married-spouse-absent;Machine-op-inspct;Unmarried;Black;Male;0;0;75;Haiti;<=50K +34;Private;202822;Masters;14;Never-married;Tech-support;Unmarried;Black;Female;0;0;40;?;<=50K +48;Self-emp-not-inc;379883;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Mexico;>50K +68;?;123464;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;294121;Assoc-acdm;12;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;50;United-States;<=50K +63;?;179981;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;4;United-States;<=50K +31;Private;234387;HS-grad;9;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +58;Self-emp-not-inc;154537;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +32;Private;125856;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +32;Private;156015;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;116632;Bachelors;13;Divorced;Sales;Own-child;White;Male;0;0;80;United-States;<=50K +38;Self-emp-not-inc;115215;10th;6;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;254905;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;195532;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +63;Private;181828;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;?;<=50K +25;Private;322585;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Private;246262;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +22;Local-gov;211129;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;?;<=50K +49;Private;139268;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;188540;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;?;251167;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;30;Mexico;<=50K +46;Private;94809;Some-college;10;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;30;United-States;<=50K +37;Local-gov;265038;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +48;Private;182566;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +41;Private;208470;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;233571;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;4;United-States;<=50K +29;Private;24562;Bachelors;13;Divorced;Other-service;Unmarried;Other;Female;0;0;40;United-States;<=50K +59;Private;168569;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +62;Private;167098;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Private;271579;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +28;Private;191355;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +42;State-gov;83411;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +60;Private;40856;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;>50K +58;Private;115605;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;132326;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;220213;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;172511;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +43;Private;156745;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +39;Private;218916;Prof-school;15;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;306114;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;196675;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;70;United-States;<=50K +59;Self-emp-not-inc;73411;Prof-school;15;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +36;Private;184659;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +72;?;75890;Some-college;10;Widowed;?;Unmarried;Asian-Pac-Islander;Female;0;0;4;United-States;<=50K +35;Private;320451;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;65;Hong;>50K +33;Private;172498;Some-college;10;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;131588;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Female;0;0;45;United-States;<=50K +40;Private;124520;Assoc-voc;11;Divorced;Craft-repair;Unmarried;White;Male;0;0;50;United-States;>50K +26;Self-emp-not-inc;93806;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +37;Federal-gov;173192;Assoc-voc;11;Separated;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +68;Self-emp-not-inc;198554;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Female;0;0;20;United-States;<=50K +45;Private;26502;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;72;United-States;>50K +56;Private;225267;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;150042;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;208358;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;58115;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;41;United-States;<=50K +28;Private;219267;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;28;United-States;<=50K +39;Federal-gov;129573;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +26;Local-gov;27834;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Self-emp-inc;415037;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;65;United-States;>50K +52;Private;191529;Bachelors;13;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +84;Private;132806;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;13;United-States;<=50K +33;Federal-gov;137059;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;10;United-States;<=50K +30;Private;164309;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +38;Private;40955;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;England;>50K +66;Private;141085;HS-grad;9;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;8;United-States;<=50K +62;Federal-gov;258124;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Italy;>50K +31;Private;145139;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +60;Self-emp-not-inc;146674;HS-grad;9;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;50;?;<=50K +27;Private;242207;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +37;?;102541;Assoc-voc;11;Married-civ-spouse;?;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +38;Private;135416;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;267284;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +48;Private;130812;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;183765;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;?;<=50K +45;Local-gov;188823;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +22;Private;200593;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;124094;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Poland;<=50K +21;Private;50411;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Local-gov;101689;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +21;?;107801;Some-college;10;Never-married;?;Own-child;White;Female;0;0;6;United-States;<=50K +51;Private;176969;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +30;Private;342709;HS-grad;9;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +46;Self-emp-not-inc;368561;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;26915;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +57;Private;157974;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;48;United-States;<=50K +33;Private;183000;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;24;United-States;<=50K +18;?;151463;11th;7;Never-married;?;Other-relative;White;Male;0;0;7;United-States;<=50K +28;Private;217200;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;31740;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +56;Private;35520;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;42;United-States;<=50K +36;Private;369843;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;199227;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +25;Private;254781;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Self-emp-not-inc;70657;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +33;Self-emp-not-inc;222162;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;94606;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;60;United-States;>50K +44;Self-emp-not-inc;104196;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;84;United-States;<=50K +30;Self-emp-not-inc;455995;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;>50K +27;Private;166210;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +25;Private;198986;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Self-emp-inc;292465;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;99388;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;El-Salvador;<=50K +38;Private;698363;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;154940;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;401998;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;20;United-States;<=50K +62;Private;162825;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;271795;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;134671;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;87583;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;14;United-States;<=50K +50;Private;248619;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;130200;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +45;Private;178922;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +23;Private;51985;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;38;United-States;<=50K +38;State-gov;104280;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +27;Private;617860;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +29;Private;122112;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +45;Local-gov;181758;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;140117;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +27;Private;107458;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Federal-gov;215948;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Other;Male;0;0;40;?;<=50K +44;Federal-gov;306440;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Federal-gov;615893;Masters;14;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;Nicaragua;<=50K +32;Private;37210;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +43;Private;196084;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +45;Local-gov;166181;HS-grad;9;Divorced;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +24;Private;232841;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +19;?;131982;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;408788;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Private;181091;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;200246;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;282023;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +49;Federal-gov;128990;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Private;106838;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;144750;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;18;United-States;<=50K +39;Private;108140;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;103323;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;268022;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;>50K +58;Private;197114;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Local-gov;176118;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +24;Private;42401;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;47;United-States;<=50K +53;State-gov;123011;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +35;Private;210945;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +36;Local-gov;130620;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;China;>50K +26;Private;248990;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +33;Private;132705;9th;5;Separated;Adm-clerical;Not-in-family;White;Male;0;0;48;United-States;<=50K +29;Private;94892;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;141858;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;114561;Bachelors;13;Married-spouse-absent;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;36;Philippines;>50K +45;Local-gov;191776;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;128354;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;37088;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +21;Private;414812;7th-8th;4;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +63;?;156799;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;4;United-States;<=50K +41;Self-emp-inc;73431;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +27;?;182386;11th;7;Divorced;?;Unmarried;White;Female;0;0;35;United-States;<=50K +33;Local-gov;248346;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;167482;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +18;?;171088;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;211763;Doctorate;16;Separated;Prof-specialty;Unmarried;Black;Female;0;0;24;United-States;>50K +20;Private;122166;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;370119;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +36;Self-emp-not-inc;138940;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +38;Private;292307;Bachelors;13;Married-spouse-absent;Craft-repair;Not-in-family;Black;Male;0;0;40;Dominican-Republic;<=50K +47;Self-emp-not-inc;248776;Masters;14;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;25;United-States;<=50K +39;Private;314007;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;76845;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;35;United-States;<=50K +24;Private;148320;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;54261;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;<=50K +21;Private;211013;9th;5;Never-married;Other-service;Own-child;White;Female;0;0;50;Mexico;<=50K +40;Private;209833;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;356272;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +38;Private;143538;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;242960;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +44;Local-gov;263871;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +20;Private;151105;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +45;Self-emp-inc;84324;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;224716;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;186269;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;143731;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;72;United-States;>50K +39;Private;236391;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;54560;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;266325;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;32;United-States;>50K +45;State-gov;183710;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;48;United-States;<=50K +23;Private;278254;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;45;United-States;<=50K +35;Private;119992;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +52;Private;284329;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +55;Private;368727;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;353696;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;110931;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;169532;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +21;Private;285522;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;198774;Bachelors;13;Divorced;Sales;Other-relative;White;Female;0;0;35;United-States;<=50K +32;Private;123291;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;146110;Some-college;10;Widowed;Other-service;Unmarried;White;Female;0;0;24;United-States;<=50K +37;Self-emp-not-inc;29814;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;50;United-States;<=50K +61;Private;195595;7th-8th;4;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +44;Private;92649;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;>50K +53;Private;290688;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +43;Private;427382;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +23;Private;276568;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;250038;Masters;14;Married-civ-spouse;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Mexico;<=50K +29;Private;150861;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;87205;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;55;England;<=50K +47;Private;343579;1st-4th;2;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;0;0;12;Mexico;<=50K +20;Private;94401;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;205440;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;198996;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;294253;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;27;United-States;<=50K +23;Private;256628;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;32;United-States;<=50K +59;Self-emp-not-inc;223131;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +46;Private;207301;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;37;United-States;<=50K +66;?;270460;7th-8th;4;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Local-gov;125457;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;38;United-States;>50K +36;Local-gov;212856;11th;7;Never-married;Other-service;Unmarried;White;Female;0;0;23;United-States;<=50K +44;Private;197389;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +17;Private;73338;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +27;Private;68037;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +32;Private;185027;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +53;Private;107123;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +22;Private;109482;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;98;United-States;<=50K +30;Private;174543;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +68;Self-emp-not-inc;211584;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +39;Private;108540;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;202416;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;176178;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +21;Private;265148;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;38;Jamaica;<=50K +34;Private;220631;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;50;?;<=50K +30;Self-emp-not-inc;303692;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;75;United-States;<=50K +25;Private;135845;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +23;State-gov;199915;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;21;United-States;<=50K +40;State-gov;150533;Bachelors;13;Married-civ-spouse;Prof-specialty;Other-relative;White;Male;0;0;40;United-States;<=50K +26;Federal-gov;85482;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +57;Self-emp-not-inc;24473;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;272944;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +43;?;82077;Some-college;10;Divorced;?;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +49;State-gov;194895;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;314153;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;Private;176253;Some-college;10;Divorced;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +59;Private;113959;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +42;State-gov;167581;Bachelors;13;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +37;Private;79586;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Iran;<=50K +47;Private;72896;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;345730;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +30;Private;302473;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +42;Private;42346;HS-grad;9;Widowed;Exec-managerial;Not-in-family;Black;Female;0;0;35;United-States;<=50K +21;Private;243921;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;131620;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Own-child;White;Female;0;0;40;Dominican-Republic;<=50K +47;Private;158924;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +22;Self-emp-not-inc;32921;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;155657;11th;7;Never-married;Handlers-cleaners;Other-relative;Black;Female;0;0;40;United-States;<=50K +43;Federal-gov;155106;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;53;United-States;<=50K +60;Private;82775;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +73;Private;26248;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +90;Private;88991;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;England;>50K +62;Federal-gov;125155;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +28;Private;218039;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;53524;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;259352;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +30;Private;296453;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +19;Private;278915;12th;8;Never-married;Handlers-cleaners;Own-child;Black;Female;0;0;52;United-States;<=50K +22;Federal-gov;274103;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +19;Private;271118;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;28;United-States;<=50K +26;Local-gov;138597;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +62;Self-emp-not-inc;159939;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +61;Private;110920;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +22;Local-gov;163205;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;53;United-States;<=50K +56;Private;110003;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +32;Private;229051;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +24;?;144898;Some-college;10;Never-married;?;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;211596;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Self-emp-not-inc;136450;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +23;Private;193586;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +23;Private;91189;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;227832;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;271936;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +35;Private;61343;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +30;Private;157778;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;>50K +23;Private;201680;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;228320;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +72;Private;33404;10th;6;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +21;Private;103205;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;279029;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;213092;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;119124;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +65;Private;31924;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;15;United-States;<=50K +22;Private;253799;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;?;<=50K +52;Private;266138;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +65;Private;185001;10th;6;Widowed;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +33;Self-emp-not-inc;34102;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +27;Private;289484;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +34;State-gov;287908;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;42;United-States;<=50K +53;Self-emp-not-inc;158284;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +23;Private;60668;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;<=50K +43;State-gov;222978;Doctorate;16;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +26;Private;199143;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +60;Private;131681;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Federal-gov;391122;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +29;Local-gov;280344;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +54;State-gov;188809;Doctorate;16;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +41;Private;277488;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;36;United-States;<=50K +63;Self-emp-not-inc;181561;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +31;Private;158545;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;27;United-States;<=50K +23;Private;313573;Bachelors;13;Never-married;Sales;Own-child;Black;Female;0;0;25;United-States;<=50K +31;Private;591711;Some-college;10;Married-spouse-absent;Transport-moving;Not-in-family;Black;Male;0;0;40;?;<=50K +41;Private;268183;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +51;Private;392286;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +59;Private;233312;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;520231;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +24;Self-emp-not-inc;186831;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;45;United-States;<=50K +67;Self-emp-not-inc;141085;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +65;?;198019;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +47;Local-gov;198660;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +21;Private;409230;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +38;Private;376025;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;80167;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;82847;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;50;Portugal;>50K +24;Private;22201;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;40;Thailand;<=50K +19;Private;117595;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +32;Private;207668;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +63;Self-emp-not-inc;179981;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +18;Private;192583;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +36;Private;66304;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +57;Private;32365;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;28497;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;160261;Some-college;10;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Male;0;0;40;China;<=50K +48;Private;120724;12th;8;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;91733;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +74;Self-emp-not-inc;146929;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +44;Private;205706;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;181666;Some-college;10;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +54;Local-gov;279452;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;207568;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;>50K +18;Private;210026;10th;6;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +32;Local-gov;190889;Masters;14;Never-married;Prof-specialty;Not-in-family;Other;Female;0;0;40;?;<=50K +24;Private;109869;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +19;Self-emp-not-inc;285263;9th;5;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;Mexico;<=50K +28;Private;192588;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;232945;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;Other;Male;0;0;30;United-States;<=50K +49;Local-gov;31339;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;305147;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;188914;HS-grad;9;Widowed;Machine-op-inspct;Other-relative;Black;Female;0;0;40;Haiti;<=50K +58;Self-emp-not-inc;141165;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +68;Self-emp-inc;136218;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;15;United-States;<=50K +41;Federal-gov;371382;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +21;?;199177;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;403671;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;193871;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;306183;Some-college;10;Divorced;Other-service;Own-child;White;Female;0;0;44;United-States;<=50K +54;Private;124194;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;69847;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;30;United-States;<=50K +26;State-gov;169323;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;State-gov;172327;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;0;0;42;United-States;<=50K +39;Private;186420;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;192779;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;>50K +41;Private;105616;Some-college;10;Widowed;Adm-clerical;Unmarried;Black;Female;0;0;48;United-States;<=50K +57;Private;160275;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;164507;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Columbia;<=50K +41;Private;207578;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;India;>50K +55;Private;314592;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +41;?;254630;Assoc-voc;11;Divorced;?;Not-in-family;White;Male;0;0;80;United-States;<=50K +22;Private;112130;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;206280;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +57;Private;308861;Some-college;10;Separated;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;206066;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +48;Self-emp-not-inc;309895;Some-college;10;Divorced;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +38;Local-gov;216129;Some-college;10;Married-spouse-absent;Exec-managerial;Unmarried;Black;Female;0;0;35;United-States;<=50K +26;State-gov;287420;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +24;Private;163595;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;170092;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +42;Private;59474;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;99151;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +37;Private;206888;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +28;Private;177119;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;80;?;<=50K +22;Private;173736;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;182163;11th;7;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;Germany;<=50K +45;Local-gov;311080;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +29;Self-emp-not-inc;389857;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +23;Private;297152;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;25;United-States;<=50K +24;Federal-gov;130534;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;137301;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +58;Private;316235;HS-grad;9;Divorced;Sales;Other-relative;White;Female;0;0;32;United-States;<=50K +28;Self-emp-inc;32922;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +58;Private;118303;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;35;United-States;>50K +18;Private;188241;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +59;Private;236731;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +39;Private;209397;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Self-emp-inc;290640;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +54;Private;221915;Prof-school;15;Never-married;Prof-specialty;Other-relative;White;Female;0;0;65;United-States;<=50K +51;Private;175246;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +42;State-gov;160369;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +36;Private;461337;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +37;Private;187311;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +32;Private;29312;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;197365;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;301747;HS-grad;9;Separated;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +55;Local-gov;135439;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;48;United-States;<=50K +30;Private;340917;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;155057;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +65;?;200749;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +44;Private;323627;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;5;United-States;<=50K +23;?;154921;5th-6th;3;Never-married;?;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;131425;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +60;Private;184242;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +28;Private;149769;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Cambodia;<=50K +44;Private;124924;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Mexico;<=50K +29;Private;253003;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;16;United-States;<=50K +57;State-gov;250976;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;104196;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +34;Self-emp-not-inc;250182;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;188331;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;42;United-States;<=50K +44;Private;187322;Bachelors;13;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;130714;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;22;United-States;<=50K +37;Private;40955;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +35;Private;107125;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;16;United-States;>50K +27;Private;133937;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;?;203260;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;8;United-States;<=50K +37;Self-emp-not-inc;143368;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +18;Private;51789;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;8;United-States;<=50K +24;State-gov;211049;7th-8th;4;Never-married;Tech-support;Unmarried;White;Female;0;0;20;United-States;<=50K +53;Private;81794;12th;8;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +54;Private;150999;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;60;United-States;<=50K +22;Private;332657;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;240043;10th;6;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;30;United-States;<=50K +43;Private;186188;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;Iran;<=50K +58;State-gov;223400;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;>50K +59;Local-gov;102442;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +31;Private;236599;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +35;Private;283237;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;150106;10th;6;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +45;Private;102076;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +40;Private;374764;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;32528;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +25;Federal-gov;50053;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +58;Private;212864;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;30673;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;>50K +69;?;248248;1st-4th;2;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;34;Philippines;<=50K +23;Private;419554;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;54;United-States;<=50K +32;State-gov;177216;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;118158;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;<=50K +41;Private;116391;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Germany;<=50K +74;Private;194312;9th;5;Widowed;Craft-repair;Not-in-family;White;Male;0;0;10;?;<=50K +43;Private;111895;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Federal-gov;287988;Bachelors;13;Never-married;Armed-Forces;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;147653;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;32;United-States;<=50K +54;Private;117674;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +60;Private;187458;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;410351;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;207578;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +62;?;55621;Some-college;10;Married-civ-spouse;?;Husband;Black;Male;0;0;35;United-States;>50K +27;State-gov;271243;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Male;0;0;40;Jamaica;<=50K +30;Private;188798;Some-college;10;Divorced;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +63;Local-gov;168656;Bachelors;13;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;35;Outlying-US(Guam-USVI-etc);<=50K +34;Private;241885;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +20;?;133061;9th;5;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;194097;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;219137;10th;6;Never-married;Other-service;Own-child;Black;Male;0;0;25;United-States;<=50K +50;Private;31621;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +43;Private;207685;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;109854;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +20;?;369678;HS-grad;9;Never-married;?;Not-in-family;Other;Male;0;0;43;United-States;<=50K +17;Private;53611;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;6;United-States;<=50K +47;Private;344916;Assoc-acdm;12;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +25;Local-gov;198813;Bachelors;13;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;40;United-States;<=50K +71;Private;180733;Masters;14;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +21;Private;188073;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +69;?;159077;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;48;United-States;<=50K +48;Private;174829;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;188736;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Other-relative;Other;Female;0;0;20;Columbia;<=50K +33;Local-gov;222654;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;66;?;<=50K +56;Private;251836;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +40;Federal-gov;112388;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;209641;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +42;Private;313945;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Ecuador;<=50K +19;?;134974;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +28;Self-emp-inc;153291;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +40;Private;353432;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;35;United-States;<=50K +23;Private;96635;Some-college;10;Never-married;Machine-op-inspct;Own-child;Asian-Pac-Islander;Male;0;0;30;United-States;<=50K +46;?;202560;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;>50K +39;Private;150057;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +45;Private;132847;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;?;41356;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +50;Self-emp-not-inc;93705;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;309350;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;123084;11th;7;Married-civ-spouse;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +55;Private;174662;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;32;United-States;<=50K +62;Federal-gov;177295;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;211880;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;454915;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;232475;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Self-emp-inc;244605;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +51;Private;257337;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;116960;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +58;Private;267663;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Mexico;<=50K +39;Private;47871;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;>50K +34;Private;295922;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;England;>50K +45;Private;175625;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +19;?;129586;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;202662;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +56;Private;101436;HS-grad;9;Divorced;Adm-clerical;Other-relative;Amer-Indian-Eskimo;Female;0;0;35;United-States;<=50K +19;?;119234;Some-college;10;Never-married;?;Other-relative;White;Female;0;0;15;United-States;<=50K +37;Private;360743;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;>50K +60;Local-gov;93272;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;145574;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +34;Private;135785;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +23;?;218415;Some-college;10;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +19;Private;127709;HS-grad;9;Never-married;Farming-fishing;Own-child;Black;Male;0;0;30;United-States;<=50K +37;Federal-gov;448337;HS-grad;9;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +58;Private;310320;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;251521;11th;7;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +39;Private;255503;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +26;Private;71009;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +22;Private;174975;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;0;0;36;United-States;<=50K +32;Private;108023;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;204018;11th;7;Never-married;Sales;Unmarried;White;Male;0;0;15;United-States;<=50K +57;?;366563;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +68;Private;121846;7th-8th;4;Widowed;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +30;Private;114691;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +19;State-gov;536725;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;15;Japan;<=50K +51;Private;94432;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;286002;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;30;Nicaragua;<=50K +47;Private;101684;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;231413;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;158846;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +41;Local-gov;190786;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +25;Private;306513;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +62;Private;152148;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;309580;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;?;130832;Bachelors;13;Never-married;?;Unmarried;White;Female;0;0;10;United-States;<=50K +30;Private;130078;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +48;Private;39986;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;379198;HS-grad;9;Never-married;Other-service;Other-relative;Other;Male;0;0;40;Mexico;<=50K +51;Private;189762;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;15;United-States;>50K +19;Private;178147;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +31;Private;332379;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;?;262062;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;275446;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +30;Self-emp-not-inc;278522;11th;7;Never-married;Farming-fishing;Own-child;Black;Male;0;0;40;United-States;<=50K +57;Private;136107;9th;5;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +18;Private;205894;11th;7;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +54;Private;210736;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;Private;166634;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +52;Private;185283;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;180553;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;199058;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;?;<=50K +18;Private;145005;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +37;Self-emp-not-inc;184655;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +52;Private;358554;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +59;Private;307423;9th;5;Never-married;Other-service;Not-in-family;Black;Male;0;0;50;United-States;<=50K +27;Private;472070;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Federal-gov;115562;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;32446;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;Self-emp-not-inc;33121;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +37;Private;183345;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +48;Self-emp-not-inc;97883;HS-grad;9;Separated;Other-service;Other-relative;White;Female;0;0;25;United-States;<=50K +58;Self-emp-not-inc;31732;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;206250;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;103323;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-inc;135436;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +36;Private;376455;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +52;Private;160703;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;48;United-States;<=50K +30;Private;131699;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;243842;9th;5;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;349910;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;184306;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;30;United-States;<=50K +46;Private;224202;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +64;Private;151540;11th;7;Widowed;Tech-support;Unmarried;White;Female;0;0;16;United-States;<=50K +28;Private;231197;10th;6;Married-spouse-absent;Craft-repair;Unmarried;White;Male;0;0;40;Mexico;<=50K +19;Private;279968;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;42;United-States;<=50K +36;Private;162651;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Male;0;0;40;Columbia;<=50K +43;Self-emp-not-inc;130126;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Self-emp-not-inc;160120;Doctorate;16;Divorced;Adm-clerical;Other-relative;Other;Male;0;0;40;?;<=50K +56;Private;161662;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +24;Local-gov;201664;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;137142;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +45;Self-emp-inc;122206;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +56;Local-gov;183169;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;126513;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Female;0;0;40;?;<=50K +35;Federal-gov;185053;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;408427;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +50;Self-emp-not-inc;198581;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +61;Private;199198;7th-8th;4;Widowed;Other-service;Not-in-family;Black;Female;0;0;21;United-States;<=50K +63;Private;172740;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;205153;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;164964;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;162606;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;179627;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;103408;Some-college;10;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;Germany;>50K +27;Private;36440;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;57512;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;48;United-States;<=50K +27;Private;187981;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;393768;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;108726;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;180551;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +51;Self-emp-not-inc;176240;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +56;Private;70720;12th;8;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;35890;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;283676;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;57916;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;177974;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;70;United-States;<=50K +34;?;177304;10th;6;Divorced;?;Not-in-family;White;Male;0;0;40;Columbia;<=50K +18;Private;115839;12th;8;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Private;117802;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;65;United-States;>50K +19;Private;211355;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;12;United-States;<=50K +46;Private;173243;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;343200;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +22;Private;401690;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;Mexico;<=50K +38;Private;196123;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +83;Self-emp-not-inc;213866;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;8;United-States;<=50K +34;Private;55176;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +38;Private;153976;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;119176;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;156550;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;109609;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +38;Private;26698;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;236497;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +33;State-gov;306309;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +17;Private;242773;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +52;Local-gov;43909;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +25;Private;148300;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +17;Private;133449;9th;5;Never-married;Other-service;Own-child;Black;Male;0;0;26;United-States;<=50K +22;Private;263670;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;80;United-States;<=50K +22;Private;276494;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Private;317479;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +39;Private;151248;Some-college;10;Divorced;Sales;Other-relative;White;Female;0;0;35;United-States;<=50K +59;Local-gov;130532;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;40;Poland;<=50K +61;Private;160062;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;299635;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +50;Private;171225;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +51;Private;33304;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;95634;Bachelors;13;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;45;?;<=50K +20;Private;243878;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +38;Local-gov;181721;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +44;Federal-gov;201435;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +28;Private;334032;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +50;Private;220019;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +53;Private;71772;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +42;Self-emp-not-inc;27661;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +47;Private;191411;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;45;India;<=50K +39;Private;123945;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +38;Self-emp-not-inc;37778;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +34;State-gov;171216;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;United-States;<=50K +40;Private;93955;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +63;Private;163809;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +53;Private;346754;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +43;Private;188436;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;<=50K +68;Private;186350;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;10;United-States;>50K +22;?;214238;7th-8th;4;Never-married;?;Unmarried;White;Female;0;0;40;Mexico;<=50K +46;State-gov;394860;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;<=50K +57;Private;262642;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +38;Private;125550;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +66;Private;192504;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;131310;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;172755;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;209993;11th;7;Separated;Priv-house-serv;Unmarried;White;Female;0;0;8;Mexico;<=50K +30;Private;166961;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;37;United-States;<=50K +39;Private;315291;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;284703;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +50;Private;166565;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +30;Self-emp-not-inc;173854;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;189219;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;210781;Bachelors;13;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;France;<=50K +45;Private;199832;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;15;United-States;<=50K +64;Private;251292;5th-6th;3;Separated;Other-service;Other-relative;White;Female;0;0;20;Cuba;<=50K +61;Private;122246;12th;8;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +42;Private;190767;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;278736;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +53;Private;124963;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;167476;11th;7;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;7;United-States;<=50K +34;Local-gov;246104;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +41;Private;171615;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;48;United-States;<=50K +46;Private;177114;Assoc-acdm;12;Widowed;Prof-specialty;Unmarried;White;Female;0;0;27;United-States;<=50K +32;Private;146154;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +41;Private;198196;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;79712;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;154785;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Private;182423;HS-grad;9;Divorced;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +20;?;347292;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;32;United-States;<=50K +34;Private;118584;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;219835;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;?;<=50K +17;?;148769;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +45;Private;197418;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;48;United-States;<=50K +21;Private;253190;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;192273;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;129573;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;<=50K +17;Private;173807;11th;7;Never-married;Craft-repair;Own-child;White;Female;0;0;15;United-States;<=50K +35;Private;217893;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Private;102938;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Local-gov;407495;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;>50K +25;Private;50053;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;Japan;<=50K +57;Private;233382;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;Cuba;<=50K +32;Private;270968;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +39;Local-gov;272166;Bachelors;13;Separated;Prof-specialty;Not-in-family;Black;Male;0;0;30;United-States;<=50K +23;Private;199915;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +21;Private;305781;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;45;United-States;<=50K +47;Private;107682;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +25;Private;188507;7th-8th;4;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;Dominican-Republic;<=50K +18;?;28311;11th;7;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +19;Private;177839;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +24;Private;77665;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;42;United-States;<=50K +32;Private;106742;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;192838;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +40;Private;79531;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;75;United-States;>50K +21;State-gov;337766;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +45;Self-emp-not-inc;33234;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +17;?;34088;12th;8;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +55;Private;176904;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;172148;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +49;Private;199058;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +38;Private;48093;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;143664;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;168337;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +43;Private;195212;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;?;<=50K +39;Private;230329;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Canada;>50K +42;Private;376072;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +32;Private;430175;HS-grad;9;Divorced;Craft-repair;Other-relative;Black;Female;0;0;50;United-States;<=50K +55;Private;28735;HS-grad;9;Divorced;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;45;United-States;<=50K +37;Private;167482;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +59;Private;113203;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;103948;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;310525;12th;8;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;32;United-States;<=50K +35;Private;105138;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +44;Private;153489;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +57;State-gov;254949;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;118149;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;267965;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +43;Private;50646;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +33;Private;147700;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;United-States;<=50K +18;Private;446771;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +47;Private;168262;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;117058;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Self-emp-not-inc;140957;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;>50K +35;Private;186126;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;?;<=50K +49;Private;268234;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;485117;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;31350;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;60;England;<=50K +36;State-gov;210830;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;30;United-States;<=50K +29;Private;196420;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +52;Private;172165;10th;6;Divorced;Other-service;Other-relative;White;Female;0;0;25;United-States;<=50K +50;Self-emp-not-inc;186565;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;119359;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;109684;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;169589;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +49;Private;125421;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +31;Private;500002;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;Mexico;<=50K +33;Private;224141;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;113290;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;15;United-States;<=50K +62;?;123992;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +46;?;37672;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +49;Federal-gov;35406;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;20;United-States;<=50K +22;Private;199419;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;145441;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +58;Private;238438;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;<=50K +21;Private;56582;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +67;Local-gov;176931;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +39;Self-emp-not-inc;188571;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +52;Federal-gov;312500;Assoc-voc;11;Divorced;Farming-fishing;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;278404;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;114225;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;>50K +18;Private;184016;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +41;Local-gov;183009;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +59;Private;205759;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;462294;Assoc-acdm;12;Never-married;Other-service;Own-child;Black;Male;0;0;44;United-States;<=50K +42;Private;102085;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +54;Self-emp-not-inc;83311;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;>50K +39;Private;248694;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +57;Local-gov;190747;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;162988;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +31;Self-emp-not-inc;156890;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;310380;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;Black;Female;0;0;45;United-States;<=50K +35;Private;172186;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;311497;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Self-emp-inc;443508;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +31;Private;152156;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;155890;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +38;State-gov;312528;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;37;United-States;<=50K +51;Private;282744;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Canada;<=50K +27;Private;205145;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;?;119918;Bachelors;13;Never-married;?;Not-in-family;Black;Male;0;0;45;?;<=50K +22;Private;401451;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;>50K +72;?;173427;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;Cuba;<=50K +25;Private;189027;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;35551;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +23;Private;42706;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +63;Private;106910;5th-6th;3;Widowed;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;19;Philippines;<=50K +23;Private;53245;9th;5;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +75;Private;71898;Preschool;1;Never-married;Priv-house-serv;Not-in-family;Asian-Pac-Islander;Female;0;0;48;Philippines;<=50K +52;Private;222107;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;50;United-States;<=50K +69;Private;277588;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;10;United-States;<=50K +52;Private;178983;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +40;Federal-gov;391744;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;Private;418020;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +21;State-gov;39236;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;8;United-States;<=50K +30;Private;86808;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +21;Private;184756;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +44;Private;191256;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;101272;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +33;State-gov;175023;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;37;United-States;<=50K +22;Self-emp-not-inc;357612;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +23;Private;82777;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +75;Self-emp-not-inc;218521;Some-college;10;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +55;Private;179534;11th;7;Widowed;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +24;?;33339;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +31;Private;198069;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +49;Private;236586;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +26;Local-gov;167261;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Local-gov;251854;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +79;?;163140;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +51;Private;302579;HS-grad;9;Divorced;Other-service;Other-relative;Black;Female;0;0;30;United-States;<=50K +44;Self-emp-inc;64632;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;83141;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;326048;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;83471;HS-grad;9;Widowed;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +23;Private;170070;12th;8;Never-married;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +25;Private;207875;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +48;Private;119722;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;8;United-States;<=50K +18;Private;335665;11th;7;Never-married;Other-service;Other-relative;Black;Female;0;0;24;United-States;<=50K +25;Private;212522;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;236396;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +42;Private;159911;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;133833;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;226947;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;174201;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;49707;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +33;Private;201988;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +62;Self-emp-not-inc;162347;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;United-States;>50K +30;Private;182833;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +22;Private;383603;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;70466;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;184846;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;60;United-States;<=50K +25;Private;176756;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;112512;HS-grad;9;Widowed;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;137296;Assoc-acdm;12;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +28;Private;37821;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +25;Private;295108;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Black;Female;0;0;25;United-States;<=50K +40;Private;408717;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;255635;9th;5;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;Mexico;<=50K +48;Self-emp-not-inc;177783;7th-8th;4;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +31;Private;240283;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +36;Private;410034;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +39;Private;180667;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;196332;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +32;Local-gov;159187;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +46;Private;225065;Preschool;1;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Mexico;<=50K +19;Private;178147;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +30;Private;272669;Some-college;10;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +35;Private;347491;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;?;146399;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;55;United-States;<=50K +33;Private;75167;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +25;Private;133373;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +64;Local-gov;84737;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;35;United-States;>50K +18;Private;96483;HS-grad;9;Never-married;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +59;Private;368005;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;State-gov;36032;HS-grad;9;Divorced;Protective-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Private;174215;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;15;United-States;<=50K +24;Private;228772;5th-6th;3;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;Mexico;<=50K +22;Private;242912;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +49;Self-emp-inc;86701;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;56;United-States;>50K +35;Private;166549;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;201613;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +35;Private;29874;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;168138;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;162404;Bachelors;13;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;60;United-States;<=50K +21;?;162160;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +26;Private;139116;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;50;United-States;<=50K +39;Private;370585;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +40;State-gov;151038;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;271933;Masters;14;Never-married;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +34;Private;182401;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +66;Private;234743;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;182140;HS-grad;9;Separated;Transport-moving;Unmarried;Black;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;96459;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;?;205562;Masters;14;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +47;Private;188081;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +33;State-gov;121245;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +18;Private;127273;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;20;United-States;<=50K +22;Private;341227;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;20;United-States;<=50K +40;Local-gov;166893;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +68;?;65730;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +45;Self-emp-not-inc;285335;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;10;United-States;<=50K +23;Private;177087;11th;7;Never-married;Adm-clerical;Unmarried;Black;Male;0;0;35;United-States;<=50K +40;Private;240504;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +23;Private;384651;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;189551;HS-grad;9;Divorced;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +53;Private;194791;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;194630;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;35;United-States;<=50K +53;Private;177647;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;51620;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;251421;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;180477;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;47;United-States;<=50K +40;State-gov;391736;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;State-gov;170091;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;6;United-States;<=50K +53;Federal-gov;105788;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;50;United-States;>50K +42;Local-gov;248476;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;>50K +32;Private;168443;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +33;Private;120201;HS-grad;9;Divorced;Adm-clerical;Own-child;Other;Female;0;0;65;United-States;<=50K +59;Private;114678;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;60;United-States;<=50K +36;Private;167440;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;<=50K +37;Self-emp-not-inc;265266;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Cuba;>50K +31;Private;212235;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +46;Private;44671;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +44;State-gov;87282;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;38;United-States;<=50K +29;Self-emp-not-inc;322238;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;65382;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +62;Self-emp-not-inc;115176;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +48;Self-emp-not-inc;162236;Masters;14;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;?;>50K +42;Private;409902;HS-grad;9;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;25;United-States;<=50K +60;Local-gov;204062;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +35;Private;283305;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;435638;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Self-emp-inc;114733;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;36;United-States;<=50K +22;Private;162343;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;22;United-States;<=50K +18;?;195981;HS-grad;9;Widowed;?;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;79531;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;State-gov;395078;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;159567;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +49;Private;133917;Assoc-voc;11;Never-married;Sales;Other-relative;Black;Male;0;0;40;?;<=50K +52;Private;196894;11th;7;Separated;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +23;Private;190290;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +54;Private;102828;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;49;United-States;<=50K +31;Private;128493;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +30;State-gov;290677;Masters;14;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;20;United-States;<=50K +21;Private;283757;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +38;Local-gov;169104;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +51;Private;171409;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-not-inc;319165;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +22;Private;203182;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Female;0;0;30;United-States;<=50K +20;?;211968;Some-college;10;Never-married;?;Own-child;White;Female;0;0;45;United-States;<=50K +26;Private;166666;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +41;Private;156566;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;140564;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Local-gov;322208;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +65;Private;420277;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;123430;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;Mexico;<=50K +45;Self-emp-inc;151584;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +37;Self-emp-not-inc;348960;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +47;Self-emp-inc;201699;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Private;511517;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;118001;10th;6;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +38;Private;193961;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +21;Private;32732;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;223548;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Mexico;<=50K +33;Private;389932;HS-grad;9;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;55;United-States;<=50K +29;Private;102345;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;52;United-States;<=50K +41;Private;107584;Some-college;10;Separated;Transport-moving;Not-in-family;White;Male;0;0;35;United-States;<=50K +20;?;34321;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +20;State-gov;39478;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;54;United-States;<=50K +34;Self-emp-not-inc;276221;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;235646;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;123306;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +59;Private;38573;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;Private;216889;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;386705;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;24;United-States;<=50K +47;Self-emp-not-inc;249585;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +31;Local-gov;47276;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;38;United-States;>50K +42;Self-emp-not-inc;162758;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;56;United-States;>50K +46;Local-gov;146497;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;190765;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;44;United-States;<=50K +21;Private;186314;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;213615;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +38;Private;162322;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +44;State-gov;115932;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;392694;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +38;State-gov;143517;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +50;Self-emp-inc;123429;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Italy;>50K +53;Private;254285;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Private;238311;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;36;United-States;>50K +49;Private;281647;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +30;Private;75167;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +19;Private;252862;Assoc-voc;11;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +59;Self-emp-not-inc;199240;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;20;England;<=50K +43;Private;145762;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Local-gov;142443;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +49;Private;99361;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +36;Private;105138;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;Private;151866;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +60;Private;297261;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +43;Private;148998;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;143046;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;183850;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +31;Private;198452;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;161092;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;112497;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;155963;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +24;Private;376393;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;State-gov;151790;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +21;Private;438139;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +20;?;163911;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;214896;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +30;Private;102821;Some-college;10;Married-civ-spouse;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +44;Self-emp-not-inc;90021;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +45;Private;77085;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Japan;>50K +42;Private;158555;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +36;?;28160;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;462255;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;144949;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;116207;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;32;United-States;<=50K +17;Private;187308;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +45;Local-gov;189890;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;185267;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;63434;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;35;United-States;<=50K +45;Private;1366120;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Female;0;0;8;United-States;<=50K +33;Private;129707;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;60;United-States;>50K +17;?;181337;10th;6;Never-married;?;Own-child;Other;Female;0;0;20;United-States;<=50K +51;Private;74784;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +33;Private;44392;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +23;Private;406641;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Female;0;0;18;United-States;<=50K +52;Private;89041;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;>50K +36;?;139770;Some-college;10;Divorced;?;Own-child;White;Female;0;0;32;United-States;<=50K +25;Private;180212;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;?;338212;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +64;Self-emp-not-inc;178472;9th;5;Separated;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +29;Private;168470;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +26;Local-gov;80485;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;38;United-States;<=50K +38;?;181705;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +24;Private;216867;10th;6;Never-married;Other-service;Other-relative;White;Male;0;0;30;Mexico;<=50K +43;Federal-gov;214541;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;70034;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +18;?;266287;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +44;Private;128485;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +81;?;89015;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;18;United-States;<=50K +55;Private;106740;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +52;Private;167527;11th;7;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;19302;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +35;Private;210150;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;179824;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;36;United-States;<=50K +27;Private;420351;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +23;State-gov;215443;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;15;United-States;<=50K +33;Private;215306;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Cuba;<=50K +39;Private;108069;Some-college;10;Never-married;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;260046;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;31053;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Private;362302;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +54;Private;87205;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +45;Private;191703;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Private;242968;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +23;Local-gov;185575;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;73585;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;301802;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +32;Self-emp-inc;108467;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +47;Private;431245;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;157217;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;Private;204935;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;277112;11th;7;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +30;Local-gov;159773;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;>50K +51;Private;118793;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;>50K +26;State-gov;152457;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;266529;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;113756;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +48;Private;83444;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;United-States;>50K +51;?;146325;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;28;United-States;<=50K +29;Private;198825;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +69;Private;71489;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;<=50K +56;Private;111218;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +26;?;221626;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;352196;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;22;United-States;<=50K +41;Federal-gov;355918;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +23;Private;182615;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;211482;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +34;Private;386370;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +46;Local-gov;180010;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +46;Without-pay;142210;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;25;United-States;<=50K +33;Private;415706;5th-6th;3;Separated;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +46;Private;237731;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;343506;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +49;Local-gov;116163;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;France;<=50K +66;?;206560;HS-grad;9;Widowed;?;Not-in-family;Other;Female;0;0;35;Puerto-Rico;<=50K +35;Private;301862;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;33429;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;169583;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +47;Private;146497;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;16;Germany;<=50K +48;Self-emp-not-inc;383384;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Private;240809;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;56;United-States;<=50K +38;Private;203763;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;218785;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +17;Private;244602;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +44;State-gov;175696;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;101027;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +37;Private;99270;HS-grad;9;Never-married;Transport-moving;Other-relative;White;Female;0;0;40;United-States;<=50K +49;Private;224393;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +42;Private;192381;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;131686;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +73;?;84390;Assoc-voc;11;Married-spouse-absent;?;Not-in-family;White;Female;0;0;32;United-States;<=50K +44;Private;277533;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;72880;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;?;149646;Some-college;10;Divorced;?;Own-child;White;Female;0;0;20;?;<=50K +49;Private;209057;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;108909;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +42;Private;74949;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;235639;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;137421;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;37;Hong;<=50K +53;Private;122412;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;434894;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +35;Private;379959;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;225330;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;50;Poland;>50K +40;Private;32627;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;65171;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;193380;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;184823;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;81259;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +35;Private;301369;12th;8;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;190968;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;330715;HS-grad;9;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Local-gov;77698;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +24;Private;109053;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;25;United-States;<=50K +69;Private;312653;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +35;Self-emp-not-inc;193260;Masters;14;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +35;Private;331831;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;163948;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +48;Private;36228;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;44;United-States;<=50K +49;Private;160167;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;104196;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;288353;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +35;Private;187693;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;114988;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Local-gov;117392;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;121124;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +53;Private;195638;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;State-gov;216734;Prof-school;15;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;?;197827;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;49156;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;126133;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;304463;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +34;Private;214288;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;274969;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Female;0;0;42;United-States;<=50K +23;Private;189072;Bachelors;13;Never-married;Tech-support;Not-in-family;Black;Female;0;0;45;United-States;<=50K +46;Private;128047;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;42;United-States;<=50K +20;Private;210338;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +63;Private;122442;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;251421;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Federal-gov;219519;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +36;Private;33355;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;45;United-States;<=50K +25;Private;441210;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +54;Local-gov;178356;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;231196;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +58;State-gov;40925;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;270587;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;England;<=50K +27;Private;114967;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;344492;HS-grad;9;Separated;Sales;Own-child;White;Female;0;0;26;United-States;<=50K +22;Private;369387;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +80;Self-emp-not-inc;101771;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;<=50K +52;Private;137428;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +48;Private;139290;10th;6;Separated;Machine-op-inspct;Own-child;White;Female;0;0;48;United-States;<=50K +62;Private;199193;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;25;United-States;<=50K +32;Private;286689;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;42;United-States;>50K +21;?;123727;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;28;United-States;<=50K +58;Federal-gov;208640;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Self-emp-not-inc;120130;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +29;Self-emp-inc;241431;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +25;Private;120450;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;152240;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;200960;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +30;Federal-gov;314310;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Local-gov;44566;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;<=50K +59;Private;21792;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;10;United-States;<=50K +36;Private;182074;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;221850;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Ecuador;>50K +42;Private;240628;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +34;Private;318641;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;45;United-States;>50K +27;Self-emp-not-inc;140863;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;129150;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +41;Private;244945;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;138514;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;92008;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Female;0;0;28;United-States;<=50K +23;Private;207415;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;15;United-States;<=50K +26;Private;188626;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +27;Private;133696;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;88;United-States;<=50K +21;Private;195919;10th;6;Never-married;Handlers-cleaners;Not-in-family;Other;Male;0;0;40;Dominican-Republic;<=50K +41;Private;119266;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;140474;Assoc-acdm;12;Divorced;Craft-repair;Own-child;Amer-Indian-Eskimo;Male;0;0;35;United-States;<=50K +25;Private;69739;10th;6;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;293176;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +23;Private;217961;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +23;Private;419394;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;9;United-States;<=50K +18;Private;220836;11th;7;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +37;Private;334291;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Private;200360;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;203482;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;Private;87867;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +55;Private;123515;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;175935;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;229456;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;38;United-States;<=50K +42;Local-gov;99554;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;190227;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +25;Private;29020;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;45;United-States;<=50K +31;Private;306459;1st-4th;2;Separated;Handlers-cleaners;Unmarried;White;Male;0;0;35;Honduras;<=50K +42;Private;193995;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +26;Private;105059;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +34;Private;342709;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;53838;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +45;Local-gov;209482;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +44;Private;214242;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +47;?;34458;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +35;Private;100375;Some-college;10;Married-spouse-absent;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;149949;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;189762;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Male;0;0;56;United-States;<=50K +46;Private;79874;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;53;United-States;>50K +66;Self-emp-not-inc;104576;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;8;United-States;>50K +34;State-gov;355700;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +26;Private;213625;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;204984;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +30;Private;144593;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;?;<=50K +23;Private;217169;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +46;Private;184883;9th;5;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +44;?;136419;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;57758;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;68;United-States;>50K +54;Self-emp-not-inc;30908;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +71;Private;217971;9th;5;Widowed;Sales;Unmarried;White;Female;0;0;13;United-States;<=50K +51;Private;160703;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;142675;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;171242;11th;7;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Canada;<=50K +34;Private;376979;9th;5;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;277530;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;104501;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +32;Private;94041;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;Ireland;<=50K +37;Local-gov;593246;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +19;Private;121074;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;99;United-States;<=50K +64;Private;192596;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +17;Private;142457;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +37;Private;136028;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;157894;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +18;Private;252993;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;Columbia;<=50K +42;Private;219591;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;55;United-States;>50K +53;Local-gov;205005;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;60;United-States;>50K +52;Private;221936;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;120914;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +77;Self-emp-inc;155761;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;8;United-States;<=50K +38;Local-gov;236687;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;318036;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;53306;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +27;Private;174645;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;321817;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;206948;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +47;Federal-gov;402975;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +36;Private;143486;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +42;Self-emp-inc;27187;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +24;Private;187717;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;378104;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;113870;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +24;Private;326334;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;279914;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +29;Private;320451;HS-grad;9;Never-married;Protective-serv;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +36;Private;207853;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +78;Self-emp-inc;237294;HS-grad;9;Widowed;Sales;Not-in-family;White;Male;0;0;45;United-States;>50K +34;State-gov;259705;Some-college;10;Separated;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +20;?;117789;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;449432;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Federal-gov;89083;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;59612;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +21;Private;129980;9th;5;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;108233;Assoc-acdm;12;Separated;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +30;Private;342709;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;126675;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;141118;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;173243;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Local-gov;161092;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;209691;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;42;United-States;>50K +36;Private;89508;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;399522;11th;7;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +60;State-gov;136939;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +56;Local-gov;264436;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;199572;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +61;Federal-gov;28291;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +50;Private;215990;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +56;Self-emp-not-inc;179594;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +26;Private;182308;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;51662;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +45;Private;289468;11th;7;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;201954;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;65;United-States;>50K +45;Self-emp-not-inc;26781;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +58;Private;100960;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;213811;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;124672;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +19;Private;219300;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +22;Private;270436;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;212619;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;84136;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +55;Federal-gov;264834;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;State-gov;98995;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;278254;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +28;Private;167987;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;72887;Bachelors;13;Married-spouse-absent;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +17;Private;176467;9th;5;Never-married;Transport-moving;Not-in-family;White;Male;0;0;20;United-States;<=50K +51;Self-emp-not-inc;85902;10th;6;Widowed;Transport-moving;Other-relative;White;Female;0;0;40;United-States;<=50K +37;Private;223433;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +54;Self-emp-inc;108435;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +24;Private;172496;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +35;Private;241998;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;187513;Assoc-voc;11;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;440138;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;45;England;<=50K +24;Private;218215;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +34;Private;94413;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +45;Private;183598;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;192664;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;392812;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +21;Private;155818;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +32;Private;195000;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;308205;5th-6th;3;Never-married;Farming-fishing;Other-relative;White;Male;0;0;40;Mexico;<=50K +53;Private;104879;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +36;Private;152307;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;145964;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;97419;HS-grad;9;Married-civ-spouse;Protective-serv;Wife;Black;Female;0;0;40;United-States;<=50K +25;?;12285;Some-college;10;Never-married;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +30;Private;263150;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;20;United-States;<=50K +49;?;189885;HS-grad;9;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +23;Private;151888;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;254167;10th;6;Separated;Transport-moving;Own-child;White;Male;0;0;35;United-States;<=50K +45;Local-gov;331482;Assoc-acdm;12;Divorced;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +61;Local-gov;177189;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;<=50K +35;Private;186886;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;<=50K +20;Private;33221;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +27;Private;188171;10th;6;Never-married;Adm-clerical;Own-child;White;Male;0;0;60;United-States;<=50K +23;Private;209770;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;164488;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +65;Local-gov;180869;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +25;Private;190350;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Private;204057;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;Germany;<=50K +67;Private;134906;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;32;United-States;<=50K +40;Private;174515;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Private;259363;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +35;Private;209609;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;185127;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;462838;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;48;United-States;<=50K +37;Private;176967;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +54;Private;284129;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +33;Federal-gov;37546;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +46;Private;116666;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;423222;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +51;Private;201127;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +27;Private;202239;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;209629;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;133520;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +66;?;99888;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;176410;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;38;United-States;<=50K +35;Federal-gov;103214;Doctorate;16;Never-married;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;0;0;60;United-States;>50K +50;Private;226735;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;70;United-States;>50K +43;Self-emp-inc;151089;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;244312;9th;5;Never-married;Craft-repair;Own-child;White;Male;0;0;30;El-Salvador;<=50K +33;Private;209317;9th;5;Never-married;Other-service;Not-in-family;White;Male;0;0;45;El-Salvador;<=50K +22;Private;374116;HS-grad;9;Never-married;Priv-house-serv;Own-child;White;Female;0;0;36;United-States;<=50K +29;Private;205249;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Japan;<=50K +42;Self-emp-not-inc;326083;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;183523;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;Hungary;<=50K +36;Private;350783;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;38;United-States;<=50K +66;Local-gov;140849;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +44;Private;175943;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;20;United-States;<=50K +45;Local-gov;125933;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Private;225124;HS-grad;9;Divorced;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +36;Private;272090;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;El-Salvador;<=50K +48;Private;40666;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;35245;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;167482;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +41;Private;204662;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +32;Private;291147;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;179869;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;205100;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +20;Private;352139;Some-college;10;Divorced;Other-service;Own-child;White;Female;0;0;29;United-States;<=50K +39;Private;111268;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;247111;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +19;Private;271446;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +29;Local-gov;132412;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +52;Self-emp-inc;74712;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +22;Private;94662;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +44;Self-emp-inc;33126;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;<=50K +43;Private;133584;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;?;64448;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;374367;Assoc-voc;11;Separated;Sales;Not-in-family;Black;Male;0;0;44;United-States;<=50K +40;Private;179666;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;30;Canada;<=50K +18;Private;99219;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +57;Self-emp-inc;180211;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;Taiwan;>50K +54;Local-gov;219276;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +44;Private;150011;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;231231;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +40;Private;182217;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Scotland;<=50K +29;Private;277342;Some-college;10;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;140001;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;223319;Some-college;10;Divorced;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +52;Private;235307;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Local-gov;156003;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;529223;Bachelors;13;Never-married;Sales;Own-child;Black;Male;0;0;10;United-States;<=50K +22;Private;202871;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;44;United-States;<=50K +37;Private;58337;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +58;Federal-gov;298643;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +61;Private;191188;10th;6;Widowed;Farming-fishing;Unmarried;White;Male;0;0;20;United-States;<=50K +30;Private;96287;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +23;Private;104443;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +30;Private;323054;10th;6;Divorced;Other-service;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +18;Private;95917;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;25;Canada;<=50K +23;Private;49296;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +23;Private;50953;Some-college;10;Never-married;Priv-house-serv;Own-child;White;Female;0;0;10;United-States;<=50K +57;Private;124507;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +58;Private;239523;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +59;Self-emp-not-inc;309124;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +27;Private;240172;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;105010;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;>50K +44;Local-gov;135056;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;16;?;<=50K +25;Private;178478;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;23871;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +22;Private;362309;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +50;Private;297906;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +44;Private;230684;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +53;?;123011;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +41;Private;170866;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +54;Local-gov;182543;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;Mexico;<=50K +60;Self-emp-not-inc;236470;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;33725;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +43;Private;206878;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;60;United-States;<=50K +33;Local-gov;173806;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;190709;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +41;Private;149102;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;Poland;<=50K +21;Private;25265;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;100669;Some-college;10;Married-civ-spouse;Craft-repair;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +27;Self-emp-inc;114158;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;228057;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;54012;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +46;Federal-gov;219967;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +49;Private;239865;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;State-gov;119421;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;35;United-States;>50K +56;Self-emp-not-inc;220187;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;>50K +42;Private;175515;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Local-gov;271795;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;70055;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;352806;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;Mexico;<=50K +57;Private;266189;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;42;United-States;<=50K +49;Private;102945;7th-8th;4;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;173851;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;144092;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;198681;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;>50K +33;Private;351810;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Mexico;<=50K +52;Private;180142;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +37;Self-emp-inc;175360;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +30;Self-emp-inc;224498;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Self-emp-inc;154641;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;60;United-States;<=50K +54;Local-gov;152540;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;42;United-States;<=50K +52;Private;217663;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +22;Local-gov;138575;HS-grad;9;Never-married;Protective-serv;Unmarried;White;Male;0;0;56;United-States;<=50K +19;?;32477;Some-college;10;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +32;Private;44677;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;456618;7th-8th;4;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;El-Salvador;<=50K +34;Private;227282;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;27624;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;55;United-States;<=50K +24;Private;281403;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;98;United-States;<=50K +48;Private;377140;5th-6th;3;Never-married;Priv-house-serv;Unmarried;White;Female;0;0;35;Nicaragua;<=50K +26;Private;299810;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +28;Private;181916;Some-college;10;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;237044;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;12;United-States;<=50K +64;State-gov;269512;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;44767;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;50;United-States;>50K +28;Private;67218;7th-8th;4;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +34;Private;176992;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;379919;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +18;Private;212370;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +36;Private;179666;12th;8;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;United-States;<=50K +24;Private;197387;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;Mexico;<=50K +29;Local-gov;220656;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +33;Private;181091;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +57;Federal-gov;135028;HS-grad;9;Separated;Adm-clerical;Other-relative;Black;Female;0;0;35;United-States;<=50K +41;Private;185057;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;?;<=50K +55;Private;106498;10th;6;Widowed;Transport-moving;Not-in-family;Black;Female;0;0;35;United-States;<=50K +21;Private;203003;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;223789;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +26;Private;184026;Some-college;10;Never-married;Prof-specialty;Not-in-family;Other;Male;0;0;50;United-States;<=50K +32;?;335427;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;>50K +32;Private;372692;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;45607;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +29;Self-emp-not-inc;212895;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;48;United-States;<=50K +58;Private;147989;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +47;Private;145290;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;132601;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;30759;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +19;Private;319889;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +66;Private;29431;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;111483;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;184756;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +30;Private;187560;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;84848;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;16;United-States;<=50K +75;?;36243;Doctorate;16;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;State-gov;88913;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;36;United-States;<=50K +19;Private;73190;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +60;Private;132529;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;214542;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;217006;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;169785;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +30;Private;75573;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;Germany;<=50K +37;Private;239171;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;53566;Doctorate;16;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +20;Private;117109;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;24;United-States;<=50K +32;Private;398019;7th-8th;4;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;15;Mexico;<=50K +18;Private;114008;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +24;Private;204653;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Local-gov;254935;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;<=50K +76;?;84755;Some-college;10;Widowed;?;Unmarried;White;Female;0;0;40;United-States;<=50K +57;Local-gov;198145;Masters;14;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;14;United-States;>50K +19;Private;451951;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Local-gov;172175;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +27;Private;209472;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +40;Private;336707;Assoc-voc;11;Separated;Craft-repair;Not-in-family;White;Female;0;0;60;United-States;<=50K +26;?;431861;10th;6;Separated;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Self-emp-inc;156728;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +39;Federal-gov;290321;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +49;State-gov;206577;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;149324;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;7;United-States;<=50K +33;?;49593;Some-college;10;Married-civ-spouse;?;Wife;Black;Female;0;0;30;United-States;<=50K +28;Private;181659;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;50;United-States;<=50K +30;Private;174789;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;184801;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Private;176014;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;256861;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;<=50K +37;Private;239397;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +26;Private;233777;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +55;Private;236520;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Private;70754;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +32;Private;245378;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +26;Private;176729;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;>50K +19;Private;517036;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;El-Salvador;<=50K +38;Private;436361;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;75;United-States;<=50K +38;Private;231037;5th-6th;3;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Mexico;<=50K +65;Private;209831;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +48;?;167381;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;25;United-States;<=50K +44;Private;215468;Bachelors;13;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;7;United-States;<=50K +32;Private;200700;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Local-gov;191777;HS-grad;9;Never-married;Protective-serv;Own-child;Black;Female;0;0;40;United-States;<=50K +49;Federal-gov;195437;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;United-States;>50K +23;Private;149396;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +25;Private;104746;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;16;United-States;<=50K +19;Private;108147;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +27;Private;238859;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;State-gov;23157;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +38;Private;497788;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +42;Private;141558;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +33;Federal-gov;117963;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;38;United-States;<=50K +30;Private;232356;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Private;157941;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;103642;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;169727;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;274731;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;161572;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;45;United-States;<=50K +38;Private;48779;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +48;Private;141511;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;168334;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;30;United-States;<=50K +42;Local-gov;267252;Masters;14;Separated;Exec-managerial;Unmarried;Black;Male;0;0;45;United-States;>50K +31;Self-emp-not-inc;312055;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +32;Private;207937;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;232653;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;246841;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;154087;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;199011;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +51;Self-emp-not-inc;205100;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;30;United-States;>50K +24;Private;50400;Some-college;10;Married-civ-spouse;Sales;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +41;Local-gov;97064;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;44;United-States;<=50K +21;Private;65038;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;225211;9th;5;Never-married;Other-service;Own-child;Black;Male;0;0;35;United-States;<=50K +45;Private;320192;1st-4th;2;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +21;Private;83580;Some-college;10;Never-married;Prof-specialty;Own-child;Amer-Indian-Eskimo;Female;0;0;4;United-States;<=50K +42;Private;529216;HS-grad;9;Separated;Transport-moving;Other-relative;Black;Male;0;0;40;United-States;<=50K +22;Private;390817;5th-6th;3;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;40;Mexico;<=50K +21;?;85733;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;155976;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;221172;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +45;Private;270842;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;82622;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +58;Private;371064;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +29;Private;22641;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;45;United-States;<=50K +21;Private;218957;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;45;United-States;<=50K +51;Private;441637;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;143699;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +40;Private;183096;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +45;Private;97176;11th;7;Divorced;Adm-clerical;Unmarried;White;Female;0;0;16;United-States;<=50K +22;Private;311376;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +62;Private;123582;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Federal-gov;174215;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +36;Private;183902;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;4;United-States;>50K +43;Private;247880;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;256636;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;?;152875;Bachelors;13;Married-civ-spouse;?;Wife;Asian-Pac-Islander;Female;0;0;40;China;<=50K +28;Private;22422;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;55;United-States;<=50K +49;?;178215;Some-college;10;Widowed;?;Unmarried;White;Female;0;0;28;United-States;<=50K +47;Local-gov;194360;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;7;United-States;>50K +59;Private;247187;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;63921;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;224889;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;178564;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Male;0;0;40;United-States;<=50K +57;Private;47619;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +41;Private;92775;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +37;Private;50837;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +20;Local-gov;235894;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;244974;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +20;Local-gov;526734;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +38;Self-emp-not-inc;243484;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;28;United-States;>50K +23;Private;201664;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +24;Private;234640;HS-grad;9;Married-spouse-absent;Sales;Own-child;White;Female;0;0;36;United-States;<=50K +46;Private;268022;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +32;Local-gov;223267;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +21;Self-emp-not-inc;99199;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;137076;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;313146;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;271807;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;191196;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;264627;11th;7;Divorced;Exec-managerial;Unmarried;White;Female;0;0;84;United-States;<=50K +32;Private;183801;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;209227;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;21;United-States;<=50K +64;Private;216208;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;377095;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +44;Private;317535;1st-4th;2;Married-civ-spouse;Protective-serv;Other-relative;White;Male;0;0;40;Mexico;<=50K +40;Private;247880;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +21;Private;152246;Some-college;10;Never-married;Handlers-cleaners;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +23;Private;428299;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;161708;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +19;Private;167859;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +61;Private;85194;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;25;United-States;<=50K +47;Self-emp-inc;119471;7th-8th;4;Never-married;Craft-repair;Not-in-family;Other;Male;0;0;40;?;<=50K +39;Private;117683;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;427744;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;122116;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +34;State-gov;227931;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +54;Self-emp-not-inc;226497;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;83783;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;197113;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Other;Male;0;0;50;Puerto-Rico;<=50K +33;Private;204742;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +63;?;331527;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;14;United-States;<=50K +31;Private;213179;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +70;Self-emp-inc;188260;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;16;United-States;<=50K +43;Private;298161;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Nicaragua;<=50K +36;Private;143774;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;12;United-States;>50K +50;Local-gov;139296;11th;7;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;152389;Some-college;10;Never-married;Other-service;Not-in-family;Black;Female;0;0;30;United-States;<=50K +31;Private;309974;Some-college;10;Separated;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;?;37085;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +39;Private;270059;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +29;Private;130045;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +39;Private;188038;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;168203;7th-8th;4;Never-married;Farming-fishing;Other-relative;Other;Male;0;0;40;Mexico;<=50K +46;Private;171807;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +62;Private;186696;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;177531;10th;6;Divorced;Other-service;Unmarried;Black;Female;0;0;23;United-States;<=50K +28;Private;115464;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +19;Private;501144;Some-college;10;Never-married;Sales;Other-relative;Black;Female;0;0;40;United-States;<=50K +18;Private;205894;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;?;<=50K +24;Local-gov;203924;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;<=50K +38;Private;91857;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;<=50K +38;Private;229700;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +17;Private;158704;10th;6;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +28;Private;190911;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;139176;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;8;United-States;<=50K +19;Private;168693;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +26;Private;250038;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-inc;353927;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +21;Private;230248;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +43;Private;117728;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +52;Private;115851;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;193335;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;203894;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +55;State-gov;157639;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +46;Self-emp-inc;235320;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +36;Private;127686;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +39;Private;28572;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;48;United-States;<=50K +78;?;91534;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;3;United-States;<=50K +30;Private;184687;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Female;0;0;30;United-States;<=50K +22;Private;267945;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +43;Private;131899;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;192614;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;56;United-States;<=50K +36;Private;186808;Bachelors;13;Married-civ-spouse;Craft-repair;Own-child;White;Male;0;0;40;United-States;>50K +50;Private;44116;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Federal-gov;46442;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Federal-gov;78022;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +24;Private;417668;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;223763;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +68;Private;223851;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;24;United-States;<=50K +38;Local-gov;115634;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;114459;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +41;Private;197093;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;20;United-States;<=50K +31;Self-emp-not-inc;357145;Doctorate;16;Never-married;Prof-specialty;Own-child;White;Female;0;0;48;United-States;<=50K +29;Private;59231;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +26;Private;292303;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;122288;Some-college;10;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;36;United-States;<=50K +26;Federal-gov;52322;Bachelors;13;Never-married;Tech-support;Not-in-family;Other;Male;0;0;60;United-States;<=50K +27;Local-gov;105830;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +36;Private;107125;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +28;Federal-gov;281860;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;283320;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;State-gov;26598;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;220783;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +21;?;121694;7th-8th;4;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;208302;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;34;United-States;<=50K +34;Local-gov;172664;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;54611;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +64;Private;631947;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;394484;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;?;239120;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;13;United-States;<=50K +47;Local-gov;193012;Masters;14;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;50;United-States;>50K +57;Private;84888;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;188503;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +37;Private;337778;11th;7;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;94432;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;>50K +32;Private;168906;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;116143;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;128272;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;14;United-States;<=50K +46;Private;174995;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +24;State-gov;289909;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;154641;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +30;Private;203488;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +34;Private;141118;Masters;14;Divorced;Prof-specialty;Own-child;White;Female;0;0;60;United-States;>50K +30;Private;169589;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;137645;Bachelors;13;Never-married;Sales;Not-in-family;Black;Female;0;0;40;United-States;<=50K +58;Local-gov;489085;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +32;Private;36302;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;253420;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +35;Private;269300;HS-grad;9;Separated;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;282609;5th-6th;3;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;30;Honduras;<=50K +46;Private;346978;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;205051;10th;6;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;128736;10th;6;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;236110;12th;8;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Cuba;>50K +38;Private;312271;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +52;Private;126978;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;40;China;<=50K +47;Private;204692;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;195956;Bachelors;13;Divorced;Tech-support;Unmarried;White;Female;0;0;35;United-States;<=50K +59;State-gov;202682;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;231912;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;37;United-States;<=50K +44;Local-gov;24982;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +76;Private;278938;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +50;Local-gov;36489;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Local-gov;154874;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;74581;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +37;Self-emp-inc;162164;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;239708;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +49;Self-emp-not-inc;162856;Some-college;10;Divorced;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;85109;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;436798;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;345363;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;England;<=50K +36;Private;49837;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;?;296516;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +30;State-gov;180283;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;Local-gov;95639;HS-grad;9;Never-married;Craft-repair;Other-relative;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +42;Private;33155;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;329059;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Italy;>50K +55;Private;24694;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;443855;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +52;?;294691;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;301867;Some-college;10;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;35;United-States;<=50K +47;Private;362835;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +23;Private;180339;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;65;United-States;<=50K +55;Self-emp-inc;207489;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;50;Germany;<=50K +43;Private;336643;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +31;Private;143653;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +62;State-gov;101475;Assoc-acdm;12;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Local-gov;263871;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;8;United-States;<=50K +38;Self-emp-not-inc;77820;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;95465;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;42;United-States;<=50K +26;Private;257910;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;<=50K +26;Private;244372;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;52;United-States;>50K +37;Self-emp-not-inc;126738;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +61;Private;133164;7th-8th;4;Never-married;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +28;Self-emp-not-inc;104617;7th-8th;4;Never-married;Other-service;Other-relative;White;Female;0;0;99;Mexico;<=50K +51;Self-emp-inc;258735;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;81;United-States;<=50K +34;Private;182926;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;>50K +35;Private;166193;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +27;Local-gov;206125;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;346594;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;108301;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +32;Private;73498;7th-8th;4;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;129150;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;>50K +27;Private;181280;Masters;14;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;30;United-States;<=50K +40;Private;146908;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +43;Private;183765;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;?;>50K +25;Private;164488;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;307468;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;93884;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +52;Private;137658;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Dominican-Republic;<=50K +32;Private;101562;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +33;Private;136331;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;259846;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +48;Private;98719;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;44;United-States;<=50K +62;Self-emp-not-inc;168682;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;5;United-States;<=50K +40;Self-emp-not-inc;198953;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;Black;Female;0;0;2;United-States;<=50K +41;?;29115;Some-college;10;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +28;Private;173673;5th-6th;3;Never-married;Other-service;Not-in-family;White;Female;0;0;40;Mexico;<=50K +23;Private;67958;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +51;State-gov;94174;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +63;Self-emp-not-inc;122442;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;48;United-States;<=50K +63;Federal-gov;154675;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;116632;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +20;?;238685;11th;7;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;169031;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;237452;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;15;Cuba;>50K +41;Private;216968;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;?;<=50K +27;?;216479;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;24;United-States;>50K +20;State-gov;126822;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +35;Private;54953;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;222654;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;37676;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +57;Private;159319;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +28;Private;125321;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;209609;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +37;Private;224947;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;State-gov;438427;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +26;Self-emp-not-inc;384276;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;196805;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;65;United-States;<=50K +27;Private;242097;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;184306;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +45;Private;161954;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;Germany;<=50K +65;Private;258561;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +59;Private;212783;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +18;Private;205004;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;26;United-States;<=50K +44;Local-gov;387844;12th;8;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;83880;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;161155;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;265698;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +59;Self-emp-inc;146477;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +19;Private;97261;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;State-gov;437890;HS-grad;9;Never-married;Exec-managerial;Unmarried;Black;Male;0;0;90;United-States;<=50K +37;Private;126675;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;57;United-States;<=50K +31;Private;121768;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;Poland;<=50K +23;Private;180052;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;124454;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +36;Private;222584;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;22245;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Private;228960;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;132572;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +47;Private;103020;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;Other;Female;0;0;40;Puerto-Rico;<=50K +31;Local-gov;50649;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;Private;137698;5th-6th;3;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;0;0;35;Mexico;<=50K +48;Self-emp-inc;30575;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;>50K +56;Private;202220;Some-college;10;Separated;Tech-support;Unmarried;Black;Female;0;0;38;United-States;<=50K +50;Private;50178;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +17;Private;207791;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +50;Private;321770;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;202053;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;32;United-States;<=50K +34;Private;143699;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;15;United-States;<=50K +32;Self-emp-not-inc;115066;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +28;Private;223751;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +62;Self-emp-inc;354075;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;32732;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;15;United-States;<=50K +24;State-gov;390867;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +31;Private;101697;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +36;Private;279721;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;223400;Assoc-acdm;12;Married-civ-spouse;Priv-house-serv;Other-relative;White;Female;0;0;35;Poland;<=50K +46;?;206357;5th-6th;3;Married-civ-spouse;?;Wife;White;Female;0;0;40;Mexico;<=50K +39;Private;76417;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;?;184682;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;18;United-States;<=50K +21;Private;78170;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;42;United-States;<=50K +39;Private;201410;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;189013;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +33;Private;119913;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Private;549174;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +29;Local-gov;214706;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +30;?;33811;Bachelors;13;Married-civ-spouse;?;Wife;Other;Female;0;0;40;Taiwan;>50K +43;Private;234220;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;Cuba;<=50K +22;Private;237720;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;185942;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;>50K +69;Local-gov;286983;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;140027;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +18;?;115258;11th;7;Never-married;?;Own-child;White;Male;0;0;12;United-States;<=50K +54;Private;155408;HS-grad;9;Widowed;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +65;?;117963;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;45;United-States;<=50K +28;Private;158737;12th;8;Married-civ-spouse;Machine-op-inspct;Other-relative;Other;Male;0;0;40;Ecuador;<=50K +27;Local-gov;199471;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;0;0;38;United-States;<=50K +35;Private;287701;Assoc-acdm;12;Divorced;Craft-repair;Unmarried;White;Male;0;0;45;United-States;>50K +38;Private;137707;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +33;State-gov;108116;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;366900;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +56;Self-emp-inc;187355;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;60;Canada;>50K +38;Private;33105;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;70;United-States;>50K +26;Private;358975;Some-college;10;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;50;Hungary;<=50K +33;Private;199227;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +44;Private;248249;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;460437;9th;5;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;187294;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +44;Private;115932;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;27049;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;806552;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +27;Private;160786;11th;7;Separated;Craft-repair;Not-in-family;White;Male;0;0;45;Germany;<=50K +38;Private;219546;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +60;Private;24872;Some-college;10;Separated;Transport-moving;Not-in-family;Amer-Indian-Eskimo;Female;0;0;30;United-States;<=50K +24;Private;110371;12th;8;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;Mexico;<=50K +24;?;376474;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;304602;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +32;?;143699;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;238917;1st-4th;2;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;24;Mexico;<=50K +51;Private;200618;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;209752;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +37;Local-gov;98725;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;42;United-States;<=50K +37;Self-emp-not-inc;180150;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +66;Private;151227;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +18;?;118847;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;24;United-States;<=50K +46;Private;282538;Assoc-voc;11;Separated;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +52;Private;89534;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;291011;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +67;Private;166187;HS-grad;9;Widowed;Exec-managerial;Unmarried;White;Male;0;0;38;United-States;>50K +19;Private;188669;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +37;Private;178948;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +39;Self-emp-not-inc;160808;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +46;Private;318331;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;?;109921;HS-grad;9;Separated;?;Unmarried;Black;Female;0;0;32;United-States;<=50K +33;Private;87605;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +69;Self-emp-not-inc;89477;Some-college;10;Widowed;Farming-fishing;Not-in-family;White;Female;0;0;14;United-States;<=50K +21;Private;48301;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;220748;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;48;United-States;<=50K +39;Private;387068;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;Private;250743;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +26;Private;78258;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;36;United-States;<=50K +42;Private;31387;Doctorate;16;Married-spouse-absent;Prof-specialty;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +36;Private;289190;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;604537;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;Mexico;<=50K +35;Private;328466;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +42;Private;403187;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;220531;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;204648;Assoc-voc;11;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;?;109912;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;16;United-States;>50K +18;Private;365683;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +41;Private;175674;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +31;Private;203488;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;106406;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;125167;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +51;Private;249339;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;94652;Some-college;10;Never-married;Craft-repair;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +25;Private;130302;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +38;Private;66686;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +43;Private;336042;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;193586;Some-college;10;Separated;Farming-fishing;Other-relative;White;Female;0;0;40;United-States;<=50K +60;Local-gov;313852;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;25;United-States;<=50K +21;Local-gov;32639;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +18;Private;234953;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +43;Private;350379;5th-6th;3;Divorced;Priv-house-serv;Unmarried;White;Female;0;0;40;Mexico;<=50K +26;?;176967;11th;7;Never-married;?;Not-in-family;White;Female;0;0;65;United-States;<=50K +36;Private;36423;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;25;United-States;>50K +38;Private;130813;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;35236;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;<=50K +58;Private;33350;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +55;Private;177380;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;29;United-States;<=50K +39;Private;216129;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;35;Jamaica;<=50K +38;Private;335104;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +57;Self-emp-inc;165881;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +35;Local-gov;387777;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;<=50K +44;Self-emp-not-inc;149943;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;60;Taiwan;>50K +36;Private;188834;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;290661;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;114838;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;8;Italy;<=50K +54;Local-gov;168553;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;103064;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;123833;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +60;Federal-gov;55621;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +66;Local-gov;189834;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +36;Private;217926;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;50;United-States;<=50K +25;Private;194352;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;44;United-States;<=50K +62;?;54878;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +23;Private;393248;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;279315;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +33;Private;392812;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;>50K +49;Self-emp-inc;34998;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +57;Self-emp-inc;51016;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +57;Local-gov;132717;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;186078;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;45;United-States;<=50K +37;Self-emp-inc;196123;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +43;Self-emp-inc;304906;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +26;Private;41521;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +40;Private;346847;Assoc-voc;11;Separated;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +39;Self-emp-not-inc;107233;HS-grad;9;Never-married;Craft-repair;Other-relative;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +39;Private;150125;Assoc-acdm;12;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;400535;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;409622;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;36;Mexico;<=50K +27;Private;136448;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;202950;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Iran;<=50K +57;Private;237691;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +24;Private;170277;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Private;160784;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;Private;33798;12th;8;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;197838;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;223212;7th-8th;4;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +33;Private;125762;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;>50K +20;Private;283969;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;15;United-States;<=50K +25;Private;374163;12th;8;Married-civ-spouse;Farming-fishing;Husband;Other;Male;0;0;60;Mexico;<=50K +49;State-gov;118567;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;147655;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +45;Private;82797;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +36;Local-gov;142573;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +41;Private;235167;5th-6th;3;Married-spouse-absent;Priv-house-serv;Not-in-family;White;Female;0;0;32;Mexico;<=50K +47;Private;28035;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +41;Private;247082;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;123397;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Local-gov;133327;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;102270;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +64;?;45817;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;240988;9th;5;Married-civ-spouse;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +19;Private;386378;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +31;State-gov;350651;12th;8;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +18;State-gov;76142;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;8;United-States;<=50K +68;Private;73773;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;24;United-States;<=50K +50;?;281504;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +36;Local-gov;293358;Some-college;10;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;48;United-States;<=50K +44;Private;146906;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +58;Self-emp-not-inc;331474;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +20;Private;213719;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +18;Private;101795;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;228265;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;30;United-States;<=50K +49;Self-emp-not-inc;130206;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;324254;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;223019;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;189666;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;139086;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;359327;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;?;<=50K +44;Self-emp-not-inc;75065;12th;8;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;60;Vietnam;<=50K +55;Private;139843;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +54;Private;346014;Some-college;10;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;40;United-States;<=50K +52;Private;31460;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;38;United-States;<=50K +57;Self-emp-inc;33725;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +67;?;63552;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +58;State-gov;300623;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Local-gov;177072;Some-college;10;Never-married;Prof-specialty;Other-relative;White;Male;0;0;16;United-States;<=50K +66;?;37331;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +41;Private;167725;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;131180;11th;7;Never-married;Prof-specialty;Own-child;White;Female;0;0;16;United-States;<=50K +50;Private;275181;5th-6th;3;Divorced;Other-service;Not-in-family;White;Male;0;0;37;Cuba;<=50K +31;Private;398988;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;222654;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;111129;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +26;Self-emp-not-inc;137795;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +33;Local-gov;242150;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +35;State-gov;237873;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Private;367749;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Mexico;<=50K +26;Private;206600;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;Mexico;<=50K +48;Federal-gov;247043;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;187702;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Private;41718;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +37;Private;151835;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +18;Private;118938;11th;7;Never-married;Sales;Own-child;White;Male;0;0;18;United-States;<=50K +48;Private;224870;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;Other;Female;0;0;38;Ecuador;<=50K +45;Private;178341;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;61343;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;36989;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;226296;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;51;United-States;<=50K +29;Private;186624;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Cuba;<=50K +19;Private;172582;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +53;State-gov;227392;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;<=50K +49;Private;187563;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +71;Private;137499;HS-grad;9;Widowed;Sales;Other-relative;White;Female;0;0;16;United-States;<=50K +38;Private;239397;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;Mexico;<=50K +39;Local-gov;327164;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;140798;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Self-emp-inc;187450;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +52;Private;194580;5th-6th;3;Divorced;Farming-fishing;Unmarried;White;Male;0;0;40;United-States;<=50K +41;Private;372682;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +20;Private;235442;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +30;Private;128065;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;91545;10th;6;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;36;United-States;<=50K +26;Private;154604;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Federal-gov;192150;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Local-gov;216522;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;42;United-States;<=50K +24;Private;206861;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;97632;Some-college;10;Divorced;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;32;United-States;<=50K +27;Private;189530;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +57;Self-emp-inc;368797;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +21;State-gov;41183;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +50;Private;191062;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;132963;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +58;Private;153551;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +27;Self-emp-not-inc;66473;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;240323;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;17;United-States;<=50K +33;Self-emp-inc;128016;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;29526;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;18;United-States;<=50K +26;Private;342953;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +37;Private;215476;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;Black;Female;0;0;30;United-States;<=50K +53;Private;231919;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;52537;Some-college;10;Never-married;Tech-support;Not-in-family;Black;Male;0;0;38;United-States;<=50K +18;Private;27920;11th;7;Never-married;Exec-managerial;Own-child;White;Female;0;0;25;United-States;<=50K +53;Private;153052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;199303;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;233369;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Private;238913;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;46;United-States;>50K +28;Self-emp-not-inc;195607;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +37;Private;138441;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;67467;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;37202;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +47;Private;140219;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +18;Private;298860;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +22;Private;51362;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;16;United-States;<=50K +36;Private;199947;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +59;Self-emp-not-inc;32552;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +33;Private;183845;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;38;El-Salvador;<=50K +33;Private;181091;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;35;England;<=50K +53;Self-emp-inc;135643;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;50;South;<=50K +55;Private;181220;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +56;Private;133025;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +54;Self-emp-not-inc;124865;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +51;Private;45599;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;102180;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +44;Private;121130;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;138768;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;50;United-States;<=50K +43;State-gov;98989;HS-grad;9;Married-civ-spouse;Other-service;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +26;State-gov;126327;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Private;113364;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;18;United-States;<=50K +46;Private;376789;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;15;United-States;<=50K +27;Private;137063;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;279145;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +25;Self-emp-not-inc;245369;HS-grad;9;Separated;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +30;Federal-gov;49593;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +47;Private;166181;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;48;United-States;>50K +43;Private;156403;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +71;?;128529;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +46;?;148489;HS-grad;9;Married-spouse-absent;?;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +44;Local-gov;387770;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;15;United-States;<=50K +42;Private;115511;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;220585;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;Private;280966;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +26;Private;291586;Bachelors;13;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;142227;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +17;?;104025;11th;7;Never-married;?;Own-child;White;Male;0;0;18;United-States;<=50K +45;Local-gov;148254;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +54;Private;170562;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +22;Private;222490;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +63;Local-gov;57674;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +22;Private;233624;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +27;Private;42734;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +33;Private;233107;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;33;Mexico;<=50K +64;Private;143110;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +50;Private;195844;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +44;Self-emp-not-inc;115896;Assoc-voc;11;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;303851;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;172475;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +53;Self-emp-not-inc;30008;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +33;Local-gov;147921;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Federal-gov;172716;12th;8;Married-civ-spouse;Armed-Forces;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;155057;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +80;Self-emp-not-inc;132728;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;20;United-States;<=50K +31;Private;195136;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +40;Private;377322;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +53;Local-gov;293941;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;182123;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;<=50K +38;Private;32528;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;140206;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;Local-gov;378221;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Mexico;>50K +23;Private;211601;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;119411;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +52;Self-emp-not-inc;240013;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +24;Private;95552;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;183710;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;189382;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +52;Private;380633;5th-6th;3;Widowed;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +54;Private;53407;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;150480;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +40;Private;175674;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +28;Private;375313;HS-grad;9;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;0;50;United-States;<=50K +21;?;278391;Some-college;10;Never-married;?;Own-child;White;Male;0;0;16;United-States;<=50K +23;Private;212888;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Self-emp-inc;487085;7th-8th;4;Never-married;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +22;Private;174461;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +55;Local-gov;133201;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +71;Private;77253;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;17;United-States;<=50K +47;Private;141511;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +17;Self-emp-inc;181608;10th;6;Never-married;Sales;Own-child;White;Male;0;0;12;United-States;<=50K +31;Private;127610;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +32;Private;154571;Some-college;10;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;40;?;<=50K +27;Private;150080;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;151294;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;48;United-States;<=50K +17;Private;193769;9th;5;Never-married;Other-service;Unmarried;White;Male;0;0;20;United-States;<=50K +33;Private;277455;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +72;Private;225780;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Federal-gov;436341;Some-college;10;Married-AF-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +65;Private;255386;HS-grad;9;Never-married;Craft-repair;Other-relative;Asian-Pac-Islander;Male;0;0;40;Cambodia;<=50K +32;Private;174789;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;245628;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;Mexico;<=50K +22;Private;228752;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;192900;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;190391;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +38;Private;353263;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;Italy;>50K +34;Private;113198;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;28;United-States;<=50K +44;Private;207578;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +27;Private;93206;Some-college;10;Never-married;Handlers-cleaners;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +50;Local-gov;163998;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;44;United-States;>50K +47;Private;111961;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;30;United-States;<=50K +20;Private;219122;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;111445;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;38;United-States;<=50K +29;Federal-gov;309778;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +37;Local-gov;223020;Assoc-voc;11;Never-married;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +42;Private;303155;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;?;41035;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +68;Private;159191;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Local-gov;244408;Some-college;10;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +72;Self-emp-not-inc;473748;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +45;Federal-gov;71823;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;20;United-States;<=50K +30;Local-gov;83066;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +33;Private;150154;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;190786;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +25;Self-emp-not-inc;159909;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;190885;HS-grad;9;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;40;Guatemala;<=50K +25;Private;243786;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;37;United-States;<=50K +31;State-gov;124020;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +36;Private;159016;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;38;United-States;<=50K +37;Private;183800;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +58;Self-emp-not-inc;193434;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +26;Private;245029;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +55;Private;98746;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;Canada;>50K +46;Federal-gov;140664;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +44;Private;169980;11th;7;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;60;United-States;<=50K +28;State-gov;155397;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +42;Private;245317;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;74182;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;280570;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +64;Self-emp-not-inc;30664;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +20;Private;109952;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +45;Local-gov;192793;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +31;Private;243442;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +36;Federal-gov;106297;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Private;328060;9th;5;Separated;Other-service;Unmarried;Other;Female;0;0;40;Mexico;<=50K +33;Self-emp-not-inc;48702;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +36;Private;484024;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;208470;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;29927;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;England;<=50K +46;Private;98012;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;108468;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +26;Private;168403;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;66935;Bachelors;13;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;42044;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;184806;Prof-school;15;Never-married;Prof-specialty;Other-relative;White;Male;0;0;50;United-States;<=50K +39;Private;1455435;Assoc-acdm;12;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;445382;Some-college;10;Divorced;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +37;Private;278576;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;>50K +79;Self-emp-not-inc;84979;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;>50K +36;Private;659504;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;45;United-States;>50K +44;Private;136986;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +27;Private;96219;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +58;Private;205410;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;416745;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;48;United-States;<=50K +21;Private;72119;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +49;Federal-gov;195949;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;101345;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +29;Private;439263;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;35;Peru;<=50K +63;Private;213095;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +29;Federal-gov;59932;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;172815;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;40915;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +42;Private;139012;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;>50K +44;Private;121781;Some-college;10;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;37;United-States;<=50K +51;?;130667;HS-grad;9;Separated;?;Not-in-family;Black;Male;0;0;6;United-States;<=50K +41;Self-emp-not-inc;147110;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;25;United-States;<=50K +22;Local-gov;237811;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;Black;Female;0;0;35;Haiti;<=50K +36;?;128640;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;25;United-States;<=50K +18;Private;111476;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +33;Local-gov;289716;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;141944;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +49;Private;323773;11th;7;Married-civ-spouse;Priv-house-serv;Other-relative;White;Female;0;0;40;United-States;<=50K +41;State-gov;176663;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +52;Private;155233;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;143327;Some-college;10;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Federal-gov;177212;Some-college;10;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;123088;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +30;Local-gov;47085;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;102106;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;235894;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +71;Self-emp-not-inc;172046;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +20;Self-emp-not-inc;197207;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +26;Private;152452;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;172928;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +36;?;214896;9th;5;Divorced;?;Unmarried;White;Female;0;0;40;Mexico;<=50K +22;Private;59924;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;95128;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;292504;Some-college;10;Married-spouse-absent;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Self-emp-inc;45796;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +52;State-gov;104280;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +57;Private;172291;HS-grad;9;Divorced;Adm-clerical;Other-relative;Black;Female;0;0;40;United-States;<=50K +35;Private;180988;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;39;United-States;<=50K +52;Private;110748;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +59;?;556688;9th;5;Divorced;?;Not-in-family;White;Female;0;0;12;United-States;<=50K +36;Private;22494;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;267859;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Cuba;>50K +67;Local-gov;256821;HS-grad;9;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;20;United-States;<=50K +31;Self-emp-not-inc;117346;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +31;Private;62374;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;314659;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;42;United-States;<=50K +72;?;114761;7th-8th;4;Widowed;?;Unmarried;White;Female;0;0;20;United-States;<=50K +36;Private;93225;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;165315;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +56;Private;124771;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;27408;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;198841;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +44;Private;271792;Bachelors;13;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;64289;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;183390;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;234919;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;El-Salvador;<=50K +20;Private;88231;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;154422;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +37;Private;119098;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +54;Private;118793;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +32;?;30499;Bachelors;13;Divorced;?;Unmarried;White;Female;0;0;32;United-States;<=50K +43;State-gov;308498;HS-grad;9;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +48;Private;172695;Assoc-voc;11;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;29962;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +62;Private;200332;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;291702;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;67234;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +45;Private;168038;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;32;United-States;<=50K +34;Private;137814;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +64;Private;126233;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +42;Self-emp-not-inc;79036;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +60;Self-emp-not-inc;327474;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +44;Private;145160;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;58;United-States;<=50K +67;?;37092;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;4;United-States;<=50K +45;Private;129387;Assoc-acdm;12;Divorced;Tech-support;Unmarried;White;Female;0;0;40;?;<=50K +53;Self-emp-not-inc;33304;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +32;?;143162;10th;6;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;133515;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +28;Private;168901;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +55;Private;750972;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;<=50K +58;Private;142924;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;24;United-States;>50K +27;Private;91189;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;290609;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +22;?;31102;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;4;South;<=50K +44;Self-emp-not-inc;216921;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;70;United-States;<=50K +23;Private;120046;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;324629;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Yugoslavia;<=50K +45;Private;81132;Some-college;10;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;55;United-States;>50K +29;Private;160279;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +33;Private;229732;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;>50K +22;Private;160398;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;38;United-States;<=50K +28;Private;129460;9th;5;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;El-Salvador;<=50K +30;Private;252752;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +20;Private;58222;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +28;?;424884;10th;6;Separated;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +45;Private;114459;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +19;?;46400;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;24;United-States;<=50K +42;Private;223934;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;84119;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;159123;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +23;Private;195532;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;191299;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;198316;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +57;Private;162301;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +24;Private;92609;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;45;United-States;<=50K +27;Private;247819;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;15;United-States;<=50K +27;Local-gov;229223;Some-college;10;Never-married;Protective-serv;Own-child;White;Female;0;0;40;United-States;>50K +45;Self-emp-inc;142719;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +80;Private;86111;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +23;State-gov;35633;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +46;Private;164749;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;607848;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +50;Private;173630;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +90;Private;311184;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;?;<=50K +55;Private;49737;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +72;Private;183616;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;England;<=50K +65;Private;129426;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;454915;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;State-gov;55568;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +38;Private;29874;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;143953;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +54;Private;90363;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;53727;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +50;Private;173630;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +28;Private;410351;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Private;399386;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;53;United-States;<=50K +55;Private;157932;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;133061;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +19;?;46400;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;32;United-States;<=50K +21;Private;107895;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;35;United-States;<=50K +39;Private;63021;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +43;Private;186144;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;27959;HS-grad;9;Never-married;Other-service;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +26;Private;179569;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;State-gov;101299;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;State-gov;113129;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;65;United-States;<=50K +32;Private;316470;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;Mexico;<=50K +60;Self-emp-not-inc;89884;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;32121;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +21;Private;315303;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;20;United-States;<=50K +27;Private;254500;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;36;United-States;<=50K +33;Private;419895;5th-6th;3;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;40;Mexico;<=50K +43;Private;159549;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Self-emp-not-inc;258474;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +48;Self-emp-not-inc;370119;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Private;50837;7th-8th;4;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +58;Private;137506;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;183594;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +26;Private;341353;Bachelors;13;Never-married;Other-service;Other-relative;White;Male;0;0;15;United-States;<=50K +34;Private;193565;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;39606;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +51;Self-emp-not-inc;127149;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;>50K +31;?;233371;HS-grad;9;Married-civ-spouse;?;Wife;Black;Female;0;0;45;United-States;<=50K +49;Self-emp-not-inc;182752;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;>50K +26;Private;269060;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;179949;HS-grad;9;Divorced;Transport-moving;Unmarried;Black;Female;0;0;20;United-States;<=50K +26;Private;160445;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;314539;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +62;?;337721;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +42;Local-gov;100793;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +39;Federal-gov;255407;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Federal-gov;92775;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;33308;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;70;United-States;<=50K +68;State-gov;493363;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +30;?;159589;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;46;United-States;>50K +32;Private;107218;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +25;Private;123586;Some-college;10;Never-married;Adm-clerical;Unmarried;Other;Male;0;0;40;United-States;<=50K +53;Private;158352;5th-6th;3;Married-civ-spouse;Other-service;Other-relative;White;Female;0;0;24;Italy;<=50K +38;Private;76317;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +62;?;176753;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;122346;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;463194;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;162228;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +43;State-gov;115005;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;State-gov;183285;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;36;United-States;<=50K +34;Private;169605;10th;6;Separated;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +24;Private;450695;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +44;Local-gov;124692;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +19;Private;63918;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;102569;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +40;Private;289309;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;48;United-States;<=50K +45;Private;101825;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +43;Private;206833;HS-grad;9;Separated;Handlers-cleaners;Unmarried;Black;Female;0;0;45;United-States;<=50K +22;?;77873;9th;5;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +72;?;194548;Some-college;10;Married-spouse-absent;?;Not-in-family;White;Male;0;0;3;United-States;<=50K +29;Private;206351;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;198200;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Private;140001;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;35;El-Salvador;<=50K +22;?;287988;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;15;United-States;<=50K +21;Private;143604;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +74;Self-emp-not-inc;192413;Prof-school;15;Divorced;Prof-specialty;Other-relative;White;Male;0;0;40;United-States;<=50K +27;Private;104917;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Local-gov;161478;Bachelors;13;Divorced;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;46;United-States;<=50K +30;Private;35644;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +29;Local-gov;116751;Assoc-voc;11;Divorced;Protective-serv;Unmarried;White;Male;0;0;56;United-States;<=50K +39;State-gov;179668;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;70;United-States;<=50K +21;Private;57951;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +31;Private;176711;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;38;United-States;<=50K +33;Local-gov;368675;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;216149;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;>50K +29;Private;173851;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;State-gov;216342;Bachelors;13;Widowed;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;<=50K +35;Private;140752;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +33;Private;116508;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;?;224361;9th;5;Divorced;?;Unmarried;White;Female;0;0;5;Cuba;<=50K +43;Private;180303;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +66;?;196736;1st-4th;2;Never-married;?;Not-in-family;Black;Male;0;0;30;United-States;<=50K +51;Local-gov;110327;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;185607;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +17;Local-gov;244856;11th;7;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;198068;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;97136;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Self-emp-inc;164658;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;60;United-States;<=50K +54;Private;235693;11th;7;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +45;Private;197038;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +47;Local-gov;97419;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +32;Private;205528;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Self-emp-inc;146042;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +39;Self-emp-inc;222641;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Self-emp-inc;376936;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +42;Local-gov;138077;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;38;United-States;>50K +24;Private;155913;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;<=50K +45;Private;36006;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +19;Private;214678;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +46;Private;369538;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +50;Private;166565;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;257043;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;42;United-States;<=50K +43;Self-emp-not-inc;38876;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;187073;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +90;Private;313749;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;10;United-States;<=50K +41;Private;331651;Prof-school;15;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;Japan;>50K +24;Private;243368;Preschool;1;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;36;Mexico;<=50K +24;Private;32921;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +24;Private;117167;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;53;United-States;<=50K +30;Private;114691;Bachelors;13;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +46;Private;99385;Bachelors;13;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;252327;9th;5;Separated;Craft-repair;Own-child;White;Male;0;0;35;Mexico;<=50K +43;Private;90582;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;190194;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;264188;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;24;United-States;<=50K +34;Private;243776;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +41;Private;67065;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +24;Self-emp-not-inc;204209;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;60;United-States;<=50K +24;Private;226668;HS-grad;9;Never-married;Other-service;Not-in-family;Amer-Indian-Eskimo;Male;0;0;35;United-States;<=50K +33;Private;315143;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Cuba;>50K +37;Private;118681;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;38;Puerto-Rico;<=50K +39;Self-emp-not-inc;208109;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +58;Private;116901;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +36;Self-emp-not-inc;405644;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Mexico;<=50K +42;Local-gov;328581;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +31;Private;217962;Some-college;10;Never-married;Protective-serv;Other-relative;Black;Male;0;0;40;?;<=50K +57;Private;158827;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +67;Federal-gov;65475;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +23;Private;159709;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;140474;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +43;Private;144778;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;Italy;>50K +39;Self-emp-not-inc;83242;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +36;Private;143385;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Local-gov;167544;Assoc-acdm;12;Divorced;Other-service;Unmarried;White;Female;0;0;13;United-States;<=50K +25;Private;122175;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +54;Private;378747;10th;6;Separated;Transport-moving;Unmarried;Black;Male;0;0;45;United-States;>50K +24;Private;230475;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +50;Self-emp-inc;120781;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;60;South;>50K +70;Private;206232;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +38;Self-emp-not-inc;140583;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +51;Private;137253;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +28;Private;246974;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +66;Self-emp-not-inc;182470;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;>50K +57;Self-emp-inc;107617;HS-grad;9;Separated;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;>50K +44;Self-emp-inc;116358;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;50;?;>50K +29;Private;250819;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;196508;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +42;Private;367533;10th;6;Married-civ-spouse;Craft-repair;Own-child;Other;Male;0;0;43;United-States;>50K +50;Private;271160;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;173674;HS-grad;9;Divorced;Other-service;Other-relative;White;Female;0;0;14;United-States;<=50K +64;?;257790;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;38;United-States;<=50K +44;Private;322391;11th;7;Separated;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +17;Private;104232;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +17;?;86786;10th;6;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +43;Private;88233;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;240888;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;129240;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;160968;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +34;Private;236861;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;109282;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +32;Private;215047;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;115932;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;Ireland;>50K +28;Private;55360;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +44;Private;224658;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +29;Local-gov;376302;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;35;Nicaragua;>50K +37;Private;115289;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-inc;258883;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;69132;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;207301;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;20;United-States;<=50K +37;Private;179671;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +66;Self-emp-not-inc;140456;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +19;Private;327397;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Male;0;0;30;United-States;<=50K +60;Private;200235;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;195978;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;Private;329144;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;>50K +48;Self-emp-inc;250674;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +57;?;176897;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +50;Self-emp-inc;132716;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Germany;>50K +62;Private;174201;9th;5;Widowed;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +45;Private;167617;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +55;Local-gov;254949;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;319582;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;32;United-States;<=50K +25;Private;248990;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Guatemala;<=50K +49;Private;144396;11th;7;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +25;Federal-gov;55636;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +39;Private;185624;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +27;Local-gov;125442;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;160943;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;>50K +30;Private;243841;HS-grad;9;Divorced;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;40;South;<=50K +21;Private;34616;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +33;Private;235847;Prof-school;15;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +33;Private;174789;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Private;280111;11th;7;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +70;Private;236055;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +25;Private;237865;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;42;United-States;<=50K +17;Private;194612;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +20;Private;173851;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;372483;Some-college;10;Never-married;Other-service;Other-relative;Black;Male;0;0;35;United-States;<=50K +31;Private;174201;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;272618;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +52;Private;74660;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;201481;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;175232;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;336440;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;46645;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;9;United-States;<=50K +53;Private;281425;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +30;Self-emp-not-inc;31510;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +44;Private;310255;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +32;Federal-gov;82393;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;56;United-States;>50K +59;Self-emp-not-inc;190514;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +49;Private;165513;Some-college;10;Divorced;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;226696;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +44;Private;165815;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;123983;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;55;Japan;>50K +36;Private;235371;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;147258;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +29;Private;255949;Bachelors;13;Never-married;Sales;Unmarried;Black;Male;0;0;40;United-States;<=50K +52;Private;186272;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;111676;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;199501;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;38;United-States;<=50K +24;Private;151443;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Black;Female;0;0;30;United-States;<=50K +31;Private;145935;HS-grad;9;Never-married;Exec-managerial;Own-child;Black;Male;0;0;40;United-States;<=50K +54;Federal-gov;230387;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +44;Private;127592;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;210828;Some-college;10;Never-married;Handlers-cleaners;Own-child;Other;Male;0;0;30;United-States;<=50K +41;Private;297186;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;40;United-States;<=50K +37;Self-emp-inc;116554;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;70;United-States;<=50K +30;Private;144593;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;?;<=50K +26;State-gov;147719;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;20;India;<=50K +68;Self-emp-not-inc;89011;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;Canada;<=50K +31;Private;38158;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;178686;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +80;?;172826;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +26;Private;155752;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +63;Private;100099;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;231688;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +30;?;147215;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +42;Self-emp-inc;50122;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +64;Federal-gov;86837;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +32;Private;113364;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;289390;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;47;United-States;<=50K +73;Private;77884;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +32;Private;390157;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +58;Private;234328;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;410439;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;15;United-States;<=50K +53;Private;129525;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;166527;Some-college;10;Never-married;Exec-managerial;Own-child;Other;Female;0;0;40;United-States;<=50K +42;?;109912;Assoc-acdm;12;Never-married;?;Other-relative;White;Female;0;0;40;United-States;<=50K +30;Private;210906;HS-grad;9;Married-civ-spouse;Exec-managerial;Other-relative;White;Female;0;0;40;United-States;<=50K +38;Private;405284;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +28;Private;138269;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;25429;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +45;Private;231672;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +26;Private;258550;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;268147;9th;5;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;54411;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;?;<=50K +54;Private;37289;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;55;United-States;>50K +23;Private;157951;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Self-emp-inc;225165;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +37;Private;238049;9th;5;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;30;El-Salvador;<=50K +31;Private;197252;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +25;Private;183575;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;19752;11th;7;Never-married;Other-service;Own-child;Black;Female;0;0;25;United-States;<=50K +37;Private;103925;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;68;United-States;<=50K +60;Private;31577;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +59;Federal-gov;61298;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +59;Federal-gov;190541;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;?;389857;HS-grad;9;Married-civ-spouse;?;Other-relative;White;Male;0;0;16;United-States;<=50K +33;?;192644;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;67482;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;99;United-States;<=50K +29;?;108775;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;Dominican-Republic;<=50K +23;State-gov;279243;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;278391;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;Nicaragua;<=50K +60;Private;349898;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;44;United-States;<=50K +44;Private;219441;10th;6;Never-married;Sales;Unmarried;Other;Female;0;0;35;Dominican-Republic;<=50K +52;Federal-gov;29623;12th;8;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;217460;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +30;Private;163604;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;55;United-States;>50K +20;Private;238685;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +27;?;251854;Bachelors;13;Married-civ-spouse;?;Wife;Black;Female;0;0;35;?;>50K +33;Private;213308;Assoc-voc;11;Separated;Adm-clerical;Own-child;Black;Female;0;0;50;United-States;<=50K +25;Private;193773;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +63;Private;114011;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Female;0;0;20;United-States;<=50K +63;Self-emp-not-inc;52144;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +43;Private;347934;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +58;Private;293399;11th;7;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +70;?;118630;Assoc-voc;11;Widowed;?;Unmarried;White;Female;0;0;35;United-States;<=50K +42;Private;366180;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +20;Local-gov;188950;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;25;United-States;<=50K +35;Private;189382;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Private;24515;9th;5;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;182217;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;<=50K +19;Private;552354;12th;8;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;163021;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;183092;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +48;Private;30289;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +29;Private;77572;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +36;Private;469056;HS-grad;9;Divorced;Sales;Unmarried;Black;Female;0;0;25;United-States;<=50K +58;Private;145574;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;302041;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +59;Private;32552;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;4;United-States;<=50K +42;Private;185413;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;Federal-gov;26543;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +23;Federal-gov;163870;Some-college;10;Never-married;Armed-Forces;Other-relative;White;Male;0;0;40;United-States;<=50K +21;Private;240063;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +48;Private;208748;5th-6th;3;Divorced;Machine-op-inspct;Unmarried;Other;Female;0;0;40;Dominican-Republic;<=50K +32;Local-gov;84119;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;84130;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +66;Local-gov;261062;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Local-gov;336010;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;32;United-States;<=50K +52;Private;389270;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +17;Private;138293;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +35;Private;240389;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;43;United-States;>50K +21;?;170070;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;10;United-States;<=50K +24;Private;149457;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;81534;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;84;Japan;>50K +29;Federal-gov;196912;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;80933;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +64;Local-gov;190660;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +27;Private;120155;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;39;United-States;<=50K +44;Federal-gov;161240;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;126402;HS-grad;9;Never-married;Farming-fishing;Not-in-family;Black;Female;0;0;60;United-States;<=50K +23;Private;148709;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;35;United-States;<=50K +31;Local-gov;80058;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;64;United-States;<=50K +45;Private;274689;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +42;Private;157367;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;35;?;<=50K +33;Private;217460;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;33727;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;166961;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +25;Private;146117;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;42;United-States;<=50K +33;Private;160216;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;32;?;<=50K +22;Private;50163;9th;5;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;235271;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +43;Self-emp-not-inc;144218;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;94334;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;25;United-States;<=50K +51;Self-emp-not-inc;35295;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;45;United-States;<=50K +36;Private;35429;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +73;Local-gov;205580;5th-6th;3;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;6;United-States;<=50K +32;Local-gov;177794;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;167474;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +51;Local-gov;35211;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +20;Private;117244;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;45;United-States;<=50K +57;Private;194850;Some-college;10;Married-civ-spouse;Other-service;Husband;Other;Male;0;0;40;Mexico;<=50K +19;Private;144911;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +55;Private;101338;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +60;Private;148522;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +19;Private;97261;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;166606;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;229414;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +34;Local-gov;209213;Bachelors;13;Never-married;Prof-specialty;Other-relative;Black;Male;0;0;15;United-States;<=50K +27;Private;302406;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +37;Self-emp-not-inc;29054;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;84;United-States;<=50K +73;Self-emp-not-inc;336007;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Local-gov;101481;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;46704;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +49;Private;233639;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +68;Local-gov;31725;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;293512;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +28;Private;375655;Bachelors;13;Never-married;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +28;Private;105817;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Local-gov;203408;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;162302;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +40;Private;163455;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;55;United-States;>50K +32;Local-gov;100135;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +60;?;41517;11th;7;Married-spouse-absent;?;Unmarried;Black;Female;0;0;20;United-States;<=50K +18;Private;102182;12th;8;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;30;United-States;<=50K +36;Private;414683;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +26;Private;194352;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;194096;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Female;0;0;45;United-States;<=50K +20;Private;215495;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Mexico;<=50K +27;Private;164607;Bachelors;13;Separated;Tech-support;Own-child;White;Male;0;0;50;United-States;<=50K +58;Local-gov;34878;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +28;Private;22422;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Local-gov;178222;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +45;Local-gov;56841;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;300275;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +69;Local-gov;197288;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +58;Self-emp-not-inc;157786;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;110684;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +58;Self-emp-not-inc;140729;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +53;Federal-gov;90127;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +44;Self-emp-inc;37997;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;61308;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;171199;Bachelors;13;Divorced;Machine-op-inspct;Unmarried;Other;Female;0;0;40;Puerto-Rico;<=50K +48;Private;128432;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;Federal-gov;195023;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;171888;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Self-emp-inc;183784;10th;6;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +20;Private;219262;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;71379;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +19;?;234519;Some-college;10;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +35;Private;96824;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;242597;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;127388;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;204536;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +54;Private;143804;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;80680;Some-college;10;Married-civ-spouse;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +36;Private;301227;5th-6th;3;Separated;Priv-house-serv;Unmarried;Other;Female;0;0;35;Mexico;<=50K +26;Self-emp-not-inc;201930;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +25;Local-gov;176616;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;353219;9th;5;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;126076;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Female;0;0;50;United-States;<=50K +31;Private;156493;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +48;Federal-gov;435503;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +52;Self-emp-inc;561489;Masters;14;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;50;United-States;<=50K +22;Federal-gov;100345;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;43;United-States;<=50K +18;Private;36275;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;25;United-States;<=50K +46;Private;110794;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Local-gov;143766;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +30;Federal-gov;76313;HS-grad;9;Married-civ-spouse;Armed-Forces;Other-relative;Amer-Indian-Eskimo;Male;0;0;48;United-States;<=50K +31;Private;121308;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;216672;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;State-gov;158291;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;455361;9th;5;Never-married;Other-service;Unmarried;White;Male;0;0;35;Mexico;<=50K +54;Private;225307;11th;7;Divorced;Craft-repair;Own-child;White;Female;0;0;50;United-States;>50K +36;Private;286115;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +50;Private;187830;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +26;Private;142506;Bachelors;13;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;35;United-States;<=50K +47;Local-gov;148576;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +36;Private;185325;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;37;United-States;<=50K +32;Self-emp-not-inc;27939;Some-college;10;Married-civ-spouse;Sales;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +21;Private;383603;10th;6;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Private;140790;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +34;Private;226629;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;Mexico;<=50K +51;Private;228516;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;45;Columbia;<=50K +55;Self-emp-not-inc;119762;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;299197;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;149297;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +28;Local-gov;202558;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;175232;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +35;Self-emp-not-inc;157473;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;?;409842;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +26;Private;105787;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;36;United-States;<=50K +21;Private;205838;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;37;United-States;<=50K +23;Private;115326;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +17;Private;186890;10th;6;Married-civ-spouse;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +23;Local-gov;304386;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;24529;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Male;0;0;15;United-States;<=50K +33;Private;183557;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;342730;Assoc-acdm;12;Separated;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +56;Self-emp-not-inc;67841;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;351381;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;190027;10th;6;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;30;United-States;<=50K +41;Private;343944;11th;7;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Self-emp-inc;110457;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +47;State-gov;72333;HS-grad;9;Divorced;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;193494;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +35;Private;334999;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +44;Self-emp-not-inc;274363;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +44;Private;187720;Assoc-voc;11;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +57;Private;104996;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;42;United-States;<=50K +24;Private;214555;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;52963;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +25;Private;75821;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;123291;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;84;United-States;>50K +50;Local-gov;226497;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;>50K +36;Private;166549;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;55;United-States;>50K +27;Private;187746;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;157145;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +30;Private;227551;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +90;Private;115306;Masters;14;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;169249;HS-grad;9;Separated;Other-service;Other-relative;Black;Male;0;0;40;United-States;<=50K +34;State-gov;221966;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +39;Private;224566;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +19;Private;28119;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;4;United-States;<=50K +19;Private;323810;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;210498;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;161141;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +44;Private;210534;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +34;Self-emp-not-inc;112650;7th-8th;4;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;State-gov;318891;Assoc-acdm;12;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Local-gov;375655;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;228465;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +33;?;102130;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;34037;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;116613;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;50;United-States;<=50K +25;Private;175540;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Private;176634;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;35;United-States;>50K +36;Private;209993;1st-4th;2;Widowed;Other-service;Other-relative;White;Female;0;0;20;Mexico;<=50K +25;Local-gov;206002;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;201259;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +26;Local-gov;202286;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +36;Local-gov;578377;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +53;Local-gov;324021;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;107737;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +41;State-gov;129865;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +53;Private;103586;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;55;United-States;<=50K +23;Private;187513;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;32;United-States;<=50K +28;Private;172891;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +53;Local-gov;207449;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;209103;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;>50K +33;Private;408813;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;Private;209292;HS-grad;9;Never-married;Sales;Other-relative;Black;Female;0;0;32;Dominican-Republic;<=50K +31;Private;209538;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;55;United-States;<=50K +27;Private;244402;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +37;Self-emp-not-inc;298444;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;163237;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +18;Private;311795;12th;8;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +42;Private;155972;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +49;Private;291783;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;153535;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;Black;Female;0;0;36;United-States;<=50K +43;Private;249771;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;99;United-States;<=50K +31;Private;308540;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Private;34701;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Federal-gov;106252;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;138944;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +37;Private;140713;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;Jamaica;>50K +26;Private;162312;Some-college;10;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;20;Philippines;<=50K +59;Self-emp-inc;253062;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +36;Federal-gov;359249;Some-college;10;Separated;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;231413;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +53;Local-gov;197054;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +26;Private;130931;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +35;Private;30565;HS-grad;9;Married-AF-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +48;Private;105138;HS-grad;9;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +30;Local-gov;178383;Some-college;10;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;196403;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;10;United-States;>50K +44;Private;232421;HS-grad;9;Married-spouse-absent;Transport-moving;Not-in-family;Other;Male;0;0;32;Canada;<=50K +30;Private;130369;Assoc-voc;11;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +68;Self-emp-not-inc;336329;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;10;United-States;<=50K +26;Local-gov;337867;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +26;Local-gov;104614;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;223548;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +48;Private;64479;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;47;United-States;<=50K +55;Private;284095;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;37;United-States;<=50K +50;Self-emp-not-inc;221336;Some-college;10;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;?;<=50K +52;Private;208302;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;36;United-States;<=50K +24;?;412156;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;40;Mexico;<=50K +54;Local-gov;129972;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;>50K +31;Self-emp-not-inc;186420;Masters;14;Separated;Tech-support;Not-in-family;White;Female;0;0;25;United-States;<=50K +31;Self-emp-inc;203488;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +47;Private;128796;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;55395;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +46;State-gov;314770;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +45;Private;135044;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;319248;10th;6;Never-married;Other-service;Unmarried;White;Female;0;0;25;Mexico;<=50K +34;Local-gov;236415;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;18;United-States;<=50K +19;?;133983;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +56;Private;81220;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;Canada;<=50K +47;Private;151087;HS-grad;9;Separated;Prof-specialty;Other-relative;Other;Female;0;0;40;Puerto-Rico;<=50K +35;Private;322171;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +25;Private;190628;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Columbia;<=50K +43;Local-gov;106982;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Private;227856;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;37;United-States;>50K +66;?;213477;7th-8th;4;Divorced;?;Not-in-family;White;Male;0;0;10;United-States;<=50K +63;Private;266083;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +32;Private;257068;Some-college;10;Married-spouse-absent;Transport-moving;Not-in-family;White;Female;0;0;37;United-States;<=50K +58;?;37591;Bachelors;13;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;150533;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;0;0;50;United-States;>50K +27;Private;211184;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;52;United-States;<=50K +21;Private;136610;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;32;United-States;<=50K +44;Federal-gov;244054;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;60;United-States;>50K +40;Self-emp-not-inc;240698;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +65;Private;172906;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Private;238959;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +18;?;163085;HS-grad;9;Separated;?;Own-child;White;Male;0;0;20;United-States;<=50K +51;State-gov;172022;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +44;Federal-gov;218062;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;Private;201799;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;13;United-States;<=50K +29;Private;150717;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;94391;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +43;Private;156771;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;216639;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;82161;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;?;159159;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;30;United-States;<=50K +58;Self-emp-not-inc;310014;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +50;State-gov;133014;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;36214;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;>50K +21;Private;399022;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;24;United-States;<=50K +33;Private;179758;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;20;United-States;<=50K +52;Private;48947;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +47;Private;201865;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;155151;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;24106;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Philippines;>50K +31;Private;257863;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +19;?;28967;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;379393;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;45;United-States;<=50K +45;Self-emp-not-inc;152752;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;3;United-States;<=50K +27;Private;154210;11th;7;Married-spouse-absent;Sales;Own-child;Asian-Pac-Islander;Male;0;0;35;India;<=50K +37;Private;335716;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;94744;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +24;Private;240137;1st-4th;2;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;55;Mexico;<=50K +39;Private;80004;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;109702;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +62;Self-emp-not-inc;39610;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +24;Private;90046;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;193855;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;206889;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +44;Private;86298;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;323139;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +44;Private;237993;Prof-school;15;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;?;<=50K +24;Private;36058;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +61;Private;163393;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +45;Local-gov;93535;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;112952;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;48;United-States;<=50K +26;Local-gov;73392;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +40;?;507086;HS-grad;9;Divorced;?;Not-in-family;Black;Female;0;0;32;United-States;<=50K +25;?;39901;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +31;Local-gov;33124;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +55;Private;419732;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +46;Private;171095;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Female;0;0;38;United-States;<=50K +58;Private;199278;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;38;United-States;<=50K +56;Private;235205;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Federal-gov;168232;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;55;United-States;>50K +24;Private;145964;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;>50K +35;Local-gov;72338;HS-grad;9;Divorced;Farming-fishing;Own-child;Asian-Pac-Islander;Male;0;0;56;United-States;<=50K +51;Private;153870;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +17;Private;198830;11th;7;Never-married;Adm-clerical;Other-relative;White;Female;0;0;10;United-States;<=50K +21;Private;267040;10th;6;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Private;167187;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +56;Private;659558;12th;8;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Private;181661;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;186144;7th-8th;4;Never-married;Machine-op-inspct;Not-in-family;Other;Female;0;0;40;Mexico;<=50K +20;Federal-gov;178517;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;57233;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;379798;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;122175;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +38;Private;107302;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +33;Self-emp-not-inc;102884;Bachelors;13;Married-civ-spouse;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +49;Self-emp-not-inc;241753;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;173611;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;232666;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;352207;Assoc-voc;11;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +37;Self-emp-not-inc;241998;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;5;United-States;>50K +52;Private;279129;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;37;United-States;>50K +27;Private;177057;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;251603;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Federal-gov;19914;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;Philippines;>50K +61;Private;115023;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +32;Private;101709;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +21;Private;313702;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;Private;250068;12th;8;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +34;Private;227359;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;42;United-States;<=50K +21;State-gov;196827;Assoc-acdm;12;Never-married;Tech-support;Own-child;White;Male;0;0;10;United-States;<=50K +44;Private;118550;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;33;United-States;<=50K +26;Private;285004;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;35;South;<=50K +36;Private;280169;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +39;Private;144608;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;?;>50K +52;Private;76860;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Asian-Pac-Islander;Male;0;0;8;Philippines;<=50K +44;Self-emp-not-inc;167280;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;334783;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +60;?;141580;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +31;Private;226443;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;366065;Some-college;10;Never-married;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +23;Private;225724;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;25;United-States;<=50K +81;State-gov;132204;1st-4th;2;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +38;Private;197711;10th;6;Divorced;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Portugal;<=50K +21;Private;30619;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +28;Local-gov;335015;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;61272;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;106544;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;144169;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;40295;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;99;United-States;<=50K +57;Private;143030;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;30;?;<=50K +42;State-gov;192397;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +43;Private;114351;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +48;?;63466;HS-grad;9;Married-spouse-absent;?;Unmarried;White;Female;0;0;32;United-States;<=50K +53;Private;132304;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Scotland;<=50K +58;Private;128162;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;24;United-States;<=50K +19;Private;125938;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;40;El-Salvador;<=50K +37;Private;170174;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;46;United-States;>50K +41;Self-emp-not-inc;203451;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;15;United-States;<=50K +31;Private;109917;7th-8th;4;Separated;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;114937;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +53;Local-gov;231196;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;238474;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +56;Private;314149;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +55;Federal-gov;31728;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +51;Private;360131;5th-6th;3;Married-civ-spouse;Craft-repair;Other-relative;White;Female;0;0;40;United-States;<=50K +62;Private;141308;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;83411;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +45;?;119835;7th-8th;4;Divorced;?;Not-in-family;Amer-Indian-Eskimo;Male;0;0;48;United-States;<=50K +28;Local-gov;296537;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;193047;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +62;State-gov;39630;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +57;Local-gov;213975;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +60;Local-gov;259803;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +23;Federal-gov;55465;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;211301;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;8;United-States;<=50K +51;Private;200450;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;<=50K +61;Local-gov;176731;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +76;Private;125784;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;152176;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;39;United-States;<=50K +31;Self-emp-not-inc;111423;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +58;Federal-gov;30111;Some-college;10;Widowed;Prof-specialty;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +19;Private;272800;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +44;Private;195881;Some-college;10;Divorced;Exec-managerial;Other-relative;White;Female;0;0;45;United-States;<=50K +41;Local-gov;170924;Some-college;10;Never-married;Prof-specialty;Other-relative;White;Male;0;0;7;United-States;<=50K +21;Private;131473;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;20;Vietnam;<=50K +40;Private;149466;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;Black;Male;0;0;35;United-States;<=50K +25;Private;190418;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;Canada;<=50K +62;Local-gov;167889;Doctorate;16;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;Iran;<=50K +42;Private;177989;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;186035;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;195805;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +60;Private;54800;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +20;Private;100605;HS-grad;9;Never-married;Sales;Own-child;Other;Male;0;0;40;Puerto-Rico;<=50K +23;Private;253190;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;25;United-States;<=50K +18;Private;203301;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;175696;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +19;Private;278304;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +51;Private;93193;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Local-gov;158688;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;327612;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;210844;Some-college;10;Married-spouse-absent;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;147340;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +71;Self-emp-not-inc;130436;1st-4th;2;Divorced;Craft-repair;Not-in-family;White;Female;0;0;28;United-States;<=50K +25;Private;206600;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;El-Salvador;<=50K +73;Private;284680;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +45;Private;127738;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;213412;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +50;Private;287927;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;16;United-States;<=50K +44;Private;249332;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Ecuador;<=50K +44;Local-gov;290403;Assoc-voc;11;Divorced;Protective-serv;Own-child;White;Female;0;0;40;Cuba;<=50K +42;Federal-gov;178470;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;62865;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;45;United-States;<=50K +66;Private;107196;HS-grad;9;Widowed;Tech-support;Not-in-family;White;Female;0;0;18;United-States;<=50K +19;Private;86860;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;15;United-States;<=50K +60;Private;130684;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +46;Private;164682;Assoc-voc;11;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;198316;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +59;Private;261816;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;52;Outlying-US(Guam-USVI-etc);<=50K +47;Private;97176;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Private;95835;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;36;United-States;<=50K +17;?;280670;10th;6;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;136306;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;24;United-States;<=50K +28;Private;65171;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;70;United-States;<=50K +37;Private;25864;HS-grad;9;Separated;Prof-specialty;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +30;Private;149531;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;33887;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;106748;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;99;United-States;<=50K +45;Private;131826;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;133328;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;164737;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Local-gov;99064;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;State-gov;59460;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;<=50K +27;Private;208725;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;138513;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;121055;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;149784;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;114495;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;?;133278;12th;8;Separated;?;Unmarried;Black;Female;0;0;53;United-States;<=50K +32;Private;212276;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +32;Private;440129;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;38;Mexico;<=50K +27;Private;145284;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;177147;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;141537;10th;6;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;48093;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;92;United-States;<=50K +23;Local-gov;314819;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;123572;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +19;Private;170800;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;60;United-States;<=50K +42;Private;332401;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;193038;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;15;United-States;<=50K +45;Federal-gov;106910;HS-grad;9;Never-married;Transport-moving;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +67;?;163726;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;49;United-States;<=50K +36;Self-emp-not-inc;609935;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;48;?;<=50K +52;State-gov;314627;Masters;14;Divorced;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +28;Private;115945;Doctorate;16;Never-married;Adm-clerical;Own-child;White;Male;0;0;18;United-States;<=50K +83;Self-emp-inc;272248;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +17;Private;167878;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +27;Private;176972;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;31095;Assoc-voc;11;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +40;Private;130834;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;207415;Assoc-acdm;12;Married-civ-spouse;Sales;Wife;White;Female;0;0;25;United-States;<=50K +51;Local-gov;264457;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +51;Private;340588;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;54;Mexico;<=50K +82;?;42435;10th;6;Widowed;?;Not-in-family;White;Male;0;0;20;United-States;<=50K +28;Private;107411;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +53;Private;290640;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;Germany;>50K +29;Private;106179;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;Canada;<=50K +19;Private;247679;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +30;Private;171598;Bachelors;13;Married-spouse-absent;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +23;Private;234460;7th-8th;4;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;Dominican-Republic;<=50K +66;Private;196674;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;>50K +27;Private;182540;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;172694;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +17;Private;29571;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +27;Private;130438;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;213421;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +64;Private;133144;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;16;United-States;<=50K +62;Self-emp-inc;24050;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +26;Private;276967;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;184857;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;145160;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +35;Private;192251;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;190650;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +52;Local-gov;255927;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;24;United-States;<=50K +46;Private;99086;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +30;Private;216811;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +52;Private;110563;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;120471;HS-grad;9;Never-married;Transport-moving;Not-in-family;Other;Male;0;0;40;United-States;<=50K +17;Private;183066;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +46;State-gov;298786;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +45;Private;297884;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +18;Self-emp-not-inc;207438;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +90;Private;139660;Some-college;10;Divorced;Sales;Unmarried;Black;Female;0;0;37;United-States;<=50K +23;Private;165474;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;120277;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +19;Self-emp-not-inc;67929;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +69;Private;229418;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +23;Federal-gov;41356;Assoc-acdm;12;Never-married;Exec-managerial;Unmarried;White;Female;0;0;32;United-States;<=50K +28;Private;185127;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;54;United-States;<=50K +57;Private;148315;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +73;Private;198526;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;0;32;United-States;<=50K +25;Private;521400;5th-6th;3;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Mexico;<=50K +33;Private;100882;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +36;Private;124818;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;71367;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;303032;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;?;98989;9th;5;Divorced;?;Own-child;Amer-Indian-Eskimo;Male;0;0;38;United-States;<=50K +40;State-gov;390781;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;48;United-States;<=50K +32;Private;54782;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +35;?;202683;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;213081;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;Jamaica;<=50K +27;Self-emp-inc;89718;Some-college;10;Separated;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;253262;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;78181;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +20;Private;158206;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +69;?;337720;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +18;State-gov;391257;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;134756;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;Private;183404;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;8;United-States;<=50K +46;Private;192793;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;203943;12th;8;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;?;<=50K +53;Private;89400;Some-college;10;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Private;237868;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;139187;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +40;Private;126701;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +54;Self-emp-inc;172175;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +45;Private;164210;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Local-gov;608184;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +17;?;198797;11th;7;Never-married;?;Own-child;White;Male;0;0;20;Peru;<=50K +50;Local-gov;425804;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +22;?;117618;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;25;United-States;<=50K +30;Private;119164;Bachelors;13;Never-married;Other-service;Unmarried;White;Male;0;0;40;?;<=50K +40;Self-emp-inc;92036;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;77146;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Self-emp-not-inc;191803;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;54932;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;251694;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +22;Private;268145;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;104842;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;50;Haiti;<=50K +60;Local-gov;227332;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +53;Private;133436;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;State-gov;309055;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +18;Private;59202;HS-grad;9;Never-married;Priv-house-serv;Other-relative;White;Female;0;0;10;United-States;<=50K +31;Private;117963;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;60;United-States;<=50K +26;Private;169121;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +18;Private;308889;11th;7;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +45;Local-gov;144940;Masters;14;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +64;Private;102041;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;335998;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +53;Private;29557;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;210313;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;28;Guatemala;<=50K +32;Private;190784;Some-college;10;Divorced;Machine-op-inspct;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +59;Private;97168;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +61;Self-emp-not-inc;181033;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +41;?;344572;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +46;State-gov;170165;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +32;Private;178835;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;118230;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +48;Private;149640;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;30271;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;30;United-States;<=50K +21;Private;154165;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;35;United-States;<=50K +50;Self-emp-not-inc;341797;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +44;Local-gov;145246;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +51;Private;280093;HS-grad;9;Separated;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +42;Private;373469;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Private;199172;Bachelors;13;Never-married;Protective-serv;Own-child;White;Female;0;0;40;United-States;<=50K +70;Self-emp-not-inc;177199;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;3;United-States;<=50K +33;Private;258932;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;258037;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;?;<=50K +32;Private;116677;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;59496;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;34218;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;200246;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +64;Federal-gov;316246;Bachelors;13;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +37;Local-gov;239161;Some-college;10;Separated;Protective-serv;Own-child;Other;Male;0;0;52;United-States;<=50K +49;Self-emp-not-inc;173411;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;259226;11th;7;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;48;United-States;<=50K +35;Local-gov;195516;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;State-gov;160369;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +21;?;415913;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;147253;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Local-gov;199674;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;State-gov;198493;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +23;Private;377121;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +21;Private;400635;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;?;<=50K +45;Private;513660;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;?;175069;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;?;78388;10th;6;Never-married;?;Own-child;White;Female;0;0;38;United-States;<=50K +23;Private;171705;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +39;Self-emp-not-inc;315640;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;60;Iran;<=50K +68;Private;192829;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;43;United-States;<=50K +41;Private;327606;12th;8;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;Private;34845;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;58582;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;155659;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Local-gov;210029;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +26;Private;381618;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +35;State-gov;226789;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;75;United-States;<=50K +46;State-gov;111163;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +72;?;76860;HS-grad;9;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;1;United-States;<=50K +18;Private;92112;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +62;Local-gov;136787;HS-grad;9;Divorced;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +22;Private;29810;Some-college;10;Never-married;Transport-moving;Own-child;White;Female;0;0;30;United-States;<=50K +26;Private;266022;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;142874;Assoc-acdm;12;Married-spouse-absent;Sales;Own-child;Black;Female;0;0;36;United-States;<=50K +25;Self-emp-not-inc;72338;HS-grad;9;Never-married;Sales;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +46;?;177305;Assoc-voc;11;Married-civ-spouse;?;Wife;Black;Female;0;0;35;United-States;>50K +41;Private;424478;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;45;United-States;>50K +59;Private;189721;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Italy;>50K +37;Private;34180;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;183279;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +33;Private;35309;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;40;?;<=50K +23;Private;259109;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;Puerto-Rico;<=50K +39;Self-emp-inc;172538;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +26;Private;322547;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +39;Private;300760;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;50;United-States;<=50K +28;Private;232782;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;174645;11th;7;Divorced;Craft-repair;Unmarried;White;Female;0;0;52;United-States;<=50K +43;Private;164693;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;206861;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;25;United-States;<=50K +33;Self-emp-not-inc;422960;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;60;United-States;>50K +45;Private;116360;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +48;Private;278530;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;163948;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +63;Private;64544;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;>50K +22;Private;107882;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;35;United-States;<=50K +32;Self-emp-not-inc;182691;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;60;United-States;<=50K +27;Private;203776;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +22;Private;201268;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +44;Private;29762;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;68;United-States;<=50K +34;Private;186346;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;196690;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;194772;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +17;Private;95446;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +53;Self-emp-not-inc;257126;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +58;Private;194733;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;98361;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +44;Local-gov;124924;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +40;Self-emp-not-inc;111971;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +58;Self-emp-not-inc;130714;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;208358;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;Private;164870;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +37;Private;220314;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;Mexico;<=50K +58;Local-gov;318537;12th;8;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;183284;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +46;Private;109227;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;70;United-States;<=50K +34;Private;118551;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Self-emp-inc;163057;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;99;United-States;<=50K +61;Self-emp-inc;253101;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +30;Self-emp-not-inc;20098;Assoc-voc;11;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;196227;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;175374;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;234037;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;58;United-States;<=50K +47;Private;341762;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;33;United-States;<=50K +20;Private;174714;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;222835;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +46;Private;251786;1st-4th;2;Separated;Other-service;Not-in-family;White;Female;0;0;40;Mexico;<=50K +20;Private;164219;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +30;Private;236993;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +43;Local-gov;105896;Some-college;10;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;211527;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;60;United-States;<=50K +34;Private;317809;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;?;>50K +25;Private;185287;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;31014;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +44;Private;151985;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;24;United-States;>50K +26;Private;89389;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;406051;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;80;United-States;>50K +48;Self-emp-not-inc;171986;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;15;United-States;<=50K +26;Private;167848;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +41;Local-gov;213019;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;211424;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;168981;Assoc-voc;11;Never-married;Prof-specialty;Unmarried;White;Female;0;0;55;United-States;<=50K +24;Private;122348;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +31;Private;139753;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Local-gov;176178;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Female;0;0;2;United-States;<=50K +41;Private;145220;9th;5;Never-married;Priv-house-serv;Unmarried;White;Female;0;0;40;Columbia;<=50K +38;Local-gov;188612;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;445728;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;318002;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;235722;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;?;367984;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +67;Private;212705;Masters;14;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +49;Private;411273;10th;6;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;103986;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +44;Private;203761;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +22;Private;116800;Assoc-acdm;12;Never-married;Protective-serv;Own-child;White;Male;0;0;60;United-States;<=50K +21;State-gov;99199;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;10;United-States;<=50K +50;Private;162327;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +44;Local-gov;100479;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +36;Local-gov;32587;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +52;Private;108914;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +35;Self-emp-not-inc;61343;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;90;United-States;<=50K +48;Local-gov;81154;Assoc-voc;11;Never-married;Protective-serv;Unmarried;White;Male;0;0;48;United-States;<=50K +37;Private;225504;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +44;Private;176063;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +36;Private;198587;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;State-gov;34965;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;12;United-States;<=50K +31;Self-emp-inc;467108;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +23;?;263899;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;12;England;<=50K +29;Private;204984;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +53;Private;217568;HS-grad;9;Widowed;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +52;Private;48343;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;253354;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +19;?;258026;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;16;United-States;<=50K +64;?;211360;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +55;Private;191367;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;148995;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +20;Private;123901;HS-grad;9;Never-married;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;32356;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;51;United-States;<=50K +17;Private;206506;10th;6;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;10;El-Salvador;<=50K +38;Private;218729;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +43;Private;52498;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +22;Private;136767;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +63;Private;219540;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;114059;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;247337;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;State-gov;310969;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +41;Private;171546;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +41;Private;217455;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;410489;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Private;146391;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +46;Local-gov;165484;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +23;Private;184271;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +46;Self-emp-not-inc;231347;Some-college;10;Separated;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +47;Private;244025;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Amer-Indian-Eskimo;Male;0;0;56;Puerto-Rico;<=50K +46;Federal-gov;46537;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;205730;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;>50K +32;Private;328199;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +90;Private;84553;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;221072;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;49;?;<=50K +23;Private;123983;Assoc-voc;11;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +76;?;191024;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +23;Private;167868;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;225879;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Other;Female;0;0;30;Mexico;>50K +17;Private;143791;10th;6;Never-married;Other-service;Own-child;Black;Female;0;0;12;United-States;<=50K +56;Private;177271;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +58;Federal-gov;129786;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;31339;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +25;Private;236267;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;130620;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;35;Philippines;>50K +32;Private;208180;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;24;United-States;>50K +25;Private;292058;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;30;United-States;<=50K +29;Federal-gov;142712;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +23;Private;119665;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;60;United-States;<=50K +41;Private;116825;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +48;State-gov;201177;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +29;Private;118337;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +27;?;173800;Masters;14;Never-married;?;Unmarried;Asian-Pac-Islander;Male;0;0;20;Taiwan;<=50K +55;Private;289257;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;140581;Some-college;10;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +50;Private;174102;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;Puerto-Rico;<=50K +22;Private;316509;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +80;Local-gov;20101;HS-grad;9;Widowed;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;32;United-States;<=50K +30;Private;187279;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;44;United-States;<=50K +20;Private;259496;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +29;Self-emp-not-inc;181466;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +56;Private;178202;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;188976;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;203027;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +38;State-gov;142022;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +31;Private;119033;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;216181;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +47;Private;178341;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;46;United-States;>50K +25;Local-gov;244408;Bachelors;13;Never-married;Tech-support;Unmarried;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +31;Private;198953;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +28;Private;173110;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;66326;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;99;United-States;<=50K +30;Local-gov;181091;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;133929;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;36;?;<=50K +26;Private;86483;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;167787;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +43;Private;216697;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Other;Male;0;0;32;United-States;<=50K +32;Local-gov;118457;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;<=50K +20;Private;298635;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;30;Philippines;<=50K +21;Local-gov;212780;12th;8;Never-married;Handlers-cleaners;Unmarried;Black;Female;0;0;20;United-States;<=50K +32;Private;159187;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;237995;Assoc-voc;11;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;48;United-States;<=50K +45;Private;160724;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +54;?;185936;9th;5;Divorced;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +24;Private;161198;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;25;United-States;<=50K +28;?;113635;11th;7;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +23;Private;214542;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +54;?;172991;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;203761;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +38;Private;161141;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +71;Private;180117;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;317396;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;237868;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Male;0;0;5;United-States;<=50K +30;Private;323069;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;309122;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;40024;11th;7;Never-married;Transport-moving;Not-in-family;White;Male;0;0;42;United-States;<=50K +24;State-gov;184216;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +29;?;256211;1st-4th;2;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +55;Private;205422;10th;6;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;<=50K +43;Local-gov;196308;HS-grad;9;Divorced;Exec-managerial;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +28;Private;389713;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;82566;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +47;Private;199058;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +47;Private;160440;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +47;Private;76034;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;57;United-States;>50K +60;Self-emp-not-inc;92845;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;29083;HS-grad;9;Never-married;Sales;Own-child;Amer-Indian-Eskimo;Female;0;0;25;United-States;<=50K +22;Private;234474;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;25;United-States;<=50K +55;Local-gov;107308;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +44;Private;111891;Some-college;10;Separated;Sales;Other-relative;Black;Female;0;0;35;United-States;<=50K +28;Federal-gov;188278;Bachelors;13;Never-married;Protective-serv;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Local-gov;303485;Some-college;10;Never-married;Transport-moving;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Local-gov;67187;HS-grad;9;Never-married;Exec-managerial;Own-child;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +43;State-gov;114508;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;204172;Bachelors;13;Never-married;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +27;Local-gov;162973;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;56;United-States;<=50K +64;Self-emp-not-inc;192695;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;Canada;<=50K +41;Local-gov;89172;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +28;Private;163320;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +61;Private;128230;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +27;Private;246440;11th;7;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;50567;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +20;Private;117476;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Local-gov;214881;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;195516;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;218653;Bachelors;13;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;164647;Some-college;10;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;38;United-States;<=50K +19;Private;129151;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;319697;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;193374;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;167864;Assoc-voc;11;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;197932;Some-college;10;Separated;Priv-house-serv;Not-in-family;White;Female;0;0;30;Guatemala;<=50K +51;Private;102904;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;43;United-States;<=50K +44;Private;216907;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;37;United-States;<=50K +35;Local-gov;331395;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;42;United-States;<=50K +40;Private;171424;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;35406;7th-8th;4;Separated;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +25;Private;238964;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +22;Private;340543;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;70240;Some-college;10;Married-civ-spouse;Sales;Wife;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +18;Self-emp-not-inc;87169;HS-grad;9;Never-married;Farming-fishing;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +43;Private;253759;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;45;United-States;<=50K +46;Private;194431;HS-grad;9;Never-married;Tech-support;Other-relative;White;Male;0;0;40;United-States;<=50K +40;?;170649;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +59;Private;182460;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +40;Local-gov;26929;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;399022;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +64;?;50171;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +36;Private;218490;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +48;Private;164423;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;124436;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +18;Private;60981;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +17;Private;70868;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;16;United-States;<=50K +36;Private;150601;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;?;<=50K +53;Private;228500;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +36;State-gov;76767;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;39;United-States;<=50K +20;Private;218178;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;615367;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +34;Private;150324;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;51264;11th;7;Divorced;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +57;Private;197642;Some-college;10;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;229895;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;167415;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +51;Private;166934;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +38;Private;305597;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Private;301591;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;35;United-States;<=50K +47;Federal-gov;229646;HS-grad;9;Married-spouse-absent;Adm-clerical;Not-in-family;Black;Female;0;0;40;Puerto-Rico;<=50K +28;Self-emp-not-inc;51461;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;206600;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;24;Nicaragua;<=50K +25;Private;176836;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +50;Private;33304;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +43;Private;174051;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +32;Private;170017;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;98466;10th;6;Never-married;Farming-fishing;Unmarried;White;Male;0;0;35;United-States;<=50K +19;Private;188864;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;20;United-States;<=50K +53;Self-emp-inc;137815;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +21;Private;43475;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;557236;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;171215;Masters;14;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +49;?;52590;HS-grad;9;Never-married;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +24;Private;183751;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +30;Private;149507;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;42;United-States;<=50K +49;Private;98092;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;123714;11th;7;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;State-gov;190385;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;37;United-States;<=50K +51;Private;334273;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;343440;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;208302;HS-grad;9;Divorced;Other-service;Other-relative;White;Male;0;0;30;United-States;<=50K +23;Local-gov;280164;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;32;United-States;<=50K +23;Self-emp-not-inc;174714;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +36;Private;184655;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +19;Private;140459;11th;7;Never-married;Craft-repair;Other-relative;White;Male;0;0;25;United-States;<=50K +53;Self-emp-not-inc;108815;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +17;Private;152652;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +69;Private;269499;HS-grad;9;Widowed;Handlers-cleaners;Not-in-family;White;Female;0;0;8;United-States;<=50K +46;Local-gov;33373;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;243674;HS-grad;9;Separated;Tech-support;Not-in-family;White;Male;0;0;46;United-States;<=50K +40;Private;225432;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;215839;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;?;<=50K +29;Local-gov;195520;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;70092;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +22;Private;189888;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +28;Private;64307;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;94235;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;<=50K +35;Private;62333;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;260997;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +17;Private;146268;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +39;Private;147258;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;207948;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +50;Private;180607;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +56;Local-gov;104996;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +80;Self-emp-not-inc;562336;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +38;Self-emp-not-inc;334366;Some-college;10;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;15;United-States;<=50K +52;State-gov;142757;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +26;Local-gov;220656;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Male;0;0;38;England;<=50K +43;Private;96483;HS-grad;9;Divorced;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;40;South;<=50K +45;Private;51744;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;42;United-States;<=50K +41;Self-emp-inc;114967;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +30;Private;393965;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +43;Local-gov;143046;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +44;Private;209174;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +54;Private;183248;HS-grad;9;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;427474;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +18;Private;338632;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +38;Private;89559;Some-college;10;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;Germany;<=50K +41;Self-emp-not-inc;32533;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +22;?;255969;12th;8;Never-married;?;Not-in-family;White;Male;0;0;48;United-States;<=50K +66;Self-emp-inc;112376;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +70;?;346053;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;44915;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;10;United-States;<=50K +24;Local-gov;111450;10th;6;Never-married;Craft-repair;Unmarried;Black;Male;0;0;65;Haiti;<=50K +61;Private;171429;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +35;Local-gov;190964;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;109005;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +52;Private;404453;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Self-emp-not-inc;163204;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;192256;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +52;Private;181755;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;183105;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;44;Cuba;<=50K +37;Private;335168;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +38;Local-gov;86643;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +27;Private;180262;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;127865;Masters;14;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Self-emp-not-inc;102110;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;30;United-States;>50K +38;Private;152237;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;?;>50K +22;Private;202745;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;55;United-States;<=50K +40;Federal-gov;199303;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;266467;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Federal-gov;345259;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;99;United-States;<=50K +24;Private;204935;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;56;United-States;<=50K +24;Private;190457;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +43;Private;180138;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +38;Private;166585;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +42;Private;29962;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;191129;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;378707;10th;6;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +48;Private;240629;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +40;Private;233320;7th-8th;4;Separated;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +57;Private;29375;HS-grad;9;Separated;Sales;Not-in-family;Amer-Indian-Eskimo;Female;0;0;35;United-States;<=50K +36;Local-gov;137314;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +41;Private;140886;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +90;Private;226968;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +66;Private;151793;7th-8th;4;Widowed;Other-service;Not-in-family;Black;Female;0;0;10;United-States;<=50K +23;Private;72887;HS-grad;9;Never-married;Craft-repair;Own-child;Asian-Pac-Islander;Male;0;0;1;Vietnam;<=50K +35;Private;261646;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;55;United-States;<=50K +33;Private;295589;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;50;United-States;>50K +32;Self-emp-inc;377836;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;56510;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;337696;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;183765;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;107846;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Local-gov;22641;HS-grad;9;Never-married;Protective-serv;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +35;Private;204590;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;>50K +29;Private;114801;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;190591;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +33;State-gov;220066;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;48;United-States;>50K +22;?;228480;HS-grad;9;Married-civ-spouse;?;Own-child;White;Female;0;0;20;United-States;<=50K +52;Private;128378;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;157595;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Local-gov;152171;11th;7;Never-married;Protective-serv;Own-child;White;Male;0;0;10;United-States;<=50K +63;Private;339755;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;?;>50K +49;Private;240841;7th-8th;4;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +58;Private;94345;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +23;Self-emp-not-inc;289116;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +59;Private;176647;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +49;Self-emp-not-inc;79627;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;Local-gov;210781;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +17;?;161981;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;493443;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +64;Private;312242;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;3;United-States;<=50K +34;Private;185408;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +63;Private;101077;Assoc-acdm;12;Married-spouse-absent;Adm-clerical;Other-relative;White;Female;0;0;35;United-States;<=50K +51;Private;147200;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;State-gov;166327;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;35;United-States;<=50K +55;Private;178644;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +35;Private;126675;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;46;?;<=50K +30;Private;158420;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;25;United-States;<=50K +47;?;83046;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;18;United-States;<=50K +29;Private;46609;10th;6;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;?;<=50K +17;?;170320;11th;7;Never-married;?;Own-child;White;Female;0;0;8;United-States;<=50K +55;Private;141877;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;81654;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;56;United-States;>50K +50;Private;177705;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;129497;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +60;Private;114413;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +53;Private;189511;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;246431;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +31;Private;147654;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;443546;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;281751;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +28;Private;263128;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +26;Private;292692;12th;8;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +47;Self-emp-inc;96798;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;>50K +34;Private;430554;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +42;Private;317078;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;207400;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Private;187089;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;42;United-States;>50K +38;Private;238980;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +49;?;407495;HS-grad;9;Married-spouse-absent;?;Not-in-family;White;Male;0;0;70;United-States;<=50K +35;Private;183800;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +45;Private;287190;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;Black;Male;0;0;35;United-States;<=50K +31;Private;111363;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Self-emp-inc;260938;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +20;Private;183594;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +64;?;49194;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +20;?;117618;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;172496;Masters;14;Never-married;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;389713;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;174413;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;State-gov;189843;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;198546;Masters;14;Widowed;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +21;Private;82497;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +23;Private;193090;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +55;Private;208451;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;?;234277;HS-grad;9;Married-spouse-absent;?;Not-in-family;White;Male;0;0;35;United-States;<=50K +37;Private;434097;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;State-gov;178628;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;96827;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Canada;<=50K +34;Private;154667;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;160246;Some-college;10;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +24;Self-emp-not-inc;166036;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +23;Private;186813;HS-grad;9;Never-married;Protective-serv;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +29;Private;162312;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;Other;Male;0;0;40;United-States;<=50K +58;Private;183893;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +40;Private;111829;Masters;14;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +43;Federal-gov;175669;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +25;State-gov;104097;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Local-gov;117618;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;24;United-States;<=50K +34;Self-emp-inc;202450;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;109570;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +60;Private;101096;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;65;United-States;>50K +39;Private;236391;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +21;Private;136975;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;240979;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;248612;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;>50K +29;?;153167;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +52;Private;61735;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;243165;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;>50K +24;Private;388885;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;48;United-States;<=50K +34;Self-emp-not-inc;87209;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +53;Self-emp-not-inc;168539;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +31;Private;179013;HS-grad;9;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Private;196643;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +32;Private;156464;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;35884;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;182714;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +77;Private;344425;9th;5;Married-civ-spouse;Priv-house-serv;Wife;Black;Female;0;0;10;United-States;<=50K +37;Self-emp-not-inc;177277;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;70767;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;520078;Assoc-acdm;12;Divorced;Sales;Unmarried;Black;Male;0;0;60;United-States;<=50K +53;Local-gov;321770;HS-grad;9;Married-spouse-absent;Transport-moving;Other-relative;White;Female;0;0;35;United-States;<=50K +32;Private;158416;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;312667;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;31481;Bachelors;13;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;24;United-States;<=50K +31;Private;259531;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;186239;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;162954;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +27;Private;249315;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +21;Private;308237;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +24;Private;103064;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;185847;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;54;United-States;<=50K +31;Private;168521;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;198170;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +21;Private;353628;10th;6;Separated;Sales;Unmarried;Black;Female;0;0;38;United-States;<=50K +38;?;273285;11th;7;Never-married;?;Not-in-family;White;Female;0;0;32;United-States;<=50K +31;Private;272069;Assoc-voc;11;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;22328;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +46;Private;309212;HS-grad;9;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;25;United-States;<=50K +25;Self-emp-inc;148888;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +23;Local-gov;324637;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +53;Self-emp-inc;55139;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +45;Private;252079;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +70;Private;315868;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Private;126832;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +18;Private;126071;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;265706;Masters;14;Never-married;Sales;Unmarried;White;Male;0;0;60;United-States;>50K +41;Private;282964;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;328518;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;State-gov;283499;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;286675;Some-college;10;Never-married;Exec-managerial;Other-relative;White;Male;0;0;40;United-States;<=50K +56;Private;136472;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;48;United-States;<=50K +36;Private;132879;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Male;0;0;45;United-States;<=50K +26;Private;314798;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +62;Private;143943;Bachelors;13;Widowed;Tech-support;Unmarried;White;Female;0;0;7;United-States;<=50K +35;Private;134367;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Local-gov;366796;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;195573;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;33616;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +31;Private;164190;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;380281;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;25;Columbia;<=50K +58;Self-emp-inc;190763;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +55;Local-gov;209535;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +54;Private;156003;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;198790;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;30;United-States;<=50K +27;Private;236481;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;10;India;<=50K +55;Private;143266;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Male;0;0;25;United-States;<=50K +53;Private;192386;HS-grad;9;Separated;Transport-moving;Unmarried;White;Male;0;0;45;United-States;<=50K +23;Private;99543;12th;8;Never-married;Transport-moving;Not-in-family;White;Male;0;0;46;United-States;<=50K +66;Private;169435;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Male;0;0;16;United-States;<=50K +34;Self-emp-not-inc;34572;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +39;Private;119272;10th;6;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;211601;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +26;Private;154785;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;Other;Female;0;0;35;United-States;<=50K +21;Private;213041;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Cuba;<=50K +59;Private;229939;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;175331;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;226443;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +22;Private;46561;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;161311;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;30;United-States;<=50K +50;Private;98215;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Local-gov;181242;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;356238;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Female;0;0;80;United-States;>50K +28;Private;315287;HS-grad;9;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;40;?;<=50K +63;Private;34098;10th;6;Widowed;Farming-fishing;Unmarried;White;Female;0;0;56;United-States;<=50K +48;Private;50880;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Germany;<=50K +41;Federal-gov;356934;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +26;Private;276309;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Female;0;0;20;United-States;<=50K +29;Self-emp-not-inc;164607;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;224462;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;92863;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +27;Private;179565;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;37;United-States;<=50K +59;Self-emp-not-inc;31137;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +19;Private;199495;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;175262;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +37;Private;220585;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Local-gov;231793;Doctorate;16;Married-spouse-absent;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +34;Federal-gov;191342;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;38;United-States;<=50K +30;Private;186420;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Private;328242;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Hong;>50K +56;Private;279340;11th;7;Separated;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +19;Private;174478;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;151771;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;120326;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;246439;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +27;Private;144133;Bachelors;13;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;0;0;50;United-States;<=50K +44;Local-gov;145522;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;312055;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;235847;Some-college;10;Never-married;Exec-managerial;Other-relative;White;Female;0;0;50;United-States;<=50K +37;Private;187748;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;396482;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +20;Private;39477;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +37;Private;143058;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;216867;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;Mexico;<=50K +44;Private;230592;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;35;United-States;<=50K +30;Local-gov;40338;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Local-gov;115457;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;374983;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;285419;12th;8;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;?;385901;Some-college;10;Never-married;?;Own-child;White;Male;0;0;22;United-States;<=50K +45;State-gov;187581;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-inc;299036;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +42;Private;68729;Some-college;10;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +27;Private;333990;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;117767;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +43;Private;184378;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +21;Private;232591;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;143851;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;89622;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;80;United-States;>50K +34;Private;202498;12th;8;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Dominican-Republic;<=50K +72;Private;268861;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;99;?;<=50K +54;Private;343242;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +30;Private;460408;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +63;Private;205246;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +36;Private;230329;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Private;197871;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +72;?;201375;Assoc-acdm;12;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Private;194290;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;191814;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +41;Private;95168;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;?;137876;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;386136;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;Private;152529;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +35;Private;214891;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Other;Male;0;0;40;Dominican-Republic;<=50K +18;Private;133654;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;147548;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +57;Private;73051;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;60166;1st-4th;2;Never-married;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Male;0;0;65;United-States;<=50K +25;Self-emp-inc;454934;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +64;?;338355;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;0;0;15;United-States;<=50K +35;Self-emp-not-inc;185621;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +61;Private;101500;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;36397;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +18;Private;276540;12th;8;Never-married;Sales;Own-child;Black;Female;0;0;15;United-States;<=50K +21;Private;293968;Some-college;10;Married-spouse-absent;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +43;?;35523;Assoc-acdm;12;Divorced;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +32;Local-gov;186993;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;232132;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +48;Private;176917;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +40;Private;105936;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;?;34506;Some-college;10;Separated;?;Unmarried;White;Female;0;0;25;United-States;<=50K +42;Private;178074;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;?;116961;7th-8th;4;Widowed;?;Unmarried;White;Female;0;0;20;United-States;<=50K +34;Private;191930;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;130807;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;94100;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;65;United-States;<=50K +65;Self-emp-not-inc;144822;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +61;Self-emp-inc;102191;Masters;14;Widowed;Exec-managerial;Unmarried;White;Female;0;0;99;United-States;<=50K +18;Private;90934;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;28;United-States;<=50K +49;?;296892;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +48;Private;173243;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +30;Private;189759;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +68;Self-emp-not-inc;69249;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +23;Private;133061;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;<=50K +65;Self-emp-not-inc;175202;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;24;United-States;<=50K +32;Private;27051;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;44;United-States;<=50K +44;Private;60414;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +48;Local-gov;317360;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +24;Private;258298;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +58;Private;174040;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Local-gov;177566;Some-college;10;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;50;Germany;<=50K +54;Private;162238;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +35;Private;87556;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +35;Private;144322;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +24;Private;190015;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;151322;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Local-gov;47392;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;107125;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +49;Private;265295;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;189219;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;16;United-States;<=50K +56;Private;147989;Some-college;10;Married-spouse-absent;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;185732;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;153516;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;?;191910;Some-college;10;Never-married;?;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;216145;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;202872;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;12;United-States;<=50K +62;Self-emp-not-inc;39630;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +24;?;114292;9th;5;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +26;Local-gov;206721;Bachelors;13;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;358585;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;>50K +33;Private;377283;Bachelors;13;Separated;Sales;Not-in-family;White;Female;0;0;50;United-States;>50K +65;?;76043;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;1;United-States;>50K +43;Local-gov;223861;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;163455;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;183892;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;47022;HS-grad;9;Widowed;Handlers-cleaners;Other-relative;White;Female;0;0;48;United-States;<=50K +55;Federal-gov;145401;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +45;Private;387074;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Federal-gov;195467;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Local-gov;170217;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;156807;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;10;United-States;<=50K +38;Private;273640;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;191177;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;184787;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +37;State-gov;239409;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +63;Self-emp-not-inc;404547;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +27;State-gov;23740;HS-grad;9;Never-married;Transport-moving;Not-in-family;Amer-Indian-Eskimo;Male;0;0;38;United-States;>50K +20;Private;382153;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +21;?;228424;10th;6;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;168539;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;189530;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;89419;Assoc-voc;11;Divorced;Other-service;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;Columbia;<=50K +35;Private;224512;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +21;?;314645;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;43;United-States;<=50K +65;Private;85787;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Local-gov;279881;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +24;Private;141040;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +36;Private;222294;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +70;?;410980;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;>50K +52;Private;38795;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +64;Private;182979;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;223277;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;160647;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;45796;12th;8;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;110597;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +33;Private;166961;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +52;Private;318975;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;Cuba;<=50K +49;Private;305657;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;120857;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;18;United-States;<=50K +62;Self-emp-not-inc;158712;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;6;United-States;<=50K +44;Private;304530;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +68;Local-gov;233954;Masters;14;Widowed;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;>50K +40;Federal-gov;26880;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;70754;7th-8th;4;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;184665;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;245372;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Male;0;0;15;United-States;<=50K +62;Private;252668;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;<=50K +37;Private;86551;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +44;Private;106900;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;68;United-States;<=50K +41;Private;204235;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;127772;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;117217;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +48;Federal-gov;215389;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +21;Private;198050;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +44;Private;377018;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +56;Private;99894;10th;6;Married-civ-spouse;Sales;Wife;Asian-Pac-Islander;Female;0;0;30;Japan;>50K +25;Private;170786;9th;5;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +32;Local-gov;250585;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +47;Private;198769;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;>50K +26;Private;306513;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;109307;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +41;Federal-gov;106982;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +55;Self-emp-not-inc;396878;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;25;United-States;<=50K +23;Private;344278;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;25;United-States;<=50K +29;Private;107812;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;15;United-States;<=50K +48;Private;185143;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;143068;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +46;Private;266337;Assoc-voc;11;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Private;321787;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +27;State-gov;21306;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;Germany;<=50K +18;Private;271935;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;148952;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +42;Private;196626;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;?;108082;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;199439;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +20;?;304076;11th;7;Never-married;?;Own-child;Black;Female;0;0;20;United-States;<=50K +52;Self-emp-inc;81436;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +44;Self-emp-inc;352971;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +53;Private;375134;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +36;Private;206521;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +27;Private;330466;Bachelors;13;Never-married;Tech-support;Other-relative;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +52;Private;208302;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +60;Self-emp-not-inc;135285;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;171615;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +64;Self-emp-not-inc;149698;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +25;Private;71351;1st-4th;2;Never-married;Other-service;Other-relative;White;Male;0;0;25;El-Salvador;<=50K +63;Private;84737;7th-8th;4;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +54;Local-gov;375134;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;207103;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;199314;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;Poland;<=50K +37;Private;240837;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +22;Private;283499;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;35;United-States;<=50K +54;Private;97778;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;21698;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Local-gov;232618;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;175820;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +25;Local-gov;63996;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Local-gov;182985;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;380127;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;111483;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +18;?;31008;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +57;Private;96346;HS-grad;9;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;57;United-States;<=50K +22;Private;317528;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;34;United-States;<=50K +36;State-gov;223020;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +39;Private;115076;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;133969;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;50;United-States;>50K +41;Private;173858;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +35;Private;193241;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +30;Private;178841;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Self-emp-not-inc;321865;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +34;Self-emp-not-inc;321709;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;25;United-States;<=50K +22;Private;166371;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;40;?;<=50K +18;Private;210574;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +33;Self-emp-inc;144949;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +45;State-gov;90803;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +43;State-gov;126701;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +40;Private;178417;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +41;Self-emp-not-inc;197176;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;75;United-States;>50K +22;Private;117606;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;32;United-States;<=50K +52;Private;349502;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Male;0;0;45;United-States;<=50K +45;Federal-gov;81487;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Puerto-Rico;>50K +32;State-gov;169583;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;70;United-States;<=50K +26;Private;485117;Bachelors;13;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;35603;Some-college;10;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Private;175390;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Private;184986;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Local-gov;174395;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;187711;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;189878;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +17;Private;224073;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +48;Private;159726;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;>50K +40;?;65545;Masters;14;Divorced;?;Own-child;White;Female;0;0;55;United-States;<=50K +35;Private;202397;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +21;Private;206681;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +54;Private;222020;10th;6;Divorced;Other-service;Not-in-family;White;Male;0;0;70;United-States;<=50K +40;Private;137304;Bachelors;13;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +51;Private;141645;Some-college;10;Separated;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +60;Self-emp-not-inc;218085;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;50;United-States;<=50K +22;Private;52596;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;8;United-States;<=50K +20;Private;197997;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;191444;11th;7;Never-married;Farming-fishing;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;40767;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;172577;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;44;United-States;<=50K +36;Private;241998;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +48;Private;212120;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +20;Private;224424;12th;8;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +41;State-gov;214985;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;147098;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +39;Local-gov;149833;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +80;Private;252466;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;24;United-States;<=50K +59;State-gov;132717;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;138944;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +56;Self-emp-not-inc;144380;Some-college;10;Married-spouse-absent;Prof-specialty;Not-in-family;Black;Male;0;0;50;United-States;<=50K +69;Local-gov;660461;HS-grad;9;Widowed;Adm-clerical;Not-in-family;Black;Female;0;0;20;United-States;<=50K +49;Private;177211;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +28;Self-emp-inc;31717;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +49;Private;296849;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +51;Local-gov;193720;HS-grad;9;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +42;Private;106698;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +66;Private;214469;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;13;United-States;<=50K +44;Private;185798;Assoc-voc;11;Separated;Craft-repair;Other-relative;White;Male;0;0;48;United-States;>50K +26;Private;333108;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;35210;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;?;335376;Bachelors;13;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +17;Private;170455;11th;7;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +52;Private;298215;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +34;?;93834;HS-grad;9;Separated;?;Own-child;White;Female;0;0;8;United-States;<=50K +24;Private;404416;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;?;206916;Bachelors;13;Married-spouse-absent;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +65;Private;143175;Some-college;10;Widowed;Sales;Other-relative;White;Female;0;0;45;United-States;<=50K +36;Self-emp-not-inc;409189;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +19;Private;285750;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;30;United-States;<=50K +43;Private;235556;Some-college;10;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;45;Mexico;<=50K +39;Local-gov;170382;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;England;>50K +48;Private;195437;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +50;Local-gov;191130;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +21;Private;231160;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +36;Private;47310;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;214635;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;36;Haiti;<=50K +50;Federal-gov;65160;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;263307;Bachelors;13;Never-married;Sales;Unmarried;Black;Male;0;0;45;?;<=50K +70;Self-emp-inc;272896;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;232854;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;442035;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;127875;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +40;Private;283724;9th;5;Never-married;Craft-repair;Other-relative;Black;Male;0;0;49;United-States;<=50K +21;?;228649;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +47;Private;249935;11th;7;Divorced;Craft-repair;Own-child;White;Male;0;0;8;United-States;<=50K +19;Private;533147;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +22;Private;137862;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;16;United-States;<=50K +20;Private;249543;Some-college;10;Never-married;Protective-serv;Own-child;White;Female;0;0;16;United-States;<=50K +17;Private;147339;10th;6;Never-married;Prof-specialty;Own-child;Other;Female;0;0;15;United-States;<=50K +41;Private;256647;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +20;?;150084;Some-college;10;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +24;Private;285457;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;303867;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +44;Federal-gov;113597;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +26;Self-emp-not-inc;151626;HS-grad;9;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;26145;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +24;Private;176189;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +58;Federal-gov;497253;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +38;Self-emp-not-inc;282461;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +21;Private;225541;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;203488;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;45;United-States;<=50K +23;?;296613;Some-college;10;Never-married;?;Own-child;White;Female;0;0;32;United-States;<=50K +40;Private;99373;10th;6;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Local-gov;109705;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;144947;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;617898;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;38310;7th-8th;4;Divorced;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +45;Private;248993;HS-grad;9;Married-spouse-absent;Farming-fishing;Other-relative;Black;Male;0;0;40;United-States;<=50K +65;?;149131;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;Italy;>50K +33;Private;69311;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Federal-gov;143766;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +65;Private;213477;Masters;14;Divorced;Sales;Not-in-family;White;Male;0;0;28;United-States;<=50K +24;Private;275691;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;39;United-States;<=50K +26;Private;59367;Bachelors;13;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +55;Private;35551;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +66;Private;236784;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;8;Cuba;<=50K +43;Local-gov;193755;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;315291;Bachelors;13;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;40;United-States;<=50K +22;Private;290504;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;256240;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +69;?;199591;Prof-school;15;Married-civ-spouse;?;Wife;White;Female;0;0;25;?;<=50K +27;Private;178709;Masters;14;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;187937;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Never-worked;157131;11th;7;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +53;Local-gov;188772;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +26;Private;157617;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Poland;<=50K +60;Private;96099;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +21;Private;122322;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;60;United-States;<=50K +39;Private;409189;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +45;Private;175925;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +76;Self-emp-not-inc;236878;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +19;Private;216647;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +34;Private;300681;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;Jamaica;>50K +54;Private;327769;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;194723;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Local-gov;31251;7th-8th;4;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;212506;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;23037;12th;8;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;29054;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;92733;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;State-gov;184678;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +37;Federal-gov;32528;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;England;>50K +35;Private;73715;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;209212;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;56;?;<=50K +41;Private;287037;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;64667;HS-grad;9;Divorced;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;60;Vietnam;<=50K +26;Self-emp-inc;366662;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +36;Local-gov;113337;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;42;United-States;>50K +47;Private;387468;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Scotland;>50K +51;Private;384248;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;50;United-States;<=50K +40;Self-emp-inc;182629;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Private;267652;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;410186;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;365411;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;42;United-States;<=50K +28;Private;205337;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +19;Self-emp-not-inc;100999;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +44;Private;197462;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;191978;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;50178;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;72442;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +21;Private;248512;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;178140;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;>50K +58;Private;354024;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +35;Private;143589;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +35;Private;219902;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;132601;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +38;Self-emp-not-inc;29430;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;30731;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +66;Private;210825;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;251091;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +33;Private;219034;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Federal-gov;35723;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +46;Private;358886;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;248708;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;?;77937;12th;8;Divorced;?;Not-in-family;White;Female;0;0;40;Canada;<=50K +30;Private;30063;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +29;Private;253799;12th;8;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;42;England;<=50K +60;?;41553;Some-college;10;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +24;Private;59146;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +42;Self-emp-not-inc;343609;Some-college;10;Separated;Other-service;Unmarried;Black;Female;0;0;50;United-States;<=50K +26;Private;216010;HS-grad;9;Separated;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;164526;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;150958;5th-6th;3;Never-married;Farming-fishing;Unmarried;White;Male;0;0;48;Guatemala;<=50K +26;Private;244495;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +23;Private;199336;Assoc-voc;11;Never-married;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +60;Private;151369;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +49;Federal-gov;118701;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;219611;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;184568;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Self-emp-not-inc;246891;Prof-school;15;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +70;Self-emp-inc;243436;9th;5;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;Local-gov;68318;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;55;United-States;<=50K +58;Private;56331;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;190591;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +28;Private;122540;10th;6;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +65;Private;212562;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;20;United-States;<=50K +35;Self-emp-not-inc;112497;HS-grad;9;Married-civ-spouse;Craft-repair;Other-relative;White;Male;0;0;35;Ireland;<=50K +82;Private;147729;5th-6th;3;Widowed;Other-service;Unmarried;White;Male;0;0;20;United-States;<=50K +48;Self-emp-not-inc;296066;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +42;Private;306496;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;163894;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +22;Private;113936;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;316820;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;<=50K +17;Private;53367;9th;5;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +46;Self-emp-not-inc;95256;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +59;Private;127728;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +37;Private;66686;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +47;?;186805;HS-grad;9;Married-civ-spouse;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +31;Private;154297;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;24;United-States;<=50K +23;Private;103064;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +63;Private;440607;Preschool;1;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;30;Mexico;<=50K +44;Private;212894;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +30;Private;167990;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +23;Private;378460;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;153583;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;114639;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;20;United-States;<=50K +37;Private;344480;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +24;Private;188300;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;105938;HS-grad;9;Divorced;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;217826;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;25;Jamaica;<=50K +20;Private;379525;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +37;Private;127918;Some-college;10;Never-married;Transport-moving;Unmarried;White;Female;0;0;20;Puerto-Rico;<=50K +47;Federal-gov;27067;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;250038;9th;5;Never-married;Farming-fishing;Other-relative;White;Male;0;0;45;Mexico;<=50K +60;Private;308608;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +32;Local-gov;235109;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +33;State-gov;374905;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +71;Private;118876;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;14;United-States;<=50K +55;Local-gov;223716;Some-college;10;Divorced;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +85;Self-emp-not-inc;166027;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +57;Self-emp-not-inc;275943;7th-8th;4;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;<=50K +25;Private;109080;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;55;United-States;<=50K +58;Private;104333;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +57;Private;195876;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;390879;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;36;United-States;<=50K +19;Private;197748;11th;7;Divorced;Sales;Unmarried;White;Female;0;0;20;United-States;<=50K +40;Private;442045;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;44216;HS-grad;9;Never-married;Protective-serv;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +43;Federal-gov;114537;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +40;?;253370;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;35;United-States;>50K +19;Private;274830;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +24;Private;321763;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;38;United-States;<=50K +34;Private;213226;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;>50K +22;Private;167787;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +64;Self-emp-not-inc;352712;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +55;?;316027;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;?;<=50K +26;Private;213412;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +80;Private;202483;HS-grad;9;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;16;United-States;<=50K +79;Local-gov;146244;Doctorate;16;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Self-emp-not-inc;450544;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +43;Private;195258;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Private;57929;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +35;Private;953588;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +43;Self-emp-inc;155293;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +68;Private;204082;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +34;State-gov;216283;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +37;Private;355856;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;>50K +22;Private;297380;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +32;Private;425622;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +65;Self-emp-not-inc;145628;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;115549;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;60;United-States;<=50K +37;Private;245482;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +40;Self-emp-inc;142444;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +40;Private;134026;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +52;Private;177366;HS-grad;9;Separated;Other-service;Other-relative;White;Female;0;0;20;United-States;<=50K +35;Private;38245;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +62;Self-emp-not-inc;215944;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +49;Private;115784;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +49;Private;170165;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;White;Female;0;0;55;United-States;<=50K +45;Private;116163;HS-grad;9;Separated;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;405644;1st-4th;2;Married-spouse-absent;Farming-fishing;Other-relative;White;Male;0;0;77;Mexico;<=50K +36;Local-gov;223433;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;53;United-States;>50K +36;Private;41624;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;Mexico;<=50K +25;State-gov;108542;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;212318;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +57;Private;173090;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;32;United-States;<=50K +46;Private;26781;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +59;Private;31782;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +28;Private;189241;11th;7;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;240467;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;263614;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +29;Private;74500;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +43;Federal-gov;263502;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Federal-gov;47707;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +26;Private;231638;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +55;?;389479;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +36;Private;111128;HS-grad;9;Separated;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;152307;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +23;?;280134;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;609789;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;?;<=50K +41;Private;184466;11th;7;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;55;United-States;<=50K +44;Private;216411;Assoc-voc;11;Separated;Prof-specialty;Not-in-family;White;Female;0;0;40;Dominican-Republic;<=50K +48;Self-emp-not-inc;324173;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Local-gov;598995;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;42;United-States;<=50K +57;Federal-gov;140711;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +44;Local-gov;262241;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +28;Private;308136;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;148590;10th;6;Widowed;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Private;228406;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;136398;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;Thailand;>50K +21;?;305466;Some-college;10;Never-married;?;Own-child;White;Male;0;0;70;United-States;<=50K +50;Self-emp-inc;175070;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +43;Self-emp-not-inc;34007;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;>50K +33;Private;121195;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Other;Male;0;0;50;United-States;<=50K +23;Federal-gov;216853;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;25;United-States;<=50K +35;Private;81280;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;Yugoslavia;>50K +18;Private;212936;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +21;?;213055;Some-college;10;Never-married;?;Unmarried;Other;Female;0;0;40;United-States;<=50K +33;Local-gov;220430;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;70;United-States;>50K +30;Federal-gov;73514;Bachelors;13;Never-married;Exec-managerial;Other-relative;Asian-Pac-Islander;Female;0;0;45;United-States;<=50K +21;Private;307371;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;15;United-States;<=50K +36;Local-gov;380614;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;Germany;>50K +38;Private;119992;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;327518;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;220323;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;<=50K +39;Private;421633;Some-college;10;Divorced;Protective-serv;Unmarried;Black;Female;0;0;30;United-States;<=50K +43;Self-emp-not-inc;35034;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;21;United-States;<=50K +62;?;378239;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;>50K +30;State-gov;270218;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +25;Private;254933;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;61751;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +22;Private;137876;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;20;United-States;<=50K +26;Private;222539;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;Private;233856;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Black;Male;0;0;45;United-States;<=50K +22;Private;203182;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;43;United-States;<=50K +28;Private;221317;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +38;Private;186934;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +68;?;351402;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;70;United-States;<=50K +40;Local-gov;179580;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +32;Private;26803;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;84;United-States;>50K +31;State-gov;59969;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;35;United-States;<=50K +33;Private;162930;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;Italy;<=50K +54;Self-emp-not-inc;192654;Bachelors;13;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +63;Private;117681;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;25;United-States;<=50K +67;Self-emp-not-inc;179285;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +47;Private;217161;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;14;United-States;<=50K +67;Self-emp-inc;116517;Bachelors;13;Widowed;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +33;Private;170336;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Other;Female;0;0;19;United-States;<=50K +33;Local-gov;256529;HS-grad;9;Separated;Other-service;Own-child;White;Female;0;0;80;United-States;<=50K +25;Local-gov;227886;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;141706;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;361888;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;176101;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;>50K +18;Private;216730;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +30;Private;609789;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;Mexico;<=50K +29;Private;136017;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;<=50K +40;Private;285787;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +39;Private;160916;Assoc-acdm;12;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;45;United-States;<=50K +42;Private;227397;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +49;Self-emp-not-inc;111066;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +23;Private;189924;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;31740;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;172304;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +72;?;166253;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;2;United-States;<=50K +31;Private;86492;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;>50K +90;Private;206667;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +27;Self-emp-not-inc;153546;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +18;?;189041;HS-grad;9;Never-married;?;Other-relative;White;Male;0;0;40;United-States;<=50K +27;Local-gov;151626;HS-grad;9;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +27;Self-emp-not-inc;37302;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;109001;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;195488;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;45;United-States;<=50K +43;Local-gov;216116;Masters;14;Separated;Prof-specialty;Unmarried;Black;Female;0;0;37;United-States;<=50K +26;Private;118497;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +48;Self-emp-not-inc;101233;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;<=50K +41;Private;349703;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +32;Private;226883;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Germany;<=50K +23;Private;214635;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;169672;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +42;Private;71458;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;125279;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;197303;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;69251;Some-college;10;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +39;Private;160123;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;137310;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;?;<=50K +25;Private;323229;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;102359;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;404661;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Private;99146;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +38;Self-emp-not-inc;185325;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +35;Self-emp-not-inc;230268;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;38819;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +37;Private;380614;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;13;United-States;>50K +45;Private;319637;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +71;Private;149040;12th;8;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;320984;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +19;?;117201;Some-college;10;Never-married;?;Own-child;White;Male;0;0;22;United-States;<=50K +38;Private;81965;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Local-gov;182302;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;53434;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +48;Private;216214;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-inc;24127;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;54;United-States;>50K +32;Federal-gov;115066;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;120277;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +57;Self-emp-not-inc;134286;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +55;Private;26716;10th;6;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +48;?;174533;11th;7;Separated;?;Unmarried;White;Male;0;0;40;United-States;<=50K +46;Self-emp-inc;175958;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;?;<=50K +36;Private;218948;9th;5;Separated;Other-service;Unmarried;Black;Female;0;0;40;?;<=50K +66;Private;117746;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +26;Private;206199;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +62;Private;69867;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +31;Private;109020;Bachelors;13;Never-married;Prof-specialty;Unmarried;Other;Male;0;0;40;United-States;<=50K +77;?;158847;Assoc-voc;11;Married-spouse-absent;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +25;Private;130302;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;156728;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;56;United-States;<=50K +33;Private;424719;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Federal-gov;217647;Some-college;10;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;Private;33087;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +40;Federal-gov;241895;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;38455;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Local-gov;81054;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;25;United-States;<=50K +44;Private;163215;12th;8;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;156728;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;127930;HS-grad;9;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +46;Federal-gov;227310;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +24;Private;96844;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;17;United-States;<=50K +18;Private;245199;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;46385;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;186385;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;8;United-States;<=50K +55;Private;252714;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +68;Private;154897;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +41;Private;320744;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;Private;102092;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;?;32533;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;45;United-States;<=50K +45;Private;278151;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;338290;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;34378;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +43;Private;91959;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +36;Private;265881;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +60;Private;276009;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;30;Philippines;<=50K +27;Private;193898;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Private;139364;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +47;State-gov;306473;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;37232;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;80;United-States;<=50K +19;State-gov;56424;12th;8;Never-married;Transport-moving;Own-child;Black;Male;0;0;20;United-States;<=50K +33;Private;165235;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;35;Thailand;<=50K +34;Private;153326;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;106976;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +57;Private;109015;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +60;Private;367695;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;156015;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;185132;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +20;Self-emp-not-inc;188274;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +24;State-gov;147719;Masters;14;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;20;India;<=50K +31;Private;414525;12th;8;Never-married;Farming-fishing;Not-in-family;Black;Male;0;0;60;United-States;<=50K +38;Private;289148;HS-grad;9;Married-spouse-absent;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;176069;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +55;State-gov;199713;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;United-States;<=50K +33;Private;204829;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +52;Private;155433;5th-6th;3;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;?;<=50K +24;Local-gov;32950;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +46;Private;233511;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;<=50K +20;Private;210781;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +50;Private;190762;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +22;Private;83315;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +32;Self-emp-inc;343872;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;35;Haiti;<=50K +46;Private;185385;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +26;Private;357933;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +20;Private;211293;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;14;United-States;<=50K +37;Self-emp-inc;199265;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;202872;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;24;United-States;<=50K +22;Private;195075;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;38;United-States;<=50K +41;Private;187802;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Private;97212;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +40;Private;47902;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +37;State-gov;76767;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;39;United-States;>50K +56;Private;274475;9th;5;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;105244;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +55;Local-gov;165695;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +29;Private;253801;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +37;Private;305597;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;352448;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +26;Private;242768;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +49;Self-emp-inc;201080;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +18;Local-gov;159032;7th-8th;4;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;149568;9th;5;Never-married;Farming-fishing;Other-relative;Black;Male;0;0;40;United-States;<=50K +24;Private;229553;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;20;?;<=50K +24;State-gov;155775;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;120074;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Local-gov;257588;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;177907;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;65;United-States;<=50K +40;Private;309311;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;138975;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +43;Self-emp-not-inc;187778;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +19;Private;35865;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;35;United-States;<=50K +17;?;151141;10th;6;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +39;Private;144688;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;50;United-States;<=50K +43;Private;248094;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Private;248094;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;213821;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +31;State-gov;55849;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;121712;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;223127;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;190514;7th-8th;4;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;75;United-States;<=50K +29;Private;203797;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +30;Private;105908;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;210526;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +71;Private;193530;11th;7;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;75;United-States;<=50K +22;?;22966;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +21;Private;43535;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;?;72486;HS-grad;9;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;24;China;<=50K +22;?;229997;Some-college;10;Married-spouse-absent;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Private;183013;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;113364;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;20;United-States;<=50K +27;Private;197380;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;298635;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Hong;>50K +26;Private;213385;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +30;?;108464;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;31007;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +26;Private;35917;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;Private;99385;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;Canada;<=50K +31;Private;241885;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;45;United-States;<=50K +51;Private;24344;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;149686;9th;5;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +24;State-gov;154432;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;35;United-States;<=50K +29;Private;331875;12th;8;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Dominican-Republic;<=50K +26;Private;259585;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;24;United-States;<=50K +51;Private;104748;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +32;Local-gov;144949;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +47;State-gov;199512;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;302438;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;?;129155;11th;7;Widowed;?;Other-relative;Black;Female;0;0;40;United-States;<=50K +49;Federal-gov;115784;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;96509;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +62;Private;226733;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +43;Self-emp-inc;244945;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +76;Private;243768;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;20;United-States;<=50K +40;?;351161;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;>50K +35;Private;186934;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +27;Private;89813;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;184702;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;275291;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;12;United-States;<=50K +20;Private;258298;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +39;Private;139743;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +20;Private;103840;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;42;United-States;<=50K +28;Private;274579;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +56;Federal-gov;156842;Some-college;10;Separated;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Private;101020;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +44;Federal-gov;68729;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +55;Private;141326;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +54;Self-emp-not-inc;168723;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;213722;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;57;United-States;>50K +42;Private;196797;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Female;0;0;38;United-States;<=50K +50;Self-emp-inc;207246;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;75;United-States;<=50K +34;Federal-gov;199934;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +23;Private;272185;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;33;United-States;<=50K +27;?;190650;Bachelors;13;Never-married;?;Unmarried;Asian-Pac-Islander;Male;0;0;25;Philippines;<=50K +81;?;147097;Bachelors;13;Widowed;?;Not-in-family;White;Male;0;0;5;United-States;<=50K +57;Private;96779;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +65;?;117162;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;0;0;56;United-States;>50K +33;Private;188352;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;50;United-States;<=50K +37;Private;359131;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;48;United-States;<=50K +53;Private;198824;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +27;State-gov;68393;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;115613;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +42;Private;45363;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +58;Local-gov;292379;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;482732;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;24;United-States;<=50K +19;Private;198663;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +39;Private;230329;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +51;Private;29887;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;44;United-States;<=50K +52;Private;194259;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;Germany;<=50K +53;Private;126368;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;>50K +50;Private;108446;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;220696;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;32008;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;72;United-States;<=50K +30;Private;191777;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;?;<=50K +50;Private;185846;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +76;Private;127016;7th-8th;4;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;157894;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +23;Local-gov;212803;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +51;Private;168660;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +58;Private;234481;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;131461;9th;5;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;24;Haiti;<=50K +45;Private;408773;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;126117;HS-grad;9;Widowed;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;155489;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +42;Private;296749;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;State-gov;185832;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;46;United-States;>50K +60;Private;43235;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;213152;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Local-gov;334267;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +61;?;253101;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;24;United-States;<=50K +63;Private;71800;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;41;United-States;<=50K +46;Local-gov;170092;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;43;United-States;<=50K +47;Private;198223;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;359796;Some-college;10;Divorced;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +43;Private;110556;HS-grad;9;Separated;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;196858;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +48;?;112860;10th;6;Married-civ-spouse;?;Wife;Black;Female;0;0;35;United-States;<=50K +61;Self-emp-not-inc;224784;Assoc-acdm;12;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;90;United-States;<=50K +44;Private;221172;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +54;Private;256916;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;157332;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;192894;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;50;United-States;>50K +18;Private;240183;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +25;Private;204338;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +24;Private;122166;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Iran;<=50K +37;Local-gov;397877;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +59;Private;171015;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;34;United-States;<=50K +46;Private;91262;Some-college;10;Married-spouse-absent;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +45;Local-gov;127678;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +19;Private;263338;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +22;Private;129508;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;28;United-States;<=50K +41;Private;192107;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;93930;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Federal-gov;207537;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +22;Private;138542;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;35;United-States;<=50K +29;Self-emp-not-inc;116207;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +22;Private;198244;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;39;United-States;<=50K +23;Private;211160;12th;8;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;161478;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +59;Private;144071;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +55;Private;342121;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;124692;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Private;147236;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Private;145175;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;259323;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;154978;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Guatemala;<=50K +60;?;163946;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;127768;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;98588;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;192894;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;194848;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;34446;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +23;Local-gov;177265;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;45;United-States;<=50K +30;Private;142977;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;<=50K +45;Private;241350;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;>50K +30;Private;154882;Prof-school;15;Widowed;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +17;Private;60562;9th;5;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +22;Private;142566;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;176162;Bachelors;13;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;237671;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +18;?;184416;10th;6;Never-married;?;Own-child;Black;Male;0;0;30;United-States;<=50K +58;Private;68624;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;229504;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;262208;Some-college;10;Never-married;Other-service;Not-in-family;Black;Female;0;0;30;Jamaica;<=50K +26;Private;236008;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Local-gov;214284;Bachelors;13;Widowed;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;10;Japan;<=50K +33;Private;169496;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +21;?;205940;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;195179;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;24;United-States;<=50K +25;Private;469697;Some-college;10;Married-civ-spouse;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +19;?;140242;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +44;Private;214415;Some-college;10;Separated;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Private;452283;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;244172;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;231972;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;412296;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Mexico;>50K +32;Private;30497;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;189216;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +36;Private;268292;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;<=50K +38;Private;69306;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +57;State-gov;111224;Bachelors;13;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;39;United-States;<=50K +22;State-gov;309348;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;15;United-States;<=50K +80;?;174995;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;8;Canada;<=50K +20;Private;210781;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +40;Private;286750;11th;7;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;36;United-States;<=50K +36;Self-emp-not-inc;321274;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;192936;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;72743;HS-grad;9;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Private;187861;HS-grad;9;Separated;Transport-moving;Unmarried;White;Female;0;0;44;United-States;<=50K +35;Private;179579;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;663394;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;302422;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +24;?;154373;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;25;United-States;<=50K +49;Local-gov;37353;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Self-emp-not-inc;109609;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +47;Private;184402;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +20;Private;224640;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;405526;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;147884;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;164231;11th;7;Separated;Prof-specialty;Own-child;White;Male;0;0;35;United-States;<=50K +25;Private;383306;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;417668;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;36;United-States;<=50K +25;Private;161007;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +63;State-gov;99823;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;32;United-States;<=50K +25;Private;37379;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;50;United-States;<=50K +28;Private;148645;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;180477;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +30;Private;111415;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +41;Local-gov;107327;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;194690;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;50;Mexico;<=50K +32;Federal-gov;145983;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +50;Private;128478;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;<=50K +21;Private;250647;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;30;Nicaragua;<=50K +60;Private;226949;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +47;Private;157901;11th;7;Married-civ-spouse;Other-service;Husband;Amer-Indian-Eskimo;Male;0;0;36;United-States;<=50K +54;Self-emp-not-inc;33863;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +32;Local-gov;40444;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +61;Private;54373;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Local-gov;305714;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;70;United-States;<=50K +38;Local-gov;167440;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +59;Private;291529;10th;6;Widowed;Machine-op-inspct;Not-in-family;White;Male;0;0;52;United-States;<=50K +43;Private;243380;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;38619;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;10;United-States;<=50K +33;Private;132601;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +28;Private;339372;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;101265;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;43;United-States;<=50K +23;Private;117789;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +31;Private;312667;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;255503;11th;7;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +21;Private;221955;9th;5;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +22;Private;139190;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +53;Federal-gov;84278;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +40;Private;114580;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;24;United-States;>50K +36;Private;185405;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +33;Self-emp-not-inc;199539;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +23;Private;346480;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +31;Private;219619;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;48;United-States;<=50K +26;Self-emp-not-inc;253899;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;155232;Bachelors;13;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;60;United-States;>50K +43;Private;182437;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +19;Private;530454;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +46;Private;101430;11th;7;Divorced;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +49;Local-gov;358668;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +31;Private;90668;10th;6;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;126141;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Private;238355;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +22;Private;194031;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +46;Private;249686;Prof-school;15;Separated;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +44;Self-emp-not-inc;219591;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;221757;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;80625;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;185407;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +34;Private;163110;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +34;?;24504;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;192936;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;145011;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +60;Self-emp-inc;181196;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-not-inc;37778;Masters;14;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +27;Private;60288;Masters;14;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;84231;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;48;United-States;<=50K +24;Private;52028;1st-4th;2;Married-civ-spouse;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;5;Vietnam;<=50K +63;Private;318763;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;22;United-States;<=50K +29;Private;168138;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +34;Private;113530;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;321896;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;145791;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;131425;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;Local-gov;142166;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;99;United-States;<=50K +20;Private;494784;HS-grad;9;Never-married;Sales;Other-relative;Black;Female;0;0;35;United-States;<=50K +35;Private;184655;11th;7;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Local-gov;26669;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;191479;Some-college;10;Divorced;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +21;Private;86625;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;?;<=50K +64;State-gov;111795;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +31;Private;364657;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Germany;>50K +42;Self-emp-not-inc;436107;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;272476;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;>50K +36;Federal-gov;47310;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;>50K +23;Private;283796;12th;8;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;30;Mexico;<=50K +20;Private;161092;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;14;United-States;<=50K +26;Local-gov;265230;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;Private;150471;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;183041;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;24;United-States;<=50K +33;Private;176673;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +45;Federal-gov;235891;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;Columbia;<=50K +29;Private;164040;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;324561;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +48;Private;99127;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +38;Private;334999;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;543477;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +35;Private;65876;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Local-gov;105866;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;30;United-States;<=50K +27;Private;214858;HS-grad;9;Married-civ-spouse;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;154076;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +70;Private;280307;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;Cuba;<=50K +30;Private;97723;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;45;United-States;<=50K +24;Private;233499;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +76;Local-gov;259612;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;15;United-States;<=50K +25;Private;236977;HS-grad;9;Separated;Craft-repair;Own-child;White;Male;0;0;40;Mexico;<=50K +39;Private;347814;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;56;United-States;<=50K +36;Local-gov;197495;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;227594;12th;8;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +60;Private;165441;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +20;?;337488;Some-college;10;Never-married;?;Own-child;Black;Male;0;0;30;United-States;<=50K +54;Private;167552;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;Haiti;>50K +20;Private;396722;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Federal-gov;146538;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;51973;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;144778;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;169672;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;240137;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;55;Mexico;<=50K +17;Private;172050;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +43;Private;178976;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;158200;Prof-school;15;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;40;?;<=50K +38;Federal-gov;172571;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +54;Self-emp-not-inc;226735;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;45;United-States;<=50K +39;Private;148015;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;52;United-States;<=50K +24;?;67586;Assoc-voc;11;Married-civ-spouse;?;Wife;Black;Female;0;0;35;United-States;<=50K +22;Private;88126;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;226296;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +18;Private;452452;10th;6;Never-married;Priv-house-serv;Own-child;Black;Female;0;0;20;United-States;<=50K +20;Private;378546;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;25;United-States;<=50K +53;Federal-gov;186087;HS-grad;9;Divorced;Tech-support;Unmarried;White;Male;0;0;40;United-States;<=50K +32;Private;27856;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +68;Self-emp-not-inc;234859;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +28;Private;71733;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;15;United-States;<=50K +28;Private;207473;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;El-Salvador;<=50K +54;Private;179291;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;56;Haiti;>50K +21;?;253190;Some-college;10;Never-married;?;Own-child;White;Male;0;0;48;United-States;<=50K +52;Private;92968;Bachelors;13;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;?;<=50K +25;Private;209286;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;122889;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;India;>50K +33;Private;112358;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +49;Private;176341;Bachelors;13;Never-married;Tech-support;Unmarried;Asian-Pac-Islander;Female;0;0;40;India;<=50K +58;Private;247276;7th-8th;4;Widowed;Other-service;Not-in-family;Other;Female;0;0;30;United-States;<=50K +45;Private;276087;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;24;United-States;>50K +42;Local-gov;177937;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;?;<=50K +69;Self-emp-inc;106395;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +61;Private;167138;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;213887;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;185647;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;143360;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;34;United-States;<=50K +31;Self-emp-not-inc;176862;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Federal-gov;97614;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;196763;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;<=50K +46;Private;306183;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +48;?;193047;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +59;Private;195835;7th-8th;4;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;106273;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;38;United-States;<=50K +40;Private;222756;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +63;Self-emp-inc;110610;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +44;?;191982;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;10;Poland;<=50K +46;Private;247286;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;219042;10th;6;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +57;Private;204751;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +58;Private;113398;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;25;United-States;<=50K +25;?;170428;Bachelors;13;Never-married;?;Not-in-family;Asian-Pac-Islander;Male;0;0;28;Taiwan;<=50K +36;Private;162424;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;263005;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;Germany;<=50K +42;Private;369131;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +43;Local-gov;114859;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;17;United-States;<=50K +46;Private;405309;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;323627;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;12;United-States;<=50K +40;Private;106698;Assoc-acdm;12;Divorced;Transport-moving;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;51506;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;117251;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +26;Private;106705;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;28;United-States;<=50K +30;Private;217296;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +43;Private;143368;HS-grad;9;Divorced;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +53;Local-gov;86600;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +74;State-gov;117017;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;16;United-States;<=50K +64;?;104756;Some-college;10;Widowed;?;Unmarried;White;Female;0;0;8;United-States;<=50K +45;Private;55720;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +32;State-gov;481096;5th-6th;3;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;10;United-States;<=50K +23;?;281668;10th;6;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +38;Private;186145;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +42;Self-emp-not-inc;96524;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +63;Private;181153;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +25;Local-gov;375170;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;35;United-States;<=50K +37;Private;360743;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;420054;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Italy;<=50K +31;Private;137681;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;101214;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;44;United-States;>50K +42;Local-gov;213019;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +45;Private;207540;Doctorate;16;Separated;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;>50K +52;Private;145333;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +40;Private;107306;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;195327;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;196126;Bachelors;13;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +17;Private;175465;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;14;United-States;<=50K +27;Private;197905;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;172571;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;25051;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +26;Private;210714;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;52;United-States;>50K +22;Private;183083;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;35;United-States;<=50K +51;Private;99185;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +33;Private;283921;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;396467;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;>50K +50;Private;158680;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +26;Private;202091;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +21;Private;285127;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Female;0;0;40;United-States;<=50K +53;Private;218630;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +32;Self-emp-inc;99309;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +19;Private;165505;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +22;Private;122272;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +47;Federal-gov;44257;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;>50K +51;Self-emp-inc;194995;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +42;State-gov;345969;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +28;Private;31842;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;143582;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;35;Vietnam;<=50K +50;Private;161438;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;317019;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +47;Self-emp-not-inc;158451;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +60;Private;225883;Some-college;10;Widowed;Sales;Unmarried;White;Female;0;0;27;United-States;<=50K +58;Self-emp-inc;258883;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +62;Private;26966;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;202812;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +59;Private;35411;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;190885;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +31;Private;182162;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;37;United-States;<=50K +18;Private;352640;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +64;Self-emp-not-inc;213945;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +51;Self-emp-not-inc;135102;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +47;Self-emp-not-inc;102583;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +68;Private;225612;Bachelors;13;Widowed;Sales;Not-in-family;White;Male;0;0;35;United-States;>50K +32;Private;241802;HS-grad;9;Married-civ-spouse;Other-service;Wife;Other;Female;0;0;40;United-States;<=50K +39;Private;347434;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;43;Mexico;<=50K +37;Private;305259;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;48;United-States;<=50K +29;Private;140830;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;291568;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Other;Male;0;0;40;United-States;<=50K +46;Private;203067;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;155106;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +19;?;252752;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;35;United-States;<=50K +52;Local-gov;100226;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +40;Private;63503;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +61;Private;95929;9th;5;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;187618;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +61;Self-emp-not-inc;92178;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;220362;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;84;United-States;>50K +32;Local-gov;209900;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +32;Private;272376;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;173854;Bachelors;13;Divorced;Prof-specialty;Other-relative;White;Male;0;0;35;United-States;>50K +37;Private;278924;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;324568;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +51;Self-emp-inc;124963;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +29;Private;211299;Assoc-voc;11;Never-married;Sales;Not-in-family;Black;Male;0;0;45;United-States;<=50K +48;Private;192791;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;46868;Masters;14;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Local-gov;31365;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +18;Private;142647;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +60;Private;116230;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;108907;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;?;<=50K +19;Private;495982;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;United-States;<=50K +18;Private;334026;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;25;United-States;<=50K +33;Private;268571;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;213813;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;241667;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +37;Private;160920;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +50;Private;107265;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +19;?;41609;Some-college;10;Never-married;?;Own-child;White;Male;0;0;10;United-States;<=50K +43;?;109912;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;7;United-States;>50K +23;Private;167424;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +47;Private;270079;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;325923;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;35;United-States;<=50K +19;Private;194905;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +47;Local-gov;183486;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +36;Federal-gov;153066;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +65;Private;105252;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +50;Private;146310;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;256504;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;6;United-States;<=50K +17;Private;121425;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +57;?;155259;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Self-emp-not-inc;98829;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +47;Self-emp-inc;239321;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +62;Self-emp-inc;134768;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +35;Private;556902;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +27;Private;47907;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +23;Private;114357;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;50;United-States;<=50K +39;Private;90646;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;232914;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;38;United-States;<=50K +24;Private;192201;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;20;United-States;<=50K +23;Private;27776;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;137476;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;>50K +30;Private;100734;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;38;United-States;<=50K +34;Private;111746;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;45;Portugal;<=50K +32;Private;184833;10th;6;Separated;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;151780;Assoc-voc;11;Never-married;Sales;Not-in-family;Black;Female;0;0;35;United-States;<=50K +38;State-gov;203628;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +18;Private;137363;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;172307;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;273403;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +36;State-gov;37931;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;>50K +61;Private;97030;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +30;Private;54608;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +26;Private;108542;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +27;Private;253814;Bachelors;13;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +45;Private;421412;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +47;Private;207140;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +19;Private;138153;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +29;Private;46987;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;55;United-States;<=50K +51;Self-emp-inc;183173;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +34;Local-gov;229531;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +26;Private;257405;5th-6th;3;Never-married;Farming-fishing;Other-relative;Black;Male;0;0;40;Mexico;<=50K +20;State-gov;432052;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;15;United-States;<=50K +43;Private;397280;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +20;Private;38001;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +27;Private;101618;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +46;Federal-gov;332727;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;115215;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;178449;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;49;United-States;<=50K +42;Private;185267;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;32;United-States;<=50K +23;Private;410439;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +29;Private;85572;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;42;United-States;>50K +27;Private;83517;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +43;Self-emp-not-inc;194726;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +23;Private;322674;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Local-gov;34540;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;44;United-States;<=50K +35;Local-gov;211073;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;61;United-States;>50K +30;Private;194901;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +59;Private;117059;11th;7;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +28;Private;51461;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +79;Private;266119;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;92374;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;35;United-States;>50K +54;Private;175262;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;208249;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;62;United-States;<=50K +22;?;110622;Bachelors;13;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;15;Taiwan;<=50K +34;Private;146980;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;65;United-States;<=50K +18;Private;112974;11th;7;Never-married;Prof-specialty;Other-relative;White;Male;0;0;3;United-States;<=50K +18;Private;210932;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +46;Private;145290;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;198992;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +77;?;174887;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +48;Private;190072;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +29;Private;49087;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;126622;11th;7;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;174189;9th;5;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;118605;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +49;Self-emp-not-inc;377622;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +49;Private;157272;HS-grad;9;Separated;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +30;Private;78530;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;190391;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;State-gov;162678;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;103980;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;52;United-States;<=50K +20;Private;293726;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;98350;Preschool;1;Married-spouse-absent;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;China;<=50K +30;Private;207668;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;60;Hungary;<=50K +29;Federal-gov;41013;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +44;Federal-gov;320071;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;306908;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +62;Private;167652;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;173580;Some-college;10;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;273612;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +26;Private;195555;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;186446;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +22;Private;418405;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Local-gov;41793;Masters;14;Separated;Prof-specialty;Not-in-family;White;Female;0;0;50;?;<=50K +26;Private;183965;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;354784;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +32;Private;732102;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +66;Self-emp-not-inc;97847;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;196678;Preschool;1;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +19;Private;320014;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +54;Self-emp-inc;298215;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;Private;295127;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;368140;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;Self-emp-not-inc;187411;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;?;<=50K +22;?;121070;Some-college;10;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +34;Private;212163;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +35;Self-emp-not-inc;108198;HS-grad;9;Divorced;Craft-repair;Own-child;Amer-Indian-Eskimo;Male;0;0;15;United-States;<=50K +42;Federal-gov;294431;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;202560;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +29;Self-emp-inc;266070;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;80;United-States;<=50K +34;Private;346122;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Self-emp-inc;308686;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;>50K +62;Self-emp-inc;236096;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;187711;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;238959;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +47;Private;93557;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;329980;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;125010;Assoc-voc;11;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;30;United-States;<=50K +60;Self-emp-inc;90915;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +31;Private;289731;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;206052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;191385;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +44;?;268804;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;30;United-States;<=50K +35;Self-emp-not-inc;199753;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +50;Local-gov;92486;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;171088;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;10;United-States;<=50K +33;Private;112820;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;32855;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +17;Private;142964;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +47;Private;89146;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +51;?;147015;Some-college;10;Divorced;?;Not-in-family;Black;Male;0;0;50;United-States;<=50K +26;Private;291968;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Local-gov;29235;Some-college;10;Married-civ-spouse;Protective-serv;Wife;White;Female;0;0;40;France;>50K +55;Private;238216;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;323726;Some-college;10;Never-married;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +54;Private;141663;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +32;Private;118551;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +52;Local-gov;35092;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;139703;HS-grad;9;Married-spouse-absent;Sales;Unmarried;Black;Female;0;0;28;Jamaica;<=50K +39;Federal-gov;206190;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +59;Self-emp-not-inc;178353;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +55;Federal-gov;169133;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;103179;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +31;Private;354464;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +19;?;124651;11th;7;Never-married;?;Own-child;Black;Male;0;0;25;United-States;<=50K +30;Private;60426;HS-grad;9;Married-civ-spouse;Adm-clerical;Own-child;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +47;Federal-gov;98726;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;133861;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;180303;Bachelors;13;Divorced;Craft-repair;Unmarried;Asian-Pac-Islander;Male;0;0;47;Iran;<=50K +33;Private;221324;Assoc-voc;11;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;325658;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +32;Private;210562;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;152249;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;White;Male;0;0;35;Mexico;<=50K +29;Private;178649;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;0;20;France;<=50K +41;State-gov;48997;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +39;Private;243409;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +34;Private;162442;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +23;Private;203078;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Male;0;0;24;United-States;<=50K +53;Self-emp-inc;155983;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +45;Self-emp-not-inc;182677;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Thailand;<=50K +34;?;170276;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;10;United-States;>50K +47;Private;105381;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;?;256240;7th-8th;4;Married-civ-spouse;?;Own-child;White;Male;0;0;60;United-States;<=50K +38;Self-emp-inc;141584;HS-grad;9;Divorced;Sales;Unmarried;White;Male;0;0;55;United-States;<=50K +26;Private;113571;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +18;Private;154089;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +43;Private;50197;10th;6;Separated;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +26;Private;132572;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Female;0;0;32;United-States;<=50K +47;Private;238185;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;112754;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;>50K +58;Self-emp-inc;143266;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;68006;7th-8th;4;Never-married;Other-service;Other-relative;White;Female;0;0;60;United-States;<=50K +40;Private;287079;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;55;United-States;<=50K +33;Private;223212;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +74;Self-emp-not-inc;173929;Doctorate;16;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;25;United-States;>50K +49;Self-emp-not-inc;182211;HS-grad;9;Widowed;Farming-fishing;Not-in-family;White;Male;0;0;55;United-States;<=50K +56;Self-emp-not-inc;62539;11th;7;Widowed;Other-service;Unmarried;White;Female;0;0;65;Greece;>50K +25;Private;305472;Assoc-acdm;12;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;48;United-States;<=50K +57;Private;548256;12th;8;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;40295;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;31137;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;?;127833;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;201743;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +40;Private;240027;Some-college;10;Never-married;Sales;Unmarried;Black;Female;0;0;45;United-States;<=50K +28;Private;129882;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;?;355890;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;55;United-States;>50K +20;Private;107658;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;10;Canada;<=50K +19;Private;146679;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Male;0;0;30;United-States;<=50K +75;?;35724;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;8;United-States;<=50K +24;Federal-gov;42251;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +31;Private;113838;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +28;Self-emp-not-inc;282398;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +41;Private;33331;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +23;Federal-gov;41031;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Private;155489;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;>50K +33;Private;53042;12th;8;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +34;Private;174789;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +47;Local-gov;203067;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;Private;216626;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;Other;Male;0;0;40;Columbia;<=50K +35;Private;93034;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Cambodia;<=50K +59;Self-emp-not-inc;188003;Bachelors;13;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +46;Local-gov;65535;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +39;Private;366757;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +23;Private;414545;Some-college;10;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +25;Private;295919;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;34378;1st-4th;2;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;476334;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +32;Private;255424;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +34;Local-gov;175856;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;124692;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;118551;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +78;?;292019;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +31;Private;288566;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;43;United-States;>50K +61;Private;137733;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +22;Private;39432;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;138537;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Laos;<=50K +37;Private;709445;HS-grad;9;Separated;Craft-repair;Other-relative;Black;Male;0;0;40;United-States;<=50K +35;Private;194809;11th;7;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +37;?;299090;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +18;Private;159561;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +37;Private;236328;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +46;Private;269045;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +25;?;196627;11th;7;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;323798;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +55;Private;463072;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +25;Self-emp-inc;98756;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;50;United-States;<=50K +50;State-gov;161075;HS-grad;9;Widowed;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;192485;12th;8;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;20;United-States;<=50K +25;Private;201579;9th;5;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +23;Private;117606;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;?;177487;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;60313;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +27;Private;169958;5th-6th;3;Never-married;Craft-repair;Own-child;White;Male;0;0;40;?;<=50K +19;Private;240686;11th;7;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +52;Local-gov;124793;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Self-emp-not-inc;113948;Assoc-voc;11;Married-civ-spouse;Other-service;Wife;White;Female;0;0;45;United-States;<=50K +17;?;241021;12th;8;Never-married;?;Own-child;Other;Female;0;0;40;United-States;<=50K +21;Private;147655;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +41;Self-emp-not-inc;38876;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +20;?;114813;10th;6;Separated;?;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;136310;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +41;Federal-gov;153132;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +23;Private;197552;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +33;Private;69748;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +29;Private;175738;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +50;State-gov;78649;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +37;Self-emp-inc;188774;11th;7;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;60;?;<=50K +19;Federal-gov;215891;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +40;Private;144928;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +65;Private;262446;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +44;Federal-gov;191295;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;48;United-States;<=50K +32;Private;279173;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +41;Private;153031;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +28;Private;202239;7th-8th;4;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +39;Local-gov;164156;Assoc-acdm;12;Divorced;Other-service;Unmarried;White;Female;0;0;55;United-States;<=50K +59;Private;196482;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;176185;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;France;>50K +34;Private;287315;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;117210;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;41610;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;160703;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +31;Private;80511;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;White;Female;0;0;44;United-States;<=50K +39;Private;219155;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;<=50K +35;Private;106347;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +44;Self-emp-not-inc;163985;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;32;United-States;>50K +28;Private;270887;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;<=50K +17;Private;205726;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +23;Private;218899;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;60;United-States;<=50K +19;Private;248749;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +30;Private;197558;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;176514;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;?;116820;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;50;United-States;<=50K +44;Private;226129;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;Private;281138;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;98061;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;260560;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;289909;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +51;Private;59590;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +24;Private;236769;Assoc-acdm;12;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;423616;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;24;United-States;>50K +24;Private;291407;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +53;Self-emp-inc;100029;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;204494;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;56;United-States;>50K +24;Private;201680;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;154308;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +31;Private;150324;11th;7;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +38;Local-gov;331609;Some-college;10;Widowed;Transport-moving;Not-in-family;Black;Female;0;0;47;United-States;<=50K +28;Private;100829;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +38;Private;203169;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +25;Private;122075;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;178778;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;276345;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +48;Private;233511;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +24;Private;289448;Assoc-voc;11;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +31;Private;173350;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +36;Private;130589;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +62;Private;94318;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +25;Private;297531;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +55;Private;129762;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;182614;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;40;Poland;<=50K +60;Private;120067;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;182370;Assoc-acdm;12;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +43;State-gov;60949;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;190511;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +47;Private;188195;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;89534;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;183358;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +38;?;75024;7th-8th;4;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;251120;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;40;England;<=50K +35;Private;108946;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;93223;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +61;Private;147393;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +71;?;45801;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;70;United-States;<=50K +35;State-gov;225385;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Federal-gov;23892;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;179668;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;Scotland;<=50K +27;Self-emp-not-inc;404998;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;68882;1st-4th;2;Widowed;Other-service;Unmarried;White;Female;0;0;35;Portugal;<=50K +55;Self-emp-not-inc;194065;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;185336;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +25;State-gov;152503;Some-college;10;Never-married;Tech-support;Not-in-family;Black;Male;0;0;40;United-States;<=50K +52;Private;167794;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +46;Private;96552;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;17;United-States;<=50K +52;State-gov;254285;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;32509;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;125492;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +36;Self-emp-inc;186035;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +69;?;168794;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;48;United-States;<=50K +36;Private;215503;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;<=50K +57;Local-gov;190748;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;35;United-States;<=50K +24;Private;117767;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +37;Private;301070;HS-grad;9;Divorced;Farming-fishing;Unmarried;White;Male;0;0;45;United-States;<=50K +39;Private;186183;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Private;131808;Assoc-voc;11;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +34;State-gov;156292;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +21;Private;124589;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;262819;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +61;Private;95500;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;241306;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;238680;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;55;Outlying-US(Guam-USVI-etc);<=50K +18;?;42293;10th;6;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +41;Local-gov;168071;HS-grad;9;Divorced;Exec-managerial;Own-child;White;Male;0;0;45;United-States;<=50K +42;Private;337629;12th;8;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;60;?;>50K +52;Private;168001;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +38;Private;97759;12th;8;Never-married;Other-service;Unmarried;White;Female;0;0;17;United-States;<=50K +51;Self-emp-not-inc;107096;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;76860;HS-grad;9;Married-civ-spouse;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +20;Private;70076;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;312017;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;174138;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;125892;Bachelors;13;Divorced;Exec-managerial;Other-relative;White;Male;0;0;40;United-States;<=50K +22;Private;210474;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;State-gov;157332;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +28;Private;30771;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;319768;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;France;>50K +25;Private;324609;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;Private;268234;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Local-gov;178109;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;43;United-States;<=50K +31;Private;25955;9th;5;Never-married;Craft-repair;Own-child;Amer-Indian-Eskimo;Male;0;0;35;United-States;<=50K +65;?;123484;HS-grad;9;Widowed;?;Other-relative;White;Female;0;0;25;United-States;<=50K +56;Local-gov;129762;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +22;Self-emp-not-inc;108506;Assoc-voc;11;Never-married;Farming-fishing;Not-in-family;Amer-Indian-Eskimo;Male;0;0;75;United-States;<=50K +27;Private;241607;Bachelors;13;Never-married;Tech-support;Other-relative;White;Male;0;0;50;United-States;<=50K +27;Federal-gov;214385;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +30;Local-gov;183000;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;290763;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;171924;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;43;United-States;>50K +19;Private;97189;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;22;United-States;<=50K +37;Federal-gov;329088;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +26;Private;58371;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +32;?;256371;12th;8;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +43;Private;35824;Some-college;10;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;173271;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;391349;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +24;Private;86153;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;295855;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;70;United-States;<=50K +33;Self-emp-not-inc;327902;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;285102;Masters;14;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Taiwan;>50K +57;Private;178353;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +45;Private;28119;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;7;United-States;<=50K +42;Private;197522;Some-college;10;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +25;Private;108542;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;35;United-States;<=50K +56;Private;179781;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;126974;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;180060;Bachelors;13;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;50;United-States;<=50K +35;Local-gov;38948;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;271572;9th;5;Never-married;Other-service;Other-relative;White;Male;0;0;52;United-States;<=50K +41;Private;177305;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +26;Private;238367;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;172232;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;30;United-States;<=50K +22;Private;153805;HS-grad;9;Never-married;Other-service;Unmarried;Other;Male;0;0;20;Puerto-Rico;<=50K +30;Private;26543;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;109067;Bachelors;13;Separated;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;213716;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;149809;Preschool;1;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +27;Private;185670;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +43;Federal-gov;233851;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +25;Private;213385;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;38238;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +68;Private;104438;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Ireland;>50K +17;Private;202344;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +45;Self-emp-not-inc;43434;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;102147;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Private;231826;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +49;State-gov;247378;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +29;Private;184078;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +20;Private;258430;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;19;United-States;<=50K +59;Private;244554;11th;7;Divorced;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +26;Private;252565;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +25;Private;262778;Masters;14;Never-married;Other-service;Not-in-family;White;Female;0;0;37;United-States;<=50K +33;Private;162572;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;>50K +35;Private;65706;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Federal-gov;102569;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +66;Private;350498;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;28;United-States;<=50K +67;?;159542;5th-6th;3;Widowed;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;142383;Assoc-acdm;12;Never-married;Sales;Not-in-family;Other;Male;0;0;36;United-States;<=50K +38;Private;229236;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Other;Male;0;0;40;Puerto-Rico;<=50K +72;Private;56559;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;12;United-States;<=50K +21;Private;27049;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +39;Private;36376;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;246965;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;12;United-States;<=50K +24;Private;268525;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;32;United-States;<=50K +25;Private;456604;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;223464;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;341797;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;174461;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;392167;10th;6;Divorced;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +60;Private;210064;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +67;?;233182;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;7;United-States;<=50K +62;Private;143312;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;60;United-States;<=50K +22;Private;326334;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +37;Private;179088;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;207637;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +52;Federal-gov;37289;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;>50K +31;Private;36069;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +23;Federal-gov;53245;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Self-emp-inc;399904;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;50;Mexico;<=50K +38;Self-emp-inc;199346;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;<=50K +23;Private;343019;10th;6;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;State-gov;232742;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +61;Self-emp-not-inc;390472;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;290124;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +39;Private;70240;5th-6th;3;Married-spouse-absent;Other-service;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +25;Private;153841;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;137367;Bachelors;13;Never-married;Sales;Unmarried;Asian-Pac-Islander;Male;0;0;44;Philippines;<=50K +66;Private;313255;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;24;United-States;<=50K +30;Private;100734;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +32;Private;248584;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;60001;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +18;Private;335065;7th-8th;4;Never-married;Sales;Own-child;White;Male;0;0;30;Mexico;<=50K +20;Private;219262;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +20;Private;186830;HS-grad;9;Never-married;Transport-moving;Other-relative;Black;Male;0;0;45;United-States;<=50K +34;Private;226385;Masters;14;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;609789;Assoc-acdm;12;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;307767;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;217460;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +41;Local-gov;160893;Preschool;1;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;30;United-States;<=50K +20;Private;68358;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +40;Self-emp-not-inc;243636;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +44;Self-emp-not-inc;71269;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;71898;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;35;Philippines;<=50K +38;?;212048;Prof-school;15;Divorced;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +30;Local-gov;115040;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Other-relative;White;Male;0;0;25;United-States;<=50K +25;Private;210794;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +22;?;88126;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;570821;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +63;?;146196;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +55;State-gov;169482;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +26;Private;63577;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +22;Private;208946;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;26598;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;189203;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;183892;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +82;?;194590;Assoc-voc;11;Widowed;?;Not-in-family;White;Female;0;0;8;United-States;<=50K +18;Private;188616;11th;7;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +60;Private;116707;11th;7;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;99199;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +39;Local-gov;183620;Some-college;10;Never-married;Protective-serv;Not-in-family;Black;Female;0;0;40;United-States;>50K +34;Private;110476;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;150726;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;214695;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;60;United-States;<=50K +37;Private;172694;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;50;United-States;<=50K +25;Private;344804;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;Mexico;<=50K +33;Private;319422;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;Peru;<=50K +34;State-gov;327902;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +35;Private;438176;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;65;United-States;<=50K +51;Private;197656;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +33;Private;219838;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +57;Self-emp-not-inc;35561;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +25;?;156848;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +56;Private;190257;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;156464;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;85;England;>50K +36;Private;65624;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;201699;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +55;Private;349910;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;>50K +88;Self-emp-not-inc;187097;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;264314;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;Columbia;<=50K +40;Self-emp-not-inc;282678;Masters;14;Separated;Exec-managerial;Unmarried;White;Female;0;0;20;United-States;<=50K +21;Private;188923;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;55;United-States;<=50K +46;Private;114797;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Black;Female;0;0;36;United-States;<=50K +56;Private;245215;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +36;Self-emp-not-inc;36270;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +67;Self-emp-not-inc;107138;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;77820;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +20;Private;39477;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;359759;HS-grad;9;Never-married;Craft-repair;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +19;?;249147;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +19;Private;44797;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Female;0;0;15;United-States;<=50K +25;Private;164488;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;48413;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;36592;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;91;United-States;<=50K +33;Private;280923;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +33;Federal-gov;29617;Some-college;10;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;189240;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;?;37932;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;181705;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;147548;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;85;United-States;<=50K +51;Self-emp-not-inc;306784;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +45;?;260953;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;230229;5th-6th;3;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Mexico;<=50K +63;Private;301108;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;22;United-States;<=50K +35;Private;263081;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;60;United-States;>50K +25;Self-emp-not-inc;37741;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +44;Private;150076;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +49;Self-emp-not-inc;148254;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Female;0;0;28;United-States;<=50K +52;Private;183611;1st-4th;2;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;258768;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;287658;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Male;0;0;40;United-States;<=50K +51;Private;95946;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +49;Private;31267;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;250135;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;176073;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +65;Private;23580;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;163665;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +30;Federal-gov;43953;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;144860;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +58;Self-emp-not-inc;61474;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +40;Private;225660;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +42;Private;336891;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +31;Self-emp-not-inc;210164;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;171080;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +42;Private;143342;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;281627;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;157262;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +31;Private;144949;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +34;Private;104293;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;195481;HS-grad;9;Married-civ-spouse;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +40;Private;193995;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +67;Private;105216;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +40;Private;147206;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;173585;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;18;United-States;<=50K +38;Private;248919;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Guatemala;<=50K +42;Private;280410;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;Haiti;<=50K +36;State-gov;170861;HS-grad;9;Separated;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +23;Self-emp-not-inc;409230;1st-4th;2;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +56;Private;340171;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +36;Private;41017;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;>50K +22;Private;416356;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +39;Private;261504;12th;8;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;State-gov;205555;Prof-school;15;Divorced;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +44;Private;245317;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;>50K +38;Private;153685;11th;7;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;52;United-States;<=50K +19;?;169758;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;99374;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +57;Local-gov;139452;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;16;United-States;<=50K +54;Private;227832;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Self-emp-not-inc;213024;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;30;United-States;<=50K +22;?;24008;Some-college;10;Never-married;?;Own-child;White;Male;0;0;72;United-States;<=50K +63;Self-emp-not-inc;33487;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-inc;187934;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;20;Poland;<=50K +26;Private;421561;11th;7;Married-civ-spouse;Other-service;Other-relative;White;Male;0;0;25;United-States;<=50K +40;Private;109969;11th;7;Divorced;Other-service;Other-relative;White;Female;0;0;20;United-States;<=50K +20;Private;116830;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;106951;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;42;United-States;<=50K +30;Private;89625;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;5;United-States;>50K +42;Private;194537;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;144002;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;202214;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;109762;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Private;292570;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +65;Private;94552;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Local-gov;46401;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +18;Private;151150;10th;6;Never-married;Farming-fishing;Own-child;White;Male;0;0;27;United-States;<=50K +31;Private;197689;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;38;United-States;<=50K +36;Self-emp-inc;180477;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +20;Private;181761;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;381153;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;165474;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;39;United-States;<=50K +38;Federal-gov;190174;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +17;Private;295991;10th;6;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +52;Without-pay;198262;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;<=50K +34;Private;190385;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +30;?;411560;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +49;Private;262116;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;<=50K +45;Private;178922;9th;5;Never-married;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +34;Self-emp-inc;209538;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +17;Private;216086;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +23;Private;636017;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +32;Private;155781;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;136873;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;State-gov;122066;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;>50K +27;State-gov;346406;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Male;0;0;50;United-States;<=50K +43;Private;117915;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;19914;HS-grad;9;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;50;Philippines;<=50K +55;Private;255364;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +31;Private;703107;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +34;Private;62374;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;<=50K +34;Private;96245;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;348796;Bachelors;13;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;136873;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +35;Private;388252;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +28;Private;47783;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +40;Federal-gov;544792;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;434463;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;39;United-States;<=50K +70;Private;221603;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;34;United-States;<=50K +23;Private;233711;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;111567;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;48;United-States;<=50K +57;Private;79830;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;192259;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +24;Private;239663;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +41;Local-gov;34987;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +38;Self-emp-not-inc;409189;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Mexico;<=50K +48;Private;135525;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;152159;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +18;Private;141363;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;214816;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Private;42907;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;48;United-States;<=50K +30;Private;161815;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +42;Private;127314;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +48;Private;395368;Some-college;10;Divorced;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +70;Private;184176;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +37;Private;112660;9th;5;Divorced;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +51;Private;183709;Assoc-voc;11;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;434114;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +57;Private;190997;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +26;Private;335533;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;176146;5th-6th;3;Separated;Craft-repair;Not-in-family;Other;Male;0;0;35;Mexico;<=50K +19;Private;272063;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +34;Private;169564;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;69847;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +22;Private;175431;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +32;Private;228357;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;40;?;<=50K +72;Self-emp-not-inc;284120;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;109133;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;167336;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +76;?;42209;9th;5;Widowed;?;Not-in-family;White;Male;0;0;25;United-States;<=50K +37;Private;282951;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;303155;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +44;Private;261899;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;<=50K +53;State-gov;71417;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;239130;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +69;Private;200560;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;20;United-States;<=50K +20;Private;157541;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;27;United-States;<=50K +33;Private;255004;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;Private;230136;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;60;United-States;>50K +22;Private;39615;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +20;Private;47678;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +42;Local-gov;281315;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;176123;HS-grad;9;Never-married;Tech-support;Other-relative;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +24;?;165350;HS-grad;9;Separated;?;Not-in-family;Black;Male;0;0;50;Germany;<=50K +32;Private;235862;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +41;Private;142579;Bachelors;13;Widowed;Sales;Unmarried;Black;Male;0;0;50;United-States;<=50K +35;Private;38294;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;111483;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Private;189850;Some-college;10;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +34;State-gov;145874;Doctorate;16;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;20;China;<=50K +23;Private;139012;Assoc-voc;11;Never-married;Transport-moving;Own-child;Asian-Pac-Islander;Male;0;0;40;South;<=50K +30;Local-gov;211654;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +55;Local-gov;173090;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +42;?;195124;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;60;Dominican-Republic;<=50K +39;Private;32146;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +52;Private;282674;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +42;Private;190403;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Male;0;0;60;Canada;<=50K +27;Private;198258;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +30;Self-emp-not-inc;172748;7th-8th;4;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +58;?;175017;Bachelors;13;Divorced;?;Not-in-family;White;Male;0;0;25;United-States;<=50K +18;Private;170183;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +52;Private;150812;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +24;Private;241185;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +58;Self-emp-inc;174864;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +35;Private;30529;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;301637;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;242912;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;35;United-States;<=50K +24;Private;117363;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +22;Private;333158;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;48;United-States;<=50K +39;Private;193260;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;25;Mexico;<=50K +34;State-gov;278378;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +58;Private;111394;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +26;Private;102476;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +29;Private;26451;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +67;?;209137;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;210945;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;35;Haiti;<=50K +62;Local-gov;115023;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;53833;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +36;Private;150057;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;<=50K +18;Private;128086;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;18;United-States;<=50K +25;Private;28473;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;155509;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Female;0;0;40;United-States;<=50K +56;Private;165315;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;?;<=50K +30;Private;171889;Prof-school;15;Never-married;Tech-support;Own-child;White;Female;0;0;24;United-States;<=50K +41;Local-gov;185057;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Private;277034;HS-grad;9;Divorced;Tech-support;Unmarried;White;Male;0;0;60;United-States;>50K +36;Private;166606;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;97453;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;54;United-States;<=50K +27;Private;136094;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +19;?;61855;HS-grad;9;Never-married;?;Other-relative;White;Female;0;0;30;United-States;<=50K +30;Private;182771;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;15;China;<=50K +47;Private;418961;Assoc-voc;11;Divorced;Sales;Unmarried;Black;Female;0;0;25;United-States;<=50K +39;Private;106961;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +31;Private;81846;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +44;Private;105936;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;36425;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;595088;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;63;United-States;<=50K +38;Private;149018;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;229613;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;33521;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +53;State-gov;105728;HS-grad;9;Married-civ-spouse;Other-service;Wife;Amer-Indian-Eskimo;Female;0;0;28;United-States;>50K +31;Private;193215;Some-college;10;Married-civ-spouse;Exec-managerial;Own-child;White;Male;0;0;50;United-States;<=50K +18;Private;137363;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;104892;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;149427;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +19;State-gov;176634;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;183279;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;?;225775;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;202091;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;60;United-States;<=50K +36;Private;123151;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;168187;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +42;Federal-gov;33521;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +33;State-gov;243678;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;164898;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;State-gov;290614;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;199265;HS-grad;9;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;207668;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +18;State-gov;30687;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;United-States;<=50K +24;State-gov;27939;Some-college;10;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;24;?;<=50K +17;Private;438996;10th;6;Never-married;Other-service;Other-relative;White;Male;0;0;40;Mexico;<=50K +48;Private;152915;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;?;186030;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;32;United-States;<=50K +46;Local-gov;297759;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Private;171242;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;>50K +28;Private;206088;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;182792;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;167725;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;24;United-States;<=50K +43;Private;160674;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;194710;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;255027;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;204641;10th;6;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;50;United-States;<=50K +20;State-gov;177787;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +29;Private;54932;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;35;United-States;>50K +54;Self-emp-not-inc;91506;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +34;Private;198634;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;227146;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +59;Private;135647;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;55508;7th-8th;4;Divorced;Farming-fishing;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;174912;HS-grad;9;Separated;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;175925;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Local-gov;329144;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;44;United-States;>50K +67;?;81761;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;<=50K +49;Self-emp-not-inc;102318;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;25;United-States;<=50K +30;Federal-gov;266463;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +56;Federal-gov;107314;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +29;Private;114158;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;124052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;144301;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;42;United-States;<=50K +28;Private;176683;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;70;United-States;>50K +23;Private;234663;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;178948;HS-grad;9;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;50;United-States;<=50K +37;Self-emp-not-inc;607848;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +39;Private;202937;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +32;Federal-gov;83413;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;>50K +26;Private;212798;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +57;Federal-gov;192258;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;112497;9th;5;Married-civ-spouse;Sales;Own-child;White;Male;0;0;50;United-States;>50K +30;Private;97521;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +27;Private;160972;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;322931;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +22;Private;403519;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Local-gov;330174;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;278155;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;39054;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +57;Private;170287;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +42;Private;336643;Assoc-voc;11;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;264166;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;45;Columbia;<=50K +44;Local-gov;433705;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;>50K +28;Private;27044;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;43;United-States;<=50K +42;Private;165599;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +26;Private;159759;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;385092;Some-college;10;Divorced;Prof-specialty;Own-child;White;Female;0;0;36;United-States;<=50K +42;Private;188808;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Male;0;0;30;United-States;<=50K +30;Private;167476;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +21;State-gov;194096;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +59;Private;182460;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;>50K +21;?;102323;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +56;Private;232139;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;341741;Preschool;1;Never-married;Other-service;Not-in-family;White;Female;0;0;12;United-States;<=50K +21;Private;206008;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;50;United-States;<=50K +48;Private;344415;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;37;United-States;>50K +35;State-gov;372130;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +43;Private;27766;Bachelors;13;Separated;Exec-managerial;Unmarried;White;Male;0;0;60;United-States;>50K +23;Private;140764;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +17;?;161259;10th;6;Never-married;?;Other-relative;White;Male;0;0;12;United-States;<=50K +41;Private;22201;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Japan;>50K +35;Self-emp-inc;187046;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;137591;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +53;Private;274276;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;341757;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;218542;HS-grad;9;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Local-gov;190020;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;221436;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Cuba;>50K +39;Self-emp-not-inc;52187;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;158776;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;51543;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +17;Private;146329;12th;8;Never-married;Sales;Own-child;White;Female;0;0;23;United-States;<=50K +31;Private;397467;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;105592;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;12;United-States;<=50K +39;Private;78171;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +46;State-gov;55377;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +31;Private;258932;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;0;80;Italy;<=50K +18;Private;219841;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +46;Private;156926;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +55;Private;160362;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +48;Private;192161;Bachelors;13;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;43;United-States;<=50K +53;Private;208570;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;26;United-States;<=50K +44;Self-emp-not-inc;182771;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;48;South;>50K +43;Private;151089;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;163002;HS-grad;9;Separated;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +56;Private;155657;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;20;Yugoslavia;<=50K +27;Private;217530;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +20;Private;244406;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +18;Local-gov;152182;10th;6;Never-married;Protective-serv;Own-child;White;Female;0;0;6;United-States;<=50K +38;Private;201454;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Self-emp-inc;144371;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;15;United-States;<=50K +55;Private;277034;Some-college;10;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;462832;HS-grad;9;Married-civ-spouse;Craft-repair;Wife;Black;Female;0;0;40;United-States;>50K +26;Private;200681;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +54;State-gov;119565;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Puerto-Rico;>50K +22;Private;192017;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +52;Local-gov;84808;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;100154;10th;6;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;169383;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +19;Without-pay;43887;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;10;United-States;<=50K +45;Private;54260;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;99;United-States;<=50K +25;Private;476334;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +90;Private;52386;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +33;Private;83671;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +45;Private;172960;Some-college;10;Divorced;Protective-serv;Not-in-family;White;Male;0;0;70;United-States;<=50K +47;Private;191957;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +38;Local-gov;40955;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;43;United-States;<=50K +37;Private;175643;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +53;State-gov;197184;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +56;Private;187295;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +18;Private;40822;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +44;Private;228729;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;?;<=50K +50;Private;240496;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;36;United-States;<=50K +26;Private;51961;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;20;United-States;<=50K +36;Private;174887;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;95855;11th;7;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;362259;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;30916;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +62;Private;153148;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;84;United-States;<=50K +46;Private;167915;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;98776;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;15;United-States;<=50K +27;Private;209801;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;?;<=50K +38;Private;183800;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;54595;12th;8;Never-married;Sales;Not-in-family;Black;Female;0;0;40;United-States;<=50K +34;Private;79637;Bachelors;13;Never-married;Exec-managerial;Own-child;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +50;Private;126566;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;527162;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +19;Private;139466;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +23;Private;64520;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +50;Private;97741;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +17;Private;350995;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +59;?;182836;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;>50K +25;Private;143267;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;48;United-States;<=50K +21;Private;346341;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;172175;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +17;Private;153035;10th;6;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +63;Private;200127;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Local-gov;204470;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;43;United-States;<=50K +45;Private;353012;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;194342;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;57898;12th;8;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;164707;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;40;?;<=50K +42;Private;269028;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;France;<=50K +56;Private;83922;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;Private;160647;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Female;0;0;46;United-States;<=50K +69;Private;125437;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +42;Private;246011;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;55;United-States;<=50K +19;Private;216937;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Other;Female;0;0;60;Guatemala;<=50K +56;Self-emp-not-inc;66356;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +61;Federal-gov;197311;Masters;14;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;301743;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +39;Private;98776;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +35;Self-emp-not-inc;32528;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;177119;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;44;United-States;<=50K +40;Self-emp-inc;193524;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +59;State-gov;192258;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;?;145917;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +42;Federal-gov;214838;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;30;United-States;>50K +59;Private;176011;Some-college;10;Separated;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +54;Self-emp-inc;147239;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +53;Private;155963;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +20;Private;360457;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;30;United-States;<=50K +54;Federal-gov;114674;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;95708;Masters;14;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;45;United-States;>50K +33;Local-gov;100734;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;55;United-States;<=50K +35;Private;188972;HS-grad;9;Widowed;Exec-managerial;Unmarried;White;Female;0;0;30;United-States;<=50K +22;Private;162667;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;Portugal;<=50K +29;Private;180758;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;46645;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;25;United-States;<=50K +30;Private;203258;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +17;Private;134480;11th;7;Never-married;Priv-house-serv;Own-child;White;Female;0;0;25;United-States;<=50K +35;Local-gov;85548;Some-college;10;Separated;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +25;Private;195994;1st-4th;2;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;Guatemala;<=50K +42;State-gov;148316;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +42;Private;227466;HS-grad;9;Never-married;Other-service;Other-relative;Black;Male;0;0;40;United-States;<=50K +19;Private;68552;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +32;Private;252257;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +44;Private;30126;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Private;304353;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;>50K +47;Self-emp-not-inc;171968;Bachelors;13;Widowed;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;60;Thailand;<=50K +24;Private;205839;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +30;State-gov;218640;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;>50K +42;Private;150568;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +19;Private;382738;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;138940;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;37;United-States;<=50K +26;Self-emp-not-inc;258306;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;<=50K +52;Private;152373;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +50;Local-gov;141875;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;157289;HS-grad;9;Married-spouse-absent;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +37;Private;184498;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;199832;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;23545;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;175710;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +27;Private;52028;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;40;South;<=50K +61;Self-emp-not-inc;315977;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +47;Private;202322;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +30;Private;251825;Assoc-acdm;12;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +54;Private;202115;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;>50K +56;Local-gov;216824;Prof-school;15;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +69;Private;145656;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;24;United-States;<=50K +30;Private;137076;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +36;Private;152621;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Canada;>50K +42;Self-emp-not-inc;27242;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +45;Federal-gov;358242;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +26;Private;300290;11th;7;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +28;Local-gov;149991;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;42;United-States;>50K +31;Private;189759;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +32;Private;339482;5th-6th;3;Separated;Farming-fishing;Other-relative;White;Male;0;0;60;Mexico;<=50K +51;Private;100933;HS-grad;9;Never-married;Exec-managerial;Other-relative;White;Female;0;0;40;United-States;<=50K +29;Private;354558;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +64;Private;285052;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;10;United-States;<=50K +26;State-gov;175044;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +68;Private;45508;5th-6th;3;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;22;United-States;<=50K +32;Private;173351;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +29;Private;173611;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +51;?;182543;1st-4th;2;Separated;?;Unmarried;White;Female;0;0;40;Mexico;<=50K +21;Private;143062;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +26;?;137951;10th;6;Separated;?;Other-relative;White;Female;0;0;40;Puerto-Rico;<=50K +33;Local-gov;293063;Bachelors;13;Married-spouse-absent;Prof-specialty;Other-relative;Black;Male;0;0;40;?;<=50K +26;Private;377754;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;193477;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +29;Local-gov;277323;HS-grad;9;Never-married;Protective-serv;Unmarried;White;Male;0;0;45;United-States;<=50K +19;Private;69182;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;27;United-States;<=50K +51;Private;219599;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +45;Private;129371;9th;5;Separated;Other-service;Unmarried;Other;Female;0;0;40;Trinadad&Tobago;<=50K +20;Private;470875;HS-grad;9;Married-civ-spouse;Sales;Own-child;Black;Male;0;0;32;United-States;<=50K +40;Private;201734;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;48;United-States;<=50K +52;Local-gov;91689;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;166546;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;24;United-States;<=50K +24;Private;293324;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;219262;9th;5;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +38;Self-emp-not-inc;403391;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;367749;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Mexico;<=50K +24;Private;128487;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;State-gov;111363;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;75;United-States;>50K +49;Private;240869;7th-8th;4;Never-married;Other-service;Other-relative;White;Male;0;0;35;United-States;<=50K +36;Private;163278;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;416415;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +46;?;280030;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;40;Mexico;<=50K +46;Private;251243;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Local-gov;167159;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;70;United-States;>50K +29;Private;161857;HS-grad;9;Married-spouse-absent;Other-service;Not-in-family;Other;Female;0;0;40;Columbia;<=50K +37;Private;160035;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;?;190205;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +28;?;161290;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;112403;Bachelors;13;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;238726;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;164530;11th;7;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;20;United-States;<=50K +19;Private;456572;HS-grad;9;Never-married;Farming-fishing;Other-relative;White;Male;0;0;35;United-States;<=50K +31;Self-emp-not-inc;177675;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Private;102953;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;?;224238;Some-college;10;Never-married;?;Own-child;White;Male;0;0;2;United-States;<=50K +46;Private;155489;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +40;Local-gov;261497;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;35;United-States;<=50K +58;Private;365511;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;Other;Male;0;0;40;Mexico;<=50K +36;Private;187999;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Local-gov;190350;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;35;United-States;<=50K +17;?;166759;12th;8;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;168262;10th;6;Divorced;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +46;Private;165953;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +26;Private;375980;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;37;United-States;<=50K +40;Federal-gov;406463;Masters;14;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;State-gov;231472;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +60;Self-emp-not-inc;78913;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;69107;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +22;?;182387;Some-college;10;Never-married;?;Not-in-family;Asian-Pac-Islander;Female;0;0;12;Thailand;<=50K +31;Private;169002;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;55;United-States;<=50K +34;Private;422836;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;Mexico;<=50K +27;State-gov;230922;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;Scotland;<=50K +40;Private;195892;Some-college;10;Divorced;Transport-moving;Not-in-family;Black;Female;0;0;40;United-States;<=50K +68;Private;163346;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;32;United-States;<=50K +51;Private;82566;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;86505;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;20;United-States;<=50K +43;Private;178780;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +23;State-gov;173945;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;27;United-States;<=50K +48;Private;176810;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;113838;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +31;Local-gov;121055;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;>50K +71;?;52171;7th-8th;4;Divorced;?;Unmarried;White;Male;0;0;45;United-States;<=50K +17;Private;566049;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;8;United-States;<=50K +37;Private;67433;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +26;Private;39014;12th;8;Married-civ-spouse;Priv-house-serv;Wife;Other;Female;0;0;40;Dominican-Republic;<=50K +17;Private;51939;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +34;Private;100669;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +33;Private;112847;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +41;Local-gov;32185;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +59;Private;138370;10th;6;Married-spouse-absent;Protective-serv;Not-in-family;Asian-Pac-Islander;Male;0;0;40;India;<=50K +46;Private;180505;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +45;Private;168262;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;85126;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;113838;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;197905;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;316589;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;336367;Assoc-acdm;12;Never-married;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;<=50K +23;Private;209955;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;210013;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +37;Private;224541;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;88061;11th;7;Married-spouse-absent;Machine-op-inspct;Unmarried;Asian-Pac-Islander;Female;0;0;40;South;<=50K +49;Private;43206;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;>50K +37;Private;202950;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +26;Private;154093;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +51;Private;355954;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +24;Private;379418;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Self-emp-not-inc;286372;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;387270;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +21;Private;270043;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +39;Self-emp-not-inc;65738;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;United-States;>50K +33;Private;159888;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;278039;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +21;Private;265434;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;30;United-States;<=50K +24;Private;208882;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +23;Private;53513;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;45;United-States;<=50K +40;Private;225193;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;63;United-States;<=50K +48;Private;166809;Bachelors;13;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +42;Self-emp-not-inc;175674;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +45;Federal-gov;368947;Bachelors;13;Never-married;Protective-serv;Not-in-family;Black;Female;0;0;40;United-States;<=50K +31;Private;194901;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +53;Private;203173;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;267431;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;55;United-States;<=50K +32;Private;111836;Some-college;10;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;50;United-States;<=50K +34;Private;198613;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;?;<=50K +41;Self-emp-inc;149102;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +57;Local-gov;121111;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;130397;10th;6;Never-married;Farming-fishing;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +17;Private;184198;11th;7;Never-married;Sales;Own-child;White;Female;0;0;13;United-States;<=50K +17;Private;121287;9th;5;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +82;Self-emp-inc;120408;Some-college;10;Widowed;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +40;Private;164678;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +26;Private;388812;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;35;United-States;<=50K +37;Private;294919;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;101684;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +65;Private;36209;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;22;United-States;>50K +39;Private;123983;Bachelors;13;Divorced;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;40;China;<=50K +36;Self-emp-not-inc;340001;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;203828;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;183789;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;305619;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +63;Self-emp-not-inc;174181;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +59;Private;131869;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +49;Self-emp-not-inc;43479;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;?;203126;9th;5;Never-married;?;Unmarried;White;Female;0;0;40;Dominican-Republic;<=50K +17;Private;118792;11th;7;Never-married;Sales;Own-child;White;Female;0;0;9;United-States;<=50K +28;Private;272913;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;30;Mexico;<=50K +45;Federal-gov;222011;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +40;Self-emp-inc;301007;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +45;Private;197731;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;173736;9th;5;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +19;?;182590;10th;6;Never-married;?;Not-in-family;White;Female;0;0;38;United-States;<=50K +59;Local-gov;93211;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;22;United-States;>50K +49;Local-gov;219021;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;48;United-States;>50K +37;Private;137229;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;>50K +31;Self-emp-not-inc;281030;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +21;Private;234108;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;46868;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;15;United-States;<=50K +20;?;162667;HS-grad;9;Never-married;?;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +51;Private;173291;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;305160;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +48;Private;212954;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +39;Local-gov;112284;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;152958;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;145389;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;25;United-States;<=50K +54;Self-emp-inc;119570;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +40;Private;272343;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +44;Private;187720;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;41;United-States;<=50K +50;Private;145409;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +42;Private;208726;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +34;Private;203488;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;330416;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;25803;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;171150;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;329425;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;185452;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;201179;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;182268;Preschool;1;Married-spouse-absent;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;95763;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +48;Private;125892;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Poland;<=50K +21;Private;121407;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;36;United-States;<=50K +52;Private;373367;11th;7;Widowed;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Local-gov;165982;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +45;Private;165484;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +30;Private;156890;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +43;Private;244172;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;35;?;<=50K +36;Private;219814;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Guatemala;<=50K +42;Private;171841;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +62;Private;205643;Prof-school;15;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +65;?;174904;HS-grad;9;Separated;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;102559;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Canada;>50K +47;Private;60267;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +43;Private;388725;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;215712;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +44;Private;171722;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;39;United-States;<=50K +25;Private;193051;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;25;United-States;<=50K +21;Private;305446;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;146949;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;43;United-States;<=50K +21;Private;322144;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Self-emp-inc;75742;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;El-Salvador;>50K +64;?;380687;Bachelors;13;Married-civ-spouse;?;Wife;Black;Female;0;0;8;United-States;<=50K +55;Self-emp-not-inc;95149;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;99;United-States;<=50K +42;Private;68469;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Self-emp-not-inc;27653;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +21;Private;410439;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;24;United-States;<=50K +28;Private;37821;Assoc-voc;11;Never-married;Sales;Unmarried;White;Female;0;0;55;?;<=50K +45;Private;228570;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;35;United-States;<=50K +21;Private;141453;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;88215;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;40;China;>50K +53;Private;48641;12th;8;Never-married;Other-service;Not-in-family;Other;Female;0;0;35;United-States;<=50K +45;Private;185385;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;341471;HS-grad;9;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;4;United-States;<=50K +41;Private;163322;11th;7;Divorced;Exec-managerial;Unmarried;White;Female;0;0;36;United-States;<=50K +43;Self-emp-inc;602513;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +53;Local-gov;287192;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;32;Mexico;<=50K +34;Private;215047;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Private;308118;Assoc-acdm;12;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +53;Private;137192;Bachelors;13;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Male;0;0;50;United-States;<=50K +33;Private;275369;7th-8th;4;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;35;Haiti;<=50K +45;Private;99971;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +48;Self-emp-inc;103713;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +42;Private;253770;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Self-emp-not-inc;31267;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;198146;11th;7;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +23;Private;178207;Some-college;10;Never-married;Handlers-cleaners;Unmarried;Amer-Indian-Eskimo;Female;0;0;35;United-States;<=50K +21;Private;317175;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +53;Federal-gov;221791;HS-grad;9;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +61;Self-emp-inc;187124;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;>50K +58;State-gov;280519;HS-grad;9;Divorced;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;207568;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +45;Local-gov;192684;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +39;Private;103260;Bachelors;13;Married-civ-spouse;Craft-repair;Wife;White;Female;0;0;30;United-States;>50K +48;Self-emp-inc;382242;Doctorate;16;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +41;Private;106900;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;<=50K +50;Private;55527;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;45;United-States;<=50K +23;Private;33884;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;29762;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +47;Federal-gov;168109;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;70;United-States;<=50K +51;Private;207449;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +60;Self-emp-inc;189098;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;194259;Bachelors;13;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Local-gov;194630;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Local-gov;179681;HS-grad;9;Never-married;Transport-moving;Own-child;White;Female;0;0;37;United-States;<=50K +42;State-gov;136996;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;48;United-States;<=50K +32;Private;143604;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;16;United-States;<=50K +34;Private;261799;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;45;United-States;>50K +48;Private;143281;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;48;United-States;<=50K +38;Private;185556;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Italy;<=50K +38;Private;111499;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +40;Self-emp-not-inc;280433;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;37314;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +38;Private;103408;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;?;<=50K +26;Private;270151;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;State-gov;96748;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +20;Private;164775;5th-6th;3;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Guatemala;<=50K +49;Private;190319;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;Philippines;<=50K +23;Private;213115;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +47;Private;156926;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;Canada;>50K +43;Private;112967;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;35373;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +60;Self-emp-not-inc;220342;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +29;Private;163167;HS-grad;9;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;404951;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;38;United-States;<=50K +39;Private;122032;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;251508;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;36;United-States;<=50K +50;Self-emp-not-inc;197054;Prof-school;15;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +64;Self-emp-not-inc;36960;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +35;Private;165930;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;?;178960;11th;7;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;214503;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +51;Private;110458;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;202125;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Self-emp-not-inc;284329;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +29;Private;192924;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;340614;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +20;Private;196678;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;266489;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;?;99127;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +23;Self-emp-inc;215395;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Self-emp-inc;183898;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +48;Private;97176;HS-grad;9;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +40;Private;145160;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;<=50K +51;Private;357949;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;16;United-States;<=50K +59;Private;177120;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;288229;Some-college;10;Married-civ-spouse;Sales;Other-relative;Asian-Pac-Islander;Female;0;0;40;Greece;<=50K +39;Private;509060;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;47932;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;103925;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +44;State-gov;183829;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +51;Private;138852;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;188186;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;20;Hungary;<=50K +22;Private;34616;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +19;Private;220819;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Female;0;0;40;United-States;<=50K +31;Federal-gov;281540;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +53;Private;47396;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;141350;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;331433;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;32;United-States;<=50K +40;Federal-gov;346532;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +21;Private;241367;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;10;United-States;<=50K +39;Private;216256;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Italy;>50K +36;Private;116138;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;<=50K +18;Private;193166;9th;5;Never-married;Sales;Own-child;White;Female;0;0;42;United-States;<=50K +50;Private;81548;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;167979;11th;7;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +19;Private;67759;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;43;United-States;<=50K +53;Private;200190;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +49;Private;403112;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +40;Private;214891;Bachelors;13;Married-spouse-absent;Transport-moving;Own-child;Other;Male;0;0;45;?;<=50K +31;Private;142675;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;88500;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +35;Local-gov;145308;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;204377;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +43;Self-emp-not-inc;260696;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +51;Private;231181;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;21;United-States;<=50K +54;Private;260052;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +76;Local-gov;178665;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +33;Private;226267;7th-8th;4;Never-married;Sales;Not-in-family;White;Male;0;0;43;Mexico;<=50K +19;Private;111232;12th;8;Never-married;Transport-moving;Own-child;White;Male;0;0;15;United-States;<=50K +26;Private;212748;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;110677;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +24;Private;306779;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;65;United-States;<=50K +48;Private;318331;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +36;State-gov;143385;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;94081;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +22;Private;194723;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +43;Private;163985;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;189759;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Italy;<=50K +53;State-gov;195922;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Federal-gov;54159;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +47;Local-gov;166863;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +52;Private;104501;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Germany;>50K +39;Private;210626;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;448026;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;189749;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;90934;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;64;Philippines;>50K +34;State-gov;253121;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;181776;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;Private;162397;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +20;Private;70708;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +47;State-gov;103406;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;224658;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +26;Local-gov;213451;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;10;Jamaica;<=50K +53;Private;139671;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;36201;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +17;Local-gov;173497;11th;7;Never-married;Prof-specialty;Own-child;Black;Male;0;0;15;United-States;<=50K +46;Private;375606;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +45;Self-emp-not-inc;107231;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;France;<=50K +23;Private;216811;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +41;Private;288679;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;105516;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;282972;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;4;United-States;<=50K +18;Self-emp-inc;117372;11th;7;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +38;Private;112497;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +28;Private;192384;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +49;Private;43348;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +29;Private;181822;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Local-gov;216070;Masters;14;Married-civ-spouse;Exec-managerial;Wife;Amer-Indian-Eskimo;Female;0;0;50;United-States;>50K +34;State-gov;112062;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;218551;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +25;Private;404616;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;169460;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;240081;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +22;Private;147655;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;90277;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;?;<=50K +49;Private;60751;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;491000;Bachelors;13;Never-married;Exec-managerial;Other-relative;Black;Male;0;0;45;United-States;<=50K +33;Private;399088;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;34987;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;53;United-States;<=50K +26;?;167835;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +31;Private;288983;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;266070;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Local-gov;31873;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;294400;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +19;?;184308;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;30;United-States;<=50K +36;Self-emp-not-inc;175769;Prof-school;15;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +56;Private;182273;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;106541;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;138192;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;Private;196791;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;>50K +22;Private;223019;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +44;Private;109273;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +60;Self-emp-not-inc;95490;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +65;Private;149131;11th;7;Divorced;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +44;Private;219155;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;England;>50K +53;Local-gov;82783;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;214858;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;170230;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +40;Self-emp-inc;209344;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;15;?;<=50K +35;Private;90406;11th;7;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +41;Self-emp-inc;299813;9th;5;Married-civ-spouse;Sales;Wife;White;Female;0;0;70;Dominican-Republic;<=50K +28;Private;188064;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Canada;<=50K +53;Private;246117;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +26;Private;132749;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;45;United-States;<=50K +28;Local-gov;201099;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Female;0;0;40;United-States;<=50K +27;Private;97490;Some-college;10;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;221252;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Female;0;0;8;United-States;<=50K +26;Private;116991;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +53;Private;161691;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +34;Private;107793;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Germany;>50K +50;Self-emp-inc;194514;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;50;Trinadad&Tobago;<=50K +30;Private;278502;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;62;United-States;<=50K +47;Private;343742;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +27;?;204074;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Federal-gov;31965;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;143604;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;29;?;<=50K +35;Private;174308;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;162551;12th;8;Married-civ-spouse;Sales;Wife;Asian-Pac-Islander;Female;0;0;50;?;<=50K +39;Self-emp-inc;372525;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +30;Private;75167;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +19;Private;93518;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +25;?;126797;HS-grad;9;Married-spouse-absent;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Self-emp-not-inc;25124;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +21;Private;112137;Some-college;10;Never-married;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;20;South;<=50K +30;?;58798;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;0;44;United-States;<=50K +25;Self-emp-not-inc;21472;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;22;United-States;<=50K +32;Private;90969;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +42;Private;52849;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;106347;Some-college;10;Divorced;Sales;Unmarried;White;Male;0;0;47;United-States;<=50K +48;Private;199735;Bachelors;13;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;44;Germany;<=50K +24;Private;488541;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +46;Private;403911;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +53;Private;172991;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +36;Federal-gov;210945;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;70;United-States;<=50K +34;Private;157446;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;45;United-States;<=50K +25;Private;109390;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;70;United-States;<=50K +45;Private;144579;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Federal-gov;203488;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;202871;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +44;Private;336906;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;177596;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;Puerto-Rico;>50K +30;Private;79448;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;10;United-States;<=50K +32;Local-gov;191731;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;?;233014;HS-grad;9;Divorced;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +29;Private;133937;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +20;Private;219211;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +35;State-gov;94529;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;247547;HS-grad;9;Separated;Prof-specialty;Other-relative;Black;Female;0;0;40;United-States;<=50K +29;Private;29361;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +21;Private;166851;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +43;Federal-gov;197069;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Philippines;>50K +33;Private;153588;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +61;Federal-gov;151369;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +42;Private;174112;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;520033;12th;8;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +35;State-gov;194828;Some-college;10;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +32;?;216908;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +22;Private;126613;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +61;Private;26254;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;67804;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +58;Local-gov;53481;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +42;Private;412379;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;220187;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +26;?;256141;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;268222;HS-grad;9;Separated;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +59;Private;99131;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +36;Private;98389;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;44;United-States;>50K +18;?;211177;12th;8;Never-married;?;Other-relative;Black;Male;0;0;20;United-States;<=50K +18;Private;115443;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;65078;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;24896;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +19;Private;184710;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;30;United-States;<=50K +28;Private;410450;Bachelors;13;Divorced;Other-service;Unmarried;White;Female;0;0;48;England;>50K +37;Private;83893;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;113309;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;160625;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;47;United-States;<=50K +17;Local-gov;340043;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +29;State-gov;243875;Assoc-voc;11;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;554206;HS-grad;9;Separated;Transport-moving;Not-in-family;Black;Male;0;0;20;United-States;<=50K +36;Private;361888;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;>50K +37;Self-emp-not-inc;205359;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;15;United-States;<=50K +47;State-gov;167281;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;35663;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;Private;357437;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;390856;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;Mexico;<=50K +54;Private;202415;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;77247;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +40;Local-gov;101795;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;42;United-States;<=50K +32;Private;198068;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;199326;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;178841;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Private;136951;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +26;Self-emp-inc;109240;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +35;Self-emp-not-inc;128876;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;103358;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;India;<=50K +43;Private;354408;12th;8;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +32;Private;206051;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;35;United-States;<=50K +45;Private;155659;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +48;Private;143299;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +31;Private;252210;5th-6th;3;Never-married;Other-service;Own-child;White;Male;0;0;40;Mexico;<=50K +20;?;129240;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +28;Private;398918;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Self-emp-not-inc;240612;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +22;Private;429346;HS-grad;9;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;40;United-States;<=50K +19;Private;123718;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +38;Private;455379;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;63;United-States;>50K +23;Private;376416;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +24;Self-emp-inc;234663;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;282142;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +45;State-gov;208049;HS-grad;9;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +88;Private;68539;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;126501;11th;7;Never-married;Adm-clerical;Own-child;Amer-Indian-Eskimo;Female;0;0;15;South;<=50K +24;Private;186452;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +84;?;127184;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +48;Private;165267;10th;6;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +46;Private;124733;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +31;Self-emp-inc;149726;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +58;Private;41374;HS-grad;9;Widowed;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +35;Local-gov;329759;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;212433;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +36;Private;185099;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +47;Local-gov;126754;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +57;Private;122497;9th;5;Widowed;Other-service;Unmarried;Black;Male;0;0;52;?;<=50K +30;Private;118056;Some-college;10;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +30;Local-gov;200892;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +30;Self-emp-inc;84119;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;43;United-States;<=50K +23;Local-gov;197918;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;150533;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +52;Private;443742;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +27;Private;104423;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;169133;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +21;Private;185551;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;36;United-States;<=50K +60;Private;174486;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +69;State-gov;50468;Prof-school;15;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;34;United-States;>50K +24;Private;196943;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;120691;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;25;United-States;<=50K +60;State-gov;198815;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;Mexico;<=50K +64;Private;22186;Some-college;10;Widowed;Tech-support;Not-in-family;White;Female;0;0;35;United-States;<=50K +39;Self-emp-inc;188069;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +51;Private;233149;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +51;Private;138358;10th;6;Divorced;Craft-repair;Not-in-family;Black;Female;0;0;35;United-States;<=50K +25;Private;338013;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;?;332666;10th;6;Never-married;?;Own-child;White;Female;0;0;4;United-States;<=50K +37;Private;166339;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +74;Self-emp-not-inc;392886;HS-grad;9;Widowed;Farming-fishing;Not-in-family;White;Female;0;0;14;United-States;<=50K +26;State-gov;141838;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +23;Private;520759;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;30;United-States;<=50K +57;Self-emp-inc;37345;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;>50K +20;Private;387779;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;15;United-States;<=50K +37;Private;201531;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;123598;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;380614;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;>50K +40;Private;83859;HS-grad;9;Widowed;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +50;State-gov;24790;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;266820;Preschool;1;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;35;Mexico;<=50K +44;Private;85440;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;421837;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;224566;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +54;Private;294991;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +40;Federal-gov;189610;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;52;United-States;<=50K +38;Private;70995;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +20;Private;215232;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;10;United-States;<=50K +71;?;178295;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;3;United-States;<=50K +35;Private;56201;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +62;Private;98076;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Private;351810;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Cuba;<=50K +56;Self-emp-not-inc;144351;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;90;United-States;<=50K +30;State-gov;137613;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;20;Taiwan;<=50K +17;Private;54257;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +35;Private;98389;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;184135;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;1;United-States;<=50K +46;Self-emp-not-inc;140121;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +33;Self-emp-not-inc;24504;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;129528;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;415578;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Private;97142;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;201328;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;256620;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;96854;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;Private;95519;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +47;Private;112791;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;291407;11th;7;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +32;Private;239659;Some-college;10;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;70;United-States;<=50K +28;Private;183151;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +58;?;97634;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;143807;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;186934;Masters;14;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Private;170065;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +56;State-gov;83696;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Female;0;0;38;?;<=50K +21;Private;204596;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +56;?;32604;Some-college;10;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;Private;85041;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;20;United-States;<=50K +62;Local-gov;140851;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +24;Private;196280;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +52;Federal-gov;38973;Bachelors;13;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;39182;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;198841;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +40;Private;694812;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;247444;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Nicaragua;<=50K +41;Private;294270;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +59;Private;195820;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +27;Private;329426;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;37;United-States;<=50K +19;?;174871;Some-college;10;Never-married;?;Own-child;White;Male;0;0;23;United-States;<=50K +41;Private;116103;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;206903;Bachelors;13;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;35;United-States;<=50K +50;Private;217577;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;337693;5th-6th;3;Never-married;Other-service;Own-child;White;Female;0;0;40;El-Salvador;<=50K +38;Private;204501;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +30;Private;169186;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;60;United-States;<=50K +48;Private;109421;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +40;Private;200479;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;Local-gov;221317;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +59;Self-emp-not-inc;132925;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;?;283531;HS-grad;9;Divorced;?;Unmarried;Black;Female;0;0;20;United-States;<=50K +34;Private;170769;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +47;Self-emp-inc;186410;Prof-school;15;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;>50K +64;Self-emp-inc;307786;1st-4th;2;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +29;Private;380560;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +38;Local-gov;147258;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;124356;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +53;Private;98791;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;216473;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +70;?;135339;Bachelors;13;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +38;Private;107303;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;152744;Bachelors;13;Divorced;Sales;Other-relative;Asian-Pac-Islander;Female;0;0;40;South;<=50K +34;Self-emp-not-inc;100079;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;55;India;<=50K +24;Private;117779;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;10;Hungary;<=50K +23;Private;197613;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;411068;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +47;Private;192984;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Federal-gov;137184;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;>50K +63;Self-emp-not-inc;231105;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;35;United-States;>50K +18;Local-gov;146586;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;60;United-States;<=50K +32;Private;32406;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +33;Private;578701;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;?;<=50K +19;Private;206777;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +27;Local-gov;133495;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;34722;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;48;United-States;>50K +38;Self-emp-not-inc;133299;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;24967;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;47;United-States;<=50K +35;Self-emp-not-inc;171968;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +22;Private;412156;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;51290;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +23;Private;293565;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;226288;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Self-emp-inc;110445;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;160634;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;174242;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;390316;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +18;Private;298860;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +65;Private;171584;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;232664;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +64;Private;63676;10th;6;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +68;Private;170376;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +56;Self-emp-not-inc;175964;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;105813;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +50;Federal-gov;306707;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;12;United-States;<=50K +45;Private;177543;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;28;United-States;<=50K +43;Private;320277;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;129495;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Private;275995;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +20;?;86318;Some-college;10;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +36;Private;280440;Assoc-acdm;12;Never-married;Tech-support;Unmarried;White;Female;0;0;45;United-States;<=50K +26;Private;371556;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;408229;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;32;United-States;<=50K +47;Private;149337;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;60;United-States;<=50K +53;Private;355802;Some-college;10;Widowed;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +44;Self-emp-not-inc;112507;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;462869;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +35;Private;413648;5th-6th;3;Never-married;Farming-fishing;Unmarried;White;Male;0;0;36;United-States;<=50K +34;Private;29235;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;149823;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;39530;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;4;United-States;<=50K +23;Private;197387;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;37;Mexico;<=50K +56;Local-gov;255406;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;168322;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +46;Private;278322;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Private;115813;Assoc-acdm;12;Separated;Adm-clerical;Unmarried;White;Female;0;0;57;United-States;<=50K +42;Private;289636;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;46;United-States;<=50K +48;Private;101684;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;133425;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +40;Private;349405;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;36;United-States;<=50K +75;Self-emp-not-inc;165968;Assoc-voc;11;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +39;Private;185099;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +46;Federal-gov;268281;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Private;154949;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +34;Private;176711;HS-grad;9;Divorced;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;165064;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;213750;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +45;Self-emp-not-inc;77132;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +21;Private;109667;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;162164;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +40;Private;219591;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +20;?;327462;10th;6;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +68;Private;236943;9th;5;Divorced;Farming-fishing;Not-in-family;Black;Male;0;0;20;United-States;<=50K +40;Private;89226;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +20;Private;124751;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;24;United-States;<=50K +48;Local-gov;144122;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +27;Private;98769;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +57;Federal-gov;170066;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Self-emp-inc;162439;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;98;United-States;>50K +47;Private;22900;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Local-gov;102130;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;?;215743;11th;7;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;381583;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;45;United-States;>50K +56;Local-gov;198277;12th;8;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;243178;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;28;United-States;<=50K +38;Local-gov;177305;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;<=50K +19;Private;167149;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +31;Private;382368;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;Germany;<=50K +44;Local-gov;277144;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;60;United-States;<=50K +41;Private;171351;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;265099;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +23;Private;105617;9th;5;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +37;Local-gov;217689;Some-college;10;Married-civ-spouse;Other-service;Husband;Amer-Indian-Eskimo;Male;0;0;32;United-States;<=50K +46;?;81136;Assoc-voc;11;Divorced;?;Unmarried;White;Male;0;0;30;United-States;<=50K +43;Self-emp-not-inc;73883;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;45;United-States;<=50K +31;Private;339482;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +40;Private;326232;Some-college;10;Divorced;Transport-moving;Unmarried;White;Male;0;0;40;United-States;>50K +27;Private;106316;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;12;United-States;<=50K +64;Local-gov;198728;Some-college;10;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +31;Federal-gov;126501;Assoc-voc;11;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;233802;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;45;United-States;<=50K +37;Self-emp-not-inc;204501;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;Canada;>50K +28;Private;208249;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;24;United-States;<=50K +42;Private;188693;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +60;Self-emp-inc;93272;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +17;Private;159299;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +21;?;303588;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +46;Private;35136;10th;6;Divorced;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +18;Private;139576;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;252355;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;27;United-States;<=50K +44;Self-emp-not-inc;83812;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +36;Private;89718;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +65;Private;222810;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;456618;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Mexico;<=50K +21;Private;296158;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;United-States;<=50K +28;Private;36601;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +27;Private;195337;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;State-gov;282721;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;12;United-States;<=50K +40;Private;206049;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;223392;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +37;Private;131827;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +33;Private;549413;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +34;Private;69491;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +44;Local-gov;193755;Assoc-acdm;12;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;598802;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;266255;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;32954;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +40;Private;291808;HS-grad;9;Divorced;Protective-serv;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Private;190728;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;59184;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +41;Private;196456;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +59;Private;147989;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +50;Private;195784;12th;8;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;202214;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;10;United-States;<=50K +40;Self-emp-inc;225165;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;54825;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;188905;5th-6th;3;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Mexico;<=50K +17;Private;132636;11th;7;Never-married;Transport-moving;Own-child;White;Female;0;0;16;United-States;<=50K +42;Local-gov;228320;7th-8th;4;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;415500;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +19;Private;254247;12th;8;Never-married;Adm-clerical;Own-child;White;Male;0;0;38;?;<=50K +43;Private;255635;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Mexico;<=50K +46;Private;96080;9th;5;Separated;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +18;?;78181;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +50;Local-gov;339547;Prof-school;15;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Laos;>50K +47;Self-emp-not-inc;126500;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +33;Private;159574;7th-8th;4;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +59;Self-emp-not-inc;128105;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +39;Local-gov;89508;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +29;Private;370242;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;67257;Bachelors;13;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +24;Private;62952;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;29235;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;20;United-States;<=50K +52;State-gov;101119;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Federal-gov;140516;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;159888;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +19;?;45643;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +23;Private;166371;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;60;United-States;<=50K +37;State-gov;160910;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +25;State-gov;257064;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;38;United-States;<=50K +30;Private;83253;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +40;Private;128700;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;243010;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;Other;Male;0;0;32;United-States;<=50K +24;Private;132320;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;45;United-States;<=50K +32;Private;234755;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +35;Private;142616;HS-grad;9;Separated;Other-service;Own-child;Black;Female;0;0;30;United-States;<=50K +20;Private;148509;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;State-gov;240738;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +25;Private;32276;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;28;United-States;<=50K +50;Local-gov;163921;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;464103;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Local-gov;327825;HS-grad;9;Divorced;Protective-serv;Own-child;White;Female;0;0;32;United-States;<=50K +37;Private;267085;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;234663;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +55;Private;104996;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +61;Private;101265;12th;8;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;40;Italy;<=50K +22;Private;184975;HS-grad;9;Married-spouse-absent;Other-service;Own-child;White;Female;0;0;3;United-States;<=50K +23;Private;246965;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;12;United-States;<=50K +39;Private;301867;Bachelors;13;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;24;Philippines;<=50K +21;Private;185948;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +52;Self-emp-inc;134854;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Self-emp-not-inc;95949;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +51;Self-emp-not-inc;88528;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Female;0;0;99;United-States;<=50K +47;Private;24723;10th;6;Divorced;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;0;0;45;United-States;<=50K +49;?;171411;9th;5;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;184581;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +48;Federal-gov;100067;Some-college;10;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;182863;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +20;Never-worked;462294;Some-college;10;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +61;Private;85434;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +72;Private;158092;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +19;Private;104844;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +47;?;89806;Some-college;10;Divorced;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;35;United-States;<=50K +24;Private;89347;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;157236;Some-college;10;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;0;40;Poland;<=50K +19;Private;261259;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +20;Private;286166;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +23;Private;122272;HS-grad;9;Never-married;Craft-repair;Own-child;White;Female;0;0;40;United-States;<=50K +58;Private;248739;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;53;United-States;>50K +20;Private;224238;12th;8;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +62;Private;138157;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;12;United-States;<=50K +67;Private;236627;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;2;United-States;<=50K +37;Local-gov;191364;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;France;>50K +38;Private;391040;Assoc-voc;11;Separated;Tech-support;Unmarried;White;Female;0;0;20;United-States;<=50K +23;Private;134997;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;80;United-States;<=50K +28;Private;392487;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +25;Private;216724;HS-grad;9;Divorced;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;96073;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +31;Self-emp-inc;103435;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +29;Self-emp-not-inc;96718;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;37;United-States;<=50K +51;Private;173987;9th;5;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;224849;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;249857;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +34;Private;340458;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +19;?;440417;Some-college;10;Never-married;?;Own-child;White;Female;0;0;15;United-States;<=50K +36;Private;175643;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +35;Private;297485;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;232954;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;109419;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;127768;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;32;United-States;>50K +41;Private;252986;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +20;Private;380544;Assoc-acdm;12;Never-married;Transport-moving;Own-child;White;Male;0;0;20;United-States;<=50K +52;Private;306108;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;232855;Some-college;10;Separated;Other-service;Unmarried;Black;Female;0;0;37;United-States;<=50K +44;Private;130126;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +50;Private;194231;Masters;14;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;>50K +49;Self-emp-inc;197038;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +36;?;168223;Bachelors;13;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +71;State-gov;26109;Prof-school;15;Married-civ-spouse;Other-service;Husband;White;Male;0;0;28;United-States;<=50K +20;Private;285671;HS-grad;9;Never-married;Other-service;Other-relative;Black;Male;0;0;25;United-States;<=50K +20;Private;153583;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;?;<=50K +59;Self-emp-inc;103948;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +38;Private;40319;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;42;United-States;<=50K +55;Local-gov;159028;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;98675;9th;5;Never-married;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +45;Private;90758;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +43;Self-emp-not-inc;75435;HS-grad;9;Divorced;Craft-repair;Unmarried;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +19;Private;219189;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +33;Private;203463;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +63;Private;187635;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;27153;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;150324;Assoc-acdm;12;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;83704;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;176262;Assoc-voc;11;Never-married;Adm-clerical;Other-relative;White;Female;0;0;36;United-States;<=50K +20;Private;179423;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;8;United-States;<=50K +45;Private;168038;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +59;Private;108765;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +66;Local-gov;188220;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;>50K +29;Private;114870;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +32;State-gov;77723;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +57;Private;133902;HS-grad;9;Widowed;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +57;Private;191318;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +50;Self-emp-inc;67794;HS-grad;9;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +56;Private;117872;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +26;Private;55929;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;48;United-States;<=50K +22;?;165065;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;Italy;<=50K +26;Self-emp-not-inc;34307;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;65;United-States;<=50K +33;Private;246038;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-not-inc;147258;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +45;Private;329144;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +23;Private;216181;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;36;Iran;<=50K +23;Private;391171;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;25;United-States;<=50K +35;Local-gov;223242;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;38240;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;148444;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +56;State-gov;110257;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Federal-gov;101345;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;268098;12th;8;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;36;United-States;<=50K +21;?;369084;Some-college;10;Never-married;?;Other-relative;White;Male;0;0;10;United-States;<=50K +20;Private;162688;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;38;United-States;<=50K +17;?;48751;11th;7;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +44;Federal-gov;184099;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +19;Private;307496;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;23;United-States;<=50K +71;?;176986;HS-grad;9;Widowed;?;Unmarried;White;Male;0;0;24;United-States;<=50K +23;Private;267955;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;283969;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;Mexico;<=50K +29;State-gov;204516;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;United-States;<=50K +33;Private;167771;Some-college;10;Separated;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +46;Private;345073;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;48;United-States;>50K +21;?;380219;Some-college;10;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +19;Private;185097;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;37;United-States;<=50K +29;Private;144808;Some-college;10;Married-civ-spouse;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +34;Private;187203;Assoc-acdm;12;Never-married;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +26;Private;125089;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;289458;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;144798;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;?;172152;Bachelors;13;Never-married;?;Not-in-family;Asian-Pac-Islander;Male;0;0;25;Taiwan;<=50K +28;Private;207513;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;48;United-States;<=50K +24;?;164574;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;213024;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +24;Self-emp-not-inc;83374;Some-college;10;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;30;United-States;>50K +37;Private;192939;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;Private;424494;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +24;Private;215243;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;42;United-States;<=50K +40;Private;30682;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +20;Private;306639;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +23;Local-gov;218678;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;219130;Some-college;10;Never-married;Other-service;Not-in-family;Other;Female;0;0;40;United-States;<=50K +64;Private;180624;Assoc-acdm;12;Never-married;Prof-specialty;Other-relative;White;Female;0;0;30;United-States;<=50K +28;Private;194472;Some-college;10;Married-civ-spouse;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +52;Local-gov;205767;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +28;Private;249870;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;50;United-States;<=50K +31;Private;211242;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +77;Private;149912;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;10;United-States;<=50K +22;Private;85389;HS-grad;9;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +17;?;806316;11th;7;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +38;Private;329980;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +45;?;236612;11th;7;Divorced;?;Own-child;Black;Male;0;0;40;United-States;<=50K +25;Local-gov;249214;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +50;Private;257126;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +53;Local-gov;204397;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;291979;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;138667;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +30;Private;94413;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;30;United-States;<=50K +31;Federal-gov;166626;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +39;State-gov;326566;Some-college;10;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +30;Private;165503;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;65;United-States;<=50K +48;Private;102597;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;44;United-States;<=50K +62;?;113234;Masters;14;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +39;Private;177277;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +45;Private;260490;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +32;Private;237478;11th;7;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Federal-gov;36885;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +17;Private;166242;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +19;?;158603;10th;6;Never-married;?;Own-child;Black;Male;0;0;25;United-States;<=50K +25;Private;274228;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;84;United-States;<=50K +42;Private;185145;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;57;United-States;<=50K +66;Private;28367;Bachelors;13;Married-civ-spouse;Priv-house-serv;Other-relative;White;Male;0;0;99;United-States;<=50K +63;Self-emp-not-inc;28612;HS-grad;9;Widowed;Sales;Not-in-family;White;Male;0;0;70;United-States;<=50K +43;Private;191429;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;United-States;<=50K +26;Private;459548;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;20;Mexico;<=50K +23;Private;65481;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;>50K +39;Private;186130;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +47;Self-emp-inc;350759;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;359678;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;48;United-States;<=50K +35;Private;220595;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;29599;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;State-gov;299153;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +46;Private;75256;HS-grad;9;Married-civ-spouse;Priv-house-serv;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;143583;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +41;Private;308550;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;60;United-States;<=50K +50;Private;145717;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +36;Private;334366;11th;7;Separated;Exec-managerial;Not-in-family;White;Female;0;0;32;United-States;<=50K +31;?;76198;HS-grad;9;Separated;?;Own-child;White;Female;0;0;20;United-States;<=50K +45;Self-emp-not-inc;155489;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +50;Private;197322;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +52;Private;194259;7th-8th;4;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;<=50K +40;Private;346189;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +64;?;178556;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;56;United-States;>50K +51;Self-emp-inc;162943;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +56;State-gov;67662;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;39;United-States;<=50K +35;Private;126675;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +55;Self-emp-not-inc;278228;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +30;Private;169152;HS-grad;9;Never-married;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;204052;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;215392;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +43;Self-emp-inc;83348;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +24;Local-gov;196816;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;541343;10th;6;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +33;Local-gov;55921;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;70;United-States;<=50K +32;Private;251701;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;?;<=50K +29;Federal-gov;119848;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;25837;11th;7;Never-married;Prof-specialty;Own-child;White;Male;0;0;15;United-States;<=50K +20;Private;236592;11th;7;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +45;State-gov;199326;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +22;Private;341610;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;35;?;<=50K +45;Private;175958;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Private;198965;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;193537;7th-8th;4;Married-spouse-absent;Other-service;Not-in-family;White;Female;0;0;35;Puerto-Rico;<=50K +24;Private;438839;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;298227;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;35;United-States;<=50K +28;Private;271466;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +23;Private;335570;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +21;Private;206891;7th-8th;4;Never-married;Farming-fishing;Own-child;White;Female;0;0;38;United-States;<=50K +23;Private;162551;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +45;Private;145637;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +41;Private;101290;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Federal-gov;229376;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +38;Private;439592;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +37;Private;161141;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +70;Private;304570;Bachelors;13;Widowed;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Male;0;0;32;Philippines;<=50K +28;Local-gov;407672;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;73928;Assoc-voc;11;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +69;Private;230417;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;China;>50K +37;Private;260093;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;96020;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;104421;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;State-gov;93415;HS-grad;9;Widowed;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +27;Local-gov;282664;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Other;Female;0;0;45;?;<=50K +21;Private;202871;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;44;United-States;<=50K +29;Private;169683;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;271603;7th-8th;4;Never-married;Other-service;Not-in-family;White;Male;0;0;24;?;<=50K +32;Private;340917;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +31;Private;329874;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;State-gov;120781;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +48;Private;138069;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +58;Self-emp-not-inc;33309;HS-grad;9;Widowed;Farming-fishing;Not-in-family;White;Male;0;0;80;United-States;<=50K +23;Private;76432;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;State-gov;277635;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +49;Local-gov;123088;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;46;United-States;<=50K +51;Private;57698;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;181820;HS-grad;9;Separated;Craft-repair;Own-child;White;Male;0;0;53;United-States;<=50K +40;Self-emp-not-inc;98985;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Black;Male;0;0;50;United-States;<=50K +59;Private;98350;HS-grad;9;Divorced;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;China;<=50K +47;Private;125120;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Female;0;0;50;United-States;<=50K +37;Private;243409;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;62857;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;283174;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +48;Private;107373;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +29;Private;201155;9th;5;Never-married;Sales;Not-in-family;White;Female;0;0;48;United-States;<=50K +48;Private;187505;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +37;Private;61778;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;30;United-States;<=50K +28;Private;149652;10th;6;Never-married;Other-service;Own-child;Black;Female;0;0;30;United-States;<=50K +56;Private;170324;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;Trinadad&Tobago;<=50K +45;Private;165937;HS-grad;9;Divorced;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +60;State-gov;114060;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +53;State-gov;58913;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +37;State-gov;378916;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;241885;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;224421;Assoc-voc;11;Married-AF-spouse;Farming-fishing;Husband;White;Male;0;0;44;United-States;>50K +31;?;213771;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;36;United-States;<=50K +39;Private;315565;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;Cuba;<=50K +31;Local-gov;153005;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +17;Private;198606;11th;7;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;16;United-States;<=50K +19;Private;260333;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +24;Private;219510;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;32;United-States;<=50K +34;Private;136862;1st-4th;2;Never-married;Other-service;Other-relative;White;Female;0;0;40;Guatemala;<=50K +58;Private;187067;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;62;Canada;<=50K +23;Private;325921;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +33;Private;268127;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +76;Private;142535;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Male;0;0;6;United-States;<=50K +40;Private;177083;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +28;Private;77009;7th-8th;4;Divorced;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +41;Private;306405;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +22;Federal-gov;262819;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;49087;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;53833;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;81145;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +41;Private;215479;Some-college;10;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;43;United-States;<=50K +29;Private;113464;HS-grad;9;Never-married;Transport-moving;Other-relative;Other;Male;0;0;40;Dominican-Republic;<=50K +72;Federal-gov;217864;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-inc;117721;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +19;Private;199484;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +25;Private;248851;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;116968;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Private;366618;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +17;Private;240143;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +59;?;424468;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +50;?;194186;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +29;Private;247053;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;180599;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +29;Local-gov;190330;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +29;State-gov;199450;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Male;0;0;40;United-States;<=50K +32;Local-gov;199539;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +17;?;94366;10th;6;Never-married;?;Other-relative;White;Male;0;0;6;United-States;<=50K +50;Self-emp-not-inc;29231;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +43;Private;33126;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;102085;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;212064;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +54;State-gov;166774;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;>50K +65;Private;95303;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;?;379768;HS-grad;9;Never-married;?;Own-child;Other;Female;0;0;40;United-States;<=50K +70;Self-emp-inc;247383;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +53;Private;229465;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +21;Private;180052;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +20;Private;214387;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +47;State-gov;149337;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Male;0;0;38;United-States;<=50K +31;Private;34374;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;Self-emp-not-inc;58683;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;403037;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Private;32365;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +49;Private;155489;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +33;Self-emp-inc;289886;HS-grad;9;Never-married;Other-service;Unmarried;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +30;Federal-gov;54684;Prof-school;15;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;?;<=50K +19;Private;101549;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +48;Self-emp-inc;51579;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +41;Private;40151;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +29;Private;244721;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;35;United-States;>50K +47;Local-gov;228372;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +53;Local-gov;236873;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +19;Private;250249;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +71;Private;93202;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;16;United-States;<=50K +29;Private;176723;Some-college;10;Never-married;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +43;Local-gov;175526;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;91842;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +52;Private;71768;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Private;181220;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +28;Private;204516;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Self-emp-not-inc;89172;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;<=50K +37;Federal-gov;143547;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;310889;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Local-gov;150324;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;216472;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +64;Private;212838;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +45;Private;168283;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;187702;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +19;Private;60661;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;52;United-States;<=50K +54;Private;115284;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;45;United-States;>50K +61;Self-emp-inc;98350;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;>50K +18;Private;195372;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +62;?;81578;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +33;Private;111567;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;244572;HS-grad;9;Separated;Other-service;Not-in-family;Black;Female;0;0;37;United-States;<=50K +54;Private;230919;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;282604;Some-college;10;Married-civ-spouse;Protective-serv;Other-relative;White;Male;0;0;24;United-States;<=50K +54;Private;320196;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;Germany;<=50K +42;Private;201466;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +51;Federal-gov;254211;Masters;14;Widowed;Sales;Unmarried;White;Male;0;0;50;El-Salvador;>50K +41;Private;599629;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;>50K +31;State-gov;161631;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;202373;Assoc-voc;11;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +52;Private;169549;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;127185;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +18;Private;184277;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +58;Private;119751;HS-grad;9;Married-civ-spouse;Priv-house-serv;Other-relative;Asian-Pac-Islander;Female;0;0;60;Philippines;<=50K +23;Private;294701;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;26842;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +43;State-gov;114537;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;126386;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;163787;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +44;Private;98211;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;175509;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +48;Private;159854;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-inc;120920;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;187551;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +41;State-gov;27305;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +35;Private;216711;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +47;Local-gov;218596;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;280292;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;32;United-States;<=50K +40;Private;200496;Bachelors;13;Separated;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;78090;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +23;Private;118693;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;203488;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +27;Local-gov;172091;HS-grad;9;Never-married;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +32;Private;113364;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +72;Self-emp-not-inc;139889;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;74;United-States;<=50K +32;Private;110279;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;35;United-States;<=50K +53;Private;242859;Some-college;10;Separated;Adm-clerical;Own-child;White;Male;0;0;40;Cuba;<=50K +18;Private;132986;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +41;Federal-gov;187462;Assoc-voc;11;Divorced;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Private;264961;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;45;United-States;<=50K +70;?;148065;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;4;United-States;>50K +46;Self-emp-inc;200949;Bachelors;13;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;50;?;<=50K +47;Private;47247;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +56;Local-gov;571017;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;15;United-States;<=50K +47;Private;302711;11th;7;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Self-emp-inc;50356;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;199336;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;25;United-States;<=50K +42;Private;341178;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;44;Mexico;<=50K +42;Federal-gov;70240;Some-college;10;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +46;Private;229394;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Private;82098;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;55;United-States;<=50K +57;Private;170411;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +25;Private;109532;12th;8;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;142682;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;Dominican-Republic;<=50K +34;Self-emp-inc;127651;Bachelors;13;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +27;Local-gov;236472;Bachelors;13;Divorced;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +37;Private;111499;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;425199;Some-college;10;Divorced;Sales;Unmarried;White;Male;0;0;45;United-States;<=50K +38;Private;229009;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;234807;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;37;United-States;<=50K +45;Private;738812;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;<=50K +56;Private;204816;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +64;Private;342494;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Local-gov;226311;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +23;Private;143062;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +42;Local-gov;125155;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;90;United-States;<=50K +23;Private;329925;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +26;?;208994;Some-college;10;Never-married;?;Own-child;White;Male;0;0;12;United-States;<=50K +56;Local-gov;212864;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +21;Private;118693;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;253593;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +32;State-gov;206051;Some-college;10;Married-spouse-absent;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +72;Private;497280;9th;5;Widowed;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +19;Private;140985;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;25;United-States;<=50K +25;Local-gov;191921;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;25;United-States;<=50K +58;Private;142158;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;35;United-States;<=50K +24;Private;249046;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;213019;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;38;United-States;>50K +40;Private;199599;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Private;186191;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;?;<=50K +25;Private;28008;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;82488;Bachelors;13;Married-civ-spouse;Sales;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;>50K +36;Private;117073;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;325786;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;37546;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;204226;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;133299;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;29702;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;307812;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;174545;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;46;United-States;<=50K +23;Private;233472;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;184147;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;20;United-States;<=50K +33;Private;200246;Some-college;10;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;166585;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +21;Private;335570;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;30;?;<=50K +39;Private;53569;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;167065;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +32;Private;113364;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;30;United-States;<=50K +40;Federal-gov;219266;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;Private;205975;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +56;Private;65325;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;<=50K +30;Local-gov;194740;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;99065;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;39;United-States;<=50K +25;Private;212793;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +33;Private;112941;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +41;State-gov;187322;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;283676;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;173682;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;168470;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Private;141807;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Italy;<=50K +25;Private;245628;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;15;Mexico;<=50K +31;Private;264864;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +39;Private;262841;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +55;Private;37438;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Private;170800;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +44;Private;152150;Assoc-acdm;12;Separated;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;159580;12th;8;Divorced;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;Private;477209;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;54;United-States;<=50K +32;Private;70985;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;241998;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +28;Private;249541;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;135339;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +32;Private;44675;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +46;State-gov;247992;7th-8th;4;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;Self-emp-inc;48087;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Local-gov;114045;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +60;State-gov;69251;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;38;China;>50K +67;Private;192670;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +19;Private;268392;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;30;United-States;<=50K +55;?;170994;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;431513;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;>50K +19;State-gov;37332;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +19;Private;35865;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +43;Private;183891;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;150309;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;90;United-States;<=50K +65;Private;93318;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;<=50K +32;Private;171814;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;State-gov;183735;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +41;Private;353541;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +72;?;271352;10th;6;Divorced;?;Not-in-family;White;Male;0;0;12;United-States;<=50K +27;Private;223751;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +75;Self-emp-inc;164570;11th;7;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +39;?;281363;10th;6;Widowed;?;Unmarried;White;Female;0;0;15;United-States;<=50K +47;Private;34458;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;254293;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;270147;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +48;Private;195491;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +36;Local-gov;255454;Bachelors;13;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +18;Private;126125;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +33;Private;618191;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;163110;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;State-gov;235379;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;55465;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +67;Local-gov;181220;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;20;United-States;<=50K +42;Private;26672;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +59;Private;98361;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Local-gov;219883;HS-grad;9;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +47;Private;33865;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;48;United-States;<=50K +68;Private;168794;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +30;Private;94245;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;34572;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;60;United-States;<=50K +49;Private;348751;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;65382;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +51;Private;178054;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;?;>50K +24;Private;140001;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;117789;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;238917;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +52;Local-gov;330799;9th;5;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +48;Private;209460;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;184779;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;20;United-States;<=50K +31;Private;139000;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +30;Private;361742;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;260782;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;?;<=50K +51;Private;203435;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;100579;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;356067;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;16;United-States;<=50K +46;Private;87250;Bachelors;13;Separated;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;255817;5th-6th;3;Never-married;Other-service;Other-relative;White;Female;0;0;40;El-Salvador;<=50K +48;Self-emp-not-inc;243631;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;30;South;<=50K +34;Self-emp-inc;544268;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;Self-emp-not-inc;98061;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;95691;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;30;Columbia;<=50K +47;Private;145868;11th;7;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;65038;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +43;Local-gov;227734;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;22;United-States;<=50K +19;Local-gov;176831;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;35;United-States;<=50K +22;Private;211678;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +40;Local-gov;157240;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;70;United-States;<=50K +41;Self-emp-not-inc;145441;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Yugoslavia;<=50K +42;Private;76487;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +31;State-gov;557853;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;47;United-States;<=50K +69;?;262352;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;32;United-States;<=50K +58;Self-emp-not-inc;118253;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +36;Private;146625;11th;7;Widowed;Other-service;Unmarried;Black;Female;0;0;12;United-States;<=50K +31;Private;174201;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +41;Private;121130;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;385847;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;?;83439;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;114158;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +27;Private;381789;12th;8;Married-civ-spouse;Farming-fishing;Own-child;White;Male;0;0;55;United-States;<=50K +17;Private;82041;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;Canada;<=50K +35;Self-emp-not-inc;115618;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +45;Self-emp-not-inc;106110;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;99;United-States;<=50K +44;Private;267521;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;90692;Assoc-voc;11;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +51;Private;57101;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;236913;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +64;Self-emp-not-inc;388625;10th;6;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;10;United-States;>50K +54;Self-emp-not-inc;261207;7th-8th;4;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;Cuba;<=50K +43;Private;245487;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;Mexico;<=50K +32;Private;262153;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +26;Self-emp-not-inc;68729;HS-grad;9;Never-married;Sales;Other-relative;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +37;Private;126954;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +38;Private;85074;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;383306;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;99373;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;Local-gov;157942;HS-grad;9;Widowed;Transport-moving;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;Private;241928;HS-grad;9;Separated;Adm-clerical;Not-in-family;Black;Female;0;0;32;United-States;<=50K +37;Private;348739;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +37;Private;95654;10th;6;Divorced;Exec-managerial;Unmarried;White;Female;0;0;35;United-States;<=50K +25;Private;367306;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;270421;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +63;?;221592;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +42;State-gov;39239;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;70;United-States;<=50K +32;Private;72744;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +42;State-gov;367292;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;408498;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +65;Self-emp-inc;157403;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;231263;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;244147;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;10;United-States;<=50K +24;Private;220944;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +51;Federal-gov;314007;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;?;200862;10th;6;Never-married;?;Not-in-family;Black;Female;0;0;35;United-States;<=50K +28;Private;33374;11th;7;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +32;Self-emp-inc;345489;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +77;Private;83601;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;162302;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +26;Private;112847;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;147344;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +57;State-gov;183657;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;35;United-States;>50K +40;Private;130760;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +50;Private;163948;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +19;Private;316797;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;45;Mexico;<=50K +54;Federal-gov;332243;12th;8;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +51;Local-gov;195844;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +51;Local-gov;387250;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +68;?;40956;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +17;Private;178953;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +32;Private;398988;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;535978;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +42;Private;296982;Some-college;10;Divorced;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;231991;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;295799;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;State-gov;201569;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +58;Private;193568;11th;7;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;Private;97128;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +42;Private;203393;Bachelors;13;Married-civ-spouse;Craft-repair;Wife;Black;Female;0;0;35;United-States;>50K +49;Private;138370;Masters;14;Married-spouse-absent;Protective-serv;Not-in-family;Asian-Pac-Islander;Male;0;0;40;India;<=50K +41;Self-emp-inc;120277;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;<=50K +43;Private;91949;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +46;Private;228372;Bachelors;13;Divorced;Sales;Unmarried;White;Male;0;0;40;United-States;>50K +28;Private;132191;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +57;Private;195835;Some-college;10;Married-spouse-absent;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;185399;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;38;United-States;<=50K +79;Self-emp-not-inc;103684;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;140559;HS-grad;9;Married-civ-spouse;Priv-house-serv;Wife;White;Female;0;0;45;United-States;<=50K +35;Federal-gov;110188;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +30;Private;112358;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;>50K +26;Private;151810;10th;6;Never-married;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +48;Private;144844;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;205839;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;113760;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +50;Private;138358;10th;6;Separated;Adm-clerical;Not-in-family;Black;Female;0;0;47;Jamaica;<=50K +47;Self-emp-not-inc;216657;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +36;Private;278576;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;174373;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +73;Private;220019;9th;5;Widowed;Other-service;Unmarried;White;Female;0;0;9;United-States;<=50K +24;?;311949;HS-grad;9;Never-married;?;Not-in-family;Asian-Pac-Islander;Female;0;0;45;?;<=50K +34;Private;303867;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Private;154210;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Hong;<=50K +28;?;131310;12th;8;Married-civ-spouse;?;Wife;White;Female;0;0;20;Germany;<=50K +46;Private;202560;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +20;?;358783;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +29;Private;423024;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +24;Private;206671;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;State-gov;245310;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +18;Private;31983;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +41;Private;124956;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;90;United-States;>50K +59;Private;118358;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Private;491421;5th-6th;3;Never-married;Farming-fishing;Unmarried;White;Male;0;0;50;United-States;<=50K +50;Private;151580;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;248990;1st-4th;2;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;24;Mexico;<=50K +42;Private;157425;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +36;Private;221650;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Japan;<=50K +62;Private;88055;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;United-States;>50K +71;Private;216608;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;682947;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +44;Private;228124;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;?;217194;10th;6;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +49;Self-emp-not-inc;171540;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +28;Self-emp-not-inc;410351;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Poland;<=50K +26;Private;163747;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;55;United-States;<=50K +18;Private;108892;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +43;Private;180096;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +23;Private;117480;10th;6;Never-married;Craft-repair;Own-child;White;Male;0;0;44;United-States;<=50K +21;Private;163333;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +20;Self-emp-not-inc;306710;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;150553;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;18;Philippines;<=50K +77;Private;123959;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +32;Private;24961;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +37;Local-gov;327120;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +29;Self-emp-not-inc;33798;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;298489;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +30;?;101697;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +31;Private;144064;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +59;Self-emp-not-inc;195835;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +29;Federal-gov;184723;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;>50K +56;Private;265086;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +19;Private;235909;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;42645;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +58;State-gov;279878;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Private;104892;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Private;137063;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;38;United-States;<=50K +38;Self-emp-not-inc;58972;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;191389;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;28;United-States;>50K +42;Private;183241;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +29;Private;91547;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;210959;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;365516;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +37;Private;112271;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;269455;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;164379;Bachelors;13;Divorced;Sales;Unmarried;Black;Female;0;0;35;United-States;>50K +28;Private;109621;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;104858;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;56;United-States;>50K +39;Private;99270;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;193524;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +60;State-gov;313946;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;162358;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +59;Private;200700;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;48;United-States;>50K +21;Private;116489;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;60;United-States;<=50K +22;Private;118310;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Female;0;0;16;United-States;<=50K +33;Private;296538;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +41;Local-gov;195897;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +31;Self-emp-not-inc;216283;Assoc-acdm;12;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;>50K +62;Private;345780;Assoc-voc;11;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;216685;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;<=50K +28;Local-gov;210945;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;60;United-States;<=50K +42;Private;192712;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +23;Private;178272;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Federal-gov;321333;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +19;Private;294029;11th;7;Never-married;Sales;Own-child;Other;Female;0;0;32;Nicaragua;<=50K +23;Private;112819;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;152636;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;50;United-States;<=50K +63;?;301611;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +51;Private;134808;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;64216;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;90;United-States;<=50K +29;State-gov;214284;Masters;14;Never-married;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;20;Taiwan;<=50K +17;Private;231439;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +42;Self-emp-inc;120277;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +21;Private;364685;11th;7;Never-married;Tech-support;Own-child;White;Female;0;0;35;United-States;<=50K +26;Private;18827;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;169129;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;202051;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +19;Private;574271;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;28;United-States;<=50K +65;State-gov;29276;7th-8th;4;Widowed;Other-service;Other-relative;White;Female;0;0;24;United-States;<=50K +52;Self-emp-not-inc;104501;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;>50K +17;Private;394176;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +27;Private;85625;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;22;United-States;<=50K +53;Private;340723;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;149342;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;73715;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +34;Private;143083;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;18;United-States;<=50K +49;Local-gov;98738;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +86;Private;149912;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;96129;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +47;Private;216096;Some-college;10;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;35;Puerto-Rico;<=50K +32;Private;171091;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +30;Self-emp-not-inc;79303;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +25;Local-gov;182380;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;36271;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +60;Private;118197;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +39;Local-gov;193815;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +26;Private;222637;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;55;Puerto-Rico;<=50K +27;Private;118230;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;174040;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +64;State-gov;105748;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;205100;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;45;United-States;>50K +39;Private;130620;7th-8th;4;Married-spouse-absent;Machine-op-inspct;Unmarried;Other;Female;0;0;40;Dominican-Republic;<=50K +30;?;361817;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +47;Self-emp-not-inc;235646;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +32;Private;53277;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +24;Private;456460;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;293091;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +62;Private;210935;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +48;?;199763;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +62;?;223447;12th;8;Divorced;?;Not-in-family;White;Male;0;0;40;Canada;<=50K +35;Self-emp-not-inc;233533;Bachelors;13;Separated;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;<=50K +27;Private;95647;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +49;Private;199763;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;35;United-States;<=50K +18;Private;74539;10th;6;Never-married;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +19;Private;84610;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +63;Self-emp-inc;96930;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +54;Private;115602;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;<=50K +24;Private;237341;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +61;Private;143800;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +50;Self-emp-inc;163921;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +36;Private;68273;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +21;Private;113163;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;50;United-States;<=50K +30;Private;345705;Some-college;10;Married-civ-spouse;Exec-managerial;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;192286;Some-college;10;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;52;United-States;<=50K +39;Local-gov;236391;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;38;United-States;>50K +42;Private;106679;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +47;?;308242;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;46094;Bachelors;13;Divorced;Transport-moving;Not-in-family;White;Male;0;0;33;United-States;<=50K +29;Private;194940;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;341643;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;55;United-States;<=50K +23;Private;210474;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +28;Private;76313;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +34;Private;115858;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;55191;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +67;Self-emp-not-inc;364862;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;334787;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;205733;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;?;120163;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;208591;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;115422;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;92262;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;91964;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;107682;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Self-emp-not-inc;597843;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;Columbia;<=50K +19;Private;389942;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;442274;12th;8;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +23;Private;595461;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +33;Self-emp-not-inc;127894;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +35;Private;196899;Bachelors;13;Never-married;Handlers-cleaners;Not-in-family;Asian-Pac-Islander;Female;0;0;50;Haiti;<=50K +58;Private;212534;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;71209;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +38;Private;190759;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;344624;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +27;?;194024;9th;5;Separated;?;Unmarried;White;Female;0;0;50;United-States;<=50K +19;Private;87497;11th;7;Never-married;Transport-moving;Other-relative;White;Male;0;0;10;United-States;<=50K +22;Private;236907;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +59;Private;169639;Assoc-acdm;12;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;149507;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +18;Private;294387;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;161708;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +28;Private;282389;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +28;Private;64940;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +49;Private;195727;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +38;Local-gov;37931;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +19;Private;170720;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +41;Private;39581;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;24;El-Salvador;<=50K +50;Private;206862;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +46;Private;216934;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;Portugal;<=50K +20;Private;143062;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;242391;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +28;Private;165030;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +37;Private;199251;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +66;Private;174491;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +35;?;333305;Some-college;10;Married-civ-spouse;?;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;203138;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;50;United-States;>50K +25;Private;220220;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;45;United-States;<=50K +56;Private;201344;Some-college;10;Widowed;Craft-repair;Unmarried;White;Female;0;0;38;United-States;<=50K +47;Self-emp-not-inc;218676;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +55;Self-emp-not-inc;141807;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;State-gov;222434;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;266860;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +41;Private;159549;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;195248;Some-college;10;Never-married;Sales;Own-child;Other;Female;0;0;20;United-States;<=50K +52;Private;109413;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;185291;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;>50K +21;?;140012;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +35;Self-emp-not-inc;114366;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;169631;HS-grad;9;Married-spouse-absent;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;312232;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +46;Private;229737;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;India;>50K +70;?;306563;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;106014;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +21;Private;25265;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;30;United-States;<=50K +29;Private;71860;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +41;Self-emp-inc;94113;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +51;Self-emp-not-inc;208003;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;113550;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +47;Private;83046;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;205830;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;El-Salvador;<=50K +23;Private;245147;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +49;Private;274720;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;163047;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;State-gov;47902;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +50;Private;128798;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +77;Private;154205;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;10;United-States;<=50K +27;Private;176683;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +29;Self-emp-inc;104737;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +54;Private;349340;Preschool;1;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +39;State-gov;218249;Some-college;10;Separated;Prof-specialty;Unmarried;Black;Female;0;0;37;United-States;<=50K +32;Private;281540;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +36;Federal-gov;112847;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +24;Local-gov;126613;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +32;Self-emp-not-inc;34572;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;65;United-States;<=50K +26;Private;104045;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;?;57665;Bachelors;13;Divorced;?;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;359001;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;<=50K +31;Private;201122;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;160035;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +50;Private;167886;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +18;Private;32059;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +59;Self-emp-inc;200453;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;403072;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +34;Private;37210;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;50;United-States;<=50K +32;Private;199416;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;413227;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +29;?;188675;Some-college;10;Divorced;?;Own-child;Black;Male;0;0;40;United-States;<=50K +42;Private;226902;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +37;Private;195189;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;116608;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +59;Private;99131;Masters;14;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +52;Local-gov;186117;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;>50K +29;State-gov;67053;HS-grad;9;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Thailand;<=50K +39;Private;325374;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;111949;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +19;Private;194905;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +60;Local-gov;195453;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +75;Private;316119;Some-college;10;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;8;United-States;<=50K +24;State-gov;506329;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;40;?;<=50K +58;Federal-gov;319733;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;<=50K +21;State-gov;99199;Masters;14;Never-married;Transport-moving;Own-child;White;Male;0;0;15;United-States;<=50K +28;Private;204600;HS-grad;9;Separated;Protective-serv;Other-relative;White;Male;0;0;40;United-States;<=50K +40;Private;173307;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;34446;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;175642;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Private;203735;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;197967;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +29;Private;413297;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;45;Mexico;<=50K +45;Private;240841;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;152189;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;State-gov;85874;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;362623;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +67;?;37170;7th-8th;4;Divorced;?;Not-in-family;White;Male;0;0;3;United-States;<=50K +28;Private;30912;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;35448;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +33;Private;173248;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;35;United-States;<=50K +37;Private;49626;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;43;United-States;<=50K +19;Private;102723;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +90;?;166343;1st-4th;2;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Private;168322;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;131117;7th-8th;4;Divorced;Tech-support;Unmarried;White;Female;0;0;38;Columbia;<=50K +20;?;210474;Some-college;10;Never-married;?;Own-child;White;Female;0;0;15;United-States;<=50K +25;Private;110138;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;107452;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +32;Private;160594;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +70;Local-gov;334666;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;12;United-States;<=50K +57;Private;104272;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;19491;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;128715;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +34;Private;128063;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +26;Self-emp-not-inc;37023;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;78;United-States;<=50K +44;Private;68748;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +66;Private;140576;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;327435;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;202729;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +53;Private;277471;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +36;Private;189670;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;50;United-States;<=50K +61;Private;204908;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;171841;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +38;Private;78247;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;68895;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;Mexico;<=50K +27;Private;56658;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Amer-Indian-Eskimo;Male;0;0;8;United-States;<=50K +58;Local-gov;259216;9th;5;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;State-gov;270278;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;12;Puerto-Rico;<=50K +56;Private;238806;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;26;United-States;<=50K +36;Private;111128;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;>50K +29;Private;119429;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +28;Private;73037;10th;6;Never-married;Transport-moving;Unmarried;White;Male;0;0;30;United-States;<=50K +61;Self-emp-not-inc;84409;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +66;Self-emp-not-inc;274451;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;>50K +21;Private;124242;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;159732;HS-grad;9;Widowed;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;161415;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +33;Private;157568;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;168030;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +82;Self-emp-inc;130329;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +34;State-gov;56964;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +29;Private;370509;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;France;>50K +19;Private;106306;Some-college;10;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;56480;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;1;United-States;<=50K +27;Private;404421;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +33;Private;194901;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +43;State-gov;164790;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;50;United-States;>50K +72;Federal-gov;94242;Some-college;10;Widowed;Tech-support;Not-in-family;White;Female;0;0;16;United-States;<=50K +68;Self-emp-not-inc;365020;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;160512;HS-grad;9;Separated;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;170331;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +30;Private;101266;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;217718;5th-6th;3;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;30;Haiti;<=50K +39;?;361838;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;6;United-States;>50K +41;State-gov;283917;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +48;Private;39530;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;Self-emp-not-inc;212185;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;48;United-States;<=50K +25;Self-emp-inc;90752;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +22;?;210802;Some-college;10;Never-married;?;Not-in-family;Black;Female;0;0;35;United-States;<=50K +31;Private;340880;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +43;Self-emp-not-inc;113211;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +42;Private;134509;Some-college;10;Never-married;Transport-moving;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;State-gov;147280;HS-grad;9;Never-married;Other-service;Other-relative;Other;Male;0;0;40;United-States;<=50K +40;Private;145441;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +65;Private;398001;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +53;Private;31588;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;52;United-States;>50K +38;?;121135;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;186916;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;115244;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +41;Local-gov;169995;Some-college;10;Divorced;Protective-serv;Not-in-family;White;Male;0;0;20;United-States;<=50K +48;Self-emp-not-inc;52240;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;25;United-States;>50K +52;Private;35305;7th-8th;4;Never-married;Other-service;Own-child;White;Female;0;0;7;United-States;<=50K +45;Self-emp-not-inc;160724;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;45;China;>50K +29;Private;210464;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;207685;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;21;United-States;<=50K +38;Private;233717;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Male;0;0;60;United-States;<=50K +32;Private;222205;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +37;Private;167613;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;148773;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +62;Local-gov;68268;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;174533;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;273230;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Private;187502;HS-grad;9;Never-married;Sales;Own-child;Black;Male;0;0;24;United-States;<=50K +47;Private;209320;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Self-emp-not-inc;56841;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;<=50K +55;Private;254627;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;42703;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;374137;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;196385;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;192930;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;10;United-States;<=50K +39;Private;99527;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;185437;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Female;0;0;55;United-States;<=50K +43;Private;247162;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +32;Federal-gov;131534;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;184693;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;Mexico;<=50K +27;Private;704108;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;220262;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;95654;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;60;United-States;<=50K +67;Private;89346;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +26;Private;94392;11th;7;Separated;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +21;Private;334113;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;32763;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +31;Private;136651;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +51;Self-emp-not-inc;240236;Assoc-acdm;12;Separated;Sales;Not-in-family;Black;Male;0;0;30;United-States;<=50K +29;Private;53271;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;31493;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;>50K +32;Private;195891;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +26;Private;211424;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +28;Local-gov;84657;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;151408;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;106819;7th-8th;4;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;19;United-States;<=50K +62;Private;132917;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;20;United-States;<=50K +54;Private;146834;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +55;Private;164332;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;16;United-States;<=50K +24;Private;30656;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;20;United-States;<=50K +27;Private;113501;Masters;14;Never-married;Adm-clerical;Own-child;White;Male;0;0;45;United-States;<=50K +18;Private;165316;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +21;Private;126613;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Self-emp-not-inc;361280;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;80;Philippines;>50K +50;?;123044;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;>50K +38;Private;165472;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;99452;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;84977;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;240458;11th;7;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +60;Private;123218;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;115289;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;373895;Some-college;10;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;35;United-States;<=50K +43;Private;152617;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +49;State-gov;72619;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +17;Private;41865;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;190228;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;<=50K +23;Private;193090;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;38;United-States;<=50K +25;Private;181896;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +46;Local-gov;213668;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;99369;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Other;Female;0;0;50;United-States;<=50K +44;Private;104196;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +60;Self-emp-not-inc;176839;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +30;Local-gov;99502;Assoc-voc;11;Divorced;Protective-serv;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +24;Private;183410;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;17;United-States;<=50K +17;Private;25690;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +76;?;201986;11th;7;Widowed;?;Other-relative;White;Female;0;0;16;United-States;<=50K +31;Private;188961;Assoc-acdm;12;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +52;Private;114971;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +39;Private;121468;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Female;0;0;35;United-States;<=50K +73;Self-emp-inc;191540;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +38;Private;146398;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;24;United-States;<=50K +48;Private;193553;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;20;United-States;<=50K +60;Private;121127;10th;6;Widowed;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;389856;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;290504;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +54;State-gov;137065;Doctorate;16;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +50;Local-gov;212685;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +20;Private;71475;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;111450;Some-college;10;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;22;United-States;<=50K +35;Private;225860;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +43;Private;129853;10th;6;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +50;Private;99925;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;32;United-States;<=50K +58;Private;227800;1st-4th;2;Separated;Farming-fishing;Not-in-family;Black;Male;0;0;50;United-States;<=50K +55;State-gov;111130;Assoc-acdm;12;Divorced;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +29;Private;100764;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +47;Private;275095;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;147500;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;<=50K +63;Local-gov;150079;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +27;Private;140863;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +62;?;199198;11th;7;Divorced;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +38;Private;193372;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;196771;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;65;United-States;<=50K +31;Private;231826;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;52;Mexico;<=50K +40;Federal-gov;196456;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +42;Private;34037;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +52;Private;174964;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +46;Private;91608;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +31;Private;403468;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;50;Mexico;<=50K +33;Private;112900;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Private;242670;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +54;Private;343242;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +28;Private;200733;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Self-emp-not-inc;236769;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;22494;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Federal-gov;129379;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;239098;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;167501;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;77146;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +47;Private;82797;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +33;Self-emp-not-inc;134886;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +40;Self-emp-inc;218558;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +26;Private;196899;Assoc-acdm;12;Separated;Craft-repair;Not-in-family;Other;Female;0;0;40;United-States;<=50K +54;Self-emp-not-inc;200960;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +39;Private;188069;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;?;<=50K +60;Private;232337;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;98656;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;State-gov;194260;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +49;?;481987;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;234976;11th;7;Never-married;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +29;Private;349116;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +39;Private;175390;HS-grad;9;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +26;Private;214637;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +27;Private;185127;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;98752;9th;5;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Local-gov;218382;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +51;Private;153486;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +51;Federal-gov;174102;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +40;Private;137142;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +61;Private;241013;7th-8th;4;Widowed;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +35;Private;267798;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +41;?;152880;HS-grad;9;Divorced;?;Not-in-family;Black;Female;0;0;28;United-States;<=50K +31;Private;263561;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;Private;39764;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;172186;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;61270;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +39;Self-emp-inc;124685;Masters;14;Divorced;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;99;Japan;>50K +69;Self-emp-not-inc;76968;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +21;Private;38772;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +24;Private;172496;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;55;United-States;<=50K +55;Private;306164;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +42;Self-emp-not-inc;33795;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +48;Private;47686;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +31;Private;193132;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;42;United-States;<=50K +52;Private;400004;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;101283;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;192384;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;113838;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +56;Private;199713;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;236021;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;138938;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;10;United-States;<=50K +36;Private;126946;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Private;44791;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;31964;9th;5;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +60;State-gov;352156;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +70;Self-emp-not-inc;205860;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +21;Private;113106;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +57;Private;89182;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;250782;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +28;Private;177955;11th;7;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Mexico;<=50K +32;Private;198660;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;168740;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +45;Private;199625;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;20;United-States;<=50K +22;Private;213902;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;Mexico;<=50K +38;Private;208379;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;8;United-States;<=50K +37;Private;113120;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;57827;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +59;Private;515712;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;396270;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;25;United-States;<=50K +30;Private;231620;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;Mexico;<=50K +50;Private;174655;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +63;?;97823;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;176732;9th;5;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;143932;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;551962;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Female;0;0;50;Peru;<=50K +30;?;298577;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +39;Private;257942;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +55;Local-gov;253062;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +17;Private;193748;11th;7;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +46;Private;368561;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +50;Private;192964;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;65;United-States;<=50K +32;Private;217304;Bachelors;13;Never-married;Protective-serv;Not-in-family;Black;Male;0;0;30;United-States;<=50K +18;Private;120029;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;62124;HS-grad;9;Separated;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +50;Private;94885;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +32;Private;192565;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +23;Local-gov;220912;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +26;Private;184120;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +46;Private;140782;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +43;Self-emp-inc;170785;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +32;Private;90705;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +37;State-gov;108293;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +48;Private;168283;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +43;Private;193672;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Local-gov;143865;10th;6;Widowed;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +30;Private;209317;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;Dominican-Republic;<=50K +34;State-gov;204461;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +34;Private;137088;HS-grad;9;Married-civ-spouse;Craft-repair;Other-relative;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +41;Private;149102;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +53;Private;182855;10th;6;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +42;Private;572751;Preschool;1;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Nicaragua;<=50K +18;Private;83451;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +81;Private;98116;Bachelors;13;Widowed;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +40;Private;119225;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;134888;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;35;United-States;<=50K +20;Private;745817;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;15;United-States;<=50K +41;Private;88368;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +49;State-gov;122066;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +22;Private;363219;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +46;Private;84402;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +35;Private;150042;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +34;Private;48014;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +29;Local-gov;177398;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +28;Private;373698;12th;8;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;?;<=50K +35;Private;422933;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;37;United-States;<=50K +29;Private;131088;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;178255;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;Columbia;<=50K +52;Self-emp-not-inc;129311;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;95;United-States;>50K +45;Private;473171;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;236985;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +35;?;226379;HS-grad;9;Married-civ-spouse;?;Other-relative;White;Female;0;0;25;United-States;<=50K +21;?;277700;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +35;Private;207568;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;85708;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;98765;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;Canada;<=50K +29;Private;192283;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;20;United-States;<=50K +29;State-gov;271012;10th;6;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +33;Private;189265;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;321880;10th;6;Never-married;Other-service;Own-child;Black;Male;0;0;15;United-States;<=50K +52;Private;177465;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +24;Private;127647;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +32;State-gov;119033;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +32;Private;209317;HS-grad;9;Separated;Exec-managerial;Not-in-family;White;Male;0;0;40;?;<=50K +33;Private;284531;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;251120;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +28;Private;113870;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Without-pay;170114;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;328199;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Female;0;0;64;United-States;<=50K +26;Private;206307;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +57;Federal-gov;170603;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +35;Self-emp-not-inc;112271;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +19;Private;118306;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +49;Private;126754;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +47;Private;267205;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;?;>50K +38;Private;205359;11th;7;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;32;United-States;<=50K +30;Private;398662;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;202498;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Columbia;<=50K +32;Private;105650;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +46;Private;191204;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;56582;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;Local-gov;51579;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +57;Self-emp-not-inc;152030;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;25;United-States;>50K +47;Private;227310;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;55854;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;56;United-States;>50K +36;Local-gov;28996;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;160634;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;222450;11th;7;Married-spouse-absent;Other-service;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +36;Self-emp-inc;180419;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +17;Private;202521;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +23;Private;186014;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +37;Self-emp-not-inc;35330;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;42;United-States;<=50K +35;Federal-gov;84848;Some-college;10;Never-married;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;176280;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +52;Private;145271;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +37;Local-gov;108320;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +48;State-gov;106377;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;65;United-States;>50K +24;Private;258730;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;40;Japan;<=50K +33;Private;58305;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;341672;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +34;Private;176648;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;42;United-States;<=50K +24;?;32616;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;481175;Some-college;10;Never-married;Exec-managerial;Own-child;Other;Male;0;0;24;Peru;<=50K +18;Private;25837;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +20;Private;385077;12th;8;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +54;Private;68985;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +19;Private;181572;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;23698;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;>50K +34;?;268127;12th;8;Separated;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;162298;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;144608;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;250630;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +31;Private;150441;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +37;Private;189251;Doctorate;16;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +64;Private;260082;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Columbia;<=50K +42;Private;139126;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +27;Private;50132;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Self-emp-not-inc;167691;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +36;Private;77820;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;156513;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +24;Private;283092;11th;7;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;35;Jamaica;<=50K +22;Private;175883;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +62;Private;232308;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +19;Private;269991;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;Puerto-Rico;<=50K +20;Private;305446;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +57;Private;78707;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;351802;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;35;United-States;<=50K +37;Local-gov;196529;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +35;Self-emp-inc;175769;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +17;Private;153021;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +36;Local-gov;331902;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +50;Private;279461;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +27;State-gov;205499;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;77;United-States;<=50K +25;Private;113099;HS-grad;9;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +47;Self-emp-inc;206947;Assoc-acdm;12;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;67;United-States;<=50K +29;State-gov;159782;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +19;Private;410543;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;34446;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;209101;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;>50K +43;Federal-gov;95902;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;214323;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;236323;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Federal-gov;201127;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;56;United-States;>50K +40;Private;142886;Bachelors;13;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;77313;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +17;?;212125;10th;6;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +36;Private;187098;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;196857;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +53;Local-gov;155314;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +72;Self-emp-not-inc;203289;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +46;Private;117059;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +33;Private;178587;Some-college;10;Separated;Prof-specialty;Unmarried;White;Female;0;0;37;United-States;<=50K +22;Private;82393;9th;5;Never-married;Handlers-cleaners;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +17;?;145258;11th;7;Never-married;?;Other-relative;White;Female;0;0;25;United-States;<=50K +41;Private;185145;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;?;>50K +46;Private;72896;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;43;United-States;<=50K +33;Private;134886;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +32;Private;223212;Preschool;1;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +52;Self-emp-not-inc;174752;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;230563;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +48;State-gov;353824;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;72;United-States;>50K +22;Private;117363;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +25;Private;285367;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +60;?;139391;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;42;United-States;<=50K +38;Private;198170;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;38948;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;188515;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Self-emp-not-inc;177810;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +31;Private;178506;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +40;Self-emp-not-inc;129298;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;165315;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;37;United-States;<=50K +18;?;172214;HS-grad;9;Never-married;?;Own-child;Black;Female;0;0;20;United-States;<=50K +19;Private;63434;12th;8;Never-married;Farming-fishing;Own-child;White;Female;0;0;30;United-States;<=50K +35;Self-emp-inc;140854;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +28;Private;133043;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +33;Private;259301;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;41;United-States;<=50K +20;Private;196643;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;364365;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +36;Private;269318;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +34;Private;108454;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;171637;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;183589;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;25;United-States;<=50K +24;Private;107801;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;179877;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +32;Private;168981;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;35;United-States;<=50K +37;Private;120590;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +31;Private;310773;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;40;Mexico;<=50K +21;Private;197050;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +47;Private;159726;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;85;United-States;>50K +23;Private;210797;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;55291;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;276718;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +67;Private;336163;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;24;United-States;<=50K +57;Private;112840;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +17;Private;165918;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;Peru;<=50K +53;Private;165745;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;State-gov;197731;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;49;United-States;>50K +48;Self-emp-not-inc;197702;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;213260;HS-grad;9;Separated;Protective-serv;Not-in-family;Black;Male;0;0;40;United-States;<=50K +51;Private;53833;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;46;United-States;>50K +18;Private;89419;HS-grad;9;Never-married;Tech-support;Own-child;White;Female;0;0;10;United-States;<=50K +23;Private;119704;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;433170;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +34;Private;182714;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;35;?;<=50K +39;Private;172538;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +20;?;220115;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;12;United-States;<=50K +39;Private;158956;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Self-emp-not-inc;25631;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;476558;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +54;Federal-gov;35576;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;203463;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;State-gov;317647;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;170411;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;?;174182;11th;7;Married-civ-spouse;?;Wife;Other;Female;0;0;24;United-States;<=50K +54;Private;220055;Bachelors;13;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +54;Private;231482;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;279173;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;89559;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +47;Private;161950;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;25;Germany;<=50K +51;Private;131068;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;219632;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;175507;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +58;Self-emp-inc;182062;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;24;United-States;>50K +20;?;189203;Assoc-acdm;12;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;21698;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;328051;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +59;Private;121865;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;420986;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +43;?;218558;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +20;?;189740;Some-college;10;Never-married;?;Own-child;White;Female;0;0;32;United-States;<=50K +29;Local-gov;188909;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;42;United-States;<=50K +28;Private;213081;11th;7;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;Jamaica;<=50K +18;Self-emp-not-inc;157131;11th;7;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;98010;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +46;Private;207677;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +58;?;361870;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;30;United-States;<=50K +56;Private;266091;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Mexico;<=50K +41;Private;106627;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;50;United-States;<=50K +30;Private;243165;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;201928;HS-grad;9;Widowed;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +19;Private;128346;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +29;Private;197288;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +20;?;169184;Some-college;10;Never-married;?;Other-relative;Black;Female;0;0;40;United-States;<=50K +36;Private;245521;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;Mexico;<=50K +36;Private;129591;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;184710;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;63734;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +18;Private;111256;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +40;Self-emp-inc;111483;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +26;Self-emp-inc;266639;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;93853;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;184207;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;238002;9th;5;Married-civ-spouse;Transport-moving;Other-relative;White;Male;0;0;40;Mexico;<=50K +28;?;30237;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;144844;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;280500;Some-college;10;Never-married;Tech-support;Own-child;Black;Female;0;0;40;United-States;<=50K +73;?;135601;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +37;Private;409189;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;Mexico;<=50K +50;Private;23686;Some-college;10;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;35;United-States;>50K +19;Private;229756;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +32;Local-gov;95530;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +44;Local-gov;73199;Assoc-voc;11;Divorced;Tech-support;Unmarried;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +20;Private;196745;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +29;Private;79481;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;?;116934;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;100950;Assoc-voc;11;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;Germany;<=50K +44;Local-gov;56651;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;<=50K +18;Private;186954;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +22;Private;264874;Some-college;10;Never-married;Tech-support;Other-relative;White;Female;0;0;40;United-States;<=50K +39;State-gov;183092;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +26;Local-gov;273399;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;Peru;<=50K +29;?;142443;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +21;Private;177526;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +49;Local-gov;31267;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;321666;Assoc-acdm;12;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;331861;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;?;<=50K +25;Private;283515;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;60;United-States;<=50K +30;Private;54608;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;162238;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +30;Private;175931;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;236804;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;168782;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;227065;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Self-emp-inc;285335;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +31;Private;259705;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Female;0;0;40;United-States;<=50K +57;Private;24384;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;10;United-States;<=50K +58;Private;322013;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;49797;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;52566;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;266275;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Federal-gov;183804;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;173679;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Local-gov;163965;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +18;Private;173585;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;15;Peru;<=50K +27;Private;172009;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;44363;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;35;United-States;<=50K +45;Private;246392;HS-grad;9;Never-married;Priv-house-serv;Unmarried;Black;Female;0;0;30;United-States;<=50K +53;Private;167033;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +54;Private;143822;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +23;Private;447488;9th;5;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;35;Mexico;<=50K +17;Private;239346;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;18;United-States;<=50K +42;Private;245975;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;34632;12th;8;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;State-gov;24008;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +44;Private;165492;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +48;Private;326048;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Male;0;0;44;United-States;<=50K +46;Private;250821;Prof-school;15;Divorced;Farming-fishing;Unmarried;White;Male;0;0;48;United-States;<=50K +37;Self-emp-not-inc;154641;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;86;United-States;<=50K +35;Private;198202;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;54;United-States;<=50K +27;Local-gov;170504;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;191342;Some-college;10;Never-married;Sales;Not-in-family;Other;Male;0;0;40;India;<=50K +19;Private;238969;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +63;Self-emp-not-inc;344128;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +69;?;148694;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +69;?;180187;Assoc-acdm;12;Widowed;?;Not-in-family;White;Female;0;0;6;Italy;<=50K +36;State-gov;168894;Assoc-voc;11;Married-spouse-absent;Protective-serv;Own-child;White;Female;0;0;40;Germany;<=50K +20;Private;203263;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +28;State-gov;89564;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;50;United-States;<=50K +58;Private;97562;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;38;United-States;<=50K +48;Private;336540;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;139647;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;56;United-States;<=50K +50;Local-gov;320386;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;32126;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;275445;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;<=50K +38;Self-emp-inc;54953;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +54;Private;103580;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;>50K +42;Private;245565;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;12;England;<=50K +32;Private;39223;10th;6;Separated;Craft-repair;Unmarried;Black;Female;0;0;40;?;<=50K +55;State-gov;117357;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;70;?;>50K +63;Private;207385;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +21;Private;355287;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;48;Mexico;<=50K +62;?;141218;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;>50K +46;Local-gov;207677;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +43;Private;102114;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;60269;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;278632;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;355551;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Female;0;0;45;Mexico;<=50K +45;Private;246891;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;72;Canada;>50K +61;Private;191417;9th;5;Widowed;Exec-managerial;Not-in-family;Black;Male;0;0;65;United-States;<=50K +21;Private;184543;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;122206;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;229015;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +28;Private;130067;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +40;Local-gov;306495;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +32;Private;232855;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +55;Local-gov;171328;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +64;Private;144182;HS-grad;9;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;23;United-States;<=50K +34;Private;102858;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +19;?;199495;Some-college;10;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +58;Private;209438;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +44;Private;184378;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;446512;Some-college;10;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Federal-gov;113688;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +39;Private;333305;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;45;United-States;>50K +19;Private;118535;12th;8;Never-married;Sales;Own-child;White;Female;0;0;18;United-States;<=50K +56;Private;76142;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Local-gov;38795;9th;5;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +68;Private;208478;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;18;?;<=50K +62;Private;247483;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +62;State-gov;198686;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;56118;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Federal-gov;359808;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;231554;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;50;United-States;<=50K +33;Private;34848;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;196243;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;189487;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +22;Private;194848;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;192878;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +48;Private;70209;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;20;United-States;<=50K +52;Federal-gov;123011;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +25;Private;178478;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +37;Private;103323;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;239404;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;45;United-States;<=50K +67;Private;165082;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +36;Private;389725;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +47;Private;374580;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;52;United-States;<=50K +36;?;187983;HS-grad;9;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;259300;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;16;United-States;<=50K +19;Private;277695;9th;5;Never-married;Farming-fishing;Other-relative;White;Male;0;0;16;Mexico;<=50K +24;Private;230248;7th-8th;4;Separated;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +30;Self-emp-not-inc;196342;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +17;Private;160968;11th;7;Never-married;Adm-clerical;Own-child;White;Male;0;0;16;United-States;<=50K +28;Private;115438;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;129597;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;46;United-States;<=50K +24;Local-gov;387108;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +43;Private;105936;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;>50K +20;Private;107242;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;?;<=50K +55;Private;125000;Masters;14;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;>50K +22;Private;229456;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;35;United-States;<=50K +20;Private;230113;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +44;Private;106698;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;133454;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;295520;9th;5;Widowed;Sales;Unmarried;Black;Female;0;0;25;United-States;<=50K +23;Private;320294;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;162381;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +41;Self-emp-inc;32016;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;62;United-States;<=50K +31;Private;117028;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;280278;HS-grad;9;Widowed;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +57;Private;342906;9th;5;Married-civ-spouse;Sales;Husband;Black;Male;0;0;55;United-States;>50K +25;Private;181598;11th;7;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;224059;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;148549;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;Private;97355;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +37;Private;154571;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +43;Self-emp-inc;140988;Bachelors;13;Married-civ-spouse;Sales;Other-relative;Asian-Pac-Islander;Male;0;0;45;India;<=50K +35;Private;112158;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;121488;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;State-gov;283635;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;69758;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +54;Private;88019;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +28;Private;31935;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Private;323055;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;189498;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +52;Private;89041;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;112507;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +19;Private;236940;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;278514;HS-grad;9;Divorced;Craft-repair;Own-child;White;Female;0;0;42;United-States;<=50K +21;?;433330;Some-college;10;Never-married;?;Unmarried;White;Male;0;0;40;United-States;<=50K +25;Private;258379;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;32;United-States;<=50K +44;Private;162028;11th;7;Divorced;Sales;Unmarried;White;Female;0;0;44;United-States;<=50K +20;Private;197997;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;98350;10th;6;Married-spouse-absent;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;37;China;<=50K +39;Private;165848;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;178615;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;228939;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +53;Private;154891;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;165937;Assoc-voc;11;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +39;Private;160120;Some-college;10;Never-married;Machine-op-inspct;Other-relative;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +30;Private;382368;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;123011;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +33;Private;119033;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;496856;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +44;Private;194049;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +30;Private;299223;Some-college;10;Divorced;Sales;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +66;Private;174788;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +39;Private;176101;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;38948;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +34;Private;271933;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;40;United-States;<=50K +17;Private;122041;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +43;Private;115932;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;>50K +46;Private;265105;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +17;Private;100828;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +42;Private;213214;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;348618;9th;5;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;Mexico;<=50K +33;Private;275632;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;239161;Some-college;10;Married-civ-spouse;Sales;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +20;Private;215495;9th;5;Never-married;Exec-managerial;Other-relative;White;Female;0;0;40;Mexico;<=50K +30;Private;214063;Some-college;10;Never-married;Farming-fishing;Other-relative;Black;Male;0;0;72;United-States;<=50K +37;Private;122493;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +33;?;211699;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Self-emp-not-inc;175622;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +65;Private;153522;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;17;United-States;<=50K +35;Private;258339;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +27;Private;119793;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;162840;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +41;Local-gov;67671;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;140644;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +18;?;126154;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;245659;Some-college;10;Separated;Other-service;Unmarried;White;Female;0;0;38;El-Salvador;<=50K +28;Private;129624;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;?;<=50K +47;Private;104068;HS-grad;9;Divorced;Prof-specialty;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +30;Private;337908;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;20;United-States;<=50K +36;Private;161141;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;162228;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;116391;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;314310;HS-grad;9;Married-spouse-absent;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +61;?;394534;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;6;United-States;<=50K +29;Private;308136;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;194698;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;?;67793;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;60;United-States;<=50K +27;Private;289147;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;229826;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;20;United-States;<=50K +49;Self-emp-inc;246739;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +35;Private;188041;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +37;Local-gov;105266;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;249208;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;48;United-States;>50K +26;Private;203492;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;71076;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +55;Federal-gov;146477;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +59;Private;205949;HS-grad;9;Separated;Craft-repair;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +70;Private;90245;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;5;United-States;<=50K +53;Federal-gov;177647;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;France;>50K +39;Private;126494;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;257735;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;1161363;Some-college;10;Separated;Tech-support;Unmarried;White;Female;0;0;50;Columbia;<=50K +19;?;257343;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;221452;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +74;Private;260669;10th;6;Divorced;Other-service;Not-in-family;White;Female;0;0;1;United-States;<=50K +40;Private;192344;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +35;Private;80479;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;108808;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;175674;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +38;Private;272950;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Self-emp-not-inc;160786;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;>50K +46;Self-emp-not-inc;122206;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;121168;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;209547;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +39;Private;176296;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;60;United-States;<=50K +31;Private;91666;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;60;United-States;<=50K +31;State-gov;63704;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;31659;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +27;Private;191230;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;25;United-States;<=50K +28;Private;56340;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +21;Private;221157;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;30;United-States;<=50K +57;Local-gov;143910;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Local-gov;435836;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;?;61499;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;209182;Preschool;1;Separated;Other-service;Unmarried;White;Female;0;0;40;El-Salvador;<=50K +36;Self-emp-inc;107218;Some-college;10;Divorced;Sales;Unmarried;Asian-Pac-Islander;Male;0;0;55;United-States;<=50K +51;Private;55500;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;357962;Assoc-acdm;12;Never-married;Transport-moving;Not-in-family;White;Male;0;0;48;United-States;<=50K +43;Private;200355;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;>50K +38;Private;320451;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +51;Local-gov;184542;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;State-gov;206927;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;208165;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +39;Private;318416;10th;6;Separated;Other-service;Own-child;Black;Female;0;0;12;United-States;<=50K +47;Self-emp-inc;207540;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +23;Private;69911;Preschool;1;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +26;Private;305304;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +25;Local-gov;295289;HS-grad;9;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Private;275110;Some-college;10;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;42;United-States;<=50K +30;Private;339773;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +37;Self-emp-inc;51264;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +37;Private;178100;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +45;?;215943;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;176178;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +25;State-gov;180884;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +61;State-gov;130466;HS-grad;9;Widowed;Adm-clerical;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +28;Private;142712;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;176321;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;145041;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Cuba;>50K +29;Private;95423;HS-grad;9;Married-AF-spouse;Transport-moving;Husband;White;Male;0;0;80;United-States;<=50K +49;Self-emp-not-inc;215096;9th;5;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +41;Local-gov;177599;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +33;Private;123920;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +20;?;201490;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;388672;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;16;United-States;<=50K +48;Private;149210;Bachelors;13;Divorced;Sales;Not-in-family;Black;Male;0;0;40;United-States;>50K +24;Private;134787;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;185407;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;>50K +31;State-gov;86143;HS-grad;9;Never-married;Protective-serv;Other-relative;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +23;Private;41721;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +35;Private;195744;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +50;Local-gov;96062;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;215150;9th;5;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +52;Private;270728;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;48;Cuba;<=50K +44;Private;75012;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +43;Private;206139;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +39;Private;50700;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;224258;7th-8th;4;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;Mexico;>50K +40;Self-emp-not-inc;406811;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +28;Local-gov;34452;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;361341;12th;8;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Female;0;0;25;Thailand;<=50K +35;Private;78247;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;106900;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +40;Self-emp-not-inc;165108;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;England;<=50K +20;Private;406641;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +55;Private;171467;HS-grad;9;Divorced;Craft-repair;Unmarried;Black;Male;0;0;48;United-States;>50K +30;Private;341187;7th-8th;4;Separated;Transport-moving;Not-in-family;White;Male;0;0;35;United-States;<=50K +38;Private;119177;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +17;Private;342752;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +20;Private;47541;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +25;Private;233461;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Male;0;0;30;United-States;<=50K +27;Private;303954;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +19;Private;163015;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +21;Private;75763;Some-college;10;Married-civ-spouse;Sales;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +19;Private;43003;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +42;Private;328239;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;130856;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +47;Self-emp-not-inc;190072;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Iran;>50K +59;Private;170148;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +50;Private;104501;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +48;Self-emp-inc;213140;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;<=50K +33;Local-gov;175509;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;173611;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;64520;7th-8th;4;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;139822;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +24;Private;258700;5th-6th;3;Never-married;Farming-fishing;Other-relative;Black;Male;0;0;40;Mexico;<=50K +29;Private;34796;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;124963;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;30;United-States;<=50K +24;Private;65743;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +28;Private;161087;Some-college;10;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;45;Jamaica;<=50K +63;?;424591;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +36;Federal-gov;203836;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +58;State-gov;110199;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;316059;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;36;United-States;<=50K +42;Private;255667;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +39;Private;193689;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;60722;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +39;Private;187847;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;233275;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +45;Private;201865;Bachelors;13;Married-spouse-absent;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +45;Private;118889;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;State-gov;368739;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;171344;11th;7;Married-spouse-absent;Transport-moving;Own-child;White;Male;0;0;36;Mexico;<=50K +39;Private;153976;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;374883;Assoc-voc;11;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +17;Private;167658;12th;8;Never-married;Sales;Own-child;White;Female;0;0;6;United-States;<=50K +31;Private;348504;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;258509;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;24;United-States;<=50K +28;Private;188236;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;?;355571;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;425049;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +29;Private;142555;Masters;14;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;42;United-States;<=50K +42;Self-emp-not-inc;29320;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Male;0;0;60;United-States;>50K +52;Federal-gov;207841;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;187329;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;270973;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +45;Local-gov;160187;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;197918;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +74;Private;192290;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;20;United-States;<=50K +29;Private;241895;HS-grad;9;Married-civ-spouse;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +39;Local-gov;164515;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Self-emp-inc;306868;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Local-gov;169837;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +61;?;124648;10th;6;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;185057;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;>50K +23;Private;240049;Preschool;1;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Laos;<=50K +18;Private;164441;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +38;Private;179314;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +19;Self-emp-inc;148955;Some-college;10;Never-married;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;35;South;<=50K +37;Private;206699;HS-grad;9;Divorced;Tech-support;Own-child;White;Male;0;0;45;United-States;<=50K +25;Private;385646;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;31438;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;43;?;<=50K +32;Private;97306;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;48;United-States;<=50K +65;?;106910;11th;7;Divorced;?;Not-in-family;Asian-Pac-Islander;Female;0;0;15;United-States;<=50K +18;Self-emp-not-inc;29582;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;220284;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;40;Mexico;<=50K +29;Private;110226;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;65;?;<=50K +53;Private;240914;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;115496;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +27;Private;105817;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +24;State-gov;330836;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;36327;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;33423;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +45;Private;75673;Assoc-voc;11;Widowed;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +36;Private;185744;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;35;United-States;>50K +24;Private;111450;HS-grad;9;Never-married;Transport-moving;Unmarried;Black;Male;0;0;40;United-States;<=50K +50;Private;74879;HS-grad;9;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Private;272902;Bachelors;13;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Self-emp-inc;220230;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;48;United-States;<=50K +24;Private;90934;Bachelors;13;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;55;United-States;<=50K +34;Private;195602;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +40;Private;70761;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;Black;Male;0;0;40;United-States;<=50K +53;Private;142717;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;124242;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +58;?;53481;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;70;United-States;<=50K +26;Private;287797;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;188274;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;171968;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +78;?;74795;Assoc-acdm;12;Widowed;?;Not-in-family;White;Female;0;0;4;United-States;<=50K +36;Private;218490;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Germany;>50K +43;Local-gov;94937;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;28;United-States;<=50K +60;Private;109511;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;120672;7th-8th;4;Never-married;Handlers-cleaners;Unmarried;Black;Male;0;0;10;United-States;<=50K +46;Private;130779;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +46;Local-gov;441542;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +69;Private;114801;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +32;Private;180284;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Local-gov;27444;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +56;Private;143266;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Private;139268;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;126208;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +37;Private;186191;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;46;United-States;<=50K +33;Private;181388;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Self-emp-not-inc;124963;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;80;United-States;>50K +24;Private;188925;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;149230;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +40;Private;388725;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;113543;Masters;14;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +61;?;187636;Bachelors;13;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Self-emp-inc;267763;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;<=50K +69;Federal-gov;143849;11th;7;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +41;Self-emp-not-inc;97277;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;10;United-States;<=50K +40;Private;199303;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;124852;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +26;Private;50053;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +53;Private;97005;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;>50K +90;?;175444;7th-8th;4;Separated;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +39;Private;337898;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +51;Federal-gov;124076;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Federal-gov;277420;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Puerto-Rico;>50K +51;Private;280278;10th;6;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +17;Private;241185;12th;8;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +42;Private;198422;Some-college;10;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;178429;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +47;Private;185866;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;?;>50K +43;Private;212847;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +64;Self-emp-not-inc;219661;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;9;United-States;>50K +40;Private;321856;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;>50K +21;Private;313873;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Mexico;<=50K +31;Private;144064;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +60;Private;139586;Assoc-voc;11;Widowed;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;>50K +32;Private;419691;12th;8;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Private;195562;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;20;United-States;<=50K +40;Private;205706;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +27;Private;131310;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +18;Private;54440;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +43;Private;200734;HS-grad;9;Separated;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +52;Private;81859;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +31;Private;159589;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;85;United-States;<=50K +28;Private;300915;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;185057;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +37;Self-emp-not-inc;42044;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;84;United-States;<=50K +35;Private;166416;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +42;Private;212737;9th;5;Separated;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +18;Private;236069;10th;6;Never-married;Other-service;Own-child;Black;Male;0;0;10;United-States;<=50K +54;Federal-gov;27432;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +56;Private;147202;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;Germany;<=50K +27;Private;29261;Some-college;10;Never-married;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +26;Private;359543;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Mexico;<=50K +41;Local-gov;227644;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;90021;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;?;<=50K +32;Private;188154;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Private;110142;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +36;Private;186415;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;65;United-States;<=50K +37;Private;175720;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;172865;5th-6th;3;Never-married;Farming-fishing;Own-child;White;Male;0;0;25;Mexico;<=50K +46;Private;35969;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;51;United-States;<=50K +24;Private;433330;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Self-emp-inc;160261;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Male;0;0;35;Taiwan;<=50K +55;Private;189528;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +64;Local-gov;113324;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Local-gov;118500;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;Private;89681;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;99;United-States;<=50K +46;Federal-gov;199925;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;444607;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;176998;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;State-gov;366198;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Germany;>50K +24;Private;153542;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;35;United-States;<=50K +36;Private;185394;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;34;United-States;<=50K +44;Private;222703;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Nicaragua;<=50K +23;Private;183945;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +57;Private;161964;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +41;Self-emp-not-inc;375574;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;Mexico;>50K +20;Local-gov;312427;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;30;Puerto-Rico;<=50K +32;Private;53373;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +38;Self-emp-inc;124665;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Female;0;0;20;United-States;<=50K +29;Private;146719;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;0;0;45;United-States;<=50K +22;Private;306593;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;156687;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;30;India;<=50K +45;State-gov;127089;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +76;Local-gov;329355;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;13;United-States;<=50K +45;Private;178319;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +49;Local-gov;304246;Masters;14;Separated;Prof-specialty;Unmarried;White;Female;0;0;70;United-States;<=50K +36;Local-gov;174640;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;Black;Female;0;0;60;United-States;>50K +22;Private;148294;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +47;Private;298037;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;44;United-States;<=50K +26;Private;98155;HS-grad;9;Married-AF-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +21;Private;102766;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;78529;HS-grad;9;Never-married;Transport-moving;Own-child;White;Female;0;0;15;United-States;<=50K +26;Private;136309;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;275357;Assoc-voc;11;Never-married;Tech-support;Own-child;White;Female;0;0;25;United-States;<=50K +31;Self-emp-not-inc;33117;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;England;<=50K +57;Local-gov;199546;Masters;14;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Private;184128;11th;7;Divorced;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +66;Private;126511;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +34;Local-gov;325792;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +80;?;91901;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +21;Private;119474;HS-grad;9;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +49;Local-gov;321851;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +42;Private;195508;11th;7;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +59;Private;102193;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +63;Private;20323;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;122206;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +41;Private;200652;9th;5;Divorced;Other-service;Other-relative;White;Female;0;0;35;United-States;<=50K +19;Private;184121;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +45;Local-gov;53123;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;United-States;<=50K +47;Private;175990;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;>50K +47;Private;316101;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;34080;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;England;<=50K +36;Private;126954;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;99185;HS-grad;9;Widowed;Craft-repair;Unmarried;White;Male;0;0;40;United-States;>50K +39;Private;120074;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Self-emp-not-inc;77336;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;77884;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +50;Private;65408;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +31;Private;173279;Bachelors;13;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +52;?;318351;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;>50K +41;Self-emp-not-inc;157686;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +45;Private;277434;Assoc-acdm;12;Widowed;Tech-support;Unmarried;White;Male;0;0;40;United-States;>50K +54;Local-gov;184620;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;34443;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;25;United-States;<=50K +20;?;41356;Assoc-acdm;12;Never-married;?;Not-in-family;White;Female;0;0;32;United-States;<=50K +43;Private;459342;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Local-gov;148549;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;238367;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;180439;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;State-gov;111567;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;49;United-States;>50K +46;Private;319163;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +60;?;160155;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;12;United-States;<=50K +52;Local-gov;378045;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +44;Private;177083;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;127779;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;299353;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Private;63861;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;112403;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;35;United-States;<=50K +28;Private;452808;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;176871;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +17;Private;266134;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +54;Local-gov;196307;10th;6;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;87891;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +55;?;136819;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;181666;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Own-child;White;Female;0;0;40;?;<=50K +37;Private;179671;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;27494;HS-grad;9;Divorced;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;48;United-States;>50K +38;Private;338320;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Canada;<=50K +51;Private;199688;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;96635;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;60;United-States;<=50K +24;Private;165064;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;82393;HS-grad;9;Never-married;Craft-repair;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +31;Private;209538;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;209891;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;50;United-States;<=50K +32;Self-emp-not-inc;56026;Bachelors;13;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;45;United-States;<=50K +35;Private;210844;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +43;Private;117158;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +40;Private;193144;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;36;United-States;<=50K +19;Self-emp-not-inc;137578;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;53;United-States;<=50K +23;Private;234108;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;32;United-States;<=50K +40;Private;155767;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +59;Private;110820;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;>50K +43;Private;403276;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;147269;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;?;<=50K +53;Private;123092;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;165673;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;204415;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;>50K +32;Self-emp-not-inc;92531;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +25;State-gov;157028;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;228649;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;147253;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;15;United-States;<=50K +33;Private;160784;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Local-gov;163189;Some-college;10;Married-civ-spouse;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +29;Private;146343;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +20;Private;225811;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;23;United-States;<=50K +58;Private;374108;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;93930;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;412248;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +30;Private;427474;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +67;State-gov;160158;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;8;United-States;<=50K +26;Private;159603;Assoc-acdm;12;Never-married;Adm-clerical;Unmarried;White;Female;0;0;32;United-States;<=50K +53;Self-emp-not-inc;101017;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +27;Local-gov;163862;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +29;Without-pay;212588;Some-college;10;Married-civ-spouse;Farming-fishing;Own-child;White;Male;0;0;65;United-States;<=50K +38;State-gov;321943;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +17;Private;317702;9th;5;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +48;Private;287480;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +52;Private;135607;Some-college;10;Widowed;Other-service;Unmarried;Black;Female;0;0;40;?;<=50K +28;Private;168514;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +18;Private;88642;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +28;Private;227104;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Private;157289;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;213321;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +46;Private;294907;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +30;Private;251411;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +20;Private;183594;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;217802;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;25;United-States;<=50K +20;Private;388156;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;24;United-States;<=50K +54;Private;447555;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;204098;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +43;Private;193882;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;55;United-States;<=50K +17;?;89870;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +48;State-gov;49595;Masters;14;Divorced;Protective-serv;Not-in-family;White;Male;0;0;72;United-States;<=50K +34;Private;228873;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +66;?;108185;9th;5;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;176027;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;?;405374;Some-college;10;Separated;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Private;39606;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Private;178353;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +58;Private;160662;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +54;Self-emp-inc;196328;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;Jamaica;<=50K +45;Private;20534;Some-college;10;Separated;Craft-repair;Not-in-family;White;Male;0;0;41;United-States;<=50K +29;Self-emp-inc;156815;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;360252;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;245056;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +33;Local-gov;422718;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;262978;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +25;Private;187577;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +69;?;259323;Prof-school;15;Divorced;?;Not-in-family;White;Male;0;0;5;United-States;<=50K +37;Private;160920;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;194247;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;25;United-States;<=50K +17;Private;123335;10th;6;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +27;Local-gov;332249;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;358124;HS-grad;9;Never-married;Other-service;Other-relative;Black;Female;0;0;40;United-States;<=50K +55;Private;208019;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +39;Private;318452;11th;7;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +41;Private;207779;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;238376;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +51;Private;673764;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +67;State-gov;239705;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;12;?;<=50K +40;Private;133974;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;152140;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Local-gov;287920;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;State-gov;78765;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +58;Private;206532;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;129529;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Local-gov;202473;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;162312;HS-grad;9;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;40;South;<=50K +45;Private;72844;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;46;United-States;<=50K +49;Private;206947;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;64112;12th;8;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;State-gov;20057;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;38;Philippines;<=50K +42;State-gov;222884;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;132683;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;50;United-States;<=50K +73;?;177773;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;15;United-States;<=50K +19;Private;168601;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;30;United-States;<=50K +31;State-gov;78291;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Federal-gov;243929;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;48;United-States;<=50K +21;Private;215039;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;13;?;<=50K +47;Self-emp-not-inc;185673;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +30;Private;121142;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;>50K +41;Private;173858;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +59;?;87247;10th;6;Divorced;?;Not-in-family;White;Female;0;0;40;England;<=50K +44;Private;174283;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +44;Private;128676;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +24;Private;205844;Bachelors;13;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +28;Private;62535;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;<=50K +50;Private;240612;HS-grad;9;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;10;United-States;<=50K +33;Private;176992;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Local-gov;254127;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Female;0;0;50;United-States;<=50K +30;?;138744;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;128460;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +21;State-gov;56582;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;10;United-States;<=50K +52;Private;153751;9th;5;Separated;Other-service;Not-in-family;Black;Female;0;0;30;United-States;<=50K +26;Private;284343;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;State-gov;312692;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;12;United-States;<=50K +28;Private;111520;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;Nicaragua;<=50K +50;Self-emp-inc;304955;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +28;Private;288598;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +61;Self-emp-not-inc;117387;11th;7;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +32;Private;230484;7th-8th;4;Separated;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +30;Federal-gov;319280;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Local-gov;186416;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;110164;Some-college;10;Divorced;Other-service;Other-relative;Black;Male;0;0;24;United-States;<=50K +49;Private;225454;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +61;Self-emp-not-inc;220342;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +41;Self-emp-not-inc;144002;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +55;Private;225365;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +36;Private;187983;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +21;Private;89991;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;225913;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +59;Private;145574;11th;7;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;274363;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;80;United-States;>50K +59;Private;365390;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;266467;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +42;Private;183384;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +41;Local-gov;112797;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;60;United-States;<=50K +45;Federal-gov;76008;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +36;Private;156780;HS-grad;9;Never-married;Sales;Other-relative;Asian-Pac-Islander;Female;0;0;40;?;<=50K +42;Local-gov;186909;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +25;Private;25497;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;30916;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;123270;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Self-emp-not-inc;210165;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;222596;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Male;0;0;50;United-States;>50K +53;Self-emp-inc;188067;Some-college;10;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;250314;9th;5;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;Guatemala;<=50K +60;Private;205934;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +56;Private;147653;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;32;United-States;<=50K +35;?;195946;Some-college;10;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +19;Private;151801;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;39;United-States;<=50K +38;Private;177154;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +40;Federal-gov;73883;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +52;Private;175714;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +22;Private;43535;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +32;State-gov;104509;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +27;Private;118230;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;152046;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;Guatemala;<=50K +36;Private;52327;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;40;Iran;>50K +22;Private;218886;12th;8;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;84119;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;189674;Bachelors;13;Separated;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +22;Private;222993;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Male;0;0;54;United-States;<=50K +29;Private;47429;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +42;Private;144995;Preschool;1;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;25;United-States;<=50K +45;Private;187969;Assoc-voc;11;Never-married;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +33;Private;288398;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +39;Private;114591;Some-college;10;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;167737;12th;8;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Local-gov;248834;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +30;Private;165686;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Self-emp-not-inc;40200;Some-college;10;Widowed;Craft-repair;Not-in-family;Black;Male;0;0;35;United-States;<=50K +47;Local-gov;216657;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;>50K +61;Private;124242;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;India;<=50K +39;Local-gov;239119;Masters;14;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;Dominican-Republic;<=50K +47;Private;190072;Some-college;10;Divorced;Sales;Unmarried;White;Male;0;0;50;United-States;<=50K +19;Private;378114;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;25;United-States;<=50K +31;Private;101761;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;51;United-States;<=50K +69;Self-emp-not-inc;37745;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;8;United-States;<=50K +22;?;424494;Some-college;10;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +29;Private;130438;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;100605;Some-college;10;Never-married;Machine-op-inspct;Own-child;Other;Male;0;0;14;United-States;<=50K +42;Private;220776;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Male;0;0;40;Poland;<=50K +30;Local-gov;154950;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;72;United-States;>50K +28;Private;192283;Masters;14;Married-spouse-absent;Sales;Not-in-family;White;Female;0;0;80;United-States;>50K +27;Private;210765;Assoc-voc;11;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;147476;HS-grad;9;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +22;Private;109053;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;265618;HS-grad;9;Separated;Protective-serv;Own-child;Black;Male;0;0;40;United-States;<=50K +27;Private;68848;Bachelors;13;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +30;Private;229051;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;37;United-States;<=50K +27;Private;106039;Bachelors;13;Divorced;Prof-specialty;Own-child;White;Female;0;0;50;United-States;<=50K +25;Private;112835;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;?;205396;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;4;United-States;<=50K +32;Private;283400;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +70;Private;195739;10th;6;Widowed;Craft-repair;Unmarried;White;Male;0;0;45;United-States;<=50K +50;Private;36480;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;303291;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +34;Private;293900;11th;7;Married-spouse-absent;Craft-repair;Not-in-family;Black;Male;0;0;55;United-States;<=50K +57;Self-emp-not-inc;165922;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;65738;Masters;14;Never-married;Other-service;Not-in-family;White;Female;0;0;32;United-States;<=50K +49;Private;175070;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;150132;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +31;Private;377374;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;Japan;<=50K +60;Self-emp-not-inc;166153;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +27;Private;194243;Prof-school;15;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;106347;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +59;Private;214865;HS-grad;9;Widowed;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +19;?;185619;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +18;Private;96445;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +22;Private;102632;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;209034;Assoc-acdm;12;Married-civ-spouse;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +53;State-gov;153486;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +43;Private;144371;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;42;United-States;>50K +24;Private;186213;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +60;Private;188236;10th;6;Widowed;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;418405;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +52;Federal-gov;125796;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;183304;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;99;United-States;>50K +34;Private;329587;10th;6;Separated;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +35;Local-gov;182570;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +38;Private;446654;9th;5;Married-spouse-absent;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Mexico;<=50K +53;Local-gov;131258;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +23;Private;103632;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;241895;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;244945;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;20795;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +17;Private;347322;10th;6;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +32;Private;53206;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +43;?;387839;HS-grad;9;Never-married;?;Other-relative;White;Female;0;0;40;United-States;<=50K +18;Private;57108;11th;7;Never-married;Sales;Own-child;White;Male;0;0;16;United-States;<=50K +62;Private;177791;10th;6;Divorced;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;33794;Masters;14;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;249935;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;<=50K +73;Self-emp-not-inc;241121;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;98586;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +26;Private;181920;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +23;Private;434467;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +30;Private;113364;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Vietnam;<=50K +51;Private;249706;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Self-emp-not-inc;95455;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;<=50K +35;Self-emp-inc;79586;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +41;Private;289669;HS-grad;9;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;53835;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +46;Local-gov;14878;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +31;Private;266126;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +41;Self-emp-inc;146659;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Honduras;<=50K +23;Private;173535;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +21;?;77665;Some-college;10;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +49;Private;280525;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +53;Private;479621;Assoc-voc;11;Divorced;Tech-support;Not-in-family;Black;Male;0;0;40;United-States;<=50K +36;Private;247600;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;40;Taiwan;<=50K +32;Private;258406;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;72;Mexico;<=50K +20;Private;107746;11th;7;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;Guatemala;<=50K +17;?;47407;11th;7;Never-married;?;Own-child;White;Male;0;0;10;United-States;<=50K +22;Private;229987;Some-college;10;Never-married;Tech-support;Other-relative;Asian-Pac-Islander;Female;0;0;32;United-States;<=50K +25;Private;312338;Assoc-voc;11;Never-married;Craft-repair;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +24;Private;373718;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;20;United-States;<=50K +20;Private;472789;1st-4th;2;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;30;El-Salvador;<=50K +60;Self-emp-not-inc;27886;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;Private;138352;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;30;United-States;<=50K +52;Private;123011;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +36;Private;306567;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;40;United-States;>50K +46;Local-gov;187749;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +22;Private;260594;11th;7;Never-married;Sales;Unmarried;White;Female;0;0;25;United-States;<=50K +19;Private;236879;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;35;United-States;<=50K +37;Private;186808;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +30;Private;373213;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;>50K +44;Private;187629;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;25;United-States;<=50K +63;?;106648;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +22;Private;305781;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;45;Canada;<=50K +17;Private;239947;11th;7;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;349041;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +67;Private;105252;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Private;182715;7th-8th;4;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;166210;HS-grad;9;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +20;Private;113200;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;6;United-States;<=50K +27;Private;142075;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;24;United-States;<=50K +35;Private;454843;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +19;Private;142219;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +36;Private;112512;12th;8;Separated;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +62;State-gov;265201;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;170627;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +37;Private;259089;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;21856;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +46;Local-gov;207946;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;43;United-States;<=50K +33;Private;36539;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +62;Private;176811;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;277746;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;288132;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +34;Private;198091;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;72;United-States;<=50K +67;?;150264;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;20;Canada;>50K +62;Private;588484;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;>50K +30;Private;113364;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Poland;<=50K +19;Private;270551;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +49;?;31478;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;99;United-States;<=50K +27;Private;190525;Assoc-voc;11;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;45;United-States;<=50K +36;Private;153066;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +52;Private;150393;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +47;Private;99911;12th;8;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +57;Local-gov;343447;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +64;Private;169482;Some-college;10;Married-spouse-absent;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +56;?;32855;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;194501;11th;7;Widowed;Other-service;Own-child;White;Female;0;0;47;United-States;<=50K +53;Private;177705;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +31;Private;123983;Some-college;10;Separated;Sales;Unmarried;Asian-Pac-Islander;Male;0;0;40;South;<=50K +45;Local-gov;235431;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;State-gov;130206;HS-grad;9;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +23;Private;210053;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +39;Local-gov;249392;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;72;United-States;<=50K +31;Private;87418;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;190387;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +22;?;211013;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;Mexico;<=50K +55;Self-emp-not-inc;185195;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;173495;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Self-emp-inc;78634;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +46;Self-emp-not-inc;82572;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +38;Private;154641;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +17;?;64785;10th;6;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +48;Self-emp-not-inc;179337;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;England;<=50K +73;Private;173047;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;15;United-States;<=50K +25;Private;264012;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +53;Federal-gov;227836;Some-college;10;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;146398;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +30;Private;324120;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;367329;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;State-gov;301582;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +75;?;222789;Bachelors;13;Widowed;?;Not-in-family;White;Female;0;0;6;United-States;<=50K +58;Private;170108;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Self-emp-not-inc;82297;7th-8th;4;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;50;United-States;<=50K +62;Local-gov;180162;9th;5;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;24;United-States;<=50K +38;Private;809585;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-not-inc;67728;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +42;Self-emp-not-inc;102069;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +42;Self-emp-not-inc;109273;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +43;Private;393354;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;38;United-States;>50K +37;Private;226947;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +27;Private;493689;Bachelors;13;Never-married;Tech-support;Not-in-family;Black;Female;0;0;40;France;<=50K +54;Private;299324;5th-6th;3;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Male;0;0;40;Mexico;<=50K +29;Private;174419;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +29;Private;209472;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;38;United-States;<=50K +37;Private;295127;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;47;United-States;<=50K +55;Self-emp-inc;182273;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +67;Private;228200;HS-grad;9;Married-civ-spouse;Priv-house-serv;Wife;Black;Female;0;0;20;United-States;<=50K +51;Private;263836;HS-grad;9;Widowed;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +35;Private;178948;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +41;Private;43945;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +64;Self-emp-not-inc;253296;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +23;Private;240137;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;55;Mexico;<=50K +49;Private;24712;Bachelors;13;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;35;Philippines;<=50K +38;Self-emp-not-inc;342635;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;<=50K +62;Private;115387;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Female;0;0;40;United-States;<=50K +62;Self-emp-not-inc;182998;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;10;United-States;<=50K +70;?;133248;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;14;United-States;<=50K +45;Self-emp-not-inc;246891;Masters;14;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;30035;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;175232;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +50;Self-emp-inc;140516;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;64980;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;55;United-States;>50K +30;Private;155781;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +52;Federal-gov;192065;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;227890;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;50;United-States;>50K +62;Self-emp-not-inc;162249;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +31;Private;165949;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;445382;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +53;Private;163678;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +42;Private;89413;12th;8;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;289700;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;United-States;<=50K +51;Private;163826;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +49;Private;185385;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;Private;169031;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;54611;Some-college;10;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;130620;11th;7;Married-spouse-absent;Sales;Own-child;Asian-Pac-Islander;Female;0;0;40;India;<=50K +26;Private;328663;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Other;Male;0;0;40;United-States;<=50K +50;Private;169646;Bachelors;13;Separated;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +35;Private;186815;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;103925;Some-college;10;Never-married;Tech-support;Other-relative;White;Female;0;0;40;United-States;<=50K +20;Private;82777;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;16;United-States;<=50K +31;Local-gov;178449;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;51672;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +46;Private;380162;HS-grad;9;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;United-States;>50K +21;Private;212114;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;8;United-States;<=50K +30;Private;162572;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;70;United-States;>50K +66;Self-emp-inc;179951;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +37;Self-emp-inc;190759;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +74;State-gov;236012;7th-8th;4;Widowed;Handlers-cleaners;Not-in-family;White;Female;0;0;20;United-States;<=50K +46;State-gov;164023;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;70;United-States;>50K +47;Self-emp-inc;362835;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +49;Private;97883;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Private;91911;HS-grad;9;Divorced;Craft-repair;Unmarried;Black;Female;0;0;48;United-States;<=50K +24;Private;278130;Assoc-voc;11;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;146310;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;379412;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;37987;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +37;State-gov;482927;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;65;United-States;<=50K +48;State-gov;44434;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;61;United-States;>50K +25;Private;255474;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;?;195488;12th;8;Separated;?;Not-in-family;White;Female;0;0;36;Puerto-Rico;<=50K +58;?;114362;Some-college;10;Married-civ-spouse;?;Husband;Black;Male;0;0;30;United-States;<=50K +27;Private;341504;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +69;Private;197080;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Male;0;0;8;United-States;<=50K +38;Private;102945;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +47;Private;503454;12th;8;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;87561;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +27;Private;252813;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +19;Private;574271;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +24;Private;235071;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +32;Private;158242;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;299810;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +19;Private;277695;Preschool;1;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;36;Hong;<=50K +28;Private;23324;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Local-gov;316582;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;<=50K +38;Self-emp-not-inc;176657;Some-college;10;Separated;Sales;Not-in-family;Asian-Pac-Islander;Male;0;0;60;Japan;<=50K +42;Private;93770;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;>50K +31;Private;124569;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +46;Private;117313;9th;5;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Ireland;<=50K +53;Private;53812;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;54;United-States;<=50K +21;Private;170456;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +48;Self-emp-not-inc;115971;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +30;Private;112383;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;283092;HS-grad;9;Never-married;Adm-clerical;Other-relative;Black;Male;0;0;40;Jamaica;<=50K +32;Private;27207;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;46712;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;State-gov;19520;Doctorate;16;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +56;Private;98630;7th-8th;4;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;159897;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;37;United-States;<=50K +38;Private;136629;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Iran;<=50K +19;Private;407759;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;221884;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +49;Private;148475;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;274964;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +50;Self-emp-inc;160107;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +43;Private;167265;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;84;United-States;>50K +34;Private;148226;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;48;United-States;<=50K +28;Private;153869;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;208881;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;256953;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;44;United-States;<=50K +26;Private;100147;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +51;Local-gov;166461;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;>50K +35;Private;171327;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;297335;Assoc-acdm;12;Married-spouse-absent;Exec-managerial;Unmarried;Asian-Pac-Islander;Female;0;0;31;Laos;<=50K +63;?;133166;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;12;United-States;<=50K +31;Private;169589;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +22;Local-gov;273734;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +67;Private;158301;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +50;?;257117;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +63;Private;196725;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;24;United-States;<=50K +31;Private;137444;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +17;Private;286960;11th;7;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +41;Local-gov;201435;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +53;Local-gov;216931;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;38;United-States;<=50K +44;Local-gov;212665;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;99;United-States;<=50K +24;Private;462820;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;198841;Assoc-voc;11;Divorced;Tech-support;Own-child;White;Male;0;0;35;United-States;<=50K +61;Private;219886;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +31;Private;163003;Assoc-acdm;12;Never-married;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +56;Private;213105;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;36;United-States;>50K +66;Private;302072;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;338105;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +64;Private;125684;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;215419;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;36;United-States;>50K +43;Local-gov;413760;Some-college;10;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Private;205339;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;49;United-States;<=50K +19;Private;236570;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;16;United-States;<=50K +59;Self-emp-not-inc;247552;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +50;Federal-gov;184007;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;341187;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +56;Private;220187;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +28;Private;198258;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;175821;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;34;United-States;<=50K +42;Private;92288;Masters;14;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +34;Private;261418;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;203319;11th;7;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +68;Self-emp-not-inc;166083;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;109001;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +81;?;106765;Some-college;10;Widowed;?;Unmarried;White;Female;0;0;4;United-States;<=50K +22;Self-emp-not-inc;197387;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +58;Private;284834;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;87535;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;25;United-States;<=50K +17;Local-gov;175587;11th;7;Never-married;Protective-serv;Own-child;White;Male;0;0;30;United-States;<=50K +23;Private;161478;Some-college;10;Never-married;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;23;United-States;<=50K +25;Private;51498;12th;8;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +47;Private;220124;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;188503;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;60;United-States;>50K +44;Private;113324;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;208872;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Self-emp-not-inc;34180;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +23;Private;292023;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;30;United-States;<=50K +34;Private;141118;Bachelors;13;Married-spouse-absent;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +33;Private;348592;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +38;Private;185203;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +52;Self-emp-not-inc;165278;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;116933;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;33;United-States;<=50K +35;Private;84787;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;206878;HS-grad;9;Never-married;Sales;Other-relative;White;Female;0;0;15;United-States;<=50K +38;Self-emp-not-inc;127772;HS-grad;9;Divorced;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +29;Private;208577;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Private;40681;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;?;95108;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;280603;11th;7;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +43;Private;188436;Prof-school;15;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;134220;Assoc-voc;11;Divorced;Exec-managerial;Own-child;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +42;Private;177989;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;164190;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;30;United-States;<=50K +36;Private;90897;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;State-gov;33126;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +30;Private;270886;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;216129;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +33;Private;189368;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;>50K +19;?;141418;Some-college;10;Never-married;?;Own-child;White;Male;0;0;15;United-States;<=50K +19;Private;306225;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +35;Private;330664;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;191765;HS-grad;9;Divorced;Tech-support;Unmarried;Black;Female;0;0;35;United-States;<=50K +45;Private;289353;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;24;United-States;<=50K +25;Private;53147;Bachelors;13;Never-married;Exec-managerial;Own-child;Black;Male;0;0;50;United-States;<=50K +39;Self-emp-not-inc;122353;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;188767;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;239576;Masters;14;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;10;United-States;<=50K +52;Local-gov;155141;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +22;Private;64520;12th;8;Never-married;Transport-moving;Unmarried;White;Male;0;0;30;United-States;<=50K +23;Private;478994;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +46;Private;155654;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;124052;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;<=50K +39;Private;245053;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +38;Private;183585;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;Self-emp-not-inc;323639;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;<=50K +55;Federal-gov;186791;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;186666;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;200153;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;180931;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;30;United-States;<=50K +51;Self-emp-not-inc;183173;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +47;Self-emp-inc;120131;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Cuba;>50K +25;Self-emp-not-inc;263300;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;Private;226443;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +19;Private;208506;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;28;United-States;<=50K +32;Private;46746;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +49;Private;246183;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +40;?;165309;7th-8th;4;Separated;?;Not-in-family;White;Female;0;0;8;United-States;<=50K +43;Private;122749;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +59;Private;167963;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +32;Private;273241;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +25;Private;120238;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;167990;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Ireland;<=50K +17;Private;225507;11th;7;Never-married;Handlers-cleaners;Not-in-family;Black;Female;0;0;15;United-States;<=50K +57;Self-emp-inc;125000;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +17;Self-emp-not-inc;174120;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +27;Private;230959;Bachelors;13;Never-married;Tech-support;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +41;Local-gov;132125;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +62;?;68461;Doctorate;16;Married-civ-spouse;?;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +19;Private;227178;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +41;Private;165798;5th-6th;3;Divorced;Other-service;Unmarried;White;Female;0;0;40;Puerto-Rico;<=50K +39;Private;129573;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +30;Private;224377;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;179481;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +18;Private;434268;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +40;Self-emp-not-inc;173716;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +24;Private;114230;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;188661;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +48;Private;216093;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;124963;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +48;Private;85341;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;193490;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +34;Private;80058;Prof-school;15;Never-married;Exec-managerial;Own-child;White;Male;0;0;50;United-States;<=50K +41;Private;139907;Assoc-voc;11;Separated;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +25;Private;188767;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;117222;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +35;Private;187119;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;70;United-States;<=50K +42;Local-gov;97277;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Local-gov;219760;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;16;United-States;<=50K +46;Private;63299;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +39;State-gov;171482;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +18;?;344742;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;210869;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;80;United-States;<=50K +39;Private;38312;Some-college;10;Married-spouse-absent;Craft-repair;Unmarried;White;Male;0;0;40;United-States;>50K +47;Private;119939;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +40;Private;83953;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +43;State-gov;101383;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;Private;204374;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;176831;10th;6;Divorced;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +19;?;60688;Some-college;10;Never-married;?;Own-child;White;Male;0;0;35;United-States;<=50K +44;Federal-gov;251305;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +46;Local-gov;200947;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +53;Self-emp-not-inc;46704;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;Private;119721;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +41;State-gov;58930;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;247750;HS-grad;9;Widowed;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +48;Private;67725;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +28;State-gov;200775;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +44;Private;183542;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +20;?;25139;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +51;Local-gov;123325;Prof-school;15;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;269786;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;50;United-States;<=50K +36;Private;51089;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +28;Private;136985;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +21;Private;129350;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +34;?;35595;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +36;Local-gov;61299;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;?;192321;Assoc-acdm;12;Never-married;?;Own-child;White;Female;0;0;80;United-States;<=50K +31;Private;257644;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;43;United-States;<=50K +44;Self-emp-not-inc;70884;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +49;Local-gov;159726;11th;7;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;174395;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;Federal-gov;175534;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;China;>50K +27;Private;32519;Some-college;10;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;55;South;<=50K +18;Private;322999;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +68;Private;148874;9th;5;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;44;United-States;<=50K +64;Private;43738;Doctorate;16;Widowed;Prof-specialty;Not-in-family;White;Male;0;0;80;United-States;>50K +36;Private;195385;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +21;Private;149809;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;24;United-States;<=50K +22;Private;51985;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +61;Private;105384;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;137591;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;10;Greece;<=50K +49;State-gov;324791;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +25;Private;184303;Some-college;10;Separated;Priv-house-serv;Other-relative;White;Female;0;0;30;El-Salvador;<=50K +66;?;314347;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;274010;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +22;Private;321031;HS-grad;9;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +57;Federal-gov;313929;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +29;Private;152951;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;247115;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +47;Private;175958;Prof-school;15;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +22;Private;109039;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +59;Self-emp-inc;141326;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;>50K +42;State-gov;74334;Masters;14;Married-civ-spouse;Adm-clerical;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +64;Self-emp-not-inc;47462;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +29;Federal-gov;182344;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +25;State-gov;295912;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;20;United-States;<=50K +62;Private;311495;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;187643;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;501671;10th;6;Divorced;Machine-op-inspct;Unmarried;Black;Male;0;0;40;United-States;<=50K +21;Private;301556;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;19;United-States;<=50K +18;Private;187240;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;18;United-States;<=50K +33;Private;594187;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +63;Private;200474;1st-4th;2;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Local-gov;152795;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;52;United-States;>50K +17;Private;230789;9th;5;Never-married;Sales;Own-child;Black;Male;0;0;22;United-States;<=50K +31;Private;114691;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;194591;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;114691;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +51;State-gov;42017;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Local-gov;383384;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;29444;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +42;Federal-gov;53727;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;?;<=50K +38;Private;277022;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;Columbia;<=50K +43;Local-gov;113324;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;342709;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;179203;12th;8;Never-married;Sales;Other-relative;White;Male;0;0;55;United-States;<=50K +46;Private;251474;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +50;Private;93730;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;37894;HS-grad;9;Separated;Other-service;Other-relative;White;Male;0;0;35;United-States;<=50K +18;State-gov;272918;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;15;United-States;<=50K +53;Private;151411;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +40;Private;210648;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;44;United-States;>50K +36;Self-emp-not-inc;347491;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +32;Private;255885;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;United-States;>50K +39;Private;356838;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;12;United-States;<=50K +46;Private;216164;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +26;Local-gov;288781;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;42;United-States;<=50K +19;Private;439779;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +24;Private;161638;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Ecuador;<=50K +28;Private;190525;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +25;Local-gov;276249;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;147265;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;245090;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Nicaragua;<=50K +42;State-gov;219682;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;Private;392100;HS-grad;9;Married-civ-spouse;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;358682;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Male;0;0;50;?;<=50K +47;Private;262244;Bachelors;13;Never-married;Sales;Not-in-family;Black;Male;0;0;60;United-States;>50K +21;Local-gov;218445;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Mexico;<=50K +19;?;182609;HS-grad;9;Never-married;?;Own-child;Black;Female;0;0;25;United-States;<=50K +35;Private;509462;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +26;Private;213258;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;118401;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +67;Self-emp-not-inc;45814;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;329733;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;>50K +26;Private;29957;Masters;14;Never-married;Tech-support;Other-relative;White;Male;0;0;25;United-States;<=50K +51;Private;215854;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +27;Private;327766;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +27;Private;405765;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;>50K +39;Private;80680;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;177792;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;48;United-States;>50K +52;Private;273514;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;202373;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +27;Local-gov;332785;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;38;United-States;<=50K +46;Private;149640;7th-8th;4;Married-spouse-absent;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +42;Private;40151;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +79;Self-emp-inc;183686;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;>50K +50;Federal-gov;32801;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;>50K +19;?;195282;HS-grad;9;Never-married;?;Own-child;Black;Female;0;0;20;United-States;<=50K +51;Local-gov;96678;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +66;Private;186324;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;5;United-States;>50K +36;Self-emp-not-inc;257250;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;<=50K +26;Private;212800;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Female;0;0;36;United-States;<=50K +28;Private;55360;Some-college;10;Never-married;Sales;Not-in-family;Black;Male;0;0;50;United-States;<=50K +39;Self-emp-not-inc;195253;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +43;Private;45156;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +20;Private;435469;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;Mexico;<=50K +29;Private;231287;Some-college;10;Divorced;Tech-support;Unmarried;White;Male;0;0;40;United-States;<=50K +18;?;91670;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +60;Private;165517;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;73161;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +60;Private;178792;HS-grad;9;Widowed;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;32897;11th;7;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +29;Private;250967;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;379779;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Private;217838;5th-6th;3;Separated;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +43;Private;198965;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;38;United-States;>50K +37;Private;220644;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;40;?;<=50K +19;Private;175081;9th;5;Never-married;Craft-repair;Other-relative;White;Male;0;0;60;United-States;<=50K +29;Private;180299;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +40;Self-emp-not-inc;548664;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;15;United-States;<=50K +53;Private;278114;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;394927;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +29;Private;236938;Assoc-acdm;12;Divorced;Craft-repair;Unmarried;White;Female;0;0;38;United-States;<=50K +25;Private;232991;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Mexico;<=50K +38;Private;34378;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +48;Self-emp-inc;81513;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +18;Private;106780;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +37;Private;329026;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +48;Private;26490;Bachelors;13;Widowed;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +50;Private;338033;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +24;Private;21154;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +34;Private;209449;Some-college;10;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;United-States;>50K +19;Private;389143;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;101260;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;198270;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;45781;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;134566;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;?;283806;9th;5;Divorced;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +46;Private;422813;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +24;Local-gov;103277;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;50;United-States;<=50K +18;Private;201871;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +50;Self-emp-not-inc;167728;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +42;Private;211517;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;118212;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;98926;Some-college;10;Widowed;Tech-support;Not-in-family;White;Female;0;0;16;United-States;<=50K +27;Private;207352;Bachelors;13;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +31;Private;206609;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;104509;Masters;14;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;170350;HS-grad;9;Divorced;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +56;Private;183884;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;State-gov;154410;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +63;?;257659;Masters;14;Never-married;?;Not-in-family;White;Female;0;0;3;United-States;<=50K +28;Private;274679;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +38;Private;252662;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Self-emp-inc;356689;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +18;Private;205218;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +35;Private;241306;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +53;Private;139127;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;175625;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;206459;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;176123;10th;6;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;60;India;<=50K +41;Private;111483;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;106118;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;>50K +19;Private;162094;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;145284;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +29;Private;242482;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +35;Self-emp-not-inc;160192;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +27;?;280699;Some-college;10;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Private;156950;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +53;Private;215572;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;173593;Masters;14;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;20;Canada;<=50K +55;Private;193374;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +45;Local-gov;334039;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Private;337664;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;113504;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;177072;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;174503;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;214807;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;37;United-States;<=50K +23;Private;100345;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +22;Private;409230;12th;8;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +65;Self-emp-inc;115922;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +59;?;375049;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;41;United-States;>50K +25;Private;243560;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;Columbia;<=50K +31;Private;127215;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +50;State-gov;276241;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +49;State-gov;175109;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;Private;498079;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Federal-gov;344394;Some-college;10;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +23;Private;245302;Some-college;10;Divorced;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +63;Private;43313;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;188467;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Self-emp-inc;351278;Bachelors;13;Divorced;Farming-fishing;Unmarried;White;Male;0;0;50;United-States;<=50K +31;Private;182246;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +48;?;353824;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;?;>50K +31;Private;387116;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;36;Jamaica;<=50K +47;Private;34248;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +54;State-gov;198741;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +23;Private;32950;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;381153;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +46;Private;100067;11th;7;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;35;United-States;>50K +34;Private;208785;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +31;Private;61559;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;176452;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;Peru;<=50K +41;?;128700;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +27;Self-emp-not-inc;328518;Assoc-voc;11;Never-married;Prof-specialty;Other-relative;White;Male;0;0;30;United-States;<=50K +30;?;201196;11th;7;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +23;Private;378546;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +24;Local-gov;212210;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;?;<=50K +59;Federal-gov;178660;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-not-inc;22641;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +59;Private;316027;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;Cuba;<=50K +47;Private;431515;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;149770;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;44;United-States;<=50K +42;Private;165916;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +29;Federal-gov;107411;Some-college;10;Married-spouse-absent;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;217961;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;45;Outlying-US(Guam-USVI-etc);<=50K +43;Self-emp-not-inc;350387;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +46;Private;325372;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;156718;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;216472;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;20;United-States;<=50K +29;State-gov;106972;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +33;Private;131934;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +46;Local-gov;359193;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +35;Private;261012;Some-college;10;Married-spouse-absent;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +25;Private;113654;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;37;United-States;<=50K +35;Private;218955;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;115963;7th-8th;4;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;42;United-States;<=50K +39;Private;80638;Some-college;10;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;84;United-States;>50K +37;Private;147258;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +22;Private;214635;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;42;United-States;<=50K +25;Private;200318;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +50;Private;138270;HS-grad;9;Married-civ-spouse;Sales;Wife;Black;Female;0;0;40;United-States;<=50K +33;Private;103435;Assoc-voc;11;Separated;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +59;Self-emp-inc;133201;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Italy;<=50K +24;Private;175183;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;99870;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +38;?;107479;9th;5;Never-married;?;Own-child;White;Female;0;0;12;United-States;<=50K +60;Private;113440;Bachelors;13;Divorced;Exec-managerial;Own-child;White;Male;0;0;60;United-States;<=50K +19;Private;85690;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;30;United-States;<=50K +23;Private;45713;Some-college;10;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +17;?;67808;10th;6;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;113936;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;158291;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +27;Private;193898;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +43;Private;191982;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;55;United-States;<=50K +21;?;72953;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +54;Private;271160;Assoc-voc;11;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;33087;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +29;Private;106153;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;29444;12th;8;Never-married;Farming-fishing;Not-in-family;Amer-Indian-Eskimo;Male;0;0;50;United-States;<=50K +37;Private;105021;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +38;Self-emp-not-inc;239045;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +34;Private;94413;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;20534;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;84;United-States;>50K +28;Private;350254;1st-4th;2;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;Mexico;<=50K +68;Private;194746;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;Cuba;<=50K +36;Private;269042;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Laos;<=50K +20;Private;447488;9th;5;Never-married;Other-service;Unmarried;White;Male;0;0;30;Mexico;<=50K +24;Private;267706;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;45;United-States;<=50K +38;Private;198216;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;227931;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;181776;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;<=50K +32;Private;132601;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +58;Private;205410;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;292570;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;50;United-States;<=50K +43;Private;76460;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;295163;12th;8;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;27255;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;?;<=50K +23;Private;69847;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +24;?;390608;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;36;United-States;<=50K +41;Private;317539;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;195678;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;466502;7th-8th;4;Widowed;Other-service;Unmarried;White;Male;0;0;30;United-States;<=50K +28;Local-gov;220754;HS-grad;9;Separated;Transport-moving;Own-child;White;Female;0;0;25;United-States;<=50K +36;Private;343476;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +60;Self-emp-not-inc;38622;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +34;State-gov;173730;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;<=50K +32;Private;178623;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;?;<=50K +27;Private;300783;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;42;United-States;>50K +60;Private;224644;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;191502;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Private;61885;12th;8;Divorced;Transport-moving;Other-relative;Black;Male;0;0;35;United-States;<=50K +34;Self-emp-not-inc;213887;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;32;Canada;>50K +36;Private;331395;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;145098;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +48;Private;123075;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +19;Private;216804;7th-8th;4;Never-married;Other-service;Own-child;White;Male;0;0;33;United-States;<=50K +40;Private;188291;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +25;Private;33610;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +39;Private;234901;Assoc-acdm;12;Separated;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;349148;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;168443;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +43;Private;211860;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;24;United-States;<=50K +35;Private;193961;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +59;Self-emp-not-inc;75804;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;>50K +33;Self-emp-not-inc;176185;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;306779;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +48;Private;265192;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +54;Private;139347;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;107682;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +37;Private;34173;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;128378;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +51;Self-emp-inc;195638;Some-college;10;Separated;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;59287;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;162442;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +29;?;350603;10th;6;Never-married;?;Own-child;White;Female;0;0;38;United-States;<=50K +39;Private;344743;Some-college;10;Married-civ-spouse;Adm-clerical;Own-child;Black;Female;0;0;50;United-States;>50K +26;Private;176795;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;>50K +31;Private;309620;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;6;South;<=50K +39;Private;336880;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +26;Private;206600;11th;7;Never-married;Other-service;Other-relative;White;Male;0;0;30;Mexico;<=50K +25;Private;193051;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;35;United-States;<=50K +49;Private;62793;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +53;Private;264939;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;Mexico;<=50K +52;Private;370552;Preschool;1;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;El-Salvador;<=50K +52;Private;163678;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +74;?;89667;Bachelors;13;Widowed;?;Not-in-family;Other;Female;0;0;35;United-States;<=50K +50;Private;558490;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +76;Private;208843;7th-8th;4;Widowed;Protective-serv;Not-in-family;White;Male;0;0;30;United-States;<=50K +19;Private;95078;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +25;Private;169679;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;101320;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;168906;Assoc-acdm;12;Divorced;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +20;Private;212582;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +66;?;170617;Masters;14;Widowed;?;Not-in-family;White;Male;0;0;6;United-States;<=50K +63;?;170529;Bachelors;13;Married-civ-spouse;?;Wife;Black;Female;0;0;45;United-States;<=50K +27;Private;99897;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;175224;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;Nicaragua;<=50K +23;Private;149704;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +37;Federal-gov;214542;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;167319;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;State-gov;43716;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;4;United-States;<=50K +28;Private;191935;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +35;Private;338611;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;136419;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;75;United-States;>50K +17;Private;72321;11th;7;Never-married;Other-service;Other-relative;White;Female;0;0;12;United-States;<=50K +41;Local-gov;189956;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;>50K +44;Private;403782;Assoc-voc;11;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +47;Private;456661;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +24;Private;279041;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;65716;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;189809;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;52;Jamaica;<=50K +62;Local-gov;223637;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +27;Local-gov;199343;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;<=50K +59;Private;139344;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +35;Private;119098;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;195025;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +28;Private;186720;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;50;United-States;<=50K +28;Private;328923;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;38;United-States;<=50K +59;State-gov;159472;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;138662;Some-college;10;Separated;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +54;Local-gov;286342;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;32;United-States;>50K +39;Private;181705;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +41;Private;193882;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;216497;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;Germany;<=50K +32;Self-emp-inc;124919;Bachelors;13;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;50;Iran;>50K +58;Private;256274;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;326379;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;243142;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Local-gov;155118;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;70;United-States;>50K +54;Private;189607;Bachelors;13;Never-married;Other-service;Own-child;Black;Female;0;0;36;United-States;<=50K +20;Private;39478;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;70;United-States;<=50K +35;Private;206951;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +22;Private;127647;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;36;United-States;<=50K +42;Private;182302;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +44;State-gov;166597;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-not-inc;33363;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;>50K +74;Self-emp-inc;167537;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +34;Private;179378;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;<=50K +50;State-gov;297551;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;52;United-States;<=50K +50;Private;198362;Assoc-voc;11;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +43;Private;240504;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;169662;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;?;164940;HS-grad;9;Separated;?;Unmarried;Black;Female;0;0;25;United-States;<=50K +61;Private;210488;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +21;Private;154835;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +27;Private;333296;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;30;?;<=50K +47;Private;192793;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Iran;>50K +33;Private;136331;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;509048;HS-grad;9;Never-married;Sales;Other-relative;Black;Female;0;0;37;United-States;<=50K +38;Private;318610;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Private;104521;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;247695;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +35;Private;219546;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;Germany;<=50K +21;Private;169699;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;State-gov;131302;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;44;United-States;<=50K +50;Private;171852;Bachelors;13;Separated;Prof-specialty;Own-child;Other;Female;0;0;40;United-States;<=50K +36;State-gov;340091;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;36;United-States;>50K +20;Private;204641;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +49;Private;213431;HS-grad;9;Separated;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +40;State-gov;377018;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +22;Private;184543;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +60;?;188236;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Private;233022;11th;7;Widowed;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +21;Private;177420;Some-college;10;Never-married;Adm-clerical;Not-in-family;Other;Female;0;0;40;United-States;<=50K +60;Self-emp-not-inc;21101;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Amer-Indian-Eskimo;Male;0;0;50;United-States;<=50K +17;Private;52486;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +49;State-gov;36177;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +38;Private;102350;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +38;Private;165930;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;297574;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;99;United-States;>50K +40;Private;120277;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;?;87569;Some-college;10;Separated;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;155972;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +46;State-gov;162852;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;64860;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;22;United-States;<=50K +24;Private;322674;Assoc-acdm;12;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;48;United-States;<=50K +62;Private;202242;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +54;Private;175262;Preschool;1;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +23;Private;201682;Bachelors;13;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +60;Private;166330;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +18;Self-emp-inc;147612;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Female;0;0;8;United-States;<=50K +41;Local-gov;213154;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;40;United-States;<=50K +45;Local-gov;33798;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;State-gov;199198;Assoc-voc;11;Widowed;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;90915;Bachelors;13;Married-spouse-absent;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Self-emp-inc;337778;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Yugoslavia;>50K +31;Private;187203;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +44;Private;261497;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;?;<=50K +33;Self-emp-not-inc;361817;HS-grad;9;Separated;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +62;Self-emp-not-inc;226546;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;16;United-States;<=50K +27;Private;100168;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +42;Federal-gov;272625;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;>50K +55;Private;254516;9th;5;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;37;United-States;<=50K +41;Private;207375;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +45;Private;48271;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +67;Self-emp-not-inc;152102;HS-grad;9;Widowed;Farming-fishing;Not-in-family;White;Male;0;0;65;United-States;<=50K +25;Private;234665;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;180060;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +19;Private;32477;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;137658;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +61;Private;228287;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;33310;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +53;Private;270546;HS-grad;9;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;20;United-States;<=50K +53;Federal-gov;290290;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +42;Self-emp-inc;287037;12th;8;Divorced;Craft-repair;Not-in-family;White;Male;0;0;10;United-States;<=50K +36;Private;128516;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +55;Self-emp-not-inc;185195;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;99;United-States;<=50K +17;Private;98005;11th;7;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +55;Self-emp-not-inc;283635;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +36;Private;98360;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +40;Local-gov;202872;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +54;Self-emp-not-inc;118365;10th;6;Divorced;Other-service;Not-in-family;Black;Female;0;0;10;United-States;<=50K +45;Self-emp-not-inc;184285;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +48;Private;345831;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +40;Local-gov;99679;Prof-school;15;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;>50K +31;Private;253354;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;190650;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +19;Private;204389;HS-grad;9;Never-married;Adm-clerical;Own-child;Other;Female;0;0;25;Puerto-Rico;<=50K +31;Federal-gov;294870;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;159442;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +55;Local-gov;161662;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +38;Private;52738;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;252024;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;20;Mexico;<=50K +27;Private;189702;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;407913;HS-grad;9;Separated;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Private;166527;Some-college;10;Never-married;Adm-clerical;Own-child;Other;Female;0;0;20;United-States;<=50K +24;Self-emp-not-inc;34918;Assoc-voc;11;Never-married;Other-service;Unmarried;White;Female;0;0;38;United-States;<=50K +27;Private;142712;Masters;14;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;?;<=50K +18;Federal-gov;201686;11th;7;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;4;United-States;<=50K +28;Local-gov;179759;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;94954;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;201743;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +59;Self-emp-not-inc;119344;10th;6;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;36;United-States;<=50K +33;Private;149726;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;46;United-States;<=50K +28;Private;419146;7th-8th;4;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;40;Mexico;<=50K +41;Private;171234;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;55;United-States;<=50K +30;Private;206325;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +59;Private;202682;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;121055;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +29;Private;84366;10th;6;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;Mexico;<=50K +60;Private;139391;Some-college;10;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;>50K +41;Private;30759;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;137875;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +73;?;139049;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;22;United-States;>50K +20;Private;238384;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;340755;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;224947;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +33;State-gov;111994;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +25;Private;125491;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Female;0;0;34;United-States;<=50K +34;?;310525;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;10;United-States;<=50K +19;?;71592;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +40;Local-gov;99185;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;249935;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;44;United-States;<=50K +51;Private;206775;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +22;Private;230704;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;20;Jamaica;<=50K +34;Private;242361;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;50;United-States;<=50K +22;Private;134746;10th;6;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +56;Private;174040;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;273604;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;Private;192409;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +26;Self-emp-not-inc;102476;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +48;Private;234504;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +35;Self-emp-not-inc;468713;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;84560;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;148995;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;34816;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;12;United-States;<=50K +28;Private;211184;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +53;Private;33304;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +65;Federal-gov;179985;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;219815;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;106548;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +70;Private;89787;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +55;Private;164857;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +27;Federal-gov;257124;Bachelors;13;Never-married;Transport-moving;Other-relative;White;Male;0;0;35;United-States;<=50K +31;Private;227446;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Cuba;>50K +24;Private;189749;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;176321;7th-8th;4;Never-married;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +26;Private;284250;HS-grad;9;Never-married;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;101885;10th;6;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Self-emp-not-inc;134130;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +52;Private;260938;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;238184;HS-grad;9;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;40;United-States;<=50K +59;Self-emp-not-inc;148626;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +65;Private;113323;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Local-gov;34246;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +31;Private;279680;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +84;Private;188328;HS-grad;9;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;16;United-States;<=50K +51;Private;96609;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Local-gov;84257;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;275632;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;385540;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Mexico;<=50K +30;Private;196342;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;Ireland;<=50K +47;Private;97176;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;197714;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +43;Self-emp-not-inc;147099;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;36;United-States;<=50K +30;Private;186346;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +46;Private;73434;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +49;Local-gov;275074;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;209214;5th-6th;3;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;Mexico;<=50K +42;Private;210525;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;176684;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;210474;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +26;Private;293690;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;58;United-States;>50K +64;Private;149775;Masters;14;Never-married;Prof-specialty;Other-relative;White;Female;0;0;8;United-States;<=50K +20;Private;323009;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;Germany;<=50K +31;Private;126950;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;115411;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;265356;Bachelors;13;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +31;Local-gov;192565;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;90;United-States;>50K +35;Self-emp-not-inc;348771;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +30;Self-emp-not-inc;148959;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;35;United-States;<=50K +35;Private;126569;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;20;United-States;<=50K +40;Private;105936;HS-grad;9;Married-spouse-absent;Adm-clerical;Own-child;White;Female;0;0;38;United-States;<=50K +18;Private;188076;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +23;Private;184400;10th;6;Never-married;Transport-moving;Own-child;Asian-Pac-Islander;Male;0;0;30;?;<=50K +63;Private;124242;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +20;State-gov;200819;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +50;Local-gov;100480;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +49;Private;129513;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +53;Self-emp-not-inc;297796;10th;6;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;195488;HS-grad;9;Separated;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +54;Private;153486;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;56;United-States;>50K +40;Private;126845;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +22;Private;206974;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;412149;10th;6;Never-married;Farming-fishing;Other-relative;White;Male;0;0;35;Mexico;<=50K +24;Private;653574;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;El-Salvador;<=50K +37;Private;70562;1st-4th;2;Never-married;Other-service;Unmarried;White;Female;0;0;48;El-Salvador;<=50K +62;Private;197514;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;16;United-States;<=50K +19;?;309284;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;334679;Assoc-voc;11;Widowed;Prof-specialty;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +31;Private;151484;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;8;United-States;<=50K +42;Self-emp-inc;78765;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Male;0;0;90;United-States;>50K +42;Private;98427;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;35;United-States;<=50K +54;Private;230767;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Cuba;<=50K +23;Private;117606;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;60;United-States;<=50K +28;Private;68642;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;46;United-States;<=50K +42;Private;341638;11th;7;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;65920;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +33;Federal-gov;188246;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;198727;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;706026;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +20;?;348148;11th;7;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +62;Private;77884;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +17;Private;160758;10th;6;Never-married;Sales;Other-relative;White;Male;0;0;30;United-States;<=50K +58;Private;201112;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;55;United-States;>50K +34;Private;230246;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +20;Private;373935;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +64;Federal-gov;341695;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +27;Private;119793;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;?;<=50K +41;Private;178002;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +40;Private;233130;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;El-Salvador;<=50K +53;Local-gov;192982;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;38;United-States;>50K +44;Private;33155;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +37;Private;187346;5th-6th;3;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;Mexico;<=50K +46;Private;78529;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;60;United-States;>50K +17;Private;101626;9th;5;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +35;Private;117567;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Local-gov;110791;Assoc-acdm;12;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +49;State-gov;207120;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +48;Private;43206;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Female;0;0;25;United-States;<=50K +26;Private;120238;Bachelors;13;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +26;Private;189219;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;8;United-States;<=50K +35;State-gov;190895;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;83517;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Local-gov;59313;Some-college;10;Separated;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +25;Private;202033;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +18;Local-gov;55658;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +21;Private;118186;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;20;United-States;<=50K +22;Private;279901;HS-grad;9;Married-civ-spouse;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +52;Private;110954;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;El-Salvador;>50K +36;Self-emp-not-inc;90159;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +42;Private;34278;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +37;Private;37778;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;54;United-States;<=50K +39;Private;160623;Assoc-acdm;12;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;342458;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +53;Private;64322;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;373914;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;205884;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;>50K +62;Local-gov;208266;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +38;Private;222450;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +23;Private;348420;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Federal-gov;197284;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +27;?;204773;Assoc-acdm;12;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +41;Private;206066;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Self-emp-not-inc;61885;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +25;Private;299908;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;United-States;>50K +35;Private;46028;Assoc-acdm;12;Divorced;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +30;Private;154587;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Puerto-Rico;<=50K +36;Private;32334;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +42;Private;319588;Bachelors;13;Married-spouse-absent;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +51;Private;226735;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +34;Private;226443;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +44;Self-emp-inc;359259;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;Portugal;<=50K +27;Private;36851;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;41;United-States;<=50K +39;Private;393480;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +31;Private;231569;Bachelors;13;Never-married;Sales;Not-in-family;Black;Female;0;0;50;United-States;<=50K +23;Private;353010;11th;7;Never-married;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +66;Private;262285;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;99;United-States;<=50K +26;Private;160300;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;156953;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +53;Self-emp-inc;136823;11th;7;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;30;United-States;<=50K +48;Self-emp-not-inc;160724;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;Japan;<=50K +37;Self-emp-inc;86459;Assoc-acdm;12;Separated;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;<=50K +17;Private;238628;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;5;United-States;<=50K +50;Private;339954;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;?;222005;HS-grad;9;Never-married;?;Other-relative;White;Female;0;0;40;Mexico;<=50K +39;Private;214117;Some-college;10;Divorced;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +28;Federal-gov;298661;Bachelors;13;Never-married;Tech-support;Not-in-family;Black;Female;0;0;40;United-States;<=50K +38;Private;179488;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Local-gov;100270;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;126701;9th;5;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +20;Private;209131;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +32;State-gov;400132;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +23;State-gov;278155;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;178431;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;<=50K +36;Private;115700;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;167832;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;218164;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;44;United-States;<=50K +36;Self-emp-inc;242080;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;>50K +67;Federal-gov;223257;HS-grad;9;Widowed;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +45;Private;140644;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;>50K +22;Private;205970;10th;6;Separated;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +25;Private;216583;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;43;United-States;<=50K +61;Private;162432;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Local-gov;83671;Some-college;10;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +47;Self-emp-inc;205100;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;Germany;<=50K +31;Private;195750;1st-4th;2;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +17;Private;220562;9th;5;Never-married;Sales;Other-relative;Other;Female;0;0;32;Mexico;<=50K +38;Self-emp-inc;312232;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +23;Private;386337;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;?;<=50K +42;Private;86185;Some-college;10;Widowed;Exec-managerial;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +78;Private;105586;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;36;United-States;<=50K +54;Private;103345;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Local-gov;150553;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;50;United-States;<=50K +30;Private;26009;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +46;Private;149388;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;151626;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;45;United-States;<=50K +30;Private;169583;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +25;Private;213383;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +32;Self-emp-inc;103078;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +25;Local-gov;109526;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +51;Private;142835;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;State-gov;43475;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;190916;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +28;Private;175987;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Local-gov;214385;11th;7;Divorced;Other-service;Unmarried;Black;Female;0;0;20;United-States;<=50K +26;Private;192652;Bachelors;13;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +41;Federal-gov;207685;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +19;Private;143857;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +39;Private;163392;HS-grad;9;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;26;?;<=50K +51;Private;310774;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +29;?;427965;HS-grad;9;Separated;?;Unmarried;Black;Female;0;0;20;United-States;<=50K +27;Private;279608;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +33;Private;312881;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +19;Private;175083;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +67;?;132057;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;20;United-States;<=50K +41;Private;32878;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +29;Federal-gov;360527;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +28;Private;99478;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +25;Private;113035;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +21;Federal-gov;99199;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;36;United-States;<=50K +48;Private;236858;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;31;United-States;<=50K +46;Self-emp-inc;201865;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +35;Private;268661;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +35;Federal-gov;475324;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Private;117295;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;65704;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;?;<=50K +45;Private;192835;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +62;Local-gov;76720;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +33;Local-gov;133876;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;123727;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;30;United-States;<=50K +50;Private;129956;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +25;Private;96268;11th;7;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;317320;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;86872;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +31;State-gov;100863;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;>50K +56;Private;164332;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;15;United-States;<=50K +49;Self-emp-not-inc;122584;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;34377;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +46;Private;162030;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;43;United-States;<=50K +33;Private;199170;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +25;Private;470203;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +40;Private;266803;Assoc-acdm;12;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +72;?;188009;7th-8th;4;Divorced;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +32;State-gov;513416;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;10;United-States;<=50K +44;Private;98211;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +48;Private;196107;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +17;Private;108273;10th;6;Never-married;Sales;Own-child;White;Female;0;0;12;United-States;<=50K +22;Local-gov;412316;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +17;Private;120068;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;17;United-States;<=50K +49;Self-emp-inc;101722;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +26;Private;120268;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +19;State-gov;144429;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;10;United-States;<=50K +17;Private;271122;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +38;Private;255621;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;90934;Assoc-voc;11;Divorced;Protective-serv;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +48;Private;128460;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;>50K +63;Private;30813;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +19;Private;164585;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;215647;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;43;United-States;<=50K +54;Private;421561;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +42;Private;66755;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;United-States;<=50K +20;?;117222;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +37;State-gov;29145;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +51;Self-emp-not-inc;20795;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;311376;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;State-gov;122660;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +19;?;137578;Some-college;10;Never-married;?;Own-child;White;Male;0;0;16;United-States;<=50K +37;Private;193689;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;42;United-States;>50K +29;Private;144556;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +22;Private;243178;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K +60;State-gov;190682;Assoc-voc;11;Widowed;Other-service;Not-in-family;Black;Female;0;0;37;United-States;<=50K +35;Private;233786;11th;7;Separated;Other-service;Unmarried;White;Male;0;0;20;United-States;<=50K +45;Private;102202;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;95299;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Vietnam;>50K +43;Self-emp-inc;240504;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +32;State-gov;169973;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +35;Private;144937;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +32;Private;211751;Assoc-voc;11;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +61;Private;84587;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +20;?;187332;10th;6;Never-married;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +42;Self-emp-inc;188615;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +21;Private;119704;Some-college;10;Never-married;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +21;Private;275190;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +26;Private;417941;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;State-gov;196348;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +24;Private;221955;Bachelors;13;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +47;Private;173938;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;57;United-States;>50K +51;Private;123429;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;White;Male;0;0;30;United-States;<=50K +65;?;143732;HS-grad;9;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +61;Private;203126;Bachelors;13;Divorced;Priv-house-serv;Not-in-family;White;Female;0;0;12;?;<=50K +67;Private;174693;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;25;Nicaragua;<=50K +49;Private;357540;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +61;Private;280088;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;257380;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;35;United-States;<=50K +19;Private;165306;Some-college;10;Never-married;Tech-support;Other-relative;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +29;Self-emp-not-inc;109001;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +21;Private;32950;Some-college;10;Never-married;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;182163;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;188246;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +36;Private;297335;Bachelors;13;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;50;China;<=50K +37;Private;108366;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;0;0;46;United-States;<=50K +35;Private;328301;Assoc-acdm;12;Married-AF-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +17;Private;182158;10th;6;Never-married;Priv-house-serv;Own-child;White;Male;0;0;30;United-States;<=50K +37;Private;169426;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +22;?;330571;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;45;United-States;<=50K +28;Private;535978;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Private;29393;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;369166;Some-college;10;Never-married;Farming-fishing;Other-relative;White;Female;0;0;65;United-States;<=50K +45;Local-gov;257855;11th;7;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;50;United-States;<=50K +32;Private;164197;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +63;Private;109517;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;43;United-States;<=50K +22;Private;112137;Some-college;10;Never-married;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;20;South;<=50K +36;Private;160035;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +45;State-gov;50567;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;140011;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +27;State-gov;271328;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +20;?;183083;Some-college;10;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +47;Self-emp-not-inc;159869;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;56;United-States;>50K +46;Private;102542;7th-8th;4;Never-married;Other-service;Own-child;White;Male;0;0;52;United-States;<=50K +28;Private;297742;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;176917;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +26;Private;165235;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;40;Thailand;<=50K +32;Self-emp-not-inc;52647;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +30;Local-gov;48542;12th;8;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +59;Private;279232;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +58;State-gov;259929;Doctorate;16;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;43;United-States;>50K +45;Private;221780;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +76;Self-emp-not-inc;253408;Some-college;10;Widowed;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;298841;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;321313;Masters;14;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;64875;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;275232;Assoc-acdm;12;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;36;United-States;<=50K +53;Self-emp-inc;134854;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Greece;>50K +41;Private;67339;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;?;<=50K +27;State-gov;192355;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +44;Local-gov;208528;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +35;Private;160120;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +36;Private;250238;1st-4th;2;Never-married;Other-service;Other-relative;Other;Female;0;0;40;El-Salvador;<=50K +51;Private;25031;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;10;United-States;>50K +42;Local-gov;255847;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;111979;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;231037;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +57;Federal-gov;30030;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +27;Private;292120;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Female;0;0;45;United-States;<=50K +29;Private;190777;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +38;Self-emp-not-inc;41591;Bachelors;13;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +29;Private;186733;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +18;?;78567;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +19;?;140590;12th;8;Never-married;?;Own-child;Black;Male;0;0;30;United-States;<=50K +25;Private;182227;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;<=50K +34;Local-gov;205704;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +37;State-gov;24342;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;<=50K +37;Private;138192;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +18;Private;334676;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +24;Private;177526;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +17;Private;152696;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +35;Private;114765;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;265509;Assoc-voc;11;Separated;Tech-support;Unmarried;Black;Female;0;0;32;United-States;<=50K +29;Private;180758;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +49;Self-emp-not-inc;127921;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +71;?;177906;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;>50K +35;Federal-gov;182898;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;422249;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +37;Private;222450;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +33;Local-gov;190027;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;18;United-States;<=50K +49;Private;281647;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +32;Private;117963;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +63;?;319121;11th;7;Separated;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Private;225504;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Local-gov;104334;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;El-Salvador;<=50K +30;State-gov;48214;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +30;Private;145714;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Self-emp-inc;38240;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +57;Self-emp-not-inc;27385;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;10;United-States;<=50K +56;Private;204254;10th;6;Divorced;Other-service;Unmarried;Black;Female;0;0;45;United-States;<=50K +28;Private;411587;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;Honduras;<=50K +43;Private;221172;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;24;United-States;>50K +46;Private;54190;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +50;Local-gov;24139;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;65;United-States;<=50K +37;Private;112497;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +41;Private;138907;HS-grad;9;Divorced;Priv-house-serv;Other-relative;Black;Female;0;0;40;United-States;<=50K +38;Private;186325;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;38;United-States;>50K +23;Private;199452;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +59;Private;126677;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +47;Local-gov;93618;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;33;United-States;<=50K +29;Private;353352;Assoc-voc;11;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +35;Private;143058;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +24;Private;239663;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;15;United-States;<=50K +22;Private;167615;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;442274;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +55;Federal-gov;174533;Bachelors;13;Separated;Other-service;Unmarried;White;Female;0;0;72;?;<=50K +40;State-gov;50093;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;20;United-States;<=50K +61;Private;270056;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Japan;<=50K +58;Self-emp-not-inc;131991;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Male;0;0;72;United-States;<=50K +39;State-gov;126336;HS-grad;9;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;341117;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +25;Private;108505;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +69;?;106566;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +36;Private;74791;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Male;0;0;60;?;<=50K +45;Private;267967;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +27;?;181284;12th;8;Married-civ-spouse;?;Husband;Black;Male;0;0;45;United-States;<=50K +28;Private;102533;Some-college;10;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +27;Private;69757;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +41;State-gov;210094;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;State-gov;389147;HS-grad;9;Never-married;Sales;Not-in-family;Black;Female;0;0;30;United-States;<=50K +44;Private;210648;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +47;Private;94809;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +36;Local-gov;298717;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +66;Private;236879;Preschool;1;Widowed;Priv-house-serv;Other-relative;White;Female;0;0;40;Guatemala;<=50K +33;Private;170148;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +39;Local-gov;166497;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;>50K +30;Private;247156;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +34;Self-emp-not-inc;204052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +62;Self-emp-not-inc;122246;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;<=50K +21;Private;180339;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +43;Private;193882;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +19;Private;112269;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +26;Federal-gov;171928;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;50;Japan;<=50K +45;Federal-gov;179638;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +46;Self-emp-inc;125892;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +17;Private;721712;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;15;United-States;<=50K +56;Private;197369;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +47;Private;334679;Masters;14;Separated;Machine-op-inspct;Unmarried;Asian-Pac-Islander;Female;0;0;42;India;<=50K +23;Private;235853;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +51;Self-emp-not-inc;353281;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +19;Private;203061;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;25;United-States;<=50K +33;Self-emp-not-inc;62932;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;118551;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;80;United-States;<=50K +52;Private;99184;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;189674;Some-college;10;Separated;Other-service;Other-relative;Black;Female;0;0;40;United-States;<=50K +34;Private;226883;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;?;109564;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +26;Self-emp-inc;66872;12th;8;Married-civ-spouse;Sales;Husband;Other;Male;0;0;98;Dominican-Republic;<=50K +35;Local-gov;268292;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;Federal-gov;139290;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +32;Private;206541;11th;7;Divorced;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +23;Private;203139;Some-college;10;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;294398;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;Private;386864;10th;6;Never-married;Other-service;Other-relative;White;Male;0;0;35;Mexico;<=50K +17;Private;369909;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;176008;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;174426;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +54;Private;292673;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;Mexico;<=50K +51;Local-gov;134808;HS-grad;9;Widowed;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Self-emp-not-inc;95763;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +21;Private;222490;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;29115;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;66638;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +39;Private;53926;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +19;?;43739;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;104359;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;124604;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;32;United-States;<=50K +45;Private;114797;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +60;Federal-gov;67320;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +28;Federal-gov;53147;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Male;0;0;40;United-States;<=50K +23;Private;13769;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Amer-Indian-Eskimo;Male;0;0;30;United-States;<=50K +44;Private;202872;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +19;State-gov;149528;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;12;United-States;<=50K +37;Private;132879;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;112362;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;38;United-States;<=50K +44;Private;131650;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;54;United-States;>50K +30;Private;154568;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;36;Vietnam;>50K +23;Private;132300;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;135134;Masters;14;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;20;United-States;<=50K +32;Local-gov;113838;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;99;United-States;<=50K +76;Federal-gov;25319;Masters;14;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;15;United-States;<=50K +57;Local-gov;190561;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;Black;Female;0;0;30;United-States;<=50K +58;?;150031;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;211116;10th;6;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +38;Private;226311;HS-grad;9;Married-AF-spouse;Other-service;Wife;White;Female;0;0;25;United-States;<=50K +59;Self-emp-not-inc;64102;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +23;Private;234663;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;615367;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;163090;Assoc-acdm;12;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +44;Private;192225;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;370183;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;242482;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;169953;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Local-gov;144182;Preschool;1;Never-married;Adm-clerical;Own-child;Black;Female;0;0;25;United-States;<=50K +26;Private;203777;Some-college;10;Never-married;Sales;Not-in-family;Black;Female;0;0;37;United-States;<=50K +39;Private;210991;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;472580;Some-college;10;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +33;State-gov;200289;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;19;India;<=50K +30;Private;110622;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;China;<=50K +59;State-gov;139616;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +26;Private;39212;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +28;Private;51961;Some-college;10;Never-married;Tech-support;Own-child;Black;Male;0;0;24;United-States;<=50K +48;Self-emp-not-inc;117849;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;151790;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;30;United-States;<=50K +49;Private;168211;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +37;State-gov;117651;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Male;0;0;40;United-States;<=50K +18;Private;157131;12th;8;Never-married;Sales;Own-child;White;Female;0;0;8;United-States;<=50K +61;Private;225970;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +26;Private;177951;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;<=50K +66;Private;134130;Bachelors;13;Widowed;Other-service;Not-in-family;White;Male;0;0;12;United-States;<=50K +27;Local-gov;199172;HS-grad;9;Married-civ-spouse;Protective-serv;Wife;White;Female;0;0;40;United-States;<=50K +66;Self-emp-not-inc;262552;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;7;United-States;<=50K +28;Private;66434;10th;6;Never-married;Other-service;Unmarried;White;Female;0;0;15;United-States;<=50K +26;Private;77661;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;?;230856;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;192835;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +62;?;181014;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +26;Self-emp-not-inc;37918;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;60;United-States;<=50K +40;Private;111020;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;244665;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;Honduras;<=50K +52;Private;312477;HS-grad;9;Widowed;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;243493;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;12;United-States;<=50K +39;State-gov;152023;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;170850;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;48;United-States;<=50K +33;Private;137088;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;Ecuador;<=50K +17;Private;340557;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +26;Private;298225;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;114150;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;194668;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;16;United-States;<=50K +46;Federal-gov;330901;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;80165;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +29;Self-emp-not-inc;85572;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;5;United-States;<=50K +40;Private;116632;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;139989;Bachelors;13;Never-married;Sales;Own-child;Black;Male;0;0;40;United-States;<=50K +56;Private;75785;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;248612;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +36;Private;28572;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +26;Self-emp-not-inc;31143;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +37;Private;216924;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;44;United-States;>50K +36;Private;549174;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Self-emp-not-inc;111296;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;50;Mexico;<=50K +25;Private;208881;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +36;State-gov;243666;HS-grad;9;Divorced;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;327164;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;?;<=50K +35;Private;257416;Assoc-voc;11;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +33;Private;215288;11th;7;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +31;Private;58582;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;46;United-States;<=50K +49;Private;199378;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;22;United-States;<=50K +34;Self-emp-not-inc;114185;Bachelors;13;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;?;<=50K +40;Private;137421;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Asian-Pac-Islander;Male;0;0;60;Trinadad&Tobago;<=50K +27;Private;216481;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Self-emp-not-inc;196504;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;23;United-States;<=50K +38;Private;357870;12th;8;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;50;United-States;<=50K +55;State-gov;256335;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;168191;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;70;Italy;<=50K +40;Private;215596;Bachelors;13;Married-spouse-absent;Other-service;Not-in-family;Other;Male;0;0;40;Mexico;<=50K +42;Private;184682;Assoc-voc;11;Divorced;Tech-support;Not-in-family;White;Female;0;0;30;United-States;<=50K +51;Private;171914;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;288229;Bachelors;13;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;50;Laos;<=50K +30;State-gov;144064;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +70;?;54849;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;>50K +40;Private;141583;10th;6;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;180985;Bachelors;13;Separated;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +24;Private;148709;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;?;174626;7th-8th;4;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;184801;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +52;Private;89054;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;147284;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +33;Private;169973;Assoc-voc;11;Separated;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;222993;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;41099;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +31;Private;33117;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;162551;Masters;14;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;40;Hong;>50K +61;?;42938;Bachelors;13;Never-married;?;Not-in-family;White;Male;0;0;7;United-States;>50K +46;Private;389843;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Germany;>50K +37;Private;138940;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +56;Federal-gov;141877;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +37;Private;172722;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +26;Self-emp-not-inc;118523;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;227886;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +36;Private;80743;HS-grad;9;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;40;South;<=50K +52;Private;199688;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +40;Private;225823;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +21;Private;176486;HS-grad;9;Married-spouse-absent;Exec-managerial;Other-relative;White;Female;0;0;60;United-States;<=50K +63;Private;175777;10th;6;Separated;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;295010;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;437825;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;Peru;<=50K +50;Private;270194;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +41;Private;242089;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +39;Self-emp-inc;117555;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +23;Private;146499;HS-grad;9;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;48;United-States;<=50K +17;?;216595;11th;7;Never-married;?;Own-child;Black;Female;0;0;20;United-States;<=50K +26;Private;373553;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;42;United-States;<=50K +23;Private;60331;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;State-gov;96483;Some-college;10;Never-married;Adm-clerical;Own-child;Asian-Pac-Islander;Female;0;0;12;United-States;<=50K +39;Private;211154;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +37;Local-gov;247750;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +38;Private;197113;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;20;United-States;<=50K +20;Private;293297;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +35;Private;35330;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;61898;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;15;United-States;<=50K +42;Self-emp-inc;1097453;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +32;Private;176992;10th;6;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +27;Private;295289;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;30;United-States;<=50K +53;Self-emp-inc;298215;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +28;Self-emp-not-inc;209934;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;25;Mexico;<=50K +26;Private;164938;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;423222;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +23;Private;124259;Some-college;10;Never-married;Protective-serv;Own-child;Black;Female;0;0;40;United-States;<=50K +70;Self-emp-inc;232871;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;<=50K +41;State-gov;73199;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +43;State-gov;27661;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +65;Private;461715;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;25;?;<=50K +64;Self-emp-not-inc;31826;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +40;Private;279679;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +43;Private;221172;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +50;Federal-gov;222020;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;48;United-States;<=50K +19;?;181265;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +32;Private;204792;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;288568;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +30;Private;182714;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;England;<=50K +20;Private;471452;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +45;State-gov;264052;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;203027;Assoc-acdm;12;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;218309;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;<=50K +28;Private;133625;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +35;Private;45937;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;?;389850;HS-grad;9;Married-spouse-absent;?;Unmarried;Black;Male;0;0;50;United-States;<=50K +38;Federal-gov;201617;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Local-gov;114733;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;35;United-States;<=50K +50;State-gov;97778;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;149507;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +35;Private;82622;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;48014;Masters;14;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;France;<=50K +61;State-gov;162678;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;213842;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;38;United-States;<=50K +61;Private;221447;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;426836;5th-6th;3;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +31;Local-gov;206609;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +31;Private;50276;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +20;Private;180497;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +35;Private;220585;12th;8;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;202752;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +18;Private;170544;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +59;Private;24384;HS-grad;9;Widowed;Priv-house-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;209067;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;65225;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +60;Federal-gov;27466;Some-college;10;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;England;<=50K +49;Federal-gov;179869;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +21;Private;442131;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +61;Private;243283;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;316627;5th-6th;3;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;Private;208862;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Federal-gov;38645;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;141272;Bachelors;13;Never-married;Other-service;Own-child;Black;Female;0;0;30;United-States;<=50K +41;State-gov;29324;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +18;?;348588;12th;8;Never-married;?;Own-child;Black;Male;0;0;25;United-States;<=50K +55;Self-emp-not-inc;477867;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;267945;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +30;Private;35724;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +29;Private;187188;Masters;14;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Male;0;0;60;United-States;<=50K +52;Private;155983;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +57;Federal-gov;414994;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;103474;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;45;United-States;<=50K +43;Private;211128;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +61;Private;203445;Some-college;10;Widowed;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +51;Private;178241;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;>50K +40;Private;260761;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Mexico;<=50K +41;Local-gov;36924;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +19;Private;292590;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +28;Private;461929;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +59;Private;189664;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +32;State-gov;190577;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;344200;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +30;Private;337494;Assoc-acdm;12;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;48;United-States;<=50K +54;Self-emp-not-inc;52634;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;170091;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +27;?;189399;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;205072;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +35;Private;310290;HS-grad;9;Married-civ-spouse;Transport-moving;Wife;Black;Female;0;0;40;United-States;<=50K +27;Private;134048;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +40;Private;91959;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;46;United-States;>50K +34;Private;153942;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +34;Local-gov;234096;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Private;185330;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;25;United-States;<=50K +28;Private;163772;HS-grad;9;Married-civ-spouse;Other-service;Husband;Other;Male;0;0;40;United-States;<=50K +65;Private;83800;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;27;United-States;<=50K +61;Private;139391;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;16;United-States;<=50K +18;Private;478380;11th;7;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +45;Private;262802;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +68;?;152157;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +25;Private;114483;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +48;Private;118023;Prof-school;15;Divorced;Sales;Not-in-family;White;Male;0;0;13;United-States;<=50K +19;Private;220101;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;219424;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;50;United-States;>50K +54;Private;186117;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +47;Self-emp-not-inc;479611;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +30;Private;108386;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +67;?;125926;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +35;Private;177102;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;190762;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;18;United-States;<=50K +61;Private;180632;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;88019;HS-grad;9;Divorced;Other-service;Unmarried;White;Male;0;0;32;United-States;<=50K +50;Private;135339;12th;8;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;>50K +32;Private;100662;9th;5;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;Columbia;<=50K +34;Private;183557;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;25;United-States;<=50K +36;Private;160035;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;306790;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;Private;269246;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;308334;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;19;United-States;<=50K +58;Private;215190;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +27;Private;419146;5th-6th;3;Never-married;Other-service;Not-in-family;White;Male;0;0;75;Mexico;<=50K +62;Private;176839;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;38;United-States;<=50K +41;Private;56795;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;England;<=50K +28;Private;201861;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;179509;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;291755;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +76;Self-emp-not-inc;117169;7th-8th;4;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;30;United-States;<=50K +25;?;100903;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;25;United-States;<=50K +34;Private;159322;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Private;262872;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;187052;11th;7;Never-married;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +17;Private;277583;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +55;Private;169071;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +51;Local-gov;96190;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +26;Private;61603;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;Other;Male;0;0;40;Mexico;<=50K +44;Private;43711;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;48;United-States;<=50K +65;?;197883;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;70;United-States;<=50K +54;Private;99434;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-not-inc;177639;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;201723;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +26;Private;222248;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;70;United-States;<=50K +39;Private;86143;5th-6th;3;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +46;?;228620;11th;7;Widowed;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;Private;346034;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;El-Salvador;<=50K +59;Private;87510;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;37932;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +34;Private;185063;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +51;Private;159755;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +34;Private;108837;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +47;Private;110669;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +21;?;220115;Some-college;10;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +30;Self-emp-not-inc;45427;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;White;Male;0;0;49;United-States;<=50K +38;Private;154669;HS-grad;9;Separated;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +23;Private;71864;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +34;Private;173495;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +22;Private;254293;12th;8;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;111883;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +50;Private;146429;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;472807;1st-4th;2;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;52;Mexico;<=50K +23;Private;184665;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +35;Private;205852;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;83879;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +27;Private;178564;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +46;Self-emp-inc;168796;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +27;Private;269444;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;47353;10th;6;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +34;Self-emp-inc;29254;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +33;Private;155343;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Private;234271;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +30;Private;257849;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +23;Private;228230;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;47;United-States;<=50K +36;Private;227615;5th-6th;3;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;32;Mexico;<=50K +29;Private;406826;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +19;Private;97261;12th;8;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;?;232022;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +52;Federal-gov;168539;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +20;Private;515797;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;351381;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;161018;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +60;Private;26721;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;164123;11th;7;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +59;Self-emp-not-inc;98418;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +36;Private;29814;HS-grad;9;Never-married;Transport-moving;Other-relative;White;Male;0;0;50;United-States;<=50K +25;Private;254613;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;Cuba;<=50K +49;Private;207677;7th-8th;4;Divorced;Craft-repair;Not-in-family;White;Male;0;0;70;United-States;<=50K +25;Self-emp-not-inc;217030;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +50;Private;171199;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;198270;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;43;United-States;<=50K +28;?;131310;HS-grad;9;Separated;?;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;79923;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +40;Self-emp-inc;475322;Bachelors;13;Separated;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +56;Private;134286;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +56;Self-emp-not-inc;73746;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;125525;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;42;United-States;<=50K +38;?;155676;HS-grad;9;Divorced;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;304949;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;10;United-States;<=50K +67;Private;150516;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;24;United-States;<=50K +54;State-gov;249096;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +50;Local-gov;164127;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +59;Private;304779;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;157043;11th;7;Widowed;Handlers-cleaners;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Private;396538;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;29;United-States;<=50K +42;Private;510072;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +64;?;200017;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +61;?;60641;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;45;United-States;<=50K +26;Private;89326;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +78;Self-emp-not-inc;82815;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;3;United-States;>50K +24;Self-emp-not-inc;117210;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +27;Private;202206;11th;7;Separated;Farming-fishing;Other-relative;White;Male;0;0;40;Puerto-Rico;<=50K +51;Private;123429;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +46;Private;353512;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +55;Self-emp-not-inc;26683;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +20;Private;204641;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;225053;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +36;?;98776;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +19;Private;263932;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +30;Private;108247;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Self-emp-not-inc;369648;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +26;Private;339324;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;96;United-States;<=50K +59;?;145574;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;>50K +53;Private;317313;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +24;Local-gov;162919;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;186314;Some-college;10;Separated;Prof-specialty;Own-child;White;Male;0;0;54;United-States;<=50K +36;Private;254202;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +39;Private;108140;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +53;Private;287317;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;Black;Male;0;0;32;United-States;<=50K +75;Self-emp-inc;81534;HS-grad;9;Widowed;Sales;Other-relative;Asian-Pac-Islander;Male;0;0;35;United-States;>50K +36;Private;35945;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +46;Self-emp-inc;204928;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;133625;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +60;Private;71683;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;49;United-States;<=50K +58;Private;570562;HS-grad;9;Widowed;Sales;Not-in-family;White;Male;0;0;38;United-States;<=50K +67;Self-emp-not-inc;36876;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +39;Self-emp-not-inc;50096;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +37;Private;336880;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +54;?;135840;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +63;Self-emp-not-inc;168048;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +47;Private;187969;11th;7;Divorced;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +23;Private;117363;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;304416;11th;7;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +23;Private;229826;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;159796;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +44;Private;165346;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +25;Private;25386;Assoc-voc;11;Never-married;Other-service;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +35;Private;491000;Assoc-voc;11;Divorced;Prof-specialty;Own-child;Black;Male;0;0;40;United-States;<=50K +23;Local-gov;247731;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;Cuba;<=50K +48;Private;180532;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;419134;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;170166;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;25;United-States;<=50K +33;Self-emp-not-inc;173495;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;423024;12th;8;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +32;Local-gov;19302;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;England;>50K +24;State-gov;257621;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +27;Private;259840;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +39;Private;115289;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;France;>50K +26;Local-gov;159662;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;379798;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;State-gov;36999;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;75;United-States;>50K +73;?;131982;Bachelors;13;Married-civ-spouse;?;Husband;Asian-Pac-Islander;Male;0;0;5;Vietnam;<=50K +32;Self-emp-inc;124052;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +56;Local-gov;273084;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +44;Private;96249;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +23;Private;117767;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;79827;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;103925;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +68;Private;161744;10th;6;Married-civ-spouse;Sales;Husband;White;Male;0;0;16;United-States;<=50K +42;Self-emp-not-inc;196514;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;?;61985;9th;5;Separated;?;Not-in-family;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +19;Private;157605;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;137367;11th;7;Married-spouse-absent;Handlers-cleaners;Not-in-family;Asian-Pac-Islander;Male;0;0;40;India;<=50K +32;Private;74883;Bachelors;13;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +44;Local-gov;144778;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;Private;177787;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;30;England;<=50K +30;?;103651;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +44;Private;162108;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +24;Private;217602;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;473133;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +17;Private;113301;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;?;<=50K +61;Private;80896;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;45;India;>50K +30;Local-gov;168387;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;38950;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;107801;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +49;Private;191277;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;205359;Assoc-acdm;12;Widowed;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +39;?;240226;HS-grad;9;Married-civ-spouse;?;Husband;Black;Male;0;0;40;United-States;<=50K +34;Private;203357;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +52;Local-gov;153064;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;202959;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;105150;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +19;Private;238474;11th;7;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;1085515;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +25;Private;82560;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;43;United-States;<=50K +71;Private;55965;7th-8th;4;Widowed;Transport-moving;Not-in-family;White;Male;0;0;10;United-States;<=50K +27;Private;161087;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;<=50K +28;Private;261278;Assoc-voc;11;Never-married;Tech-support;Not-in-family;Black;Female;0;0;40;United-States;<=50K +18;Private;138917;11th;7;Never-married;Sales;Own-child;Black;Female;0;0;10;United-States;<=50K +49;Private;200198;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +36;Private;205359;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +57;Private;250201;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Male;0;0;50;United-States;<=50K +56;Federal-gov;67153;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Portugal;>50K +17;Private;244523;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +30;Private;236599;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;108713;10th;6;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;177147;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +61;Private;129246;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +50;?;222381;Some-college;10;Divorced;?;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;145111;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;Private;62258;11th;7;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;State-gov;108293;Masters;14;Never-married;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +61;?;167284;7th-8th;4;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +25;Private;97789;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +34;Private;111415;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +38;Private;374524;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;287244;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +17;?;341395;10th;6;Never-married;?;Own-child;Black;Male;0;0;20;United-States;<=50K +48;Private;278039;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;98360;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +52;Private;317032;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +41;Self-emp-not-inc;240900;HS-grad;9;Divorced;Farming-fishing;Other-relative;White;Male;0;0;20;United-States;<=50K +45;Private;32896;5th-6th;3;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;35;United-States;<=50K +49;Private;97411;7th-8th;4;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;45;Laos;<=50K +19;Private;72355;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +39;Private;342448;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +42;Private;303388;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;<=50K +17;Private;112291;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;12;United-States;<=50K +30;Private;208668;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;25;United-States;<=50K +61;Local-gov;28375;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;70;United-States;<=50K +60;?;88675;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;47857;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +27;Private;372500;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;Mexico;<=50K +24;Private;190968;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +41;Private;37997;12th;8;Divorced;Transport-moving;Not-in-family;White;Male;0;0;84;United-States;>50K +42;Private;257328;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Private;127610;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +22;?;139324;9th;5;Never-married;?;Unmarried;Black;Female;0;0;36;United-States;<=50K +47;Private;164423;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;43;United-States;<=50K +30;Private;56121;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;296212;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;157640;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +44;Private;222504;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;45;United-States;>50K +34;Private;116910;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +31;Private;132601;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +68;Private;185537;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +22;Private;500720;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;Mexico;<=50K +42;Private;182108;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +37;Private;231491;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +36;Self-emp-not-inc;239415;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +38;Private;179262;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +72;Without-pay;121004;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;55;United-States;<=50K +40;Private;252392;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +19;Private;163578;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +55;Private;143266;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;Hungary;>50K +30;Private;285902;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;174540;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;4;United-States;<=50K +29;Private;188729;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +24;Private;72143;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +46;Self-emp-not-inc;328216;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +44;Private;165815;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +17;Private;317702;10th;6;Never-married;Sales;Own-child;Black;Female;0;0;15;United-States;<=50K +35;Private;215323;Assoc-voc;11;Divorced;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +38;Private;192939;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +36;Private;156352;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;155066;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +38;Self-emp-not-inc;152621;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;<=50K +19;Private;298891;11th;7;Never-married;Sales;Not-in-family;White;Female;0;0;40;Honduras;<=50K +30;Private;193298;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +36;Local-gov;150309;Assoc-voc;11;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +27;Private;384308;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +27;Private;305647;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +66;?;182378;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;30;United-States;<=50K +37;Private;421633;Masters;14;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;>50K +17;Private;57723;11th;7;Never-married;Sales;Own-child;White;Male;0;0;30;United-States;<=50K +19;?;307837;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +57;Private;103540;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;50;United-States;<=50K +54;Self-emp-not-inc;136224;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +21;Private;231573;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;242804;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;163671;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;287701;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;48;United-States;>50K +41;Private;222504;Prof-school;15;Divorced;Prof-specialty;Unmarried;White;Female;0;0;38;United-States;<=50K +20;Private;41356;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;59335;Bachelors;13;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;15;United-States;<=50K +62;Private;84756;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +41;Private;407425;12th;8;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;40;United-States;<=50K +37;Private;162424;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +53;Self-emp-not-inc;175456;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +28;Private;52603;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +23;Private;250630;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +46;Self-emp-not-inc;233974;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +28;Private;376302;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +50;Private;195638;10th;6;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;225775;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;Mexico;<=50K +84;Private;388384;7th-8th;4;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;10;United-States;<=50K +48;Self-emp-not-inc;219021;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +61;Self-emp-not-inc;168654;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;20;United-States;<=50K +44;Private;180609;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;42;United-States;<=50K +32;Private;114746;HS-grad;9;Separated;Handlers-cleaners;Unmarried;Asian-Pac-Islander;Female;0;0;60;South;<=50K +25;Private;178037;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +47;State-gov;160045;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;268524;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +37;Private;174844;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;17;United-States;<=50K +28;Private;82488;HS-grad;9;Divorced;Tech-support;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +34;Private;221167;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +32;Self-emp-not-inc;48014;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +24;Private;217226;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +22;?;177902;Some-college;10;Never-married;?;Not-in-family;Asian-Pac-Islander;Female;0;0;25;United-States;<=50K +30;Private;39386;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;99;United-States;<=50K +56;Private;37394;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;115426;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +28;Private;114158;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;26;United-States;<=50K +28;Private;360527;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +39;Private;225544;12th;8;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;108438;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Private;230315;Some-college;10;Never-married;Other-service;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Dominican-Republic;<=50K +32;Private;158002;Some-college;10;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;55;Ecuador;<=50K +37;Private;179468;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +71;Private;99894;5th-6th;3;Widowed;Priv-house-serv;Not-in-family;Asian-Pac-Islander;Female;0;0;75;United-States;<=50K +30;Private;270889;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +20;Private;42279;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;274913;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;45;United-States;<=50K +26;Private;68001;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;27162;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;16;United-States;<=50K +37;Self-emp-not-inc;286146;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Local-gov;95462;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;50103;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Self-emp-inc;189679;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +29;Private;115064;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;State-gov;215443;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;38;United-States;<=50K +32;Private;174789;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;50;United-States;<=50K +24;Private;91999;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;20;United-States;<=50K +59;Federal-gov;100931;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +56;Self-emp-not-inc;119069;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;277488;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;84;United-States;<=50K +35;Private;265662;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +24;Private;227594;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +61;?;175032;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;133569;1st-4th;2;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;Mexico;<=50K +20;Local-gov;308654;Some-college;10;Never-married;Protective-serv;Own-child;Asian-Pac-Islander;Female;0;0;20;United-States;<=50K +36;Private;156084;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +45;Federal-gov;380127;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;210781;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;258675;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;223367;11th;7;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +42;?;204817;9th;5;Never-married;?;Own-child;Black;Male;0;0;35;United-States;<=50K +23;Private;409230;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +46;Federal-gov;308077;Prof-school;15;Separated;Prof-specialty;Unmarried;White;Female;0;0;40;Germany;>50K +60;Private;159049;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;Germany;>50K +40;Private;353142;Some-college;10;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +55;Private;143030;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;30912;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;43;United-States;<=50K +55;Private;125000;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +47;Private;181363;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +54;Private;338620;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;>50K +32;Private;115989;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;60;United-States;<=50K +38;Private;111128;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +61;Self-emp-not-inc;201273;Some-college;10;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;Self-emp-inc;137354;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;South;<=50K +26;Private;192208;HS-grad;9;Never-married;Protective-serv;Not-in-family;Black;Female;0;0;32;United-States;<=50K +19;Private;220001;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;50;United-States;<=50K +40;Private;352612;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;119751;Masters;14;Never-married;Prof-specialty;Other-relative;Asian-Pac-Islander;Female;0;0;40;Thailand;<=50K +43;Self-emp-not-inc;99220;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +39;Private;111275;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Federal-gov;261241;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +28;Private;261725;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +36;Private;182013;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;40666;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;216461;Some-college;10;Divorced;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +60;Private;320376;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +35;Private;282951;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +36;State-gov;166697;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Private;290856;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +23;Private;455361;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;Guatemala;<=50K +51;Private;82783;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;109959;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +50;Private;177927;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;192337;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +18;Private;236272;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +26;Private;33610;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;209483;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;47;United-States;<=50K +26;Private;247006;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;United-States;<=50K +30;Local-gov;311913;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +39;?;204756;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +33;Local-gov;300681;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +42;State-gov;24264;Some-college;10;Divorced;Transport-moving;Unmarried;White;Male;0;0;38;United-States;<=50K +28;Private;266070;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +20;Private;226978;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +31;Private;341672;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;50;India;<=50K +36;Private;179488;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;Canada;<=50K +39;Federal-gov;243872;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +52;Private;259583;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;219863;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;206947;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +21;Private;245572;9th;5;Never-married;Other-service;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +25;Private;38488;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;182504;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +38;Private;193815;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;Italy;<=50K +51;?;521665;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +45;Private;60267;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +59;Private;264357;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +41;Private;191814;HS-grad;9;Married-civ-spouse;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;107882;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +43;Private;174575;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +17;Private;143331;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +42;Private;198619;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;257780;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;183355;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +28;Private;148429;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;71221;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;60;United-States;<=50K +21;Self-emp-not-inc;236769;7th-8th;4;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;32146;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;?;188877;9th;5;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;306747;Bachelors;13;Divorced;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +21;State-gov;478457;Some-college;10;Never-married;Other-service;Own-child;Black;Female;0;0;12;United-States;<=50K +25;Private;248990;5th-6th;3;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;Mexico;<=50K +51;Self-emp-inc;46281;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +35;Private;148015;Bachelors;13;Never-married;Sales;Own-child;Black;Female;0;0;40;United-States;<=50K +19;Private;278115;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +34;Private;176673;Some-college;10;Never-married;Sales;Other-relative;Black;Female;0;0;35;United-States;<=50K +33;?;202366;HS-grad;9;Divorced;?;Unmarried;White;Female;0;0;32;United-States;<=50K +36;Private;238415;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;37939;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +60;Self-emp-not-inc;35649;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Federal-gov;204900;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;40;United-States;<=50K +42;Private;20809;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;75;United-States;>50K +34;Private;148207;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +21;Private;200153;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +30;Private;169496;Masters;14;Married-civ-spouse;Other-service;Husband;White;Male;0;0;15;United-States;>50K +53;Private;22978;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +34;Private;366898;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Germany;<=50K +37;Private;324947;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;321577;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +31;Private;241360;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;207564;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +33;Private;220860;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +41;Local-gov;336571;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;State-gov;56402;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +65;Private;180280;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +30;Private;81282;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Local-gov;27051;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;100800;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;Private;155094;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;45;United-States;>50K +50;Private;548361;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;20;United-States;>50K +33;Private;173858;Bachelors;13;Married-civ-spouse;Adm-clerical;Other-relative;Asian-Pac-Islander;Male;0;0;40;India;<=50K +27;Private;347153;Some-college;10;Never-married;Transport-moving;Other-relative;White;Male;0;0;40;United-States;<=50K +35;Private;197719;Some-college;10;Never-married;Machine-op-inspct;Other-relative;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +55;Private;197114;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;6;United-States;>50K +56;Private;182062;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;48;United-States;>50K +21;Private;184543;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;Private;175558;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;20;Germany;<=50K +46;Private;122026;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;340543;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +43;Private;101950;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +40;Private;179508;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;55;United-States;<=50K +52;Private;225317;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +59;Local-gov;53304;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +36;Local-gov;282602;Assoc-voc;11;Separated;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +33;Private;184016;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;250165;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;196467;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;35;United-States;<=50K +59;?;220783;10th;6;Widowed;?;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;178780;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +62;Private;65868;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;43;United-States;<=50K +54;Private;35459;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;98986;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +36;Private;282092;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;140764;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;45;United-States;<=50K +30;Private;33124;HS-grad;9;Separated;Farming-fishing;Unmarried;White;Female;0;0;14;United-States;<=50K +46;Private;90042;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +32;Private;102986;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;40;Laos;>50K +21;Private;214387;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;64;United-States;<=50K +39;Private;180667;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;278329;HS-grad;9;Married-spouse-absent;Exec-managerial;Not-in-family;White;Female;0;0;43;United-States;<=50K +23;Private;140462;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;202565;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Italy;<=50K +62;?;181063;10th;6;Widowed;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +28;Private;287268;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +28;Private;215955;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;82552;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;41745;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;73587;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;35;United-States;<=50K +54;Private;263925;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;196119;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +27;Private;284741;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +30;Private;293936;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;50;?;<=50K +35;Private;340428;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +66;?;175891;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +19;Local-gov;276973;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;20;United-States;<=50K +30;Private;161599;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +32;Private;144064;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;236391;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;224943;Assoc-voc;11;Never-married;Sales;Other-relative;Black;Male;0;0;65;United-States;<=50K +44;Private;151294;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +52;Private;68982;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +30;Private;241885;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;189461;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;60;United-States;<=50K +19;Self-emp-not-inc;36012;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +33;Private;85355;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;157595;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;197286;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;362747;Some-college;10;Never-married;Other-service;Not-in-family;Black;Female;0;0;35;United-States;<=50K +24;Private;395297;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +31;Self-emp-not-inc;144949;Bachelors;13;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +20;?;163665;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +32;Private;141490;Assoc-voc;11;Divorced;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +29;Private;147889;Assoc-acdm;12;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +61;Private;232808;10th;6;Divorced;Other-service;Not-in-family;White;Male;0;0;24;United-States;<=50K +48;Private;70668;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;50;United-States;<=50K +29;Federal-gov;33315;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;?;63526;12th;8;Never-married;?;Not-in-family;Black;Male;0;0;52;United-States;<=50K +34;Private;591711;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;48;?;<=50K +22;Private;200318;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;15;United-States;<=50K +38;Private;109231;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;102889;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +26;Private;167106;HS-grad;9;Never-married;Craft-repair;Other-relative;Asian-Pac-Islander;Male;0;0;40;Hong;<=50K +62;Private;197918;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;67386;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Private;126592;HS-grad;9;Separated;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;119929;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;158199;1st-4th;2;Widowed;Machine-op-inspct;Unmarried;White;Female;0;0;44;Portugal;<=50K +35;Private;341102;9th;5;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +55;Private;101524;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +40;Private;202872;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +25;Private;195201;HS-grad;9;Married-civ-spouse;Sales;Husband;Other;Male;0;0;50;United-States;<=50K +51;Private;128272;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +47;Local-gov;102628;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +26;Private;171114;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +46;Private;216414;Assoc-voc;11;Married-spouse-absent;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;127753;12th;8;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +19;Private;282698;7th-8th;4;Never-married;Adm-clerical;Own-child;White;Male;0;0;80;United-States;<=50K +36;Local-gov;312785;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Male;0;0;35;United-States;<=50K +18;Private;92864;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +46;Local-gov;175428;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;104223;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +29;Private;144784;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +65;Private;178934;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;20;Jamaica;<=50K +41;Private;211253;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +34;Private;133122;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;103540;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +39;State-gov;172700;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +21;Private;282484;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;323055;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +33;State-gov;291494;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +28;Private;214702;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;226696;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;>50K +31;Private;216827;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;307440;Bachelors;13;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;45;Philippines;>50K +27;Private;278122;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;122195;HS-grad;9;Widowed;Craft-repair;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;Self-emp-not-inc;156890;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;36877;10th;6;Never-married;Sales;Own-child;White;Female;0;0;10;United-States;<=50K +25;Private;131178;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;23;United-States;<=50K +34;Self-emp-inc;62396;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;62;United-States;>50K +33;Private;73054;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;96844;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;20;United-States;<=50K +22;Private;324922;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +61;Private;130684;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;<=50K +40;Private;178983;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;>50K +58;Private;81038;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;12;United-States;<=50K +30;Private;151967;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;58;United-States;<=50K +24;Private;278107;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;60;United-States;<=50K +52;Self-emp-not-inc;183146;12th;8;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +50;Private;183638;HS-grad;9;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;247892;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;30;United-States;<=50K +22;Private;221480;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +32;Private;118551;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;?;>50K +21;Private;518530;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;193787;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;50;United-States;<=50K +34;Self-emp-inc;157466;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +48;Private;141511;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +61;?;158712;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;99;United-States;<=50K +21;Private;252253;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +20;Private;200450;7th-8th;4;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;52;United-States;<=50K +30;State-gov;343789;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +44;Private;291566;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;60;United-States;<=50K +29;Private;151382;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;221167;Prof-school;15;Divorced;Tech-support;Not-in-family;White;Female;0;0;35;United-States;<=50K +35;Private;196178;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;302422;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;37379;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +37;Self-emp-not-inc;82540;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;>50K +33;Self-emp-not-inc;182926;Bachelors;13;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;?;<=50K +44;Private;159911;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;55;United-States;<=50K +34;Private;212781;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +28;Local-gov;207213;Assoc-acdm;12;Never-married;Craft-repair;Own-child;White;Male;0;0;5;United-States;<=50K +30;Private;200192;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;45;United-States;<=50K +41;Local-gov;180096;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +23;Private;192812;Bachelors;13;Never-married;Tech-support;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;105908;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;70;United-States;<=50K +26;State-gov;234190;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;20;United-States;<=50K +32;Private;260868;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +26;Private;109097;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +49;Private;209146;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;172281;Masters;14;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;>50K +36;Private;73023;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;55;United-States;<=50K +41;Private;122626;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;48;United-States;<=50K +27;Private;113635;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +21;?;191806;Some-college;10;Never-married;?;Own-child;White;Male;0;0;75;United-States;<=50K +56;?;35723;HS-grad;9;Divorced;?;Own-child;White;Male;0;0;40;United-States;<=50K +40;Self-emp-not-inc;30759;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +46;Private;105327;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;?;376058;9th;5;Never-married;?;Own-child;White;Female;0;0;45;United-States;<=50K +43;Private;219307;9th;5;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +46;Private;208067;HS-grad;9;Divorced;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;78631;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +19;Private;210308;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +31;Private;594187;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;228476;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +21;Private;126613;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;30267;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;216811;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;16;United-States;<=50K +62;Local-gov;115763;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +31;Local-gov;199368;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;50;United-States;>50K +39;Self-emp-not-inc;188335;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;417668;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;30;United-States;<=50K +38;Private;296317;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +36;Private;164898;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;452406;11th;7;Never-married;Sales;Own-child;Black;Female;0;0;15;United-States;<=50K +27;Private;42696;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;262994;Some-college;10;Divorced;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +43;State-gov;167298;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +51;Private;103529;11th;7;Divorced;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +34;Private;199539;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +19;?;39460;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;60;United-States;<=50K +79;Federal-gov;62176;Doctorate;16;Widowed;Exec-managerial;Not-in-family;White;Male;0;0;6;United-States;>50K +28;State-gov;239130;Some-college;10;Divorced;Other-service;Unmarried;White;Male;0;0;40;United-States;<=50K +41;Self-emp-inc;151089;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;331611;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +31;Self-emp-not-inc;203463;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;151518;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +23;Self-emp-inc;39844;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;299635;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;Germany;<=50K +67;Private;123393;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;209538;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +35;Self-emp-not-inc;238802;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;499197;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;200220;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;114059;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +18;Private;434430;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +22;Private;225156;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;?;133359;Bachelors;13;Married-spouse-absent;?;Not-in-family;White;Male;0;0;50;?;<=50K +28;Private;226891;Some-college;10;Never-married;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;30;?;<=50K +25;Private;231714;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;178866;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;25;United-States;>50K +33;Private;148261;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;217902;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Self-emp-not-inc;77207;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +32;?;377017;Assoc-acdm;12;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +64;Self-emp-inc;80333;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +58;Private;265086;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +55;?;102058;12th;8;Widowed;?;Not-in-family;White;Male;0;0;30;United-States;<=50K +20;Private;333843;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +35;Private;296478;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +27;Local-gov;116662;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;142424;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Local-gov;200808;12th;8;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;Puerto-Rico;<=50K +29;Private;119052;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;168981;1st-4th;2;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +44;Private;151780;Some-college;10;Widowed;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +25;Private;509866;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;78;United-States;<=50K +24;State-gov;249385;Bachelors;13;Never-married;Adm-clerical;Other-relative;White;Female;0;0;10;United-States;<=50K +53;Private;250034;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;50;United-States;>50K +39;Private;249720;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;60;United-States;<=50K +72;Self-emp-not-inc;258761;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-inc;64048;9th;5;Never-married;Sales;Own-child;White;Female;0;0;44;Portugal;<=50K +25;State-gov;153534;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;193815;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +27;Private;255582;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;204527;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +29;Self-emp-not-inc;229341;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +50;Private;128143;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Private;175479;5th-6th;3;Never-married;Other-service;Unmarried;White;Female;0;0;40;Mexico;<=50K +18;Private;301814;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +20;Private;238917;11th;7;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;32;Mexico;<=50K +32;Private;205581;Some-college;10;Separated;Tech-support;Unmarried;White;Female;0;0;50;United-States;<=50K +45;Private;340341;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +48;Private;147860;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;Black;Female;0;0;40;United-States;<=50K +20;?;121023;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +23;Private;259496;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +44;Private;116358;Bachelors;13;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +47;Self-emp-not-inc;180446;Some-college;10;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;40;United-States;>50K +47;Private;264244;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;Black;Female;0;0;40;United-States;<=50K +46;Local-gov;197988;1st-4th;2;Never-married;Other-service;Not-in-family;Amer-Indian-Eskimo;Female;0;0;20;United-States;<=50K +19;Private;206599;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;313146;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-inc;99212;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +37;Private;340599;11th;7;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +31;Private;62932;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;44861;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;53893;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +47;Local-gov;128401;Doctorate;16;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;336951;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +43;Private;54611;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;210313;10th;6;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +19;Private;181020;11th;7;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;30;United-States;<=50K +19;Private;256979;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;35;United-States;<=50K +64;Private;47298;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +44;Private;125461;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +21;Private;209955;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;48;United-States;<=50K +33;Private;182246;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +63;Private;76860;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +44;?;91949;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Federal-gov;183445;HS-grad;9;Never-married;Exec-managerial;Unmarried;White;Female;0;0;70;Puerto-Rico;<=50K +24;Private;130741;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +20;Federal-gov;191878;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +21;?;233923;Some-college;10;Never-married;?;Own-child;White;Female;0;0;24;United-States;<=50K +20;Private;48121;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;304302;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +34;Federal-gov;284703;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;52;United-States;<=50K +17;Private;401198;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +35;Private;243357;11th;7;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +26;Private;32276;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;110538;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;70;United-States;<=50K +25;Private;257310;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Self-emp-not-inc;411950;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +52;Local-gov;392668;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +43;Self-emp-not-inc;52498;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;<=50K +37;Private;87076;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +58;Private;224854;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;193379;Assoc-acdm;12;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +54;Private;98436;Masters;14;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +42;?;116632;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;60;United-States;<=50K +44;Private;90688;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Female;0;0;45;Laos;<=50K +61;Private;229744;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;El-Salvador;<=50K +29;Private;59732;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +34;Private;192900;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;State-gov;90046;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;Canada;<=50K +40;Private;272960;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;42;United-States;>50K +42;Self-emp-inc;152071;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;Cuba;>50K +50;Private;301583;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;315984;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;241962;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;131591;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;45;United-States;<=50K +70;Self-emp-inc;207938;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;5;United-States;<=50K +51;Private;53197;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +24;Private;121023;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;287229;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +22;Private;163911;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +31;Private;191834;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;Private;204734;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;220978;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;365739;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;50103;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;283293;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +19;Private;263338;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +36;?;504871;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +30;Private;348592;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;44;United-States;<=50K +28;Private;173944;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;Private;226135;9th;5;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;Jamaica;<=50K +32;Private;172375;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +47;Private;347025;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;191335;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;<=50K +21;Private;247779;11th;7;Never-married;Sales;Own-child;White;Female;0;0;38;United-States;<=50K +25;State-gov;262664;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +37;Private;95855;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;74501;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +43;Private;245317;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +56;Private;200316;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +35;Private;198341;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;?;<=50K +59;Private;100453;7th-8th;4;Separated;Other-service;Own-child;Black;Female;0;0;38;United-States;<=50K +47;Private;235683;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;83237;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +64;Private;88470;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;198801;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +53;Private;168107;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Private;196193;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +30;?;205418;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +46;Private;695411;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;44;United-States;<=50K +45;Self-emp-inc;139268;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +44;Federal-gov;192771;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;180837;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +33;Private;159548;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;38;United-States;<=50K +34;Private;110554;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +38;Private;103474;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +62;Private;178249;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +21;Private;138768;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +41;Private;321824;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;8;United-States;<=50K +35;Private;244803;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Peru;<=50K +62;Local-gov;206063;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Private;167651;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +69;State-gov;163689;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;16;United-States;<=50K +19;Self-emp-not-inc;45546;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +47;Private;420986;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +52;Self-emp-inc;68015;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;90;United-States;>50K +54;Private;175594;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +58;?;148673;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;<=50K +30;Private;206322;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;73;United-States;>50K +39;Private;272338;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;25;United-States;<=50K +64;Private;312498;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;177675;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;152810;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +57;Private;319122;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;212304;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +39;Private;240841;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +49;Private;208978;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;16;United-States;<=50K +28;Private;198197;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +40;Private;72791;Some-college;10;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +24;Private;275395;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +20;?;195767;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +50;Private;462966;10th;6;Married-civ-spouse;Other-service;Husband;White;Male;0;0;8;El-Salvador;<=50K +24;?;265434;Bachelors;13;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;31269;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;Local-gov;246291;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;46;United-States;<=50K +54;Federal-gov;128378;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Local-gov;231180;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +31;Local-gov;206297;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +47;Self-emp-inc;337050;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;193075;HS-grad;9;Divorced;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +35;Private;35945;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;?;141453;Some-college;10;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +36;Private;252231;Preschool;1;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;Puerto-Rico;<=50K +30;Private;128016;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +39;Private;150057;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +25;Private;258276;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +40;Private;188465;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +25;Self-emp-inc;161007;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;403468;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Mexico;<=50K +53;Federal-gov;181677;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;120243;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +41;Private;157025;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Male;0;0;40;United-States;<=50K +25;Private;306908;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +66;Self-emp-not-inc;28061;7th-8th;4;Widowed;Farming-fishing;Unmarried;White;Male;0;0;50;United-States;<=50K +27;Private;135001;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;293398;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;185106;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;245790;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;80;United-States;<=50K +26;Private;134004;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +26;Private;205036;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;42;United-States;<=50K +26;Private;244495;9th;5;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +38;Private;159179;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;405155;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +32;Federal-gov;402361;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Self-emp-not-inc;184553;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +31;Private;302626;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;99138;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +39;Private;112731;HS-grad;9;Divorced;Other-service;Not-in-family;Other;Female;0;0;40;Dominican-Republic;<=50K +18;Private;761006;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +75;?;125784;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +28;Private;182344;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;117012;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +39;Federal-gov;30673;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +31;Federal-gov;484669;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;State-gov;314052;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +43;State-gov;38537;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;38;?;<=50K +27;Private;165412;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;116635;Bachelors;13;Separated;Prof-specialty;Unmarried;Black;Female;0;0;36;United-States;<=50K +20;Private;185452;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +42;Private;118686;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;20;United-States;<=50K +69;Private;76939;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Federal-gov;160646;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;35;United-States;<=50K +49;State-gov;126754;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;<=50K +20;Private;211049;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;30;United-States;<=50K +52;Private;311931;5th-6th;3;Married-civ-spouse;Sales;Wife;White;Female;0;0;15;El-Salvador;<=50K +33;Private;283602;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;59;Mexico;<=50K +18;Private;155021;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;6;United-States;<=50K +55;Self-emp-not-inc;100569;HS-grad;9;Separated;Farming-fishing;Unmarried;White;Female;0;0;55;United-States;<=50K +61;Private;380462;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +39;Private;114544;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;>50K +30;Private;248584;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;Private;227468;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;66173;Assoc-acdm;12;Married-civ-spouse;Sales;Wife;White;Female;0;0;15;United-States;<=50K +34;Private;107624;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;423616;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;36;United-States;>50K +27;Local-gov;216013;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;210926;11th;7;Separated;Handlers-cleaners;Unmarried;White;Female;0;0;40;Nicaragua;<=50K +60;Local-gov;255711;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;60;United-States;>50K +23;Private;77581;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;203263;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +25;Private;261519;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +29;Private;91189;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +90;Federal-gov;195433;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;United-States;<=50K +37;Local-gov;272471;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;311524;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;38;United-States;<=50K +18;Private;151386;HS-grad;9;Married-spouse-absent;Other-service;Own-child;Black;Male;0;0;40;Jamaica;<=50K +35;Private;187625;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;65;United-States;<=50K +43;Private;169383;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +28;Self-emp-inc;191129;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;65;United-States;>50K +51;Private;467611;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +31;Private;373185;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;42;Mexico;<=50K +57;Private;199934;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +71;?;116165;Some-college;10;Widowed;?;Not-in-family;White;Female;0;0;14;Canada;<=50K +28;Private;42881;10th;6;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +28;?;174666;10th;6;Separated;?;Not-in-family;White;Male;0;0;80;United-States;<=50K +25;Private;169759;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;95;United-States;<=50K +49;Self-emp-not-inc;181547;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;30;Columbia;<=50K +52;Private;95704;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;237432;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;?;<=50K +32;Private;226267;5th-6th;3;Married-spouse-absent;Craft-repair;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +31;Private;159979;Some-college;10;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;50;United-States;<=50K +30;Private;203488;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +24;Private;403671;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +45;Private;192323;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;66;Yugoslavia;<=50K +30;Private;167832;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +42;State-gov;155657;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;25;United-States;<=50K +49;Private;116789;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;39234;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +25;Private;124111;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +41;Private;172828;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;55;Outlying-US(Guam-USVI-etc);<=50K +55;Private;143372;HS-grad;9;Divorced;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +25;State-gov;218184;Bachelors;13;Never-married;Protective-serv;Not-in-family;Black;Female;0;0;40;United-States;<=50K +32;Private;154087;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +29;Federal-gov;440647;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +37;Private;193952;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;?;<=50K +52;Private;125932;7th-8th;4;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;284652;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +21;?;214635;Some-college;10;Never-married;?;Own-child;White;Male;0;0;24;United-States;<=50K +43;Private;173316;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;State-gov;65390;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;?;<=50K +40;Self-emp-inc;45054;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +54;Private;185042;1st-4th;2;Separated;Priv-house-serv;Other-relative;White;Female;0;0;40;Mexico;<=50K +35;Private;117381;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;179668;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +57;Private;127277;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Taiwan;>50K +26;Private;192022;Bachelors;13;Never-married;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;99551;Bachelors;13;Widowed;Sales;Unmarried;White;Female;0;0;15;United-States;<=50K +51;Private;208899;Bachelors;13;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +35;Private;287658;Assoc-acdm;12;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;30;Jamaica;<=50K +31;Private;196125;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;275051;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;8;United-States;<=50K +38;Private;23892;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +29;Private;267989;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +39;Private;30269;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +42;Private;204235;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +46;Local-gov;209057;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +73;Private;349347;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;25;United-States;<=50K +28;Private;124680;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;70;United-States;<=50K +38;Private;99233;Prof-school;15;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +19;Private;224849;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +60;Local-gov;101110;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;>50K +24;Private;184839;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;302847;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;181322;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;<=50K +26;Local-gov;192213;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;Canada;<=50K +28;State-gov;37250;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;16;United-States;<=50K +38;Self-emp-inc;140854;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +47;Private;158286;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +50;Private;269095;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +27;Private;279960;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;176239;Some-college;10;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;337666;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +68;?;255276;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;48;United-States;>50K +63;Private;145212;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;185099;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;>50K +42;Private;142756;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +28;Private;156300;Masters;14;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;45;United-States;<=50K +68;?;186266;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;8;United-States;<=50K +38;Private;219137;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;22;United-States;<=50K +49;Private;203067;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +59;Private;148844;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;154941;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +26;Private;124111;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;36;United-States;<=50K +59;Private;157303;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;48;United-States;<=50K +34;Private;113838;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +34;Private;165737;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;43;India;>50K +67;Private;140849;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;24;United-States;<=50K +45;Private;200363;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;44;United-States;<=50K +64;Private;180247;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +51;Private;82578;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;Canada;>50K +31;Private;227146;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +42;Self-emp-inc;348886;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +65;Private;90907;5th-6th;3;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +23;Private;142766;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;20;United-States;<=50K +31;Private;246439;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +33;Private;184784;10th;6;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Local-gov;195262;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +63;Private;167967;Masters;14;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;46;United-States;<=50K +48;Private;145636;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;>50K +45;Local-gov;170099;Assoc-acdm;12;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +17;Private;228253;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +26;Local-gov;205570;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Federal-gov;506830;Some-college;10;Divorced;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;412435;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;Outlying-US(Guam-USVI-etc);<=50K +44;Private;163331;Some-college;10;Widowed;Adm-clerical;Unmarried;White;Female;0;0;32;United-States;<=50K +43;Federal-gov;222756;Masters;14;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;State-gov;318918;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;105188;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;Haiti;<=50K +23;Private;199884;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;45;United-States;<=50K +19;Private;96483;HS-grad;9;Never-married;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +49;Self-emp-not-inc;192203;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Canada;<=50K +32;Private;99646;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +25;?;210095;5th-6th;3;Never-married;?;Unmarried;White;Female;0;0;25;El-Salvador;<=50K +44;Private;219591;Some-college;10;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +63;Private;30270;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;226020;HS-grad;9;Separated;Other-service;Not-in-family;Black;Female;0;0;60;?;<=50K +21;Private;314165;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;Columbia;<=50K +32;Private;330715;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Self-emp-not-inc;35448;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;50;United-States;<=50K +50;State-gov;172970;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +26;Self-emp-inc;189502;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;>50K +35;Private;61518;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;<=50K +31;Private;574005;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +24;Private;281356;1st-4th;2;Never-married;Farming-fishing;Not-in-family;Other;Male;0;0;66;Mexico;<=50K +40;Private;138975;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;<=50K +31;Private;176969;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;55;United-States;<=50K +43;Private;132393;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;Poland;<=50K +44;Private;194924;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;>50K +40;Private;478205;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +75;?;128224;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +51;Self-emp-not-inc;290688;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;State-gov;85566;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +40;Self-emp-not-inc;29036;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;35;United-States;<=50K +33;Private;348152;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Local-gov;73715;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +29;Private;151382;Assoc-voc;11;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;50;United-States;<=50K +37;Private;236359;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;37;United-States;<=50K +19;Private;138760;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +46;Local-gov;354962;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +46;Private;181363;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Private;393360;Some-college;10;Never-married;Protective-serv;Own-child;Black;Male;0;0;30;United-States;<=50K +34;Private;210736;Some-college;10;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;?;<=50K +38;Private;110013;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;43;United-States;<=50K +26;Private;193304;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;118551;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +57;Private;201991;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;157446;11th;7;Never-married;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;<=50K +26;Local-gov;283217;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;247794;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;84;United-States;<=50K +61;Private;35649;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;6;United-States;<=50K +36;Self-emp-not-inc;342719;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;?;>50K +17;Private;271837;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;16;United-States;<=50K +40;Private;400061;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Other;Male;0;0;40;United-States;>50K +18;Private;62972;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +21;Private;174907;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;32;United-States;<=50K +41;Private;176452;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;Peru;<=50K +46;Private;268358;11th;7;Separated;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Federal-gov;176904;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;176683;Assoc-acdm;12;Never-married;Sales;Not-in-family;White;Male;0;0;52;United-States;<=50K +39;Private;98077;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;42;United-States;<=50K +36;Private;266461;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;48;United-States;<=50K +27;Private;604045;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Local-gov;131568;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +42;Private;97688;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;47;United-States;<=50K +23;Private;373628;Bachelors;13;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +41;Self-emp-not-inc;193459;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +49;Private;250733;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;46;United-States;<=50K +46;Federal-gov;199725;Assoc-voc;11;Divorced;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Female;0;0;60;United-States;<=50K +54;Private;156877;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Greece;<=50K +45;Self-emp-not-inc;216402;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;India;>50K +22;Private;315974;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;63437;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;Ireland;<=50K +27;Private;160786;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +34;Private;85374;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;465974;11th;7;Never-married;Transport-moving;Own-child;White;Male;0;0;30;United-States;<=50K +47;Private;78529;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +36;State-gov;98037;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +22;Private;178390;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;64506;Some-college;10;Divorced;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +54;Private;128378;Some-college;10;Widowed;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Private;234460;9th;5;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;Dominican-Republic;<=50K +29;Private;176760;Prof-school;15;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;55;United-States;<=50K +40;State-gov;59460;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +18;Private;234428;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +31;Private;215047;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;191777;Masters;14;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +48;Private;148995;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +24;Private;229773;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +24;Private;174461;Assoc-acdm;12;Divorced;Other-service;Not-in-family;White;Female;0;0;22;United-States;<=50K +24;Private;250647;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Guatemala;<=50K +37;Private;184556;Some-college;10;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;263561;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +19;Private;177945;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +45;Private;306889;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +54;Local-gov;54377;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;95566;Some-college;10;Married-spouse-absent;Sales;Own-child;Other;Female;0;0;22;Dominican-Republic;<=50K +20;Private;181675;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;172129;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +49;?;350759;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +58;Self-emp-not-inc;105592;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +20;?;200061;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;?;<=50K +34;Self-emp-inc;200689;Bachelors;13;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Local-gov;282753;Assoc-voc;11;Divorced;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +32;Private;137367;11th;7;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;India;<=50K +35;Self-emp-inc;153976;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +51;Self-emp-inc;96062;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +33;Private;152933;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +71;Private;97870;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;15;Germany;<=50K +48;Private;254291;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +53;Self-emp-not-inc;101432;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;125776;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +64;Self-emp-not-inc;165479;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;5;United-States;<=50K +42;Federal-gov;172307;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;48;United-States;>50K +25;Private;176729;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +66;Private;174276;Some-college;10;Widowed;Sales;Unmarried;White;Female;0;0;50;United-States;>50K +59;Federal-gov;48102;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;?;>50K +42;Self-emp-not-inc;79531;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +24;Private;306460;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;40;United-States;<=50K +19;Private;55284;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;25;United-States;<=50K +26;Private;172063;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +22;Private;141028;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;30;United-States;<=50K +33;Private;37274;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +63;Private;31389;11th;7;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;12;United-States;<=50K +20;Private;415913;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +33;Private;295591;5th-6th;3;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +56;Private;159770;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +70;Self-emp-not-inc;268832;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;24;United-States;>50K +42;Private;126003;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +25;Local-gov;225193;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +28;Private;297735;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +36;Private;605502;10th;6;Never-married;Transport-moving;Not-in-family;Black;Female;0;0;40;United-States;<=50K +37;Private;174150;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;165466;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;United-States;>50K +52;State-gov;189728;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +49;Private;360491;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;115040;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +70;Self-emp-inc;158437;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;>50K +25;Private;149875;Bachelors;13;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +59;Private;131916;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Italy;>50K +22;Private;60668;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Local-gov;153132;Assoc-acdm;12;Separated;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +62;Private;155256;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +54;Private;244770;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +38;Private;312108;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +36;Private;93225;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +74;Self-emp-inc;231002;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;>50K +35;Self-emp-not-inc;256992;5th-6th;3;Married-civ-spouse;Other-service;Wife;White;Female;0;0;15;Mexico;<=50K +41;Private;118721;12th;8;Divorced;Adm-clerical;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +30;Private;151989;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +25;Private;109112;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +48;Private;204629;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +50;Self-emp-not-inc;99894;5th-6th;3;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Female;0;0;15;United-States;<=50K +19;Private;369463;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +51;Private;79324;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;61178;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +20;Private;204226;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +17;Private;183110;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;16;United-States;<=50K +42;Private;96321;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +25;Private;167031;Some-college;10;Never-married;Other-service;Other-relative;Other;Female;0;0;25;Ecuador;<=50K +36;Private;108997;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +65;Private;176796;Doctorate;16;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;Self-emp-not-inc;134737;Bachelors;13;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;70;United-States;>50K +33;Self-emp-inc;49795;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +32;State-gov;131588;Some-college;10;Never-married;Tech-support;Unmarried;Black;Female;0;0;20;United-States;<=50K +25;Private;307643;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;351350;Some-college;10;Divorced;Protective-serv;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;260761;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;207789;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;52;United-States;<=50K +24;Private;196269;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;Other;Male;0;0;40;United-States;<=50K +17;Private;46402;7th-8th;4;Never-married;Sales;Own-child;White;Male;0;0;8;United-States;<=50K +32;Self-emp-not-inc;267161;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;30;United-States;<=50K +67;Private;160456;11th;7;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;?;123983;Some-college;10;Never-married;?;Other-relative;Asian-Pac-Islander;Male;0;0;10;Vietnam;<=50K +39;Private;269323;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;Self-emp-not-inc;42857;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;35;United-States;<=50K +50;Self-emp-not-inc;183915;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +24;Private;211391;10th;6;Never-married;Sales;Not-in-family;White;Female;0;0;15;United-States;<=50K +21;Local-gov;193130;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;86745;Bachelors;13;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;16;United-States;<=50K +34;Private;226525;Assoc-voc;11;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +68;?;270339;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +49;Self-emp-not-inc;343742;10th;6;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;32;United-States;<=50K +50;Private;150975;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +33;Private;207301;Assoc-acdm;12;Divorced;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +18;Private;135924;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;184277;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;55;United-States;>50K +20;Private;142233;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +64;Local-gov;158412;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;126161;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +35;Private;149347;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;70;United-States;<=50K +21;Private;322674;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;32;United-States;<=50K +29;Private;55390;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +38;State-gov;200904;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;30;United-States;>50K +45;Private;166056;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;116666;Masters;14;Divorced;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;50;India;>50K +41;Private;168324;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +37;Private;121772;HS-grad;9;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Hong;<=50K +20;?;401690;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +45;Self-emp-inc;117605;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +20;Federal-gov;410446;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;20;United-States;<=50K +35;Self-emp-not-inc;335704;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;70261;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;47577;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +23;Private;117767;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +34;Private;179641;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +23;?;343553;11th;7;Never-married;?;Not-in-family;Black;Male;0;0;40;United-States;<=50K +36;Self-emp-not-inc;328466;5th-6th;3;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;Mexico;>50K +46;Private;265097;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;5;United-States;<=50K +38;Local-gov;414791;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +55;Local-gov;48055;12th;8;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;341672;Some-college;10;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Male;0;0;40;India;<=50K +48;Private;266764;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +35;Private;233571;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;50;United-States;<=50K +47;Private;70754;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;175856;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;193494;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;46;United-States;<=50K +41;Private;104334;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +47;Federal-gov;197332;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;205844;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;25;United-States;<=50K +45;Local-gov;206459;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +33;Private;202822;7th-8th;4;Never-married;Other-service;Unmarried;Black;Female;0;0;14;Trinadad&Tobago;<=50K +68;Without-pay;174695;Some-college;10;Married-spouse-absent;Farming-fishing;Unmarried;White;Female;0;0;25;United-States;<=50K +44;Private;183342;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +49;Private;105614;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;329603;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Poland;>50K +29;Private;207473;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Mexico;<=50K +46;Private;149161;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;60;?;<=50K +19;Private;311974;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;25;Mexico;<=50K +56;Private;175127;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +55;Self-emp-not-inc;111625;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +29;Private;48895;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;27049;HS-grad;9;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;25;United-States;<=50K +38;Private;108907;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;?;<=50K +52;Private;94988;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;218343;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +20;Private;227626;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;60;United-States;<=50K +31;Private;272856;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;50;England;<=50K +39;Private;30916;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;276229;Some-college;10;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;289106;Assoc-acdm;12;Separated;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +67;?;39100;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;5;United-States;<=50K +61;Private;147280;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +18;Private;187770;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +51;State-gov;213296;Bachelors;13;Widowed;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;107410;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +21;?;170272;Some-college;10;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;86808;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;38;United-States;<=50K +48;Private;149210;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Male;0;0;45;United-States;<=50K +62;Private;123411;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;53;United-States;<=50K +21;?;306779;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +28;Private;487347;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +20;Private;375698;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +41;Private;271753;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;251854;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +43;State-gov;28451;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;37;United-States;>50K +20;Private;282604;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;20;United-States;<=50K +29;Private;185908;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;55;United-States;>50K +51;Federal-gov;198186;Bachelors;13;Widowed;Prof-specialty;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;Private;242521;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;337940;5th-6th;3;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;Mexico;<=50K +30;Private;212064;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;129263;HS-grad;9;Widowed;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;109912;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;>50K +41;Private;113324;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;187795;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +20;Private;173724;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +43;Private;185129;Bachelors;13;Divorced;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;236040;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +39;Private;74194;HS-grad;9;Never-married;Farming-fishing;Unmarried;White;Male;0;0;40;United-States;<=50K +31;Local-gov;102130;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;140915;Some-college;10;Never-married;Sales;Other-relative;Asian-Pac-Islander;Male;0;0;25;Philippines;<=50K +38;State-gov;34364;Masters;14;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;258037;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;Cuba;>50K +18;Private;391585;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +41;Self-emp-not-inc;233130;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;Mexico;<=50K +23;?;32897;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +26;Private;248612;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;30;United-States;<=50K +37;Private;212465;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;405913;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Peru;>50K +31;Private;46807;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;210498;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;<=50K +35;Private;206951;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +28;Self-emp-not-inc;237466;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;30;United-States;>50K +59;Private;279636;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;Guatemala;<=50K +42;Private;29320;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;271262;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +27;?;29361;Assoc-acdm;12;Never-married;?;Not-in-family;White;Female;0;0;45;United-States;<=50K +32;Private;76773;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;109004;HS-grad;9;Separated;Craft-repair;Unmarried;Black;Male;0;0;40;United-States;<=50K +43;Private;226902;Bachelors;13;Divorced;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +46;Private;176552;11th;7;Divorced;Prof-specialty;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;>50K +41;Private;182303;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +20;Private;218215;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +57;Private;165695;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +45;Private;96100;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +23;Private;248978;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +55;?;200235;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +58;Private;94429;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +38;Private;87282;Assoc-voc;11;Never-married;Exec-managerial;Other-relative;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +29;Private;119793;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;50;United-States;<=50K +57;?;85815;HS-grad;9;Divorced;?;Own-child;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +26;Local-gov;197764;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;306982;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +61;Private;80896;HS-grad;9;Separated;Transport-moving;Unmarried;Asian-Pac-Islander;Male;0;0;45;United-States;>50K +43;Private;355728;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +51;State-gov;193720;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;56;United-States;>50K +23;Private;347292;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;34506;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;326370;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;38;?;<=50K +22;?;269221;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;63509;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +48;Private;148254;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;16;United-States;>50K +33;Private;190511;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +46;Private;268022;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;?;>50K +18;Private;20057;7th-8th;4;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +52;Private;206862;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;166320;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Private;289886;Some-college;10;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;30;Vietnam;<=50K +23;?;86337;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +45;Local-gov;54190;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +17;Private;147069;10th;6;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +56;Private;282023;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +38;Self-emp-inc;379485;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Male;0;0;45;United-States;<=50K +81;Private;129338;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;10;United-States;<=50K +22;Private;99829;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +43;State-gov;182254;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +66;?;210750;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;132716;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +31;Private;242984;Some-college;10;Separated;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;101509;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;?;509629;Some-college;10;Never-married;?;Own-child;White;Female;0;0;35;United-States;<=50K +36;Private;119957;Bachelors;13;Separated;Other-service;Unmarried;Black;Female;0;0;35;United-States;<=50K +33;Private;69727;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +37;?;50862;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;55;United-States;<=50K +50;Private;182907;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +55;Private;206487;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +29;Private;168015;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;149396;Some-college;10;Never-married;Other-service;Other-relative;Black;Female;0;0;30;Haiti;<=50K +39;Federal-gov;184964;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;>50K +34;Private;398988;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;128777;7th-8th;4;Divorced;Craft-repair;Unmarried;White;Female;0;0;55;United-States;<=50K +60;Private;252413;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;32;United-States;>50K +33;Private;181372;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +58;Private;216851;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;El-Salvador;<=50K +27;Private;106935;Some-college;10;Separated;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;State-gov;363875;Some-college;10;Divorced;Protective-serv;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +63;Private;287277;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;172342;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;308498;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;15;United-States;<=50K +31;Private;106437;Prof-school;15;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;60;United-States;>50K +49;Self-emp-inc;306289;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +45;Self-emp-inc;201699;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +42;Private;282062;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;235108;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;339482;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;181820;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;99335;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +50;Private;269095;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;100999;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +18;Private;34125;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;28;United-States;<=50K +20;Private;115057;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Private;139126;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;104632;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Cambodia;>50K +40;Federal-gov;178866;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +54;Private;139850;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;45;United-States;>50K +28;Private;61435;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +38;Private;309230;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +28;Private;45613;Some-college;10;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;272615;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;54318;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +27;Private;165519;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;48495;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +38;Private;143123;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +75;Private;256474;Masters;14;Never-married;Protective-serv;Not-in-family;White;Male;0;0;16;United-States;<=50K +41;Private;191451;Masters;14;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;60;United-States;>50K +37;Private;99146;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +47;Private;235986;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;50;Cuba;<=50K +34;Local-gov;429897;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Mexico;>50K +25;Private;189897;HS-grad;9;Married-civ-spouse;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;145155;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;194960;HS-grad;9;Never-married;Farming-fishing;Not-in-family;Other;Male;0;0;40;Puerto-Rico;<=50K +44;Local-gov;357814;12th;8;Married-civ-spouse;Other-service;Other-relative;White;Female;0;0;35;Mexico;<=50K +27;Local-gov;137629;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;>50K +42;Private;156526;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;33;United-States;<=50K +26;Private;189238;9th;5;Never-married;Other-service;Own-child;White;Female;0;0;38;El-Salvador;<=50K +23;Private;202989;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;Canada;<=50K +28;Private;25684;HS-grad;9;Never-married;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;192939;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;138692;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;50;United-States;<=50K +29;Private;222249;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +23;?;190650;Bachelors;13;Never-married;?;Not-in-family;Asian-Pac-Islander;Male;0;0;35;United-States;<=50K +30;Private;56004;Some-college;10;Never-married;Exec-managerial;Own-child;Black;Female;0;0;40;United-States;<=50K +48;Private;182313;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +45;Self-emp-not-inc;138962;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;72;?;<=50K +38;Private;277248;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Cuba;>50K +24;Private;125031;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +47;State-gov;216414;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;Private;171176;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;48;?;<=50K +29;Private;356133;Some-college;10;Never-married;Prof-specialty;Other-relative;White;Female;0;0;40;United-States;<=50K +45;Private;185397;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;308285;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;56651;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Local-gov;154863;9th;5;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;Trinadad&Tobago;>50K +46;Federal-gov;44706;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;50;United-States;>50K +34;?;222548;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;4;United-States;<=50K +32;Private;248754;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;104981;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;315065;Some-college;10;Never-married;Other-service;Unmarried;White;Male;0;0;35;Mexico;<=50K +46;Private;188325;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;221661;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;35;United-States;<=50K +59;Private;81973;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +31;Private;169122;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +48;Private;216734;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;98101;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;292511;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +20;Private;122971;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;35;United-States;<=50K +29;Private;124953;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;United-States;<=50K +54;Private;123011;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +36;Private;76417;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;<=50K +43;Private;351576;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +33;Private;79923;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +33;Private;117983;10th;6;Divorced;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +36;Private;186110;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;?;319685;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;54;United-States;>50K +64;?;64101;12th;8;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;<=50K +45;Self-emp-not-inc;162923;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;288519;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;33798;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;214120;HS-grad;9;Never-married;Priv-house-serv;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;113515;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +58;Self-emp-not-inc;261230;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;98515;Assoc-voc;11;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;187715;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +23;?;214238;7th-8th;4;Never-married;?;Not-in-family;White;Female;0;0;40;Mexico;<=50K +26;Private;68991;HS-grad;9;Never-married;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +52;Private;292110;5th-6th;3;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;198320;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;45;United-States;<=50K +33;Private;709798;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +60;Private;372838;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;160402;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;38;United-States;<=50K +45;Private;98475;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +37;Local-gov;97136;Some-college;10;Married-spouse-absent;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Private;136985;Assoc-acdm;12;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;187356;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;66;United-States;<=50K +20;Private;305874;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;290922;Masters;14;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;247321;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +53;Private;247651;7th-8th;4;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;56;United-States;<=50K +34;Private;561334;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +36;?;224886;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +41;Local-gov;401134;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;258170;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;38;United-States;<=50K +68;?;141181;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;<=50K +37;Private;292370;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;50;?;>50K +22;Private;300871;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;136721;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;?;140399;Some-college;10;Never-married;?;Other-relative;White;Female;0;0;30;United-States;<=50K +36;Private;109133;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;186534;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +25;Private;226891;Assoc-voc;11;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Female;0;0;40;?;<=50K +33;Private;241885;Some-college;10;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;97165;Some-college;10;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;40;United-States;<=50K +33;Private;212918;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;70;United-States;<=50K +24;Private;211585;HS-grad;9;Married-civ-spouse;Transport-moving;Own-child;White;Female;0;0;40;United-States;<=50K +47;Local-gov;178309;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Self-emp-inc;481987;10th;6;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;215211;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +33;Local-gov;194901;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +33;Local-gov;190290;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Male;0;0;56;United-States;<=50K +26;Private;188569;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +22;Private;162282;Assoc-voc;11;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;287315;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +31;Self-emp-inc;304212;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;45;United-States;<=50K +73;?;200878;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;15;United-States;<=50K +38;Local-gov;256864;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;46401;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +36;Private;37778;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +64;Self-emp-not-inc;103643;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;15;United-States;>50K +24;Private;143766;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;55;United-States;<=50K +21;State-gov;204425;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;20;United-States;<=50K +28;Private;156257;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +18;?;113185;11th;7;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +41;Self-emp-inc;112262;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;28031;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;16;United-States;<=50K +58;Private;320102;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +50;Self-emp-not-inc;334273;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;8;United-States;<=50K +30;Private;356015;11th;7;Married-spouse-absent;Handlers-cleaners;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;Mexico;<=50K +47;Private;278900;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;142528;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +50;Federal-gov;343014;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;<=50K +29;Private;201017;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;Scotland;<=50K +31;Self-emp-not-inc;81030;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +40;Self-emp-not-inc;34007;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;>50K +31;Private;29662;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +53;Private;347446;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +33;Private;90668;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;190403;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;234807;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +18;Private;157131;11th;7;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +50;Private;94081;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +27;Private;103164;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;570002;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +24;State-gov;215797;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;239461;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;35;United-States;<=50K +34;Private;101510;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;>50K +30;Self-emp-inc;443546;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +37;Federal-gov;141029;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;207202;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +67;Without-pay;137192;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;12;Philippines;<=50K +35;Private;222989;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +75;Self-emp-not-inc;36325;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +47;Private;73394;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;<=50K +23;Private;249046;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +51;Federal-gov;100653;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;8;United-States;<=50K +42;Local-gov;1125613;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;101352;Some-college;10;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;32;United-States;>50K +54;Private;340476;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +20;Private;192711;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;273362;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;85399;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Local-gov;168191;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;>50K +27;Private;153475;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +61;Self-emp-not-inc;196773;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +41;Private;180138;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;48347;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +66;?;129476;Bachelors;13;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +25;Private;181772;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;284317;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +20;Private;237305;Some-college;10;Never-married;Machine-op-inspct;Other-relative;Black;Female;0;0;35;United-States;<=50K +67;Self-emp-inc;111321;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;16;United-States;<=50K +44;Private;278476;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +42;Private;39060;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +29;Local-gov;205262;Some-college;10;Never-married;Adm-clerical;Not-in-family;Other;Male;0;0;40;Ecuador;<=50K +48;Private;198000;Some-college;10;Never-married;Craft-repair;Unmarried;White;Female;0;0;38;United-States;>50K +25;Private;397962;HS-grad;9;Never-married;Adm-clerical;Other-relative;Black;Female;0;0;40;United-States;<=50K +31;Private;178370;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;99;United-States;>50K +40;Private;56072;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;20;United-States;<=50K +26;Private;176756;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;60374;HS-grad;9;Married-civ-spouse;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +52;Private;165681;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +41;Self-emp-not-inc;287037;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Self-emp-not-inc;55568;Bachelors;13;Married-civ-spouse;Farming-fishing;Wife;White;Female;0;0;50;United-States;<=50K +48;Private;155509;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;16;Trinadad&Tobago;<=50K +19;Private;201178;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +19;Private;264593;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +32;Private;159589;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +39;Private;454915;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +33;Private;285131;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;150057;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;55390;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;45;United-States;<=50K +23;Private;314894;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;45;United-States;<=50K +59;?;184948;Assoc-voc;11;Divorced;?;Not-in-family;White;Male;0;0;48;United-States;<=50K +25;Local-gov;124483;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Male;0;0;20;India;<=50K +37;Self-emp-inc;97986;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;68;United-States;<=50K +31;Private;210562;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +24;Private;233280;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;37;United-States;<=50K +53;Local-gov;164300;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;Dominican-Republic;<=50K +26;Private;227489;Some-college;10;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;40;?;<=50K +25;Private;263773;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +59;Private;96459;11th;7;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Federal-gov;116608;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Private;180007;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;305466;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;238917;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;El-Salvador;<=50K +25;Private;129784;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;367390;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +20;Private;235691;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +63;?;166425;Some-college;10;Widowed;?;Not-in-family;Black;Female;0;0;24;United-States;<=50K +43;Self-emp-not-inc;160369;10th;6;Divorced;Farming-fishing;Unmarried;White;Male;0;0;25;United-States;<=50K +39;Private;206298;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;183523;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +17;Private;217342;10th;6;Never-married;Sales;Own-child;White;Female;0;0;5;United-States;<=50K +40;State-gov;141858;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;72;United-States;<=50K +50;Private;213296;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +23;Self-emp-inc;201682;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +30;Private;269723;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;200593;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;32616;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +45;Self-emp-not-inc;271828;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +22;Private;113703;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;20;United-States;<=50K +41;Private;187802;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;440706;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +31;Private;191834;HS-grad;9;Divorced;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;315998;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +38;Private;60313;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +58;Local-gov;32855;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +58;Private;142326;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +61;Self-emp-not-inc;201965;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;206541;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +33;Self-emp-not-inc;177828;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Private;303440;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +22;Private;89991;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;11;United-States;<=50K +35;Private;186009;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +59;Private;170988;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +50;Self-emp-not-inc;213654;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;<=50K +56;Self-emp-inc;32316;12th;8;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;150371;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;?;387871;10th;6;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +28;Private;314649;Some-college;10;Married-civ-spouse;Sales;Husband;Amer-Indian-Eskimo;Male;0;0;60;United-States;<=50K +42;Private;240255;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +60;Private;206339;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-inc;230168;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;91;United-States;<=50K +36;Private;148581;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +52;Local-gov;89705;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +42;Self-emp-not-inc;248406;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +26;Local-gov;72594;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;55;United-States;>50K +31;Local-gov;137537;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;225065;5th-6th;3;Separated;Sales;Unmarried;White;Female;0;0;40;Mexico;<=50K +35;Private;217274;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +19;Private;69151;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +59;Self-emp-not-inc;81107;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;80;United-States;>50K +38;Private;205852;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +36;Private;201117;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;397307;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +39;Private;115422;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +64;Private;114994;Some-college;10;Separated;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;Local-gov;39815;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +49;Private;151584;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;32;United-States;<=50K +19;Private;164938;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +26;Private;253841;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +38;Private;320305;7th-8th;4;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;229287;Bachelors;13;Never-married;Exec-managerial;Other-relative;White;Female;0;0;25;United-States;<=50K +19;Private;100790;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;171419;Assoc-voc;11;Never-married;Exec-managerial;Unmarried;Asian-Pac-Islander;Male;0;0;40;South;<=50K +60;Private;202226;Some-college;10;Divorced;Craft-repair;Own-child;White;Male;0;0;44;United-States;>50K +46;Private;220124;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;37;United-States;<=50K +33;State-gov;31703;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +51;Local-gov;153908;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +18;?;252046;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +60;Self-emp-inc;160062;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;United-States;<=50K +39;Self-emp-not-inc;148443;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +39;Private;176634;Assoc-acdm;12;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Local-gov;74949;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;165484;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +24;Private;44738;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +32;Private;130040;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;234537;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +39;Private;179016;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +27;Private;335421;Masters;14;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +45;State-gov;312678;Masters;14;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;38;United-States;<=50K +22;?;313786;HS-grad;9;Divorced;?;Other-relative;Black;Female;0;0;40;United-States;<=50K +31;Private;198751;Bachelors;13;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Vietnam;<=50K +63;Private;131519;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;285060;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +28;State-gov;189765;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +23;Private;130905;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;146325;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;>50K +33;Private;102821;12th;8;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +22;?;137876;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;82910;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;309122;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +60;Private;532845;1st-4th;2;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;>50K +46;Private;195833;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;?;<=50K +67;?;98882;Masters;14;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;?;133515;Some-college;10;Never-married;?;Own-child;White;Female;0;0;15;France;<=50K +23;Private;55215;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;55;United-States;<=50K +38;Self-emp-inc;176357;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +60;Private;185836;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +20;Self-emp-not-inc;54152;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Female;0;0;35;United-States;<=50K +37;Private;212437;Some-college;10;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;48;United-States;<=50K +37;Private;224566;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +58;Private;200040;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;41526;Bachelors;13;Never-married;Craft-repair;Own-child;White;Male;0;0;30;Canada;<=50K +27;Private;89598;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;60;United-States;<=50K +33;Private;323811;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;55;United-States;<=50K +43;State-gov;30824;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Federal-gov;181096;Some-college;10;Never-married;Tech-support;Own-child;Black;Male;0;0;20;United-States;<=50K +45;Private;217953;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Other;Male;0;0;40;Mexico;<=50K +44;Private;222635;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +52;?;121942;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;184889;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;20;United-States;<=50K +18;Federal-gov;101709;11th;7;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;15;Philippines;<=50K +20;Private;125010;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +32;Private;53135;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;498328;10th;6;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +46;Private;604380;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +28;Private;174327;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +27;Self-emp-not-inc;357283;HS-grad;9;Never-married;Sales;Not-in-family;Black;Male;0;0;40;United-States;<=50K +18;Federal-gov;280728;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;32;United-States;<=50K +50;Self-emp-inc;251240;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +43;Private;143046;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Greece;<=50K +32;Private;210541;Bachelors;13;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +43;Private;172364;HS-grad;9;Separated;Exec-managerial;Not-in-family;White;Female;0;0;48;United-States;<=50K +50;Private;176227;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +35;Private;139647;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +20;?;174461;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;5;United-States;<=50K +73;?;123345;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;65;United-States;<=50K +46;Private;164427;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;45;United-States;<=50K +58;Private;205235;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +40;Private;163434;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +25;Private;264055;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;336215;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +33;Federal-gov;78307;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +49;Federal-gov;233059;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;91433;10th;6;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +56;Local-gov;157525;Some-college;10;Divorced;Protective-serv;Not-in-family;Black;Male;0;0;48;United-States;<=50K +24;Private;86065;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Female;0;0;40;Mexico;<=50K +42;Private;22831;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;180181;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;212617;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;66;Ecuador;<=50K +22;?;125905;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +35;Private;336793;Bachelors;13;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +42;Private;314649;HS-grad;9;Married-spouse-absent;Handlers-cleaners;Other-relative;Asian-Pac-Islander;Male;0;0;40;?;<=50K +22;Private;283969;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;Mexico;<=50K +32;Self-emp-not-inc;35595;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;410240;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +66;Private;178120;5th-6th;3;Divorced;Priv-house-serv;Not-in-family;Black;Female;0;0;15;United-States;<=50K +26;State-gov;294400;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;38;United-States;<=50K +55;Private;189719;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +24;Private;23438;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;178037;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +22;Private;109815;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;197860;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;271933;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +54;Private;141663;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;15;United-States;<=50K +19;?;199609;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +56;Private;92215;9th;5;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;>50K +47;Private;93449;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;60;Japan;<=50K +29;Private;235393;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +53;Private;151864;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;189277;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +42;Private;344572;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;>50K +21;Private;265356;Some-college;10;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +36;Self-emp-inc;166880;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;70;United-States;<=50K +60;Private;188650;5th-6th;3;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;?;>50K +69;Private;213249;Assoc-voc;11;Widowed;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +31;Private;112627;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +48;Private;125120;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;55;United-States;<=50K +23;Private;60409;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;583755;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +36;Private;68089;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +39;Private;306646;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;186573;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;0;0;46;United-States;<=50K +36;Private;437909;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;420691;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +33;Federal-gov;94193;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;145879;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +23;Private;208946;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;32;United-States;<=50K +33;Private;231826;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Mexico;<=50K +30;Private;178587;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +35;Private;213208;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;Black;Male;0;0;38;Jamaica;<=50K +35;?;139770;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;>50K +27;Private;153869;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;37;United-States;<=50K +24;Private;88676;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +44;Local-gov;151089;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;138621;Assoc-voc;11;Separated;Priv-house-serv;Not-in-family;Black;Female;0;0;20;United-States;<=50K +75;Self-emp-not-inc;213349;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +47;Private;192776;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +64;Private;192884;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +54;Private;103024;HS-grad;9;Divorced;Tech-support;Not-in-family;White;Male;0;0;42;United-States;>50K +41;Federal-gov;510072;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +33;Private;178615;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;249956;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +51;Private;177705;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +45;Self-emp-inc;121124;Prof-school;15;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +18;?;25837;11th;7;Never-married;?;Own-child;White;Male;0;0;72;United-States;<=50K +43;Private;557349;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Yugoslavia;<=50K +32;Private;222548;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +61;Private;316359;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;200089;1st-4th;2;Married-civ-spouse;Other-service;Other-relative;White;Male;0;0;40;England;<=50K +56;Private;271795;11th;7;Divorced;Craft-repair;Not-in-family;White;Male;0;0;49;United-States;<=50K +28;Private;31801;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;60;United-States;<=50K +23;Private;196508;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Female;0;0;40;United-States;<=50K +55;Private;189933;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;84;United-States;<=50K +33;Private;361497;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;70;United-States;<=50K +22;Private;150175;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +43;Local-gov;155106;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;62272;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;189916;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +18;Private;324011;9th;5;Never-married;Farming-fishing;Own-child;White;Male;0;0;20;United-States;<=50K +35;Private;105803;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +67;?;53588;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;107998;HS-grad;9;Divorced;Machine-op-inspct;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;340567;1st-4th;2;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;55;Mexico;<=50K +39;Private;167777;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +45;Self-emp-inc;40666;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +42;Local-gov;195897;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;242984;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Local-gov;236497;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +18;?;312634;11th;7;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +64;Private;59829;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;25;France;<=50K +30;Private;24292;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +43;Local-gov;180407;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;42;Germany;<=50K +49;Self-emp-not-inc;121238;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +35;Private;281982;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +37;Self-emp-not-inc;348739;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +49;Private;194189;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +19;Private;329130;11th;7;Separated;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +31;Private;62165;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +26;Private;224361;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;34722;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +38;Private;175972;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +33;Self-emp-not-inc;359428;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +24;?;138504;HS-grad;9;Separated;?;Unmarried;Black;Female;0;0;37;United-States;<=50K +18;Private;268952;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +32;Private;257978;Assoc-voc;11;Widowed;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;118799;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;State-gov;78356;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;Jamaica;<=50K +30;Self-emp-not-inc;609789;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;123157;HS-grad;9;Never-married;Other-service;Not-in-family;Black;Male;0;0;38;United-States;<=50K +74;Private;84197;Masters;14;Divorced;Sales;Not-in-family;White;Female;0;0;10;United-States;<=50K +36;Private;162312;HS-grad;9;Never-married;Craft-repair;Not-in-family;Asian-Pac-Islander;Male;0;0;70;South;<=50K +36;Private;138441;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;55;United-States;<=50K +39;Private;262158;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +25;Self-emp-inc;133373;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;80;United-States;<=50K +21;Private;57916;HS-grad;9;Separated;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +39;State-gov;142897;Assoc-voc;11;Never-married;Exec-managerial;Unmarried;White;Female;0;0;50;United-States;<=50K +38;Private;161016;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;32;United-States;<=50K +20;Private;227491;HS-grad;9;Never-married;Sales;Not-in-family;Asian-Pac-Islander;Female;0;0;25;United-States;<=50K +51;Private;306790;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;33831;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;188972;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;313546;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;220585;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +25;Local-gov;476599;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;163665;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +36;Private;306646;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +41;Private;206470;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Germany;<=50K +34;Private;169583;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +19;State-gov;127085;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;10;United-States;<=50K +18;Private;152044;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;3;United-States;<=50K +36;Private;111387;10th;6;Divorced;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +29;Private;213692;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;45;United-States;<=50K +23;Private;163665;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;32;United-States;<=50K +35;Private;30529;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;290226;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;182136;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;73266;Some-college;10;Never-married;Transport-moving;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +19;State-gov;60412;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;15;United-States;<=50K +70;Private;187891;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;194304;Some-college;10;Divorced;Transport-moving;Not-in-family;Black;Male;0;0;55;United-States;<=50K +35;Private;160910;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;148300;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +39;Private;165743;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +50;Private;123174;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;37;?;>50K +43;Private;184018;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +37;Federal-gov;188069;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Philippines;>50K +29;?;78529;10th;6;Separated;?;Unmarried;White;Female;0;0;12;United-States;<=50K +20;Private;164441;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +21;Private;199419;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;181342;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;Black;Female;0;0;40;United-States;<=50K +44;Private;173382;Assoc-acdm;12;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;215384;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;State-gov;424094;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Federal-gov;212120;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +42;Private;185764;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +46;Local-gov;133969;Masters;14;Divorced;Prof-specialty;Not-in-family;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +22;Private;32616;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Private;149210;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +21;Private;161210;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +53;Private;285621;Masters;14;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +43;Private;282069;Some-college;10;Divorced;Craft-repair;Unmarried;White;Male;0;0;42;United-States;<=50K +22;Private;97508;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +28;Private;171133;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +25;Private;231638;Some-college;10;Never-married;Tech-support;Unmarried;White;Female;0;0;24;United-States;<=50K +40;Private;191342;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;China;>50K +50;Private;226497;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +48;Self-emp-not-inc;373606;Some-college;10;Divorced;Sales;Unmarried;White;Male;0;0;65;United-States;>50K +30;Private;39150;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;288840;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;Black;Female;0;0;38;United-States;<=50K +34;Private;293703;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +42;Private;79586;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +48;Self-emp-not-inc;82098;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;65;United-States;<=50K +29;Private;78261;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;355996;10th;6;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;110908;Assoc-voc;11;Married-civ-spouse;Transport-moving;Wife;White;Female;0;0;25;United-States;<=50K +49;Private;248895;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +25;Private;363707;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;272411;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;128033;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +20;Private;177287;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;38;United-States;<=50K +44;Private;197344;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +45;Private;285858;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +27;Self-emp-inc;193868;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;Private;232082;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +38;Private;27408;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +45;Private;247043;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;<=50K +64;Private;236341;5th-6th;3;Widowed;Other-service;Not-in-family;Black;Female;0;0;16;United-States;<=50K +34;Private;30433;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +45;Self-emp-not-inc;102771;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +42;Self-emp-not-inc;221172;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;375499;10th;6;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;20;United-States;<=50K +27;Private;178688;Assoc-voc;11;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +21;Private;276709;Some-college;10;Never-married;Sales;Other-relative;White;Female;0;0;40;United-States;<=50K +23;?;238087;Some-college;10;Never-married;?;Own-child;White;Male;0;0;30;United-States;<=50K +47;Private;84790;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;State-gov;37482;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +46;State-gov;178686;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +35;?;153926;HS-grad;9;Married-civ-spouse;?;Wife;Black;Female;0;0;40;United-States;<=50K +28;Private;116613;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;24;United-States;<=50K +21;Private;108687;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +36;Private;365739;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;195284;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;>50K +38;Private;125933;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;?;>50K +37;Private;140854;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +81;Self-emp-not-inc;193237;1st-4th;2;Widowed;Sales;Other-relative;White;Male;0;0;45;Mexico;<=50K +41;Private;46870;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;351324;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;189265;Assoc-acdm;12;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;236564;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +42;Federal-gov;557644;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;374454;HS-grad;9;Divorced;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +65;?;160654;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +18;Private;122775;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +30;Private;329425;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;48;United-States;<=50K +61;Private;178312;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;<=50K +21;Private;241951;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Private;130143;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +60;Private;399387;7th-8th;4;Separated;Priv-house-serv;Unmarried;Black;Female;0;0;15;United-States;<=50K +47;Private;163814;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;69586;Some-college;10;Divorced;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +32;Private;237903;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +25;?;219897;Masters;14;Never-married;?;Not-in-family;White;Female;0;0;35;Canada;<=50K +31;Private;243165;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +33;State-gov;173806;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +27;Self-emp-not-inc;65308;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +44;Private;408531;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;>50K +37;Private;314963;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;81206;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +51;Federal-gov;293196;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Private;95329;Masters;14;Divorced;Protective-serv;Unmarried;White;Male;0;0;40;United-States;<=50K +25;Local-gov;45474;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +25;Private;372728;Bachelors;13;Never-married;Other-service;Not-in-family;Black;Female;0;0;24;Jamaica;<=50K +29;Federal-gov;116394;Bachelors;13;Married-AF-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +36;Self-emp-not-inc;34180;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;70;United-States;>50K +55;Private;327589;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;706180;Bachelors;13;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +31;Private;32550;10th;6;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;173858;Prof-school;15;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +51;Self-emp-inc;230095;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +62;Private;174711;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +27;Private;193898;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;52;United-States;<=50K +23;Private;303121;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +35;Self-emp-not-inc;188540;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +46;Private;158656;Assoc-acdm;12;Never-married;Prof-specialty;Unmarried;White;Female;0;0;36;United-States;<=50K +45;Self-emp-inc;204196;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;>50K +27;Private;183802;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;148995;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +22;Private;190903;11th;7;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +37;State-gov;173780;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;30;United-States;<=50K +42;Private;251239;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;Puerto-Rico;<=50K +45;Private;112761;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +33;State-gov;425785;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;197731;Assoc-voc;11;Married-spouse-absent;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;<=50K +24;Private;119156;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;50;United-States;<=50K +56;Private;133819;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;185556;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;12;United-States;>50K +50;Private;109277;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +48;Self-emp-inc;36020;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +45;Private;45857;11th;7;Married-civ-spouse;Other-service;Wife;White;Female;0;0;36;United-States;<=50K +41;State-gov;342834;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;Private;234743;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;24;United-States;<=50K +63;?;257876;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;138441;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;35;United-States;<=50K +22;Private;279802;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +58;Private;31732;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +24;Private;204172;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;48;United-States;<=50K +34;Private;100593;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;6;United-States;<=50K +33;Local-gov;162623;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +33;Self-emp-not-inc;80933;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;<=50K +17;Private;47425;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +27;Private;107812;Bachelors;13;Married-civ-spouse;Sales;Other-relative;White;Male;0;0;40;United-States;>50K +20;Self-emp-inc;104443;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +30;Private;209691;7th-8th;4;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;314525;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;190772;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +64;Local-gov;199298;5th-6th;3;Divorced;Other-service;Not-in-family;White;Female;0;0;45;?;<=50K +38;Private;216129;Bachelors;13;Divorced;Other-service;Not-in-family;Black;Female;0;0;60;?;<=50K +46;Federal-gov;219293;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;80;United-States;>50K +17;Private;136363;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +45;Private;233799;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +27;Private;207611;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;178344;Assoc-voc;11;Divorced;Sales;Unmarried;White;Female;0;0;30;United-States;<=50K +26;Self-emp-inc;187652;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;78;United-States;>50K +44;Local-gov;58124;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Male;0;0;45;United-States;<=50K +35;Private;206253;9th;5;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;?;152140;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +56;Private;76281;Bachelors;13;Married-spouse-absent;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +47;Private;606752;Masters;14;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +32;Private;29933;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;>50K +55;?;227203;Assoc-acdm;12;Married-spouse-absent;?;Not-in-family;White;Female;0;0;5;United-States;<=50K +35;Self-emp-inc;65624;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +37;Private;34146;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;68;United-States;<=50K +33;Private;141490;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;45;United-States;<=50K +34;Private;199227;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Private;224954;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;231357;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Self-emp-inc;113530;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +38;Private;22245;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;36383;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Mexico;>50K +35;Private;320305;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;32;United-States;<=50K +67;?;201657;Bachelors;13;Divorced;?;Not-in-family;White;Female;0;0;60;United-States;<=50K +34;Private;48935;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +46;Private;101455;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +19;Local-gov;243960;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;16;United-States;<=50K +26;Private;90915;Assoc-acdm;12;Never-married;Other-service;Own-child;Black;Female;0;0;15;United-States;<=50K +28;Private;315287;Some-college;10;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +47;Private;106255;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Local-gov;215895;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;Italy;>50K +44;Private;210525;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +30;Private;195488;HS-grad;9;Never-married;Priv-house-serv;Own-child;White;Female;0;0;40;Guatemala;<=50K +18;Private;152246;Some-college;10;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;16;United-States;<=50K +81;?;89391;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;24;United-States;>50K +43;State-gov;254817;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;41777;12th;8;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;20;United-States;<=50K +58;Self-emp-not-inc;234841;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;72;United-States;<=50K +32;Private;79586;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;<=50K +40;Private;115331;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +32;Private;63564;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +44;Private;370502;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;25;Mexico;<=50K +25;Private;69413;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +42;Private;32981;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;176683;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +62;?;144116;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +31;Self-emp-not-inc;209213;HS-grad;9;Never-married;Sales;Not-in-family;Black;Male;0;0;40;?;<=50K +33;State-gov;150657;Bachelors;13;Never-married;Prof-specialty;Other-relative;Black;Female;0;0;40;United-States;<=50K +50;Self-emp-not-inc;124793;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +46;Private;270565;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;38251;Assoc-acdm;12;Never-married;Other-service;Unmarried;White;Female;0;0;35;United-States;<=50K +52;Private;195638;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +41;Self-emp-not-inc;44006;Assoc-voc;11;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;333953;12th;8;Never-married;Other-service;Other-relative;White;Female;0;0;30;United-States;<=50K +45;Local-gov;172111;Bachelors;13;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;60;United-States;<=50K +51;Self-emp-not-inc;32372;12th;8;Married-civ-spouse;Other-service;Husband;White;Male;0;0;99;United-States;<=50K +69;?;117525;Assoc-acdm;12;Divorced;?;Unmarried;White;Female;0;0;1;United-States;<=50K +45;Self-emp-not-inc;123681;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +48;Private;317360;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;Private;135056;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +19;State-gov;135162;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +39;Self-emp-not-inc;194004;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;70;United-States;<=50K +46;Private;177633;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +36;Private;30509;Some-college;10;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +21;Private;118712;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;35;United-States;<=50K +41;Private;199018;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;151799;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +29;Private;181280;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +52;Private;232024;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +33;Private;226267;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;Mexico;<=50K +38;Private;240467;Masters;14;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;35;United-States;<=50K +42;Private;154374;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +24;State-gov;231473;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;30;United-States;<=50K +59;Private;158813;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +42;Self-emp-not-inc;238188;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;96;United-States;<=50K +54;Self-emp-not-inc;156800;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;130620;Assoc-acdm;12;Married-spouse-absent;Craft-repair;Other-relative;Asian-Pac-Islander;Female;0;0;40;?;<=50K +50;Private;175339;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +42;Private;37937;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;221167;Bachelors;13;Widowed;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +56;Private;179641;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +28;Local-gov;213195;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +34;Private;157747;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +28;Private;227840;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;169104;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;?;>50K +34;Private;37646;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;65;United-States;<=50K +26;Private;157028;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +25;Private;182656;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +48;Self-emp-not-inc;200471;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;358465;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;78602;11th;7;Never-married;Other-service;Other-relative;White;Female;0;0;20;United-States;<=50K +44;Private;213416;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +46;Local-gov;345911;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +32;?;119522;Bachelors;13;Divorced;?;Not-in-family;White;Male;0;0;50;United-States;<=50K +42;Federal-gov;126320;Some-college;10;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +33;Self-emp-not-inc;235271;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +61;Private;141745;HS-grad;9;Divorced;Other-service;Not-in-family;Black;Female;0;0;40;United-States;<=50K +47;Private;359461;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;148113;10th;6;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +62;Self-emp-not-inc;75478;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +19;?;28455;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;231413;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +39;Local-gov;119421;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;42;United-States;<=50K +17;Private;206998;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +58;Private;183810;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Self-emp-inc;187053;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +55;?;193895;7th-8th;4;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;48520;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;Self-emp-inc;170125;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;107584;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;196742;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +52;?;244214;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +48;Local-gov;127921;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;42617;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;30;United-States;<=50K +47;Local-gov;191389;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +38;Private;187983;Prof-school;15;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;<=50K +18;Private;215110;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;United-States;<=50K +25;Private;230292;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;90159;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;32;United-States;>50K +40;Private;175398;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +56;Self-emp-not-inc;53366;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +50;Private;46155;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +32;Local-gov;112650;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;173682;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;43;United-States;>50K +28;Private;160981;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;52;United-States;<=50K +53;Private;72257;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +26;?;182332;Assoc-voc;11;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;<=50K +21;Private;417668;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +29;Private;107458;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Self-emp-inc;33729;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +45;Private;101977;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +35;?;374716;9th;5;Married-civ-spouse;?;Wife;White;Female;0;0;35;United-States;<=50K +36;Private;214378;HS-grad;9;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;>50K +25;Private;111243;HS-grad;9;Never-married;Sales;Other-relative;White;Female;0;0;50;United-States;<=50K +38;Private;252947;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;40;United-States;<=50K +30;Local-gov;118500;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Local-gov;174575;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;190391;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;166715;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;<=50K +41;Self-emp-not-inc;142725;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +51;Private;241745;5th-6th;3;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;40;Mexico;<=50K +61;Local-gov;248595;1st-4th;2;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +52;Private;90189;7th-8th;4;Divorced;Priv-house-serv;Own-child;Black;Female;0;0;16;United-States;<=50K +40;Private;205195;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +20;Private;148940;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +52;Local-gov;298035;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;154728;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +49;Private;166809;Bachelors;13;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +36;State-gov;97136;Bachelors;13;Never-married;Prof-specialty;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Private;347623;Masters;14;Never-married;Exec-managerial;Unmarried;White;Male;0;0;40;United-States;<=50K +40;Private;117917;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;50;United-States;<=50K +45;Private;266860;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;71864;Some-college;10;Never-married;Craft-repair;Own-child;White;Female;0;0;35;United-States;<=50K +47;Private;158451;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;2;United-States;>50K +24;Private;229826;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;30;United-States;<=50K +19;Private;121788;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;30;United-States;<=50K +40;Private;151365;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +40;Private;360884;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;50;United-States;>50K +43;Self-emp-not-inc;116666;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Other;Male;0;0;35;United-States;>50K +63;Local-gov;214143;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Cuba;<=50K +18;Private;45316;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +19;Private;311974;1st-4th;2;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;Mexico;<=50K +49;Self-emp-not-inc;48495;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +27;Private;115945;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +49;Local-gov;170846;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;142922;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +71;?;181301;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;286675;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;233168;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;46;United-States;>50K +30;Private;177304;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +46;Private;336984;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;17;United-States;<=50K +32;Self-emp-not-inc;379412;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;180778;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;75;United-States;<=50K +25;Private;141876;Masters;14;Never-married;Prof-specialty;Unmarried;White;Male;0;0;45;?;<=50K +22;Private;228306;Some-college;10;Married-AF-spouse;Other-service;Wife;White;Female;0;0;40;United-States;>50K +32;Private;329993;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +40;Private;247469;Doctorate;16;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;30;United-States;>50K +20;Private;155775;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +34;Private;81223;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;48;United-States;<=50K +40;Private;236021;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;State-gov;103371;Assoc-voc;11;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;199480;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +53;Private;152657;10th;6;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +42;Federal-gov;460214;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +38;Private;91039;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +41;Private;197372;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +64;?;267198;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;16;United-States;<=50K +30;State-gov;111883;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;66917;11th;7;Married-civ-spouse;Farming-fishing;Own-child;White;Male;0;0;40;Mexico;<=50K +19;Private;292583;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +20;Private;391679;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;60;United-States;<=50K +35;Private;475324;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +33;Self-emp-not-inc;218164;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Federal-gov;65706;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;38;United-States;<=50K +50;Self-emp-not-inc;156606;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;30;United-States;<=50K +23;Private;200967;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +30;Local-gov;164493;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;10;United-States;<=50K +33;Private;547886;Bachelors;13;Separated;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;232145;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;96421;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;24;Outlying-US(Guam-USVI-etc);<=50K +33;Private;554206;Some-college;10;Never-married;Tech-support;Not-in-family;Black;Male;0;0;40;Philippines;<=50K +50;Local-gov;234143;Masters;14;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;45;United-States;>50K +23;Private;380544;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;103886;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +50;State-gov;54709;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;46;United-States;<=50K +26;Private;276548;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;20;United-States;<=50K +37;Private;114605;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;323713;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;261382;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;223548;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;30;Mexico;<=50K +44;Private;107218;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +28;Self-emp-not-inc;31717;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;328947;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Private;148431;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;121602;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;83425;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;57898;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;30;United-States;<=50K +40;State-gov;175304;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +66;Self-emp-inc;102663;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;99175;11th;7;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +37;Private;208358;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +69;Private;361561;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;3;United-States;<=50K +23;Private;215115;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Federal-gov;207066;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +37;Federal-gov;160910;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;64879;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;430035;9th;5;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;54;Mexico;<=50K +37;State-gov;74163;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +37;Self-emp-inc;98389;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;386019;9th;5;Never-married;Farming-fishing;Unmarried;White;Male;0;0;70;United-States;<=50K +17;Private;112795;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +48;Private;332465;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;United-States;<=50K +17;Private;38611;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;23;United-States;<=50K +35;Private;24106;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +68;?;108683;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;12;United-States;>50K +35;Self-emp-not-inc;241998;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +53;Private;312446;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +43;Private;69333;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +36;Private;172538;Masters;14;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;275884;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +45;Private;43479;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;<=50K +56;Private;235197;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +36;Private;170376;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +22;Private;325179;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;50;United-States;<=50K +33;Private;141841;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;36;United-States;<=50K +48;Private;207817;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;32;Columbia;<=50K +20;Private;137974;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +47;Private;293623;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Dominican-Republic;<=50K +20;Private;37783;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +44;Federal-gov;308027;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;149218;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;77;United-States;<=50K +45;Local-gov;61885;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;37;United-States;>50K +27;State-gov;291196;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +41;Private;45366;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;72;United-States;>50K +20;Private;203027;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;55;United-States;<=50K +50;Private;155574;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;State-gov;193565;Masters;14;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;123598;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +44;Private;456236;Masters;14;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;163229;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +28;Local-gov;419740;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;52;United-States;<=50K +33;Private;31449;Assoc-acdm;12;Divorced;Machine-op-inspct;Unmarried;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +35;Private;204163;Some-college;10;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;55;United-States;<=50K +17;Private;177629;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +25;Private;186370;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;188307;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;55481;Masters;14;Never-married;Tech-support;Unmarried;White;Male;0;0;45;Nicaragua;<=50K +48;Private;119471;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;56;Philippines;>50K +61;Local-gov;167347;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +41;Private;184378;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;348960;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;50;United-States;<=50K +24;Local-gov;69640;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;297457;HS-grad;9;Never-married;Adm-clerical;Own-child;Black;Male;0;0;40;United-States;<=50K +18;Private;279593;11th;7;Never-married;Prof-specialty;Own-child;White;Female;0;0;2;United-States;<=50K +20;Private;211968;Some-college;10;Never-married;Prof-specialty;Own-child;White;Female;0;0;15;United-States;<=50K +18;Private;194561;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +23;Private;140414;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;State-gov;462832;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Black;Female;0;0;40;Trinadad&Tobago;<=50K +36;Private;48972;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Self-emp-not-inc;35032;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +47;Private;228583;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;?;<=50K +35;Private;108140;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;State-gov;112497;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;<=50K +47;Federal-gov;142581;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;>50K +26;Private;147982;11th;7;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;State-gov;440129;Some-college;10;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;>50K +46;Private;200734;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;35;Trinadad&Tobago;<=50K +49;Private;31807;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;166153;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +45;Self-emp-inc;212954;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +70;Self-emp-not-inc;303588;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;20;United-States;<=50K +19;Private;96176;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +46;Private;184632;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +20;Private;137618;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;35;United-States;<=50K +17;Private;160029;11th;7;Never-married;Other-service;Other-relative;White;Female;0;0;22;United-States;<=50K +43;Private;178780;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;49;United-States;>50K +19;Private;39756;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +37;Private;35309;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;117253;HS-grad;9;Widowed;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Local-gov;303212;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +24;Private;214542;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;60;Canada;<=50K +31;Private;342019;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;401508;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +30;Self-emp-not-inc;85708;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;115677;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;White;Male;0;0;32;United-States;<=50K +25;Private;144259;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;50;United-States;<=50K +22;Private;197583;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;20;United-States;<=50K +21;State-gov;142766;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +67;?;132626;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;6;United-States;<=50K +35;Self-emp-inc;185621;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;60;United-States;>50K +54;Local-gov;29887;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;56;United-States;<=50K +36;Private;117381;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;211482;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;209535;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +56;Federal-gov;187873;Masters;14;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +19;Private;174732;Some-college;10;Never-married;Other-service;Own-child;Black;Male;0;0;25;United-States;<=50K +58;Private;110213;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;>50K +35;Private;162601;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;108438;10th;6;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +40;Self-emp-inc;132222;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;174394;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +71;Self-emp-not-inc;322789;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Amer-Indian-Eskimo;Male;0;0;35;United-States;<=50K +51;Federal-gov;72436;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;57;United-States;>50K +27;?;60726;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +20;Private;190273;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +33;?;393376;11th;7;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;140571;Assoc-voc;11;Divorced;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;584790;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +23;Private;197666;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;24;Greece;<=50K +42;Private;192569;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;39;United-States;>50K +19;?;113915;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;10;United-States;<=50K +38;Local-gov;287658;Masters;14;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;Jamaica;<=50K +22;Private;192455;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +36;Private;317040;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;54;United-States;<=50K +30;Federal-gov;48458;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +54;Private;425804;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +58;Private;72812;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;89040;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +62;Local-gov;164518;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +51;Private;182740;HS-grad;9;Divorced;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +52;Private;361875;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +25;Private;197130;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +26;Private;340335;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;293984;10th;6;Married-civ-spouse;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +59;State-gov;261584;Bachelors;13;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;Outlying-US(Guam-USVI-etc);<=50K +21;Private;170302;HS-grad;9;Never-married;Farming-fishing;Other-relative;White;Male;0;0;50;United-States;<=50K +45;Private;481987;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;18;United-States;>50K +26;Private;88449;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;<=50K +68;Self-emp-not-inc;261897;10th;6;Widowed;Farming-fishing;Unmarried;White;Male;0;0;20;United-States;<=50K +60;Private;250552;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +65;Private;88513;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;18;United-States;<=50K +41;Private;168293;Masters;14;Divorced;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +34;Private;283921;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +28;Private;407043;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;63745;Assoc-voc;11;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +57;Private;49893;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +37;Private;241962;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;338416;10th;6;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;60;United-States;<=50K +21;?;212888;11th;7;Married-civ-spouse;?;Wife;White;Female;0;0;56;United-States;<=50K +57;Federal-gov;310320;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;48;United-States;>50K +51;Private;64643;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;?;<=50K +56;Private;125000;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +32;Private;286675;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +18;Private;165532;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;15;United-States;<=50K +48;Private;349986;Assoc-voc;11;Married-spouse-absent;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +46;Private;213140;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +41;Federal-gov;219155;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;India;>50K +33;Private;183612;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;20;United-States;<=50K +33;Private;391114;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;219632;5th-6th;3;Married-spouse-absent;Machine-op-inspct;Other-relative;White;Male;0;0;40;Mexico;<=50K +40;Private;799281;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;38;United-States;<=50K +42;Private;657397;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +51;Private;168660;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +44;Private;191149;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;57;United-States;<=50K +37;Private;356824;HS-grad;9;Separated;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +25;Private;191782;11th;7;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;40;United-States;<=50K +52;Private;204226;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +28;Private;496526;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;84154;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +37;Federal-gov;45937;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +31;Private;130021;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;63021;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;35;United-States;<=50K +25;Private;367306;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +38;Private;65624;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Self-emp-not-inc;144928;HS-grad;9;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +22;Private;117747;Some-college;10;Never-married;Craft-repair;Other-relative;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +18;Private;266681;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;152035;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;190023;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +43;Private;233130;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;20;United-States;<=50K +21;Private;149637;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +62;Federal-gov;224277;Some-college;10;Widowed;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;121559;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Self-emp-not-inc;230951;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;Private;345285;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +65;Self-emp-not-inc;28367;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +31;Private;243773;9th;5;Never-married;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +56;Private;151474;9th;5;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Private;135465;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +22;Private;210781;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +36;Local-gov;359001;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;48;United-States;<=50K +48;Private;119471;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;India;>50K +30;Private;226396;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;<=50K +35;Private;283122;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;<=50K +37;Self-emp-not-inc;326400;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +32;?;169186;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;5;United-States;<=50K +56;Private;158752;Masters;14;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;<=50K +29;?;208406;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;35;United-States;<=50K +41;Private;96741;Assoc-acdm;12;Divorced;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +38;State-gov;255191;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;177733;9th;5;Separated;Machine-op-inspct;Unmarried;White;Female;0;0;35;Dominican-Republic;<=50K +36;?;187203;Assoc-voc;11;Divorced;?;Own-child;White;Male;0;0;50;United-States;<=50K +42;Private;168515;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;122672;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +21;Private;195199;HS-grad;9;Never-married;Prof-specialty;Own-child;White;Female;0;0;30;United-States;<=50K +69;Local-gov;179813;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;10;United-States;<=50K +32;Private;178623;Assoc-acdm;12;Never-married;Sales;Not-in-family;Black;Female;0;0;46;Trinadad&Tobago;<=50K +50;Private;41890;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;373050;12th;8;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +45;Private;80430;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +31;Private;198613;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;35;United-States;<=50K +24;Private;330571;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;<=50K +28;Private;209205;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;>50K +21;Private;132243;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Female;0;0;5;United-States;<=50K +43;Self-emp-not-inc;237670;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;25;United-States;<=50K +22;Private;193586;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +21;Self-emp-not-inc;74538;Some-college;10;Never-married;Tech-support;Not-in-family;White;Male;0;0;25;United-States;<=50K +37;Private;89718;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +34;Private;93169;Some-college;10;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +43;Private;328570;Some-college;10;Divorced;Machine-op-inspct;Unmarried;Black;Female;0;0;38;United-States;<=50K +25;Private;312157;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;193459;11th;7;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;236804;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;126223;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +51;State-gov;172281;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;35;United-States;>50K +64;Private;153894;Bachelors;13;Never-married;Sales;Unmarried;White;Female;0;0;40;Peru;<=50K +35;Private;331395;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +32;Private;318647;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +20;Private;332931;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;United-States;<=50K +66;Self-emp-inc;76212;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +31;Private;301168;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Italy;<=50K +22;Private;440969;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;24;United-States;<=50K +32;Private;154950;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;218343;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +21;Private;239577;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;247936;HS-grad;9;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;2;Taiwan;<=50K +24;Private;182342;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;?;289116;Some-college;10;Never-married;?;Own-child;White;Female;0;0;5;United-States;<=50K +30;Private;487330;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;30;United-States;<=50K +17;?;34019;10th;6;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +17;?;250541;11th;7;Never-married;?;Own-child;Black;Male;0;0;8;United-States;<=50K +21;Self-emp-not-inc;318987;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +56;Self-emp-not-inc;140558;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;76855;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +52;Private;308764;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +50;Federal-gov;339905;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +55;Private;156430;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +45;?;98265;HS-grad;9;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;187167;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;184078;12th;8;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;108140;Bachelors;13;Divorced;Tech-support;Other-relative;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;313702;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;252752;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Female;0;0;45;United-States;<=50K +52;Private;111700;Some-college;10;Divorced;Sales;Other-relative;White;Female;0;0;20;United-States;>50K +45;Private;361842;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +17;Private;231438;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +20;Private;178469;HS-grad;9;Never-married;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;15;?;<=50K +64;Local-gov;116620;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;25;United-States;<=50K +74;Self-emp-not-inc;109101;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;4;United-States;<=50K +44;Private;147265;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;State-gov;314645;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +23;Private;444554;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;50;United-States;<=50K +27;Private;129629;Assoc-voc;11;Never-married;Tech-support;Other-relative;White;Female;0;0;36;United-States;<=50K +34;Private;106761;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +18;Private;189924;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;24;United-States;<=50K +33;Private;311194;11th;7;Never-married;Sales;Unmarried;Black;Female;0;0;17;United-States;<=50K +50;Self-emp-not-inc;89737;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +47;Private;49298;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;Private;251923;11th;7;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +34;Private;180284;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;50;United-States;<=50K +56;State-gov;68658;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +64;Private;203783;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;8;United-States;<=50K +23;Private;250037;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Female;0;0;50;United-States;<=50K +33;Private;158688;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;214781;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +57;State-gov;109015;12th;8;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;194630;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Private;239375;Bachelors;13;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +32;Self-emp-not-inc;182926;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;117222;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;15;United-States;<=50K +30;Private;110643;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;52;United-States;<=50K +56;Self-emp-not-inc;170217;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;45;United-States;<=50K +34;Private;193285;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;161075;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +59;Private;322691;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +19;Private;229431;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;11;United-States;<=50K +60;?;106282;9th;5;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;105694;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;42;United-States;<=50K +24;Private;199883;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +41;State-gov;100800;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +23;Private;256278;7th-8th;4;Married-civ-spouse;Handlers-cleaners;Other-relative;Other;Female;0;0;30;El-Salvador;<=50K +51;Self-emp-inc;129525;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;40;?;<=50K +18;Private;285013;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;10;United-States;<=50K +28;Private;248911;Some-college;10;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;?;<=50K +38;Private;219902;HS-grad;9;Separated;Transport-moving;Unmarried;Black;Female;0;0;30;United-States;<=50K +29;Private;375482;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;England;<=50K +25;Private;169124;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +31;Private;183000;Prof-school;15;Never-married;Tech-support;Not-in-family;White;Male;0;0;55;United-States;<=50K +34;Private;28053;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +41;Private;212894;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Guatemala;<=50K +62;Private;223975;7th-8th;4;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +58;Private;357788;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;406811;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;40;Canada;<=50K +24;Private;154422;Bachelors;13;Never-married;Exec-managerial;Own-child;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +47;Private;140644;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +19;Private;355477;HS-grad;9;Never-married;Other-service;Own-child;Black;Male;0;0;25;United-States;<=50K +32;Private;151773;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +51;State-gov;341548;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;512771;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +60;?;141580;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;48988;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;201022;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;50;United-States;>50K +20;Private;82777;HS-grad;9;Married-civ-spouse;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;152676;7th-8th;4;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;Puerto-Rico;<=50K +18;Private;115815;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +23;Private;168009;10th;6;Married-civ-spouse;Machine-op-inspct;Own-child;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +28;Private;213152;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;?;>50K +55;Private;89690;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +40;Private;126868;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +52;Private;95128;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Private;185567;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;40;United-States;>50K +35;Private;216256;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;<=50K +45;Private;182541;Some-college;10;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;48;United-States;<=50K +39;Private;172855;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +54;Private;68684;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +42;Private;364832;7th-8th;4;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;?;264300;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;20;United-States;<=50K +59;Self-emp-inc;349910;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;276218;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +22;Private;251196;Some-college;10;Never-married;Protective-serv;Own-child;Black;Female;0;0;20;United-States;<=50K +33;Private;196898;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;58343;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +18;Self-emp-inc;101061;11th;7;Never-married;Farming-fishing;Own-child;White;Male;0;0;70;United-States;<=50K +46;Private;415051;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;60;United-States;>50K +24;Private;174043;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;129460;Assoc-voc;11;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;30;Ecuador;<=50K +21;State-gov;110946;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;43;United-States;<=50K +22;Private;313873;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;30;United-States;<=50K +56;Federal-gov;255386;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Laos;<=50K +21;Private;191497;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +17;Private;128617;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;26;United-States;<=50K +29;Private;368949;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;?;>50K +28;Local-gov;263600;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +62;Private;257277;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +30;Local-gov;289442;HS-grad;9;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;?;162667;11th;7;Never-married;?;Unmarried;White;Male;0;0;40;El-Salvador;<=50K +18;Local-gov;466325;11th;7;Never-married;Adm-clerical;Own-child;White;Male;0;0;12;United-States;<=50K +54;Private;142169;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +49;Private;252079;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +33;State-gov;119628;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;50;Hong;<=50K +50;Private;175804;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +57;Private;70720;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;78;United-States;<=50K +50;State-gov;201513;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +45;Private;257609;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +41;Private;124692;Some-college;10;Married-civ-spouse;Exec-managerial;Own-child;White;Male;0;0;40;United-States;>50K +23;Private;268525;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +23;Private;250630;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;180277;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Hungary;<=50K +39;Self-emp-not-inc;191342;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;South;<=50K +46;Private;153254;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +18;Private;362600;5th-6th;3;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +68;Private;171933;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +62;Private;211408;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +43;Private;48193;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;22463;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;440969;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +21;State-gov;164922;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +41;Local-gov;134524;Assoc-voc;11;Divorced;Craft-repair;Unmarried;White;Female;0;0;45;United-States;<=50K +61;Private;176689;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;220993;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +21;Private;512828;HS-grad;9;Never-married;Protective-serv;Own-child;Black;Male;0;0;40;United-States;<=50K +36;State-gov;422275;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Mexico;<=50K +37;Local-gov;65291;Assoc-voc;11;Never-married;Protective-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Federal-gov;181657;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +55;Private;190257;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;53;United-States;>50K +21;Private;238068;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;337046;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;187248;HS-grad;9;Married-civ-spouse;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +20;?;250037;Some-college;10;Never-married;?;Own-child;White;Female;0;0;18;?;<=50K +23;Private;260617;10th;6;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;216999;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;State-gov;121265;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Local-gov;184466;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +45;Private;297676;Assoc-acdm;12;Widowed;Sales;Unmarried;White;Female;0;0;40;Cuba;<=50K +22;Local-gov;121144;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;18;United-States;<=50K +27;Private;113054;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;43;United-States;<=50K +36;Private;256636;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;152246;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Amer-Indian-Eskimo;Male;0;0;52;United-States;<=50K +38;Private;108140;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +20;?;203353;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +47;Private;207207;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +21;Private;115420;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +33;Private;80058;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Local-gov;48520;Assoc-acdm;12;Never-married;Protective-serv;Unmarried;White;Male;0;0;40;United-States;<=50K +61;Private;411652;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Mexico;<=50K +46;Private;154405;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;45;United-States;<=50K +55;Local-gov;104917;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +19;State-gov;261422;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +39;Private;48915;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +61;Private;172037;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;144833;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;275116;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +61;?;72886;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;38;United-States;>50K +61;Private;103575;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;37;United-States;<=50K +54;Private;200783;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +50;Self-emp-inc;152810;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;70;Germany;<=50K +37;Local-gov;44694;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;45;United-States;>50K +17;?;48703;11th;7;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +56;Private;91905;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;4;United-States;<=50K +31;Private;168906;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;>50K +32;State-gov;147215;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;55;United-States;>50K +28;Private;153546;11th;7;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;35595;Assoc-voc;11;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;225507;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +42;Private;345504;Assoc-voc;11;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +64;Private;137205;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +29;Private;327779;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;20;United-States;<=50K +41;?;213416;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;32;Mexico;<=50K +45;Private;362883;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +48;Private;131309;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +44;Private;188331;Some-college;10;Separated;Tech-support;Not-in-family;White;Female;0;0;38;United-States;<=50K +34;Federal-gov;194740;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;43711;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Private;233923;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +51;Private;84278;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +34;Private;180284;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;>50K +56;Self-emp-inc;75214;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;32;United-States;>50K +42;Private;284758;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Self-emp-inc;188330;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +40;Private;198096;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +29;Private;163265;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +35;Federal-gov;128608;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;107460;HS-grad;9;Separated;Exec-managerial;Unmarried;White;Female;0;0;37;United-States;<=50K +51;Private;251841;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;43;United-States;<=50K +28;Private;403671;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;40;Mexico;<=50K +58;Private;159378;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;>50K +24;Private;170070;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;25;United-States;<=50K +46;State-gov;192323;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;Private;135796;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;48;United-States;<=50K +22;Private;232985;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;20;United-States;<=50K +28;Private;34532;Bachelors;13;Never-married;Tech-support;Not-in-family;Black;Male;0;0;30;Jamaica;<=50K +17;?;371316;10th;6;Never-married;?;Own-child;White;Male;0;0;25;United-States;<=50K +23;Private;236994;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;60;United-States;<=50K +19;Private;208366;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +66;State-gov;102640;HS-grad;9;Widowed;Prof-specialty;Unmarried;Black;Female;0;0;35;United-States;<=50K +38;Private;111377;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;<=50K +39;Federal-gov;472166;Some-college;10;Divorced;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;?;86551;12th;8;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;294919;HS-grad;9;Divorced;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +22;Private;408383;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +36;Private;255454;HS-grad;9;Never-married;Craft-repair;Own-child;Black;Male;0;0;30;United-States;<=50K +32;Private;193260;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +29;?;191935;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Local-gov;125461;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +51;Private;97005;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;183319;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +32;State-gov;167049;12th;8;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;185216;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +51;Private;161838;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;57;United-States;<=50K +38;Private;165848;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;44;United-States;<=50K +21;Private;138816;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;20;United-States;<=50K +33;Self-emp-not-inc;99761;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;15;United-States;<=50K +34;Private;112139;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;129020;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +38;?;365465;Assoc-voc;11;Never-married;?;Own-child;White;Male;0;0;15;United-States;<=50K +27;Self-emp-not-inc;259873;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;60;United-States;>50K +35;Self-emp-inc;89622;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +29;State-gov;201556;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +40;Private;176286;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;192894;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;30;United-States;<=50K +37;Private;172232;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +44;Private;215304;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +25;Private;185952;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +38;Private;216845;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;42;United-States;<=50K +34;Local-gov;35683;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;10;United-States;<=50K +46;Private;102359;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +20;Private;200089;5th-6th;3;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;30;Guatemala;<=50K +47;State-gov;207120;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;38;United-States;>50K +46;Private;295334;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +34;Private;234537;Assoc-acdm;12;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +61;Private;142922;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +55;State-gov;181641;Some-college;10;Divorced;Prof-specialty;Not-in-family;Black;Female;0;0;37;United-States;<=50K +36;Private;185325;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;35;United-States;<=50K +22;Private;379778;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;176117;Some-college;10;Never-married;Sales;Own-child;Black;Female;0;0;35;United-States;<=50K +33;Private;100228;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Black;Male;0;0;40;United-States;<=50K +27;Private;150296;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;32;United-States;<=50K +20;Private;653574;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;33;El-Salvador;<=50K +38;Private;175441;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +30;Private;333119;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;89154;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;42;El-Salvador;<=50K +60;Private;198727;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;30;United-States;<=50K +43;Private;87284;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;180686;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +23;Private;227070;Some-college;10;Never-married;Other-service;Unmarried;White;Female;0;0;48;El-Salvador;<=50K +25;Local-gov;348986;HS-grad;9;Never-married;Handlers-cleaners;Other-relative;Black;Male;0;0;40;United-States;<=50K +38;Private;96185;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;32;United-States;<=50K +22;Private;112693;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +23;Private;417605;5th-6th;3;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +61;Self-emp-not-inc;140300;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;44;United-States;<=50K +28;Private;340408;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;46;United-States;<=50K +17;?;187539;11th;7;Never-married;?;Own-child;White;Female;0;0;10;United-States;<=50K +21;Private;237051;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +49;Private;175622;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;389725;12th;8;Divorced;Craft-repair;Own-child;White;Male;0;0;35;United-States;<=50K +23;Private;182812;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;Dominican-Republic;<=50K +34;Local-gov;93886;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;46;United-States;>50K +21;Private;502837;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Female;0;0;40;Peru;<=50K +27;State-gov;212232;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;40;United-States;>50K +57;Private;300104;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;84;United-States;>50K +22;Private;156933;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;25;United-States;<=50K +20;Private;286734;Some-college;10;Never-married;Adm-clerical;Not-in-family;Other;Female;0;0;35;United-States;<=50K +49;Self-emp-inc;143482;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;65;United-States;>50K +38;Private;226357;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;104892;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;272090;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +57;Private;204816;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +56;Private;230039;7th-8th;4;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +41;Private;242619;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;80;United-States;<=50K +50;Self-emp-not-inc;131982;HS-grad;9;Married-civ-spouse;Other-service;Husband;Asian-Pac-Islander;Male;0;0;60;South;<=50K +33;Private;87310;9th;5;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;134566;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;<=50K +35;Private;239409;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;203717;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +30;Self-emp-not-inc;65278;Assoc-acdm;12;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +35;Self-emp-inc;135289;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;246974;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;180060;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;Yugoslavia;<=50K +24;Private;118023;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +47;Private;102308;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +47;Private;45564;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +18;Private;137646;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +18;Private;237646;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +31;Local-gov;189843;HS-grad;9;Divorced;Protective-serv;Not-in-family;White;Male;0;0;47;United-States;>50K +43;Self-emp-not-inc;118261;Masters;14;Divorced;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +39;Private;106347;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;316471;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;50;United-States;<=50K +22;Private;50058;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Self-emp-not-inc;182089;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;85;United-States;<=50K +36;Private;186865;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +20;State-gov;158206;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;<=50K +59;Local-gov;50929;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +60;Private;132529;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;260696;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;231180;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;60;United-States;<=50K +40;Private;223277;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;50;United-States;>50K +47;Private;46044;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;168071;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +20;Private;79691;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +75;?;114204;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;13;United-States;<=50K +25;Private;124111;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +47;Private;104521;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +29;Self-emp-not-inc;128516;Assoc-acdm;12;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;>50K +34;Private;112564;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +45;State-gov;32186;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;269284;Assoc-acdm;12;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +41;State-gov;175537;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;Black;Female;0;0;38;United-States;<=50K +29;Private;444304;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +17;Private;27415;11th;7;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Male;0;0;20;United-States;<=50K +39;Private;174343;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;148143;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;Private;209213;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;?;<=50K +20;Private;165097;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;167651;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Local-gov;29075;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +22;Private;396895;5th-6th;3;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;Mexico;<=50K +66;State-gov;71075;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +35;Private;129573;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +40;Local-gov;183765;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;>50K +21;Private;164991;HS-grad;9;Divorced;Sales;Unmarried;Amer-Indian-Eskimo;Female;0;0;38;United-States;<=50K +51;Local-gov;154891;HS-grad;9;Divorced;Protective-serv;Unmarried;White;Male;0;0;52;United-States;<=50K +34;Private;200117;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;176389;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;342567;Bachelors;13;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;178841;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +42;Local-gov;191149;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;29702;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +21;Private;157893;HS-grad;9;Never-married;Transport-moving;Own-child;White;Female;0;0;40;United-States;<=50K +64;Local-gov;31993;7th-8th;4;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;10;United-States;<=50K +23;Private;39615;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;10;United-States;<=50K +29;Private;200511;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +44;Self-emp-not-inc;47818;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;60;United-States;<=50K +28;Private;183155;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +33;Self-emp-inc;374905;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +35;Private;128876;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;202872;10th;6;Married-spouse-absent;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +42;Private;153414;Bachelors;13;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;24790;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;99;United-States;>50K +32;Private;316769;11th;7;Never-married;Other-service;Unmarried;Black;Female;0;0;40;Jamaica;<=50K +37;Private;126569;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;128538;11th;7;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +24;Private;234640;Assoc-voc;11;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +29;?;65372;Some-college;10;Divorced;?;Unmarried;White;Female;0;0;40;United-States;<=50K +45;Private;343377;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +52;Federal-gov;30731;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +35;Private;412379;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Self-emp-inc;112320;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +63;Private;181929;HS-grad;9;Widowed;Exec-managerial;Unmarried;White;Male;0;0;50;United-States;>50K +32;Local-gov;100135;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;35;United-States;>50K +72;?;402306;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;32;Canada;<=50K +35;?;98389;Some-college;10;Never-married;?;Unmarried;White;Male;0;0;10;United-States;<=50K +29;Private;179565;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +70;Private;102610;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;32;United-States;<=50K +36;Private;150548;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;30;United-States;<=50K +49;Local-gov;67001;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;138557;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;170456;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;35;Italy;<=50K +42;Private;66006;10th;6;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;40;United-States;<=50K +25;State-gov;176077;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;37;United-States;<=50K +32;Private;218322;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +25;Self-emp-inc;181691;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;?;<=50K +30;Private;161690;Assoc-voc;11;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;?;242736;Assoc-acdm;12;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +38;Self-emp-not-inc;67317;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +37;Private;99357;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +56;Private;170070;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +52;State-gov;231166;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;62339;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +29;State-gov;118520;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;42;United-States;<=50K +45;Private;155659;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +23;Local-gov;157331;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;341762;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +30;Private;164190;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;42;United-States;<=50K +45;Private;83064;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;304283;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;436798;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;29302;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;40;?;<=50K +42;Private;79036;HS-grad;9;Divorced;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +72;Private;165622;Some-college;10;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;25;United-States;<=50K +21;?;177287;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;22966;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +27;Private;59068;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;77336;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Local-gov;96524;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +17;Private;143868;9th;5;Never-married;Other-service;Own-child;Black;Male;0;0;40;United-States;<=50K +48;Private;121424;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +39;Private;176279;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;205100;7th-8th;4;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;?;<=50K +57;Private;353881;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +44;Local-gov;177937;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;36;United-States;>50K +20;?;122244;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;28;United-States;<=50K +49;Private;125892;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;355728;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;44;United-States;<=50K +18;?;245274;Some-college;10;Never-married;?;Own-child;White;Male;0;0;16;United-States;<=50K +18;Private;240330;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;18;United-States;<=50K +51;Private;182944;HS-grad;9;Widowed;Tech-support;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;264498;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;166971;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;<=50K +39;Private;33975;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +42;Self-emp-not-inc;215219;11th;7;Separated;Other-service;Unmarried;White;Female;0;0;30;United-States;<=50K +63;?;331527;10th;6;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;162494;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;45;United-States;>50K +27;Local-gov;85918;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;68;United-States;<=50K +20;Private;182342;Some-college;10;Never-married;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +49;Private;129640;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +70;?;133536;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;28;United-States;<=50K +47;Private;102583;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +35;Private;111387;9th;5;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;241752;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;?;334593;Some-college;10;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +43;Private;101950;Bachelors;13;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +60;Local-gov;212856;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +53;Private;183973;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;>50K +47;Private;142061;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;158615;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;29145;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;40135;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +23;Private;224640;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;?;146651;HS-grad;9;Married-civ-spouse;?;Own-child;White;Female;0;0;15;United-States;<=50K +29;Private;167737;HS-grad;9;Never-married;Transport-moving;Other-relative;White;Male;0;0;50;United-States;<=50K +23;Private;60331;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;187167;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;35;United-States;<=50K +18;?;157131;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;12;United-States;<=50K +27;Local-gov;255237;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +56;?;192325;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +40;Private;163342;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;70;United-States;<=50K +31;Private;129775;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;<=50K +25;Private;397317;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;745768;Some-college;10;Never-married;Protective-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +38;Private;141550;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Private;35576;HS-grad;9;Widowed;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;376383;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;35;Mexico;<=50K +48;Self-emp-not-inc;200825;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;30;United-States;>50K +34;?;362787;HS-grad;9;Never-married;?;Unmarried;Black;Female;0;0;35;United-States;<=50K +46;Private;116789;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +26;Private;160300;HS-grad;9;Married-spouse-absent;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +47;Private;362654;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +21;?;107801;Some-college;10;Never-married;?;Own-child;White;Female;0;0;3;United-States;<=50K +31;Local-gov;224234;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +68;Private;211162;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;147638;Bachelors;13;Never-married;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;40;Hong;<=50K +42;Private;104647;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;67365;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +31;Self-emp-not-inc;268482;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +28;State-gov;288731;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +36;Private;231082;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +42;State-gov;333530;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;>50K +62;Private;214288;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;118023;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;24;United-States;<=50K +21;Private;187088;Some-college;10;Never-married;Adm-clerical;Own-child;Other;Female;0;0;20;Cuba;<=50K +60;?;174073;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;133833;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +30;Private;229772;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +64;Private;210082;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;122999;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Male;0;0;40;United-States;<=50K +27;Private;44767;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;200574;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;44;United-States;<=50K +58;Private;236596;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;33124;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;99;United-States;<=50K +50;Local-gov;308764;HS-grad;9;Widowed;Transport-moving;Unmarried;White;Female;0;0;40;United-States;<=50K +27;Private;103524;HS-grad;9;Separated;Handlers-cleaners;Unmarried;White;Male;0;0;40;United-States;<=50K +31;?;99483;HS-grad;9;Never-married;?;Own-child;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +50;Private;230951;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;99355;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +33;Private;857532;12th;8;Never-married;Protective-serv;Own-child;Black;Male;0;0;40;United-States;<=50K +19;Private;198943;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;35;United-States;<=50K +30;Private;311696;11th;7;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;30;United-States;<=50K +38;Private;252897;Some-college;10;Divorced;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +42;Self-emp-not-inc;39539;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;>50K +49;Self-emp-inc;122066;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;25;United-States;<=50K +24;Private;202721;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +29;Private;197565;Assoc-voc;11;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +38;Federal-gov;190895;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;?;>50K +25;Self-emp-inc;158751;Assoc-voc;11;Never-married;Transport-moving;Unmarried;White;Male;0;0;55;United-States;<=50K +51;State-gov;243631;10th;6;Married-civ-spouse;Craft-repair;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +17;?;219277;11th;7;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +19;Private;45381;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;8;United-States;<=50K +38;Private;167482;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +60;Private;225014;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Self-emp-not-inc;405083;HS-grad;9;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Federal-gov;24153;10th;6;Married-civ-spouse;Other-service;Wife;Amer-Indian-Eskimo;Female;0;0;40;United-States;<=50K +36;Private;126569;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Ecuador;>50K +57;?;137658;HS-grad;9;Married-civ-spouse;?;Husband;Other;Male;0;0;5;Columbia;<=50K +24;Private;315476;Assoc-acdm;12;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;248186;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +29;Self-emp-inc;206903;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;>50K +20;Private;191910;HS-grad;9;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +21;Private;145119;Some-college;10;Never-married;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;20;United-States;<=50K +20;Private;130840;10th;6;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +42;Private;33126;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +20;Private;334105;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;10;United-States;<=50K +19;Local-gov;354104;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +34;Private;111985;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +40;Local-gov;321187;Bachelors;13;Never-married;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +33;Private;138142;Some-college;10;Separated;Other-service;Unmarried;Black;Female;0;0;25;United-States;<=50K +36;Private;296999;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Female;0;0;37;United-States;<=50K +41;Local-gov;174491;HS-grad;9;Separated;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +34;State-gov;173266;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +33;Private;25610;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;Other;Male;0;0;40;Japan;>50K +47;Private;187563;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;196344;1st-4th;2;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;Mexico;<=50K +40;Private;205047;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;>50K +28;Private;715938;Bachelors;13;Never-married;Craft-repair;Own-child;Black;Male;0;0;40;United-States;<=50K +62;Self-emp-not-inc;224520;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;90;United-States;>50K +29;Private;229656;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +46;Private;97883;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;131298;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;60;United-States;<=50K +57;Federal-gov;197875;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;172766;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +28;Local-gov;175796;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;51973;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +22;Private;291979;11th;7;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;State-gov;180752;Bachelors;13;Never-married;Protective-serv;Unmarried;Black;Female;0;0;40;United-States;<=50K +50;Private;234657;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +18;Private;39411;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;24;United-States;<=50K +52;State-gov;334273;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +41;Private;192779;7th-8th;4;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;?;<=50K +21;?;105312;HS-grad;9;Never-married;?;Not-in-family;White;Female;0;0;20;United-States;<=50K +34;Self-emp-not-inc;182714;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;55;United-States;>50K +21;Private;231866;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;102102;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +57;?;50248;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +61;Local-gov;195519;Masters;14;Never-married;Prof-specialty;Unmarried;White;Female;0;0;25;United-States;<=50K +22;State-gov;34310;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;25;United-States;<=50K +33;?;314913;11th;7;Divorced;?;Own-child;White;Male;0;0;53;United-States;<=50K +25;Private;110978;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;37;India;>50K +17;Private;79682;10th;6;Never-married;Priv-house-serv;Other-relative;White;Male;0;0;30;United-States;<=50K +40;Private;192259;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;35;United-States;<=50K +31;Local-gov;190228;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +42;Private;118947;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +53;Private;55861;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +37;Private;238433;1st-4th;2;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;Cuba;<=50K +37;State-gov;166744;HS-grad;9;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;20;United-States;<=50K +54;Private;144586;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +36;Private;134367;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +46;Private;133616;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +46;Private;203039;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +32;Private;217460;9th;5;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +42;State-gov;212027;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +37;Local-gov;126569;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;289960;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +54;Private;174102;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;181716;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +46;Local-gov;172822;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;293091;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;107443;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Portugal;<=50K +59;Private;95283;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;65278;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +26;Private;134945;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;40;United-States;<=50K +46;Private;169324;HS-grad;9;Separated;Other-service;Not-in-family;Black;Female;0;0;45;Jamaica;<=50K +44;State-gov;98989;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Amer-Indian-Eskimo;Male;0;0;38;United-States;>50K +24;Private;143436;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;24;United-States;<=50K +32;Private;143604;10th;6;Married-spouse-absent;Other-service;Not-in-family;Black;Female;0;0;37;United-States;<=50K +35;Private;226311;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Private;94610;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;30;United-States;>50K +56;Self-emp-not-inc;26716;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;>50K +26;Private;160261;Masters;14;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;20;India;<=50K +52;Private;154342;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +38;Self-emp-not-inc;89202;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;174704;HS-grad;9;Divorced;Sales;Unmarried;Black;Male;0;0;50;United-States;<=50K +53;Private;153486;HS-grad;9;Separated;Transport-moving;Not-in-family;White;Male;0;0;30;United-States;<=50K +27;Private;360097;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Private;230356;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;163870;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;199753;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;>50K +20;Private;333505;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;Nicaragua;<=50K +60;Local-gov;149281;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;138514;Assoc-voc;11;Divorced;Tech-support;Unmarried;Black;Female;0;0;48;United-States;<=50K +57;Federal-gov;66504;Prof-school;15;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +59;Private;206487;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +37;Private;170020;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;217605;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Wife;White;Female;0;0;40;United-States;<=50K +43;Private;145711;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;72;United-States;>50K +17;Private;169155;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +45;Private;34127;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +18;Private;110142;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +52;Private;222646;12th;8;Separated;Machine-op-inspct;Other-relative;White;Female;0;0;40;Cuba;<=50K +18;Private;182643;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;9;United-States;<=50K +20;Private;303565;Some-college;10;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;40;Germany;<=50K +34;Private;140092;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +19;Private;178811;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Female;0;0;20;United-States;<=50K +18;?;267399;12th;8;Never-married;?;Own-child;White;Female;0;0;12;United-States;<=50K +17;Local-gov;192387;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;45;United-States;<=50K +30;Federal-gov;127610;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +29;Private;258862;Bachelors;13;Never-married;Craft-repair;Not-in-family;White;Female;0;0;45;United-States;<=50K +18;Private;174926;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;15;?;<=50K +50;State-gov;238187;Bachelors;13;Divorced;Adm-clerical;Not-in-family;Black;Female;0;0;37;United-States;<=50K +22;Private;191444;HS-grad;9;Never-married;Sales;Other-relative;White;Male;0;0;40;United-States;<=50K +21;Private;198822;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;35;United-States;<=50K +39;Self-emp-not-inc;251323;9th;5;Married-civ-spouse;Farming-fishing;Other-relative;White;Male;0;0;40;Cuba;<=50K +62;Private;370881;Assoc-acdm;12;Widowed;Other-service;Not-in-family;White;Female;0;0;7;United-States;<=50K +32;Private;198183;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +38;Private;210610;Assoc-acdm;12;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +34;Private;46746;11th;7;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +28;Private;120475;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +26;Private;135845;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;37;United-States;<=50K +41;Private;310255;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;211013;Assoc-voc;11;Married-civ-spouse;Other-service;Other-relative;White;Female;0;0;50;Mexico;<=50K +50;Private;175029;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +49;Self-emp-inc;119539;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;?;>50K +26;Private;247025;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;65;United-States;<=50K +39;Private;252327;7th-8th;4;Never-married;Other-service;Own-child;White;Male;0;0;40;Mexico;<=50K +24;Self-emp-not-inc;375313;Some-college;10;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +56;Private;107165;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;18;United-States;<=50K +17;Private;108470;11th;7;Never-married;Other-service;Own-child;Black;Male;0;0;17;United-States;<=50K +37;Private;150057;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +23;Private;189468;Assoc-voc;11;Married-civ-spouse;Machine-op-inspct;Own-child;White;Female;0;0;30;United-States;<=50K +28;?;198393;HS-grad;9;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +57;Self-emp-not-inc;181031;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +42;Local-gov;569930;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;>50K +25;Private;27411;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;147397;Bachelors;13;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;20;United-States;<=50K +39;Private;242922;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +54;Private;154949;11th;7;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;>50K +41;Self-emp-inc;423217;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +43;Federal-gov;195385;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +19;Private;100009;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;191628;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;340880;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;Philippines;>50K +19;Private;207173;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;30;United-States;<=50K +33;Private;48010;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;229051;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;52;United-States;<=50K +49;Private;193366;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +31;Private;57781;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;<=50K +69;?;121136;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;13;United-States;<=50K +24;Private;136687;HS-grad;9;Separated;Machine-op-inspct;Unmarried;Other;Female;0;0;40;United-States;<=50K +45;State-gov;154117;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;38;United-States;>50K +75;Private;239038;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;16;United-States;<=50K +34;Private;244064;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Male;0;0;40;United-States;<=50K +33;Private;66278;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;162643;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;43;United-States;<=50K +18;Private;205218;11th;7;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +48;Private;154033;HS-grad;9;Divorced;Sales;Not-in-family;White;Female;0;0;52;United-States;<=50K +43;Private;158528;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +35;Private;301862;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +34;Private;228406;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;120131;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;70;United-States;>50K +54;Local-gov;127943;HS-grad;9;Widowed;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +57;Private;301514;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;156980;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;60;United-States;<=50K +28;Private;124685;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;0;0;55;United-States;<=50K +51;Private;305673;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Canada;>50K +34;Local-gov;31391;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;53;United-States;>50K +41;Local-gov;33658;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;>50K +21;Private;211391;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;27;United-States;<=50K +26;Private;402998;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;58;United-States;>50K +66;Private;78855;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +48;Private;49278;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +44;?;248876;Bachelors;13;Divorced;?;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;242586;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +55;Local-gov;296085;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +43;Private;233130;Bachelors;13;Divorced;Sales;Not-in-family;White;Male;0;0;40;United-States;>50K +51;Private;189511;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;Germany;>50K +31;Private;124420;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;194908;HS-grad;9;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +31;Local-gov;94991;HS-grad;9;Divorced;Other-service;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +18;Private;194561;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;37;United-States;<=50K +29;Private;60722;HS-grad;9;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +33;Private;59944;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;220840;5th-6th;3;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;Mexico;<=50K +40;Self-emp-inc;104235;Masters;14;Never-married;Other-service;Own-child;White;Male;0;0;99;United-States;<=50K +57;Private;142714;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;38;United-States;<=50K +55;Local-gov;110490;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;60;United-States;<=50K +40;Self-emp-not-inc;154076;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +26;State-gov;130557;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;35;United-States;<=50K +29;Private;107108;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +30;Private;207172;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;Mexico;<=50K +29;Private;304595;Masters;14;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +43;Private;475322;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +65;Private;107620;11th;7;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;8;United-States;<=50K +19;Private;301911;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Male;0;0;35;Laos;<=50K +28;Private;269786;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;167474;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +63;Local-gov;86590;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;32;United-States;<=50K +47;State-gov;187087;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +31;Private;184307;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;57889;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +59;Private;157932;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;187830;Masters;14;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;62;United-States;>50K +60;Private;317083;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +35;Self-emp-not-inc;190895;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +48;Federal-gov;328606;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;?;403860;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;215479;HS-grad;9;Separated;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +56;Private;157639;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +26;Private;152129;12th;8;Never-married;Other-service;Unmarried;Black;Male;0;0;40;United-States;<=50K +53;Private;239284;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +23;Private;234302;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;Black;Male;0;0;40;United-States;<=50K +58;Private;218724;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +61;Private;106330;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;35032;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;60;United-States;<=50K +22;Private;234641;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;218322;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +90;Private;47929;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;142411;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;<=50K +22;?;219122;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +34;State-gov;44464;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;60;United-States;<=50K +22;?;199426;Some-college;10;Never-married;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;139703;HS-grad;9;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;<=50K +33;Private;202642;Bachelors;13;Separated;Prof-specialty;Other-relative;Black;Female;0;0;40;Jamaica;<=50K +17;Private;160049;10th;6;Never-married;Other-service;Own-child;White;Female;0;0;12;United-States;<=50K +38;Private;239755;11th;7;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;152369;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +34;Private;42900;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +72;?;117017;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;8;United-States;<=50K +57;Private;175017;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Italy;<=50K +39;Private;342642;HS-grad;9;Divorced;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +50;Self-emp-not-inc;143730;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;80;United-States;<=50K +45;Private;191098;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +37;Private;208106;Bachelors;13;Separated;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +27;Private;167737;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;48;United-States;<=50K +43;Private;315971;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +41;Private;142717;Some-college;10;Divorced;Tech-support;Unmarried;Black;Female;0;0;36;United-States;<=50K +20;Private;190227;Masters;14;Never-married;Exec-managerial;Own-child;White;Male;0;0;25;United-States;<=50K +44;Private;79864;Masters;14;Separated;Exec-managerial;Unmarried;White;Female;0;0;20;United-States;<=50K +50;Private;34067;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +54;Private;222882;HS-grad;9;Widowed;Exec-managerial;Unmarried;White;Female;0;0;45;United-States;<=50K +33;Private;256062;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;Puerto-Rico;<=50K +22;Private;251073;9th;5;Never-married;Other-service;Own-child;White;Male;0;0;50;United-States;<=50K +46;Private;149949;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;165235;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;Philippines;>50K +22;?;243190;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;40;China;<=50K +57;Self-emp-not-inc;175942;Some-college;10;Widowed;Exec-managerial;Other-relative;White;Male;0;0;25;United-States;<=50K +26;Private;212793;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Local-gov;153312;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +55;Local-gov;173296;Masters;14;Divorced;Prof-specialty;Unmarried;White;Female;0;0;45;United-States;<=50K +47;Private;120131;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +19;Private;117444;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;226196;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +44;Private;202872;Assoc-acdm;12;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +42;Private;176716;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;>50K +39;Private;82540;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;<=50K +17;?;41643;11th;7;Never-married;?;Own-child;White;Female;0;0;15;United-States;<=50K +26;Private;197292;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;50;United-States;<=50K +26;Private;76491;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +50;Self-emp-inc;101094;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;<=50K +46;Self-emp-not-inc;119944;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +26;Private;122575;Bachelors;13;Never-married;Exec-managerial;Unmarried;Asian-Pac-Islander;Male;0;0;60;Vietnam;<=50K +50;Private;263200;5th-6th;3;Married-spouse-absent;Other-service;Unmarried;White;Female;0;0;34;Mexico;<=50K +47;Local-gov;140644;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +52;Private;202115;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;25;United-States;<=50K +25;Federal-gov;27142;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Local-gov;318046;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;276369;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +30;Private;67187;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Amer-Indian-Eskimo;Female;0;0;8;United-States;<=50K +23;Private;133582;1st-4th;2;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;36;Mexico;<=50K +23;Private;216672;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;30;?;<=50K +32;Private;45796;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;<=50K +29;Self-emp-inc;31778;HS-grad;9;Separated;Prof-specialty;Other-relative;White;Male;0;0;25;United-States;<=50K +40;Private;190044;Assoc-acdm;12;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +45;State-gov;144351;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +17;?;172145;10th;6;Never-married;?;Own-child;Black;Female;0;0;40;United-States;<=50K +55;Private;193130;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +59;Local-gov;140478;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +23;Private;116830;12th;8;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +37;Local-gov;117683;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;106491;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +22;?;39803;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +27;Private;363053;9th;5;Never-married;Priv-house-serv;Unmarried;White;Female;0;0;24;Mexico;<=50K +21;Private;54472;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +38;Private;54317;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;60;United-States;<=50K +27;Private;159623;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +25;?;161235;Assoc-voc;11;Never-married;?;Own-child;White;Male;0;0;90;United-States;<=50K +27;Private;247978;HS-grad;9;Never-married;Other-service;Own-child;Black;Female;0;0;40;United-States;<=50K +40;Private;305846;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +33;Private;226525;HS-grad;9;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +28;Private;247819;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;5;United-States;<=50K +28;Private;194940;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;289991;HS-grad;9;Never-married;Transport-moving;Unmarried;White;Male;0;0;55;United-States;<=50K +46;Private;585361;9th;5;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;91145;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +65;?;231604;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;45;Germany;<=50K +28;Private;273269;Some-college;10;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;40;United-States;<=50K +39;Private;202683;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;159179;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Private;28952;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;39;United-States;<=50K +25;?;214925;10th;6;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +63;Private;163708;9th;5;Widowed;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +56;Private;200235;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +46;Private;109209;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +19;Private;166153;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;30;United-States;<=50K +56;Local-gov;268213;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;35;?;>50K +31;Private;69056;HS-grad;9;Divorced;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +51;State-gov;237141;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +17;Private;277541;11th;7;Never-married;Sales;Own-child;White;Male;0;0;5;United-States;<=50K +27;Local-gov;289039;Some-college;10;Never-married;Protective-serv;Unmarried;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +30;Private;134737;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;45;United-States;<=50K +18;Private;56613;Some-college;10;Never-married;Protective-serv;Own-child;White;Female;0;0;20;United-States;<=50K +40;Local-gov;333530;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;40;United-States;>50K +35;Private;185366;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +29;Private;154017;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;10;United-States;<=50K +53;Private;191565;1st-4th;2;Divorced;Other-service;Unmarried;Black;Female;0;0;40;Dominican-Republic;<=50K +53;Private;111939;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +26;State-gov;53903;HS-grad;9;Never-married;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +41;Private;146659;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;<=50K +28;Private;194200;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +48;State-gov;78529;Masters;14;Separated;Prof-specialty;Not-in-family;White;Male;0;0;60;United-States;<=50K +22;Private;194829;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;30;United-States;<=50K +57;Private;300908;Assoc-acdm;12;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;75;United-States;<=50K +53;Self-emp-not-inc;187830;Assoc-voc;11;Separated;Craft-repair;Not-in-family;White;Male;0;0;40;Poland;<=50K +23;Private;201138;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;8;United-States;<=50K +31;Self-emp-not-inc;44503;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;381357;9th;5;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;28;United-States;<=50K +25;Private;311124;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +37;Private;96330;Some-college;10;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +50;Private;228238;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +34;Self-emp-not-inc;56964;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +37;Private;127772;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +52;Private;386397;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +29;Self-emp-not-inc;404998;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;90;United-States;<=50K +31;Private;157886;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;40;United-States;<=50K +47;Private;101299;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;134447;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;70;United-States;<=50K +27;Private;191822;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +23;Private;70919;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;266343;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;46;United-States;<=50K +28;Private;87239;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +31;Local-gov;236487;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;Germany;<=50K +30;Private;224147;HS-grad;9;Never-married;Transport-moving;Own-child;Black;Male;0;0;40;United-States;<=50K +23;Private;197200;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;60;United-States;<=50K +19;Private;124265;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +22;Private;79980;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;25;United-States;<=50K +50;Private;128814;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;25;United-States;<=50K +64;?;208862;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;50;United-States;>50K +21;Private;51262;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;35;United-States;<=50K +75;Self-emp-inc;98116;Some-college;10;Widowed;Sales;Not-in-family;White;Male;0;0;40;United-States;>50K +29;Private;82393;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Asian-Pac-Islander;Male;0;0;40;Germany;<=50K +47;Private;57534;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +20;Private;218962;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;204752;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +45;Private;243631;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;45;China;>50K +41;Private;170299;Assoc-voc;11;Divorced;Prof-specialty;Unmarried;White;Female;0;0;43;United-States;<=50K +23;Private;60331;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +67;State-gov;132819;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;41;United-States;>50K +21;Private;119665;Some-college;10;Never-married;Tech-support;Own-child;White;Male;0;0;35;United-States;<=50K +38;Private;150057;Some-college;10;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;45;United-States;<=50K +31;Private;128567;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +19;?;230874;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +59;Self-emp-not-inc;148526;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;Private;160192;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +50;Local-gov;74660;Some-college;10;Widowed;Prof-specialty;Unmarried;White;Male;0;0;40;United-States;<=50K +60;Self-emp-inc;142494;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;122042;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +28;Self-emp-inc;37088;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +36;Private;61778;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +21;?;176356;Some-college;10;Never-married;?;Own-child;White;Female;0;0;10;Germany;<=50K +27;Private;123302;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;Poland;<=50K +18;Private;89760;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +56;Private;104945;7th-8th;4;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;40;United-States;<=50K +51;Self-emp-inc;192973;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;>50K +48;Private;97863;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;Italy;>50K +31;Private;73585;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +35;Private;29145;Assoc-voc;11;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +35;Private;175232;HS-grad;9;Divorced;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +36;Private;325374;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;129345;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;25;United-States;<=50K +21;Private;228395;Some-college;10;Never-married;Sales;Other-relative;Black;Female;0;0;20;United-States;<=50K +49;Private;452402;Some-college;10;Separated;Exec-managerial;Unmarried;Black;Female;0;0;60;United-States;<=50K +46;Private;165138;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;193122;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +56;?;425497;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +48;Private;191858;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;297155;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +29;Local-gov;181282;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +50;Federal-gov;111700;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +18;Private;35065;HS-grad;9;Never-married;Transport-moving;Not-in-family;Black;Male;0;0;35;United-States;<=50K +51;Self-emp-not-inc;95435;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +31;Private;162160;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;47;United-States;<=50K +48;Private;197683;Some-college;10;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;>50K +39;Private;290321;10th;6;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +22;Local-gov;44064;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +27;?;174163;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;40;United-States;>50K +42;Private;374790;9th;5;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;231562;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;33;United-States;<=50K +27;Private;376150;Some-college;10;Married-spouse-absent;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +51;Private;99987;10th;6;Separated;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Self-emp-not-inc;120126;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +60;Self-emp-not-inc;33717;11th;7;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +36;Private;132879;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Italy;<=50K +45;Private;304570;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;60;China;>50K +40;Private;100292;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;52;United-States;>50K +41;Private;239833;HS-grad;9;Married-spouse-absent;Transport-moving;Unmarried;Black;Male;0;0;50;United-States;<=50K +53;?;155233;12th;8;Married-civ-spouse;?;Wife;White;Female;0;0;40;Italy;<=50K +34;Private;347166;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;502752;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;>50K +22;State-gov;255575;Assoc-acdm;12;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;15;United-States;<=50K +49;Private;277946;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +43;?;214541;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;35;United-States;<=50K +36;Private;143123;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +27;Private;69132;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;37;United-States;<=50K +29;Private;236992;HS-grad;9;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;50;United-States;<=50K +27;Private;492263;10th;6;Separated;Machine-op-inspct;Own-child;White;Male;0;0;35;Mexico;<=50K +42;Private;180019;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;65;United-States;<=50K +49;Self-emp-not-inc;47086;Bachelors;13;Widowed;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;222853;Some-college;10;Never-married;Craft-repair;Unmarried;White;Male;0;0;50;United-States;<=50K +22;Private;344176;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;20;United-States;<=50K +30;Self-emp-not-inc;223212;Bachelors;13;Never-married;Sales;Unmarried;White;Male;0;0;40;United-States;<=50K +28;Private;110981;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +20;Private;162688;Assoc-voc;11;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;306440;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;66;France;<=50K +18;Private;210311;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +53;Private;127117;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +74;Private;54732;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;20;United-States;>50K +39;Private;271521;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;48;Philippines;>50K +33;?;216908;10th;6;Never-married;?;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Private;543922;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;42;United-States;>50K +21;Private;766115;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;35;United-States;<=50K +65;?;52728;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +49;Private;122206;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;25;United-States;<=50K +20;?;95989;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +46;Self-emp-not-inc;225456;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;171840;HS-grad;9;Widowed;Prof-specialty;Unmarried;White;Female;0;0;16;United-States;<=50K +48;Private;180695;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +44;Private;121012;9th;5;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +37;Self-emp-inc;126569;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +51;Self-emp-not-inc;290290;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +33;Local-gov;251521;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +55;Self-emp-not-inc;41938;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;8;United-States;<=50K +25;Private;27678;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;60;United-States;<=50K +26;Private;133756;HS-grad;9;Divorced;Farming-fishing;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +54;Private;215990;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +38;Private;461337;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;33;United-States;<=50K +20;State-gov;214542;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +30;Private;258170;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Federal-gov;242147;HS-grad;9;Divorced;Adm-clerical;Not-in-family;Other;Male;0;0;45;United-States;<=50K +42;Private;235700;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;278130;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;Private;261241;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +60;Private;85995;Masters;14;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;50;South;>50K +42;Private;340885;HS-grad;9;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;44;United-States;<=50K +42;Private;152889;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;195023;HS-grad;9;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Columbia;<=50K +27;?;249463;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +43;Private;158177;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +43;State-gov;47818;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;391468;11th;7;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;231043;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +38;?;281768;7th-8th;4;Divorced;?;Unmarried;Black;Female;0;0;30;United-States;<=50K +44;Private;267790;9th;5;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +27;Private;217379;Some-college;10;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +50;Private;421561;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;50953;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +22;Private;138504;Some-college;10;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;30;United-States;<=50K +36;State-gov;177064;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +59;Private;184493;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +39;Private;104089;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +23;Private;149204;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +25;Local-gov;137296;Assoc-acdm;12;Never-married;Adm-clerical;Own-child;Black;Female;0;0;38;United-States;<=50K +31;Private;59083;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;35;United-States;<=50K +28;Local-gov;138332;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +24;Private;198914;HS-grad;9;Never-married;Sales;Unmarried;Black;Male;0;0;25;United-States;<=50K +29;Private;123677;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;Asian-Pac-Islander;Female;0;0;40;Laos;<=50K +38;Federal-gov;325538;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +53;Private;251063;Some-college;10;Separated;Exec-managerial;Unmarried;Black;Female;0;0;40;United-States;<=50K +39;Private;175681;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;60;?;<=50K +44;Private;165599;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +46;Private;149640;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Male;0;0;45;England;>50K +30;Private;143526;Bachelors;13;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +24;Private;211160;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;342989;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +62;Self-emp-not-inc;173631;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;<=50K +25;Private;141876;HS-grad;9;Married-spouse-absent;Exec-managerial;Not-in-family;White;Male;0;0;45;United-States;<=50K +45;Private;137604;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +21;Private;129232;Some-college;10;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +64;Federal-gov;271550;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +39;Private;456922;Bachelors;13;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +60;Private;232242;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;352188;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;114967;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Private;201981;HS-grad;9;Divorced;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +32;State-gov;159247;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;125905;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;186824;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Local-gov;121012;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +58;Private;110844;Masters;14;Widowed;Sales;Not-in-family;White;Female;0;0;27;United-States;<=50K +31;Federal-gov;59732;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +28;Private;178489;Bachelors;13;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;45;?;<=50K +41;?;252127;Some-college;10;Widowed;?;Unmarried;Black;Female;0;0;20;United-States;<=50K +37;Private;109633;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;16;United-States;>50K +19;Private;160811;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;38;United-States;<=50K +27;Self-emp-not-inc;365110;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;20;United-States;<=50K +61;Self-emp-not-inc;113080;9th;5;Married-civ-spouse;Sales;Husband;White;Male;0;0;58;United-States;>50K +39;Private;206074;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +25;Private;173062;Bachelors;13;Never-married;Handlers-cleaners;Unmarried;Black;Male;0;0;40;United-States;<=50K +58;Private;117273;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +27;Self-emp-not-inc;153805;Some-college;10;Married-civ-spouse;Transport-moving;Other-relative;Other;Male;0;0;50;Ecuador;>50K +51;Private;293802;5th-6th;3;Married-civ-spouse;Handlers-cleaners;Husband;Black;Male;0;0;52;United-States;<=50K +46;Private;166809;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +67;?;34122;5th-6th;3;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +50;Local-gov;231725;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;63210;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;15;United-States;<=50K +35;Private;108293;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;32;United-States;>50K +57;Private;116878;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Italy;<=50K +40;Private;110622;Prof-school;15;Married-civ-spouse;Adm-clerical;Other-relative;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +42;Local-gov;180318;10th;6;Never-married;Farming-fishing;Unmarried;White;Male;0;0;35;United-States;<=50K +67;Self-emp-inc;112318;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;27153;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +26;Private;73312;11th;7;Never-married;Machine-op-inspct;Unmarried;White;Female;0;0;15;United-States;<=50K +51;Private;145409;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +38;Private;167882;Some-college;10;Widowed;Other-service;Other-relative;Black;Female;0;0;45;Haiti;<=50K +24;Private;236696;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Own-child;White;Male;0;0;35;United-States;<=50K +48;Self-emp-not-inc;28791;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +35;Private;189922;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +61;?;584259;Masters;14;Married-civ-spouse;?;Husband;White;Male;0;0;2;United-States;>50K +26;Private;173992;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +64;Private;253759;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;3;United-States;<=50K +26;Private;111243;HS-grad;9;Never-married;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +39;Self-emp-not-inc;147850;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;30;United-States;<=50K +55;Private;171015;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;36;United-States;<=50K +23;Private;118023;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;45;?;<=50K +33;Self-emp-not-inc;361497;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;137290;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +28;Local-gov;401886;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;20;United-States;<=50K +50;Private;201882;Masters;14;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;30;United-States;<=50K +26;Local-gov;30793;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;55;United-States;>50K +51;Private;210736;HS-grad;9;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +34;Private;167781;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;144592;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +24;Private;493034;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +27;Private;184078;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +44;Private;191814;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +24;Private;329852;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;223660;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +47;Private;177087;Some-college;10;Separated;Adm-clerical;Unmarried;White;Female;0;0;50;United-States;>50K +30;Private;143766;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +35;Private;234271;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Federal-gov;314822;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +42;Private;195584;Assoc-acdm;12;Separated;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;126850;Prof-school;15;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +36;Private;279485;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;38;United-States;<=50K +44;Private;267717;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;42;United-States;>50K +42;?;175935;HS-grad;9;Separated;?;Unmarried;White;Male;0;0;40;United-States;<=50K +20;Private;163665;Some-college;10;Never-married;Transport-moving;Own-child;White;Female;0;0;17;United-States;<=50K +29;Private;200468;10th;6;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;91501;HS-grad;9;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;40;United-States;<=50K +30;Private;182771;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +31;Private;20511;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +21;Private;538822;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;40;Mexico;<=50K +26;Private;332008;Some-college;10;Never-married;Craft-repair;Unmarried;Asian-Pac-Islander;Male;0;0;37;Taiwan;<=50K +57;Self-emp-inc;220789;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +59;Self-emp-not-inc;114760;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;>50K +87;?;90338;HS-grad;9;Widowed;?;Not-in-family;White;Male;0;0;2;United-States;<=50K +25;Private;181576;Some-college;10;Never-married;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +32;State-gov;542265;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;193026;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;25505;Assoc-voc;11;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;35;United-States;<=50K +17;Private;375657;11th;7;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;30;United-States;<=50K +44;Private;201599;11th;7;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;181820;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;20;United-States;<=50K +30;State-gov;54318;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;141388;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;55;United-States;<=50K +54;Self-emp-not-inc;57101;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;35;United-States;<=50K +44;Private;168515;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;Germany;<=50K +60;Private;163665;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;16;United-States;>50K +39;Private;293291;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;50;United-States;>50K +55;Private;70088;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Private;199346;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +33;Private;207201;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;55;United-States;>50K +40;Local-gov;293809;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +30;Private;378009;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +40;Private;226608;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;30;Guatemala;>50K +24;Private;314182;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;0;0;50;United-States;<=50K +18;Private;170544;11th;7;Never-married;Sales;Own-child;White;Male;0;0;20;United-States;<=50K +18;Private;94196;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;25;United-States;<=50K +49;Private;193047;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +42;Private;112607;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +28;Local-gov;146949;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;309513;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +48;Self-emp-not-inc;191389;Some-college;10;Separated;Sales;Unmarried;White;Female;0;0;50;United-States;<=50K +24;Private;213902;7th-8th;4;Never-married;Priv-house-serv;Own-child;White;Female;0;0;32;El-Salvador;<=50K +73;Self-emp-not-inc;46514;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;25;United-States;<=50K +23;Private;38707;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;60;United-States;>50K +19;Private;188568;Some-college;10;Never-married;Priv-house-serv;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;215014;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;Mexico;<=50K +27;Private;184477;12th;8;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;204235;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +31;Private;39054;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;20;United-States;<=50K +64;Self-emp-inc;272531;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +45;Private;358701;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;10;Mexico;<=50K +47;Private;217750;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;35;United-States;<=50K +22;Private;200374;HS-grad;9;Never-married;Machine-op-inspct;Other-relative;White;Male;0;0;35;United-States;<=50K +24;Private;498349;Bachelors;13;Never-married;Transport-moving;Unmarried;Black;Female;0;0;40;United-States;<=50K +69;State-gov;170458;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;20;United-States;<=50K +40;Self-emp-not-inc;57233;Assoc-voc;11;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +45;Private;188432;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +31;Private;225779;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +48;Private;46677;Assoc-acdm;12;Divorced;Exec-managerial;Unmarried;White;Female;0;0;42;United-States;<=50K +41;Private;227968;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;Black;Female;0;0;35;Haiti;>50K +34;Private;85355;Bachelors;13;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;207120;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;224640;Assoc-acdm;12;Never-married;Exec-managerial;Own-child;White;Female;0;0;40;United-States;<=50K +39;Private;139012;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +40;Federal-gov;130749;Some-college;10;Divorced;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +28;Private;204516;10th;6;Never-married;Transport-moving;Not-in-family;White;Male;0;0;45;United-States;<=50K +20;Private;105479;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +41;Private;197093;Bachelors;13;Divorced;Prof-specialty;Not-in-family;Black;Male;0;0;40;United-States;<=50K +49;Self-emp-inc;431245;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +24;Private;155150;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +35;State-gov;216035;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;388247;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +23;Private;208908;Bachelors;13;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +23;Private;259301;HS-grad;9;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;167893;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;64;United-States;>50K +54;Private;146551;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;54;United-States;>50K +48;Private;238360;Bachelors;13;Separated;Adm-clerical;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +38;Private;187748;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +48;State-gov;50748;Bachelors;13;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;50136;5th-6th;3;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;El-Salvador;<=50K +42;Private;111483;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;>50K +31;Private;298871;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;China;<=50K +27;Private;147340;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;50;United-States;>50K +44;Federal-gov;243636;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +42;Local-gov;194417;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +24;Private;236696;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Private;337130;1st-4th;2;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +29;Private;273051;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;52;Yugoslavia;>50K +38;Private;186191;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;<=50K +33;Private;268451;Some-college;10;Divorced;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +61;Private;154600;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;4;United-States;<=50K +49;Local-gov;405309;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-not-inc;99185;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +42;Private;191765;HS-grad;9;Divorced;Other-service;Other-relative;Black;Female;0;0;35;United-States;<=50K +21;Private;253583;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +29;?;297054;HS-grad;9;Divorced;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +54;Private;204397;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +23;Private;288771;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;United-States;<=50K +52;Private;173987;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +23;Private;91658;Some-college;10;Divorced;Handlers-cleaners;Own-child;White;Male;0;0;40;United-States;<=50K +43;Private;226902;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;80;United-States;>50K +45;Private;232586;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +51;Self-emp-not-inc;291755;7th-8th;4;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;<=50K +29;?;207032;HS-grad;9;Married-spouse-absent;?;Unmarried;Black;Female;0;0;42;Haiti;<=50K +23;Private;161478;Some-college;10;Never-married;Sales;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +73;Self-emp-not-inc;109833;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +47;Self-emp-not-inc;229394;11th;7;Divorced;Exec-managerial;Unmarried;White;Female;0;0;55;United-States;<=50K +61;?;69285;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;37;United-States;<=50K +26;Private;491862;Assoc-voc;11;Never-married;Exec-managerial;Not-in-family;Black;Female;0;0;40;United-States;<=50K +40;Private;311534;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +32;Self-emp-not-inc;420895;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;47;United-States;<=50K +39;Private;226374;10th;6;Divorced;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +33;Federal-gov;101345;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +35;Private;48779;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;35;United-States;<=50K +42;Private;152676;HS-grad;9;Divorced;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;164877;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +33;Private;97521;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +47;Private;88564;5th-6th;3;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;20;United-States;<=50K +33;Private;188246;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;189185;HS-grad;9;Divorced;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +42;State-gov;163069;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +28;Private;251905;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;112403;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;?;<=50K +18;Private;36882;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +33;Self-emp-not-inc;195891;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +36;Private;194905;Bachelors;13;Widowed;Prof-specialty;Unmarried;White;Female;0;0;44;United-States;<=50K +40;Private;31621;HS-grad;9;Married-spouse-absent;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Private;196029;HS-grad;9;Divorced;Transport-moving;Unmarried;White;Male;0;0;45;United-States;<=50K +36;Private;107302;HS-grad;9;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;50;United-States;<=50K +45;Private;151267;Bachelors;13;Never-married;Adm-clerical;Not-in-family;Black;Female;0;0;40;United-States;>50K +52;Private;256861;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;82777;HS-grad;9;Separated;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Private;147430;HS-grad;9;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;?;60726;HS-grad;9;Never-married;?;Own-child;Black;Male;0;0;40;United-States;<=50K +46;Self-emp-not-inc;165754;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +36;Private;448337;HS-grad;9;Separated;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;185079;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +36;Private;418702;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +48;Private;41504;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;>50K +18;Private;261720;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +38;Private;133963;Bachelors;13;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;>50K +66;?;357750;11th;7;Widowed;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +38;Private;60135;HS-grad;9;Never-married;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +55;Self-emp-not-inc;308746;Prof-school;15;Widowed;Prof-specialty;Not-in-family;White;Male;0;0;55;United-States;>50K +27;Private;278720;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;>50K +22;State-gov;477505;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +29;Private;164711;Some-college;10;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;United-States;<=50K +40;Private;208277;Some-college;10;Never-married;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;<=50K +21;Private;39943;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +49;Private;104542;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +29;Private;286634;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;50;United-States;>50K +28;Private;142712;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +26;Private;336404;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +33;Private;117983;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;41;United-States;<=50K +72;?;108796;Prof-school;15;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +59;Private;59469;Masters;14;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;Iran;<=50K +37;Private;171968;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +56;?;119254;10th;6;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;278617;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +39;Private;72338;Masters;14;Married-civ-spouse;Prof-specialty;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +49;Local-gov;343231;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;80;United-States;<=50K +30;Private;63910;HS-grad;9;Married-civ-spouse;Sales;Own-child;Asian-Pac-Islander;Female;0;0;40;United-States;<=50K +28;Private;190350;9th;5;Married-civ-spouse;Protective-serv;Wife;Black;Female;0;0;40;United-States;<=50K +25;State-gov;176162;Bachelors;13;Never-married;Protective-serv;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;37720;10th;6;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +25;Private;421467;Assoc-acdm;12;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;26;United-States;<=50K +36;Private;138441;Some-college;10;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +52;Private;146767;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +25;Private;160445;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Private;211695;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +48;Private;128796;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +39;Private;111129;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +30;Local-gov;44566;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;118497;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +49;Private;237920;Doctorate;16;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +34;Local-gov;136331;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;<=50K +28;Private;187397;HS-grad;9;Never-married;Other-service;Other-relative;Other;Male;0;0;48;Mexico;<=50K +28;Self-emp-not-inc;119793;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +26;Self-emp-not-inc;231714;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +54;Private;229272;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;>50K +66;?;68219;9th;5;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +61;Self-emp-not-inc;268831;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;53;United-States;<=50K +45;Self-emp-not-inc;149640;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;30;United-States;>50K +29;Private;261725;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;35;United-States;<=50K +74;Private;161387;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;16;United-States;<=50K +61;Local-gov;260167;HS-grad;9;Widowed;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;200928;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;22;United-States;<=50K +53;Federal-gov;155594;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +57;Self-emp-not-inc;79539;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +41;Private;469454;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;331482;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +43;Private;225193;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;82393;HS-grad;9;Married-civ-spouse;Other-service;Own-child;Asian-Pac-Islander;Male;0;0;25;Philippines;<=50K +65;?;37170;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;20;United-States;<=50K +41;Private;58484;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;40;United-States;<=50K +31;Local-gov;156464;Bachelors;13;Never-married;Prof-specialty;Other-relative;White;Male;0;0;40;?;<=50K +50;Private;344621;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +52;Private;174752;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +18;Self-emp-inc;174202;HS-grad;9;Never-married;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +26;Private;261203;7th-8th;4;Never-married;Other-service;Unmarried;Other;Female;0;0;30;?;<=50K +57;Private;316000;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;246933;HS-grad;9;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;Mexico;<=50K +34;Private;264651;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +43;Private;99185;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;58;United-States;<=50K +39;Private;176186;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +28;Private;100219;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;45;United-States;<=50K +32;Private;46691;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;State-gov;297735;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;90;United-States;<=50K +25;Private;189656;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;60;United-States;>50K +54;Local-gov;224934;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +48;Self-emp-inc;149218;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;70;United-States;>50K +51;Private;158508;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;36;United-States;<=50K +67;State-gov;261203;7th-8th;4;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;35;United-States;<=50K +17;Private;309504;10th;6;Never-married;Sales;Unmarried;White;Female;0;0;24;United-States;<=50K +24;State-gov;324637;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;267426;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +68;?;229016;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;25;United-States;<=50K +54;Private;46401;Some-college;10;Divorced;Other-service;Not-in-family;White;Female;0;0;47;United-States;<=50K +32;Private;114288;HS-grad;9;Divorced;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +61;?;203849;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Federal-gov;193882;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;311269;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Private;156117;Assoc-voc;11;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;32;United-States;<=50K +64;?;169917;7th-8th;4;Widowed;?;Not-in-family;White;Female;0;0;4;United-States;<=50K +51;Private;222615;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +40;Federal-gov;78036;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;65;United-States;>50K +27;Private;380560;HS-grad;9;Never-married;Farming-fishing;Other-relative;White;Male;0;0;40;Mexico;<=50K +51;Private;289436;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +36;Private;749636;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Self-emp-inc;154120;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;55;United-States;<=50K +43;Private;105119;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +61;Federal-gov;181081;HS-grad;9;Divorced;Adm-clerical;Own-child;Black;Female;0;0;20;United-States;<=50K +31;Private;182237;10th;6;Separated;Transport-moving;Unmarried;White;Male;0;0;40;United-States;<=50K +34;Private;102130;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;65;United-States;>50K +52;Private;170562;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;240543;11th;7;Never-married;Other-service;Own-child;White;Female;0;0;20;United-States;<=50K +37;Federal-gov;187046;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +60;Private;389254;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +47;Private;179955;Some-college;10;Widowed;Transport-moving;Unmarried;White;Female;0;0;25;Outlying-US(Guam-USVI-etc);<=50K +21;Private;197997;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;30;United-States;<=50K +40;Local-gov;141649;Assoc-voc;11;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +26;Private;433906;Assoc-acdm;12;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +48;Private;207982;Some-college;10;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +46;Private;175925;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;40;United-States;<=50K +58;Private;85767;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;48;United-States;<=50K +32;Self-emp-inc;281030;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +90;?;313986;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +38;Private;396595;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;>50K +20;?;189203;Assoc-acdm;12;Never-married;?;Not-in-family;White;Male;0;0;20;United-States;<=50K +43;Self-emp-not-inc;163108;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;99;United-States;<=50K +17;Private;141590;11th;7;Never-married;Priv-house-serv;Own-child;White;Female;0;0;12;United-States;<=50K +36;Private;137421;12th;8;Never-married;Transport-moving;Not-in-family;Asian-Pac-Islander;Male;0;0;45;?;<=50K +45;Private;330087;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +51;Self-emp-not-inc;204322;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;50295;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;<=50K +35;Self-emp-not-inc;147258;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;65;United-States;<=50K +19;Private;194260;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +56;Private;437727;9th;5;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +64;?;34100;Some-college;10;Widowed;?;Not-in-family;White;Male;0;0;4;United-States;<=50K +62;?;186611;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;40;United-States;<=50K +24;Private;280960;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;24;United-States;<=50K +33;Private;33117;Assoc-acdm;12;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;169628;Bachelors;13;Never-married;Sales;Unmarried;Black;Female;0;0;35;United-States;>50K +22;State-gov;124942;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;45;United-States;<=50K +44;Private;143368;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;55;United-States;<=50K +37;Private;255621;HS-grad;9;Separated;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;Self-emp-inc;154227;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;75;United-States;<=50K +43;Private;171438;Assoc-voc;11;Separated;Sales;Unmarried;White;Female;0;0;45;United-States;<=50K +39;Private;191524;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +30;Private;377017;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;32;United-States;<=50K +58;Private;192806;7th-8th;4;Never-married;Handlers-cleaners;Not-in-family;White;Female;0;0;33;United-States;<=50K +31;?;259120;Some-college;10;Married-civ-spouse;?;Wife;White;Female;0;0;10;United-States;<=50K +45;Local-gov;234195;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +30;Private;147596;Some-college;10;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +42;Private;147251;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;36;United-States;<=50K +50;Private;176157;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +25;Local-gov;176162;Assoc-voc;11;Never-married;Protective-serv;Own-child;White;Male;0;0;30;United-States;<=50K +34;Private;384150;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +50;Private;107665;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +72;?;82635;11th;7;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +60;State-gov;165827;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +71;Self-emp-not-inc;78786;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;10;United-States;<=50K +22;Private;349368;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Female;0;0;30;United-States;<=50K +52;Private;117674;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;38;United-States;<=50K +30;Private;310889;Some-college;10;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;55;United-States;<=50K +36;?;187167;HS-grad;9;Separated;?;Not-in-family;White;Female;0;0;30;United-States;<=50K +40;Private;379919;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +31;Federal-gov;34862;Assoc-acdm;12;Married-civ-spouse;Sales;Husband;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +38;Local-gov;161463;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;Black;Male;0;0;40;United-States;>50K +46;Private;186410;Prof-school;15;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;>50K +57;Federal-gov;62020;Prof-school;15;Divorced;Exec-managerial;Not-in-family;Black;Male;0;0;55;United-States;>50K +39;Private;42044;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +42;Private;170230;Bachelors;13;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;>50K +43;Private;341358;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +22;Private;199426;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;17;United-States;<=50K +44;Private;89172;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +22;?;148955;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Female;0;0;15;South;<=50K +37;Private;140673;Some-college;10;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +20;?;71788;Some-college;10;Never-married;?;Own-child;White;Female;0;0;18;United-States;<=50K +26;State-gov;326033;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;80;United-States;<=50K +35;Private;129305;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;30;United-States;<=50K +28;Private;171067;HS-grad;9;Never-married;Handlers-cleaners;Own-child;White;Female;0;0;40;United-States;<=50K +34;Private;143582;Some-college;10;Never-married;Adm-clerical;Not-in-family;Asian-Pac-Islander;Female;0;0;35;Japan;<=50K +17;?;171461;10th;6;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +18;Private;257980;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +25;Private;182866;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +44;Self-emp-inc;69333;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +61;Private;668362;1st-4th;2;Widowed;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +39;Private;132879;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +19;?;166018;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;120518;HS-grad;9;Widowed;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +19;Private;183532;Some-college;10;Never-married;Handlers-cleaners;Own-child;White;Male;0;0;25;United-States;<=50K +45;Private;49298;Bachelors;13;Never-married;Tech-support;Own-child;White;Male;0;0;40;United-States;<=50K +20;Private;157332;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +37;Private;213726;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +26;Private;31143;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +17;?;256173;10th;6;Never-married;?;Own-child;White;Female;0;0;15;United-States;<=50K +26;Private;184872;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;55;United-States;>50K +58;Private;202652;HS-grad;9;Separated;Other-service;Unmarried;White;Female;0;0;40;Dominican-Republic;<=50K +61;?;101602;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;>50K +19;Private;292590;HS-grad;9;Married-civ-spouse;Sales;Other-relative;White;Female;0;0;25;United-States;<=50K +36;Private;141420;Bachelors;13;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;30;United-States;<=50K +47;Private;159389;Assoc-acdm;12;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;Private;254534;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;89508;Prof-school;15;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +38;Self-emp-not-inc;238980;Some-college;10;Never-married;Sales;Not-in-family;White;Male;0;0;60;United-States;<=50K +54;Private;178946;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;>50K +31;Private;204752;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +26;Private;290213;Some-college;10;Separated;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;291965;Some-college;10;Never-married;Tech-support;Unmarried;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +52;Local-gov;175339;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +28;Private;90547;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;23;United-States;<=50K +23;?;449101;HS-grad;9;Married-civ-spouse;?;Own-child;White;Female;0;0;30;United-States;<=50K +32;?;981628;HS-grad;9;Divorced;?;Unmarried;Black;Male;0;0;40;United-States;<=50K +59;?;147989;HS-grad;9;Widowed;?;Not-in-family;White;Female;0;0;35;United-States;<=50K +30;Self-emp-inc;204470;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;36;United-States;>50K +31;Private;190027;HS-grad;9;Never-married;Other-service;Other-relative;Black;Female;0;0;40;?;<=50K +36;Private;218015;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;48;United-States;<=50K +31;State-gov;77634;Preschool;1;Never-married;Other-service;Not-in-family;White;Male;0;0;24;United-States;<=50K +52;Self-emp-not-inc;42984;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;>50K +48;Self-emp-not-inc;218835;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;England;<=50K +58;Private;252419;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;<=50K +20;Federal-gov;347935;Some-college;10;Never-married;Protective-serv;Own-child;Black;Male;0;0;40;United-States;<=50K +19;Private;237848;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;3;United-States;<=50K +63;Private;174826;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +51;Self-emp-not-inc;170086;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;45;United-States;>50K +53;Private;470368;Assoc-acdm;12;Divorced;Adm-clerical;Unmarried;White;Female;0;0;48;United-States;<=50K +35;?;35854;Some-college;10;Never-married;?;Own-child;White;Female;0;0;40;United-States;<=50K +26;Private;746432;HS-grad;9;Never-married;Handlers-cleaners;Own-child;Black;Male;0;0;48;United-States;<=50K +47;Self-emp-not-inc;258498;Some-college;10;Married-civ-spouse;Other-service;Wife;White;Female;0;0;52;United-States;<=50K +44;Private;176063;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +80;Self-emp-not-inc;26865;7th-8th;4;Never-married;Farming-fishing;Unmarried;White;Male;0;0;20;United-States;<=50K +55;Private;104724;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +43;Private;346321;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +49;Private;402462;Bachelors;13;Married-spouse-absent;Transport-moving;Unmarried;White;Male;0;0;30;Columbia;<=50K +27;Private;153078;Prof-school;15;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Male;0;0;40;United-States;<=50K +39;Private;451059;9th;5;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +36;?;229533;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;106437;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +58;Local-gov;294313;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;Black;Female;0;0;55;United-States;<=50K +63;Private;67903;9th;5;Separated;Farming-fishing;Not-in-family;Black;Male;0;0;40;United-States;<=50K +49;Private;133669;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +36;Self-emp-inc;251730;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;60;United-States;>50K +46;Private;72896;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +39;Private;206520;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;45;United-States;<=50K +33;Private;72338;Prof-school;15;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;65;Japan;>50K +30;Private;236543;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;68;United-States;<=50K +39;Local-gov;43702;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;37;United-States;<=50K +44;Private;335248;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;198197;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +80;?;281768;Assoc-acdm;12;Married-civ-spouse;?;Husband;White;Male;0;0;4;United-States;<=50K +31;Private;160594;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;White;Male;0;0;3;United-States;<=50K +34;Local-gov;231826;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;El-Salvador;<=50K +28;Private;188171;Assoc-acdm;12;Never-married;Transport-moving;Own-child;White;Male;0;0;60;United-States;<=50K +55;Private;125000;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +36;Private;166509;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;40;United-States;<=50K +67;Local-gov;204123;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;10;United-States;<=50K +53;Self-emp-inc;220786;Some-college;10;Widowed;Sales;Not-in-family;White;Female;0;0;60;United-States;<=50K +29;Local-gov;152461;Bachelors;13;Never-married;Tech-support;Not-in-family;White;Female;0;0;42;United-States;<=50K +19;Private;223669;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +51;Private;120270;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +21;Self-emp-not-inc;304602;Assoc-voc;11;Never-married;Farming-fishing;Own-child;White;Male;0;0;98;United-States;<=50K +54;Private;24108;Some-college;10;Separated;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +41;Private;93885;Some-college;10;Divorced;Sales;Unmarried;White;Female;0;0;48;United-States;<=50K +28;Private;210765;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;191276;Assoc-voc;11;Divorced;Handlers-cleaners;Unmarried;White;Female;0;0;40;United-States;<=50K +82;Self-emp-not-inc;71438;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;20;United-States;<=50K +23;Private;330571;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;16;United-States;<=50K +40;Local-gov;138634;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +35;Private;112264;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +24;Private;205865;HS-grad;9;Never-married;Sales;Unmarried;White;Male;0;0;45;United-States;<=50K +21;Private;224640;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +27;Private;180758;Some-college;10;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;30;United-States;<=50K +29;?;499935;Assoc-voc;11;Never-married;?;Unmarried;White;Female;0;0;40;United-States;<=50K +40;Self-emp-not-inc;107762;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +17;Private;214787;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;25;United-States;<=50K +27;Private;211032;1st-4th;2;Never-married;Craft-repair;Not-in-family;White;Male;0;0;40;Mexico;<=50K +34;Private;208353;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +18;Private;157273;10th;6;Never-married;Other-service;Other-relative;Black;Male;0;0;15;United-States;<=50K +39;Private;75891;Bachelors;13;Divorced;Tech-support;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Self-emp-inc;177675;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;65;United-States;>50K +44;Private;182370;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +18;?;200525;11th;7;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +28;Private;95566;1st-4th;2;Married-spouse-absent;Other-service;Own-child;Other;Female;0;0;35;Dominican-Republic;<=50K +30;Private;30290;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +60;Private;240951;HS-grad;9;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +58;Private;183810;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;24;United-States;<=50K +49;Private;94342;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;<=50K +61;Self-emp-inc;148577;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +27;Private;103634;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;38;United-States;<=50K +59;Self-emp-not-inc;83542;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +52;Federal-gov;76131;Some-college;10;Married-civ-spouse;Exec-managerial;Wife;Asian-Pac-Islander;Female;0;0;40;United-States;>50K +42;Federal-gov;262402;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +27;Private;198286;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;34;United-States;<=50K +41;Self-emp-inc;145441;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +35;?;273558;Some-college;10;Never-married;?;Not-in-family;Black;Male;0;0;30;United-States;<=50K +50;Local-gov;117496;Bachelors;13;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;24;United-States;<=50K +36;Private;128876;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;Private;199698;HS-grad;9;Never-married;Farming-fishing;Own-child;White;Male;0;0;45;United-States;<=50K +38;Private;65390;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +46;Private;128645;Some-college;10;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +59;Private;53481;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +55;Private;92215;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +59;Self-emp-inc;187502;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +38;Private;242080;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;55;United-States;>50K +22;Private;41837;Some-college;10;Never-married;Transport-moving;Own-child;White;Male;0;0;25;United-States;<=50K +28;Private;291374;12th;8;Never-married;Sales;Unmarried;Black;Female;0;0;40;United-States;<=50K +59;Private;159008;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;56;United-States;<=50K +37;Private;271013;HS-grad;9;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;199046;Bachelors;13;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +34;Private;164280;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;Portugal;<=50K +55;Private;100054;10th;6;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +18;Private;183824;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;30;United-States;<=50K +48;Private;313925;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;30;United-States;>50K +48;Private;379883;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Cuba;>50K +70;?;92593;Some-college;10;Widowed;?;Not-in-family;White;Female;0;0;25;United-States;<=50K +27;Private;189777;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;198330;Masters;14;Widowed;Prof-specialty;Unmarried;Black;Female;0;0;37;United-States;<=50K +32;Private;127451;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;38;United-States;>50K +62;?;31577;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;18;United-States;<=50K +18;?;90230;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;20;United-States;<=50K +50;Private;301024;Bachelors;13;Separated;Sales;Not-in-family;White;Male;0;0;40;United-States;>50K +38;Self-emp-not-inc;175732;HS-grad;9;Never-married;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;15;United-States;<=50K +18;Private;218889;9th;5;Never-married;Other-service;Own-child;Black;Male;0;0;35;United-States;<=50K +46;Private;117605;9th;5;Divorced;Sales;Not-in-family;White;Male;0;0;35;United-States;<=50K +26;Private;154571;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;Asian-Pac-Islander;Male;0;0;45;United-States;>50K +44;Private;228057;7th-8th;4;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;Dominican-Republic;<=50K +32;Private;173998;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +25;Private;90752;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +55;Private;51008;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +55;Federal-gov;113398;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Male;0;0;40;United-States;<=50K +25;Private;74977;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;40;United-States;<=50K +40;Private;101593;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +29;Private;228346;Assoc-voc;11;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +60;Private;180418;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;44489;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;<=50K +43;Self-emp-not-inc;277488;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +24;Private;103064;HS-grad;9;Never-married;Sales;Own-child;White;Female;0;0;55;United-States;<=50K +34;Private;226872;Bachelors;13;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Self-emp-not-inc;330416;Some-college;10;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;60;United-States;<=50K +24;Private;186495;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +47;State-gov;205712;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;38;United-States;<=50K +18;Private;217743;11th;7;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +22;Private;239954;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Male;0;0;40;United-States;<=50K +49;Self-emp-not-inc;349986;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +68;Self-emp-not-inc;122094;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;15;United-States;<=50K +62;Self-emp-not-inc;26857;7th-8th;4;Widowed;Farming-fishing;Other-relative;White;Female;0;0;35;United-States;<=50K +25;Local-gov;192321;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +24;Private;88095;Some-college;10;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;24;Mexico;<=50K +44;Private;144067;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;12;?;<=50K +32;Private;124187;9th;5;Married-civ-spouse;Farming-fishing;Husband;Black;Male;0;0;40;United-States;<=50K +49;Private;123681;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;43;United-States;>50K +68;Private;145638;Some-college;10;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;130513;Assoc-acdm;12;Never-married;Sales;Own-child;White;Female;0;0;40;Peru;<=50K +47;Federal-gov;197038;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +35;Private;189092;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +37;Self-emp-not-inc;198841;11th;7;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;317969;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;<=50K +34;Private;111589;10th;6;Never-married;Other-service;Unmarried;Black;Female;0;0;40;Jamaica;<=50K +46;Local-gov;267952;Assoc-voc;11;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;36;United-States;<=50K +21;Private;63899;11th;7;Never-married;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +26;Private;473625;HS-grad;9;Married-civ-spouse;Other-service;Wife;White;Female;0;0;30;United-States;<=50K +17;Private;24090;HS-grad;9;Never-married;Exec-managerial;Own-child;White;Female;0;0;35;United-States;<=50K +36;Self-emp-inc;102729;Assoc-acdm;12;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;70;United-States;<=50K +33;Private;91666;12th;8;Divorced;Exec-managerial;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;215873;HS-grad;9;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;40;United-States;<=50K +32;Private;152109;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +24;Private;175586;HS-grad;9;Never-married;Machine-op-inspct;Unmarried;Black;Female;0;0;40;United-States;<=50K +37;Private;232614;HS-grad;9;Divorced;Other-service;Unmarried;Black;Female;0;0;30;United-States;<=50K +53;State-gov;229465;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +43;Local-gov;161240;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;45;United-States;>50K +29;Private;358124;HS-grad;9;Never-married;Other-service;Other-relative;Black;Female;0;0;52;United-States;<=50K +47;Private;222529;Bachelors;13;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;65;United-States;<=50K +37;Self-emp-not-inc;338320;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;60;United-States;<=50K +23;Private;263886;Some-college;10;Never-married;Sales;Not-in-family;Black;Female;0;0;20;United-States;<=50K +50;Private;310774;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;35;United-States;<=50K +25;Private;98155;Some-college;10;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +40;Private;259307;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;50;United-States;<=50K +41;Private;29762;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +32;Private;202729;HS-grad;9;Married-civ-spouse;Transport-moving;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;28790;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;Private;53209;HS-grad;9;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +30;Local-gov;169020;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +34;Private;127195;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +41;Private;211731;Some-college;10;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;Mexico;<=50K +42;Self-emp-not-inc;126614;Bachelors;13;Divorced;Exec-managerial;Not-in-family;Other;Male;0;0;30;Iran;<=50K +45;Private;259463;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +22;Private;228411;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;35;United-States;<=50K +25;Private;117827;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +22;Federal-gov;57216;Some-college;10;Never-married;Adm-clerical;Own-child;Black;Male;0;0;20;United-States;<=50K +48;Self-emp-inc;88564;Some-college;10;Divorced;Farming-fishing;Not-in-family;White;Male;0;0;45;United-States;<=50K +45;Private;172822;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;52;United-States;>50K +19;Private;251579;Some-college;10;Never-married;Other-service;Own-child;White;Male;0;0;14;United-States;<=50K +31;Private;118399;11th;7;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +30;Self-emp-inc;178383;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;70;United-States;<=50K +40;Self-emp-not-inc;170866;Assoc-acdm;12;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +60;?;268954;Some-college;10;Married-civ-spouse;?;Husband;White;Male;0;0;12;United-States;>50K +52;?;89951;12th;8;Married-civ-spouse;?;Wife;Black;Female;0;0;40;United-States;>50K +22;Private;203894;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;15;United-States;<=50K +25;Private;237065;Some-college;10;Divorced;Other-service;Own-child;Black;Male;0;0;38;United-States;<=50K +51;Local-gov;108435;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;80;United-States;>50K +32;Private;93213;Assoc-acdm;12;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;62;United-States;<=50K +51;Self-emp-inc;231230;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;25;United-States;<=50K +42;Private;386175;Some-college;10;Divorced;Sales;Not-in-family;White;Male;0;0;50;United-States;>50K +24;Private;223515;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +58;?;97969;1st-4th;2;Married-spouse-absent;?;Unmarried;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +43;Private;174295;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +31;Private;60229;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +28;Private;66095;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +26;Private;192022;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Female;0;0;40;United-States;<=50K +46;Private;45288;Bachelors;13;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +62;?;178764;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;40;United-States;>50K +50;Private;99476;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;35;United-States;<=50K +18;Private;41973;11th;7;Never-married;Adm-clerical;Own-child;White;Female;0;0;5;United-States;<=50K +23;Private;162228;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;48;United-States;<=50K +46;Private;211226;Assoc-acdm;12;Married-civ-spouse;Transport-moving;Husband;Other;Male;0;0;36;United-States;<=50K +38;Private;33397;HS-grad;9;Divorced;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +53;Private;120839;12th;8;Divorced;Farming-fishing;Own-child;White;Male;0;0;40;United-States;<=50K +53;Private;36327;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +50;Private;139703;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +26;Private;107827;HS-grad;9;Never-married;Other-service;Unmarried;White;Male;0;0;25;United-States;<=50K +44;Local-gov;203761;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +36;Local-gov;114719;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +20;Private;344394;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;30;United-States;<=50K +35;Private;195516;7th-8th;4;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;Mexico;<=50K +40;State-gov;31627;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;20;United-States;<=50K +70;Private;174032;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +57;Private;226875;7th-8th;4;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;<=50K +18;Private;36162;11th;7;Never-married;Craft-repair;Own-child;White;Male;0;0;5;United-States;<=50K +52;Private;294991;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +24;?;108495;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +42;Self-emp-inc;161532;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;60;United-States;<=50K +28;Local-gov;332249;HS-grad;9;Separated;Transport-moving;Own-child;White;Male;0;0;45;United-States;<=50K +32;Private;268147;Assoc-voc;11;Never-married;Tech-support;Unmarried;White;Female;0;0;60;United-States;<=50K +56;Federal-gov;317847;Bachelors;13;Divorced;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +44;Private;52028;1st-4th;2;Married-civ-spouse;Other-service;Wife;Asian-Pac-Islander;Female;0;0;40;Vietnam;<=50K +20;Private;184045;Some-college;10;Never-married;Sales;Unmarried;Black;Female;0;0;30;United-States;<=50K +32;Private;206609;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +32;Private;313835;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +51;Self-emp-inc;260938;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +23;Private;335067;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;Private;331126;HS-grad;9;Never-married;Other-service;Unmarried;Black;Male;0;0;30;United-States;<=50K +53;Private;156612;12th;8;Divorced;Transport-moving;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;188436;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;45;United-States;<=50K +60;Private;227468;Some-college;10;Widowed;Protective-serv;Not-in-family;Black;Female;0;0;40;United-States;<=50K +55;Private;183580;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;38;United-States;<=50K +57;Self-emp-not-inc;50990;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;30;United-States;<=50K +59;Private;384246;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +26;?;375313;Some-college;10;Never-married;?;Own-child;Asian-Pac-Islander;Male;0;0;40;Philippines;<=50K +49;Private;93639;Bachelors;13;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;43;United-States;<=50K +45;Private;30289;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-inc;124950;Bachelors;13;Never-married;Sales;Own-child;White;Female;0;0;40;United-States;<=50K +37;Self-emp-not-inc;126675;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;60;United-States;>50K +21;Private;145964;12th;8;Never-married;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +36;State-gov;345712;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +18;?;97474;HS-grad;9;Never-married;?;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;180342;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +19;Private;167087;HS-grad;9;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +65;?;192825;7th-8th;4;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +30;Private;318749;Assoc-voc;11;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;35;Germany;<=50K +27;?;147638;Masters;14;Never-married;?;Not-in-family;Other;Female;0;0;40;Japan;<=50K +59;Federal-gov;293971;Some-college;10;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;>50K +32;Private;229566;Assoc-voc;11;Married-civ-spouse;Other-service;Husband;White;Male;0;0;60;United-States;>50K +25;Private;242464;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;111067;Bachelors;13;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;80;United-States;>50K +21;?;155697;9th;5;Never-married;?;Own-child;White;Male;0;0;42;United-States;<=50K +49;Local-gov;106554;Bachelors;13;Divorced;Prof-specialty;Unmarried;White;Female;0;0;40;United-States;>50K +49;Private;23776;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +51;?;43909;HS-grad;9;Divorced;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +48;Private;105808;9th;5;Widowed;Transport-moving;Unmarried;White;Male;0;0;40;United-States;>50K +42;Private;169995;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;<=50K +53;Private;141388;11th;7;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +29;Self-emp-not-inc;241431;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;45;United-States;<=50K +21;?;78374;HS-grad;9;Never-married;?;Other-relative;Asian-Pac-Islander;Female;0;0;24;United-States;<=50K +54;Self-emp-not-inc;158948;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;15;United-States;<=50K +34;Private;272411;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;?;263374;Assoc-voc;11;Married-civ-spouse;?;Husband;White;Male;0;0;40;Canada;<=50K +30;Private;190228;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;126060;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +25;Private;391192;Assoc-voc;11;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +26;Private;214069;HS-grad;9;Separated;Farming-fishing;Not-in-family;White;Male;0;0;40;United-States;<=50K +55;Private;118993;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;10;United-States;<=50K +26;Private;245880;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;40;United-States;<=50K +45;Private;174794;Bachelors;13;Separated;Prof-specialty;Unmarried;White;Female;0;0;56;Germany;<=50K +61;Local-gov;153408;Masters;14;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;>50K +34;?;330301;7th-8th;4;Separated;?;Unmarried;Black;Female;0;0;40;United-States;<=50K +26;Private;385278;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Black;Male;0;0;60;United-States;<=50K +44;Federal-gov;38434;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +45;Self-emp-not-inc;111679;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;30;United-States;<=50K +55;Private;168956;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;86143;Some-college;10;Never-married;Other-service;Other-relative;Asian-Pac-Islander;Male;0;0;30;United-States;<=50K +48;Private;99835;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +33;Private;263561;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;60;United-States;<=50K +44;Private;118536;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +32;Self-emp-inc;209691;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;Canada;<=50K +54;Private;123374;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +40;Private;137225;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +29;Private;119359;HS-grad;9;Married-civ-spouse;Prof-specialty;Wife;Asian-Pac-Islander;Female;0;0;10;China;>50K +56;Private;134153;10th;6;Married-civ-spouse;Adm-clerical;Husband;Black;Male;0;0;40;United-States;<=50K +47;Private;121124;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +22;Private;147655;Some-college;10;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +46;Private;165138;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;45;United-States;>50K +24;Federal-gov;312017;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +37;Private;272950;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;259323;HS-grad;9;Divorced;Craft-repair;Unmarried;White;Male;0;0;40;United-States;<=50K +21;Private;119156;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;40;United-States;<=50K +55;Private;165881;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +23;State-gov;136075;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;32;United-States;<=50K +50;Private;187465;11th;7;Divorced;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +44;Private;328561;Assoc-voc;11;Married-civ-spouse;Adm-clerical;Other-relative;White;Female;0;0;20;United-States;<=50K +48;Private;350440;Some-college;10;Married-civ-spouse;Craft-repair;Other-relative;Asian-Pac-Islander;Male;0;0;40;Cambodia;>50K +38;Self-emp-not-inc;109133;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;70;United-States;>50K +39;Private;86643;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +52;Federal-gov;154521;HS-grad;9;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;44;United-States;>50K +63;Private;45912;HS-grad;9;Widowed;Other-service;Other-relative;White;Female;0;0;40;United-States;<=50K +37;Private;338033;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +26;State-gov;158963;Masters;14;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;119964;HS-grad;9;Never-married;Craft-repair;Other-relative;White;Female;0;0;15;United-States;<=50K +34;Private;193344;Some-college;10;Never-married;Adm-clerical;Unmarried;White;Female;0;0;40;Germany;<=50K +29;Local-gov;45554;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +33;Private;249716;HS-grad;9;Never-married;Tech-support;Not-in-family;White;Male;0;0;45;United-States;<=50K +53;Private;58985;Some-college;10;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;24;United-States;<=50K +24;Private;456367;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +39;Private;117381;Some-college;10;Divorced;Transport-moving;Not-in-family;White;Male;0;0;65;United-States;<=50K +31;Private;226443;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;364342;Assoc-voc;11;Never-married;Sales;Not-in-family;Black;Female;0;0;25;United-States;<=50K +42;Local-gov;101593;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;42;United-States;<=50K +23;Private;267471;12th;8;Never-married;Sales;Own-child;White;Female;0;0;25;United-States;<=50K +22;Private;186849;11th;7;Divorced;Sales;Own-child;White;Male;0;0;50;United-States;<=50K +65;Private;174603;5th-6th;3;Widowed;Machine-op-inspct;Not-in-family;White;Female;0;0;10;Italy;<=50K +34;Private;115040;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;44;United-States;<=50K +45;Self-emp-not-inc;49595;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;80;United-States;<=50K +19;Private;127491;HS-grad;9;Never-married;Other-service;Not-in-family;White;Male;0;0;40;United-States;<=50K +23;Private;122272;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;20;United-States;<=50K +37;Private;143771;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +59;Private;91384;Bachelors;13;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;135874;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +51;Private;172493;Some-college;10;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;12;United-States;<=50K +42;Local-gov;189956;Bachelors;13;Divorced;Prof-specialty;Unmarried;Black;Female;0;0;30;United-States;<=50K +35;Private;106967;Masters;14;Never-married;Sales;Not-in-family;White;Female;0;0;40;United-States;<=50K +20;Private;200153;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;38;United-States;<=50K +41;Private;151736;10th;6;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +40;Private;67852;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;35;United-States;<=50K +36;Private;54229;Assoc-acdm;12;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;37;United-States;<=50K +34;Self-emp-inc;154120;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;>50K +44;Self-emp-not-inc;157217;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;42;United-States;<=50K +31;Federal-gov;381645;Bachelors;13;Separated;Prof-specialty;Not-in-family;White;Male;0;0;40;United-States;<=50K +41;Local-gov;160785;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;133584;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +43;Private;170230;Masters;14;Never-married;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +19;Private;128363;Some-college;10;Never-married;Sales;Own-child;White;Female;0;0;30;United-States;<=50K +43;Local-gov;163434;Bachelors;13;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;55;United-States;>50K +50;Private;195690;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;45;United-States;<=50K +44;Self-emp-inc;138991;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +46;Private;118419;HS-grad;9;Divorced;Machine-op-inspct;Unmarried;White;Male;0;0;38;United-States;<=50K +52;Self-emp-not-inc;185407;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +52;Self-emp-not-inc;283079;HS-grad;9;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +18;Private;119655;12th;8;Never-married;Adm-clerical;Own-child;White;Female;0;0;12;United-States;<=50K +29;Private;153416;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;<=50K +19;?;204868;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;36;United-States;<=50K +34;Private;220362;Bachelors;13;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +23;Local-gov;203078;Some-college;10;Married-civ-spouse;Protective-serv;Husband;Black;Male;0;0;40;United-States;<=50K +64;State-gov;104361;Some-college;10;Separated;Adm-clerical;Not-in-family;White;Female;0;0;65;United-States;<=50K +68;Private;274096;10th;6;Divorced;Transport-moving;Not-in-family;White;Male;0;0;20;United-States;<=50K +42;State-gov;455553;HS-grad;9;Never-married;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +41;Private;112283;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;60;United-States;>50K +41;Self-emp-inc;64506;HS-grad;9;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;<=50K +22;State-gov;24395;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;<=50K +27;Private;100669;Some-college;10;Married-civ-spouse;Craft-repair;Husband;Asian-Pac-Islander;Male;0;0;40;Philippines;>50K +25;Private;178025;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +49;?;113913;HS-grad;9;Married-civ-spouse;?;Wife;White;Female;0;0;60;United-States;<=50K +28;Private;55191;Assoc-acdm;12;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;45;United-States;<=50K +23;Local-gov;162551;Bachelors;13;Never-married;Prof-specialty;Own-child;Asian-Pac-Islander;Female;0;0;35;China;<=50K +19;Private;693066;12th;8;Never-married;Other-service;Own-child;White;Female;0;0;15;United-States;<=50K +72;?;96867;5th-6th;3;Widowed;?;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;256362;Some-college;10;Never-married;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +53;Private;539864;Some-college;10;Divorced;Craft-repair;Not-in-family;White;Male;0;0;20;United-States;<=50K +35;Private;241153;Assoc-voc;11;Never-married;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;284395;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +18;Private;180039;12th;8;Never-married;Sales;Own-child;White;Female;0;0;20;United-States;<=50K +45;Private;178416;Assoc-voc;11;Divorced;Handlers-cleaners;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;175710;Bachelors;13;Never-married;Adm-clerical;Not-in-family;White;Female;0;0;30;?;<=50K +22;Local-gov;164775;5th-6th;3;Never-married;Handlers-cleaners;Other-relative;White;Male;0;0;40;Guatemala;>50K +55;Private;176897;Some-college;10;Divorced;Tech-support;Not-in-family;White;Male;0;0;40;United-States;<=50K +22;Private;193090;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;37;United-States;<=50K +28;Private;175262;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +19;Private;109928;11th;7;Never-married;Sales;Own-child;Black;Female;0;0;35;United-States;<=50K +50;Private;177896;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;>50K +31;Private;181372;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;35;United-States;<=50K +40;Private;70645;Preschool;1;Never-married;Other-service;Not-in-family;White;Female;0;0;20;United-States;<=50K +51;Private;128272;9th;5;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +56;Private;106723;HS-grad;9;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +21;Private;122348;Some-college;10;Never-married;Tech-support;Own-child;White;Female;0;0;35;United-States;<=50K +22;Private;254547;Some-college;10;Never-married;Exec-managerial;Unmarried;Black;Female;0;0;40;Jamaica;<=50K +44;Private;33105;HS-grad;9;Married-civ-spouse;Exec-managerial;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +30;Private;215441;Some-college;10;Never-married;Adm-clerical;Not-in-family;Other;Male;0;0;40;?;<=50K +44;Local-gov;197919;Some-college;10;Divorced;Other-service;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;206139;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;>50K +47;Private;117849;Assoc-acdm;12;Divorced;Sales;Own-child;White;Male;0;0;44;United-States;<=50K +26;Private;323044;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;Germany;>50K +34;Private;90415;Assoc-voc;11;Never-married;Tech-support;Not-in-family;Black;Male;0;0;40;United-States;<=50K +36;Private;127573;HS-grad;9;Separated;Adm-clerical;Not-in-family;White;Female;0;0;38;United-States;<=50K +21;Private;180190;Assoc-voc;11;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;46;United-States;<=50K +45;State-gov;231013;Bachelors;13;Divorced;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +33;Private;356015;HS-grad;9;Separated;Craft-repair;Not-in-family;Amer-Indian-Eskimo;Male;0;0;35;Hong;<=50K +33;Private;198069;HS-grad;9;Never-married;Machine-op-inspct;Not-in-family;White;Male;0;0;65;United-States;<=50K +58;Self-emp-not-inc;99141;HS-grad;9;Divorced;Farming-fishing;Unmarried;White;Female;0;0;10;United-States;<=50K +31;Private;188246;Assoc-acdm;12;Divorced;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;>50K +32;Self-emp-not-inc;116508;Some-college;10;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;50;United-States;>50K +44;Federal-gov;38434;Bachelors;13;Widowed;Exec-managerial;Unmarried;White;Female;0;0;40;United-States;>50K +24;Private;128477;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +49;Private;185041;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +37;Self-emp-not-inc;103925;Bachelors;13;Married-civ-spouse;Sales;Wife;White;Female;0;0;50;United-States;<=50K +42;Self-emp-not-inc;34037;Bachelors;13;Never-married;Farming-fishing;Own-child;White;Male;0;0;35;United-States;<=50K +19;Private;57145;HS-grad;9;Never-married;Other-service;Own-child;White;Female;0;0;25;United-States;<=50K +41;Private;182108;Doctorate;16;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;>50K +51;Self-emp-inc;213296;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;30;United-States;<=50K +51;Self-emp-inc;28765;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +63;Private;37792;10th;6;Widowed;Other-service;Not-in-family;White;Female;0;0;31;United-States;<=50K +39;Federal-gov;232036;Some-college;10;Married-civ-spouse;Adm-clerical;Husband;White;Male;0;0;40;United-States;>50K +30;Private;33678;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +62;Without-pay;159908;Some-college;10;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;16;United-States;<=50K +27;Private;176761;HS-grad;9;Never-married;Craft-repair;Other-relative;Other;Male;0;0;40;Nicaragua;<=50K +37;Local-gov;180342;Bachelors;13;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;>50K +42;Private;204235;HS-grad;9;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;249720;Assoc-voc;11;Married-spouse-absent;Sales;Unmarried;Black;Female;0;0;32;United-States;<=50K +42;Local-gov;201495;Some-college;10;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;72;United-States;>50K +38;Private;447346;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;36;United-States;>50K +24;Private;206008;Assoc-acdm;12;Never-married;Prof-specialty;Own-child;Black;Male;0;0;20;United-States;<=50K +34;Private;286020;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;45;United-States;<=50K +20;?;99891;Some-college;10;Never-married;?;Own-child;White;Female;0;0;30;United-States;<=50K +29;Local-gov;169544;Some-college;10;Never-married;Protective-serv;Own-child;White;Male;0;0;48;United-States;<=50K +90;Private;313749;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;25;United-States;<=50K +55;Private;89182;12th;8;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;Italy;<=50K +36;Private;258102;HS-grad;9;Never-married;Handlers-cleaners;Not-in-family;White;Male;0;0;40;United-States;<=50K +49;Private;255466;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;60;United-States;<=50K +50;Private;38795;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +17;Private;311907;11th;7;Never-married;Other-service;Own-child;White;Male;0;0;25;United-States;<=50K +54;Private;171924;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;<=50K +26;Private;164488;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;10;United-States;<=50K +44;Private;297991;Assoc-acdm;12;Never-married;Exec-managerial;Not-in-family;Asian-Pac-Islander;Female;0;0;50;United-States;<=50K +28;Private;478315;Bachelors;13;Never-married;Prof-specialty;Own-child;Black;Female;0;0;40;United-States;<=50K +54;Local-gov;34832;Doctorate;16;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +21;Private;67804;9th;5;Never-married;Machine-op-inspct;Own-child;Black;Male;0;0;20;United-States;<=50K +24;Private;34568;Assoc-voc;11;Never-married;Transport-moving;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;47151;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;56;United-States;<=50K +59;?;120617;Some-college;10;Never-married;?;Not-in-family;Black;Female;0;0;40;United-States;<=50K +41;Private;318046;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;48;United-States;>50K +29;Private;363963;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +50;Private;92811;Bachelors;13;Married-civ-spouse;Tech-support;Husband;White;Male;0;0;40;United-States;<=50K +32;Private;33678;Some-college;10;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;50;United-States;>50K +42;Private;66118;Some-college;10;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;40;United-States;<=50K +47;Private;160474;HS-grad;9;Married-civ-spouse;Exec-managerial;Wife;White;Female;0;0;30;United-States;>50K +44;Private;159960;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +49;Private;242987;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;Columbia;<=50K +61;Private;232719;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +45;Local-gov;162187;HS-grad;9;Married-civ-spouse;Protective-serv;Husband;White;Male;0;0;40;United-States;>50K +59;Private;207391;HS-grad;9;Divorced;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +30;Never-worked;176673;HS-grad;9;Married-civ-spouse;?;Wife;Black;Female;0;0;40;United-States;<=50K +34;Private;356882;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +24;Private;427686;1st-4th;2;Married-civ-spouse;Handlers-cleaners;Other-relative;White;Male;0;0;40;Mexico;<=50K +36;Private;43712;10th;6;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +21;?;205939;Some-college;10;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +34;Private;346034;12th;8;Married-spouse-absent;Handlers-cleaners;Unmarried;White;Male;0;0;35;Mexico;<=50K +41;Private;144460;Some-college;10;Divorced;Machine-op-inspct;Own-child;White;Male;0;0;40;Italy;<=50K +18;Never-worked;153663;Some-college;10;Never-married;?;Own-child;White;Male;0;0;4;United-States;<=50K +26;Private;262617;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +23;Federal-gov;173851;HS-grad;9;Never-married;Armed-Forces;Not-in-family;White;Male;0;0;8;United-States;<=50K +63;?;126540;Some-college;10;Divorced;?;Not-in-family;White;Female;0;0;5;United-States;<=50K +34;Private;117963;Bachelors;13;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;>50K +54;Private;219737;HS-grad;9;Widowed;Sales;Not-in-family;White;Female;0;0;37;United-States;<=50K +37;Private;328466;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;72;Mexico;<=50K +54;State-gov;138852;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +22;Local-gov;195532;Some-college;10;Never-married;Protective-serv;Other-relative;White;Female;0;0;43;United-States;<=50K +32;Private;188246;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +42;State-gov;138162;Some-college;10;Divorced;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +31;State-gov;110714;Some-college;10;Never-married;Other-service;Own-child;White;Female;0;0;37;United-States;<=50K +48;Private;123075;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;United-States;>50K +28;Private;330466;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;40;Hong;<=50K +31;Private;254304;10th;6;Divorced;Craft-repair;Not-in-family;White;Male;0;0;38;United-States;<=50K +28;Private;435842;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;<=50K +24;Private;118657;12th;8;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;278188;HS-grad;9;Divorced;Craft-repair;Not-in-family;White;Female;0;0;45;United-States;<=50K +26;Private;233777;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;72;Mexico;<=50K +37;Self-emp-inc;328466;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;50;United-States;>50K +24;Private;176580;5th-6th;3;Married-spouse-absent;Farming-fishing;Not-in-family;White;Male;0;0;40;Mexico;<=50K +18;?;156608;11th;7;Never-married;?;Own-child;White;Female;0;0;25;United-States;<=50K +32;Private;172415;HS-grad;9;Never-married;Other-service;Unmarried;Black;Female;0;0;40;United-States;<=50K +23;Private;194951;Bachelors;13;Never-married;Prof-specialty;Not-in-family;Asian-Pac-Islander;Male;0;0;55;Ireland;<=50K +33;Local-gov;318921;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Female;0;0;35;United-States;<=50K +49;Private;189462;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +75;Self-emp-not-inc;192813;Masters;14;Widowed;Sales;Not-in-family;White;Male;0;0;45;United-States;<=50K +26;Private;156805;Some-college;10;Married-civ-spouse;Machine-op-inspct;Husband;Black;Male;0;0;40;United-States;<=50K +66;?;93318;HS-grad;9;Widowed;?;Unmarried;White;Female;0;0;40;United-States;<=50K +34;Private;121966;Bachelors;13;Married-spouse-absent;Adm-clerical;Not-in-family;White;Female;0;0;45;United-States;<=50K +18;Private;347336;12th;8;Never-married;Other-service;Own-child;White;Male;0;0;12;United-States;<=50K +33;Private;205950;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +36;State-gov;212143;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +44;Private;187821;Bachelors;13;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;55;United-States;<=50K +36;Private;250807;11th;7;Never-married;Craft-repair;Not-in-family;Black;Female;0;0;40;United-States;<=50K +53;Private;291755;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +60;Private;36077;7th-8th;4;Married-spouse-absent;Machine-op-inspct;Not-in-family;White;Male;0;0;40;United-States;<=50K +28;Private;119793;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;Portugal;<=50K +36;Private;184655;10th;6;Divorced;Transport-moving;Unmarried;White;Male;0;0;48;United-States;<=50K +45;Self-emp-not-inc;204405;Assoc-voc;11;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;20;United-States;<=50K +23;Private;133355;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;15;United-States;<=50K +35;Private;89559;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;55;United-States;<=50K +34;Private;115066;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;42;United-States;>50K +46;Private;139514;Preschool;1;Married-civ-spouse;Machine-op-inspct;Other-relative;Black;Male;0;0;75;Dominican-Republic;<=50K +58;State-gov;200316;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +55;Local-gov;166502;Masters;14;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;45;United-States;<=50K +63;Private;226422;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +41;Self-emp-not-inc;251305;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;190482;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;76;United-States;<=50K +42;Private;248356;HS-grad;9;Never-married;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +41;Private;220460;HS-grad;9;Never-married;Sales;Own-child;White;Male;0;0;40;United-States;<=50K +22;Private;174043;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +49;Self-emp-not-inc;111959;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;Scotland;>50K +51;Private;40641;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;60;United-States;>50K +22;Private;205940;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +23;Private;265077;Assoc-voc;11;Never-married;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +59;Private;395736;HS-grad;9;Married-civ-spouse;Handlers-cleaners;Husband;White;Male;0;0;40;United-States;>50K +40;Private;306225;HS-grad;9;Divorced;Craft-repair;Not-in-family;Asian-Pac-Islander;Female;0;0;40;Japan;<=50K +28;Private;180299;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;70;United-States;<=50K +39;Private;214896;HS-grad;9;Separated;Other-service;Not-in-family;White;Female;0;0;40;El-Salvador;<=50K +25;Private;273792;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;37;United-States;<=50K +48;State-gov;224474;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +62;Private;271431;9th;5;Married-civ-spouse;Other-service;Husband;Black;Male;0;0;42;United-States;<=50K +44;Local-gov;150171;HS-grad;9;Divorced;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +28;Federal-gov;381789;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Male;0;0;50;United-States;<=50K +62;Private;170984;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;108256;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +59;Federal-gov;23789;HS-grad;9;Married-civ-spouse;Sales;Wife;White;Female;0;0;40;United-States;>50K +20;Private;176321;Some-college;10;Never-married;Adm-clerical;Other-relative;White;Female;0;0;20;United-States;<=50K +47;Private;248059;Some-college;10;Married-civ-spouse;Other-service;Husband;White;Male;0;0;47;United-States;>50K +60;Private;56248;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +55;Private;199763;HS-grad;9;Separated;Protective-serv;Not-in-family;White;Male;0;0;81;United-States;<=50K +18;Private;200047;12th;8;Never-married;Adm-clerical;Own-child;White;Male;0;0;35;United-States;<=50K +31;Self-emp-not-inc;156033;HS-grad;9;Divorced;Other-service;Not-in-family;White;Male;0;0;35;United-States;<=50K +22;Private;173736;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;50;United-States;<=50K +56;Private;135458;HS-grad;9;Divorced;Tech-support;Not-in-family;Black;Female;0;0;40;United-States;<=50K +41;Private;185660;HS-grad;9;Separated;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +24;Private;222005;HS-grad;9;Never-married;Other-service;Other-relative;White;Male;0;0;30;United-States;<=50K +52;Local-gov;143533;7th-8th;4;Never-married;Other-service;Other-relative;Black;Female;0;0;40;United-States;<=50K +42;Private;288154;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;89;United-States;>50K +48;Private;325372;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Portugal;<=50K +35;Private;379959;HS-grad;9;Divorced;Other-service;Not-in-family;White;Female;0;0;40;United-States;<=50K +33;Private;168387;11th;7;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +20;Private;234640;Some-college;10;Never-married;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +33;Private;232475;Some-college;10;Never-married;Sales;Own-child;White;Male;0;0;45;United-States;<=50K +30;Private;205152;Bachelors;13;Never-married;Sales;Not-in-family;White;Male;0;0;40;United-States;<=50K +31;Private;112115;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +29;Private;183854;HS-grad;9;Never-married;Sales;Not-in-family;White;Female;0;0;25;United-States;<=50K +26;Private;164386;HS-grad;9;Never-married;Craft-repair;Own-child;White;Male;0;0;48;United-States;<=50K +61;Private;149620;Some-college;10;Divorced;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +45;Private;199590;5th-6th;3;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;?;<=50K +29;Private;83742;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;45;United-States;<=50K +57;Self-emp-not-inc;65080;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;>50K +20;Private;227778;Some-college;10;Never-married;Sales;Not-in-family;White;Female;0;0;56;United-States;<=50K +26;Private;48280;Bachelors;13;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Private;66304;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;55;United-States;>50K +23;Private;45834;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;50;United-States;<=50K +31;Private;298995;HS-grad;9;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;35;United-States;<=50K +47;Private;161950;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +61;Private;98776;11th;7;Widowed;Handlers-cleaners;Not-in-family;White;Female;0;0;30;United-States;<=50K +35;Private;102268;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;<=50K +23;Private;180771;1st-4th;2;Married-civ-spouse;Machine-op-inspct;Wife;Amer-Indian-Eskimo;Female;0;0;35;Mexico;<=50K +20;?;203992;HS-grad;9;Never-married;?;Own-child;White;Male;0;0;40;United-States;<=50K +41;Private;206878;HS-grad;9;Divorced;Other-service;Unmarried;White;Female;0;0;32;United-States;<=50K +39;Federal-gov;110622;Bachelors;13;Married-civ-spouse;Adm-clerical;Wife;Asian-Pac-Islander;Female;0;0;40;Philippines;<=50K +51;Local-gov;203334;Doctorate;16;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;45;United-States;>50K +61;Self-emp-not-inc;50483;7th-8th;4;Married-civ-spouse;Farming-fishing;Husband;White;Male;0;0;56;United-States;<=50K +51;Private;274502;7th-8th;4;Divorced;Machine-op-inspct;Not-in-family;White;Female;0;0;48;United-States;<=50K +36;Private;208068;Preschool;1;Divorced;Other-service;Not-in-family;Other;Male;0;0;72;Mexico;<=50K +41;Self-emp-not-inc;168098;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +25;Private;175128;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +37;Private;40955;Prof-school;15;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;>50K +19;Private;60890;HS-grad;9;Never-married;Craft-repair;Not-in-family;White;Male;0;0;49;United-States;<=50K +66;Self-emp-not-inc;102686;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;20;United-States;>50K +23;Private;190273;Bachelors;13;Never-married;Prof-specialty;Own-child;White;Male;0;0;40;United-States;<=50K +30;Self-emp-not-inc;176185;Some-college;10;Married-spouse-absent;Craft-repair;Own-child;White;Male;0;0;60;United-States;>50K +25;Private;390657;Some-college;10;Never-married;Other-service;Not-in-family;Black;Male;0;0;40;United-States;<=50K +51;Private;101432;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +53;Private;158993;HS-grad;9;Widowed;Machine-op-inspct;Unmarried;Black;Female;0;0;38;United-States;<=50K +17;Private;117798;10th;6;Never-married;Other-service;Own-child;White;Male;0;0;20;United-States;<=50K +61;Private;137554;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +44;Self-emp-inc;71556;Masters;14;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;?;>50K +38;Private;257416;9th;5;Married-civ-spouse;Transport-moving;Husband;Black;Male;0;0;40;United-States;<=50K +40;Private;195617;Some-college;10;Separated;Exec-managerial;Unmarried;White;Female;0;0;20;United-States;<=50K +32;Private;236318;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;32;United-States;<=50K +46;Private;42251;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;>50K +50;Private;257933;Some-college;10;Divorced;Adm-clerical;Not-in-family;White;Female;0;0;40;United-States;<=50K +36;Self-emp-not-inc;109133;Bachelors;13;Married-civ-spouse;Sales;Husband;White;Male;0;0;50;United-States;>50K +30;Self-emp-not-inc;261943;11th;7;Married-spouse-absent;Craft-repair;Not-in-family;White;Male;0;0;30;Honduras;<=50K +33;Private;139057;Masters;14;Married-civ-spouse;Tech-support;Husband;Asian-Pac-Islander;Male;0;0;50;United-States;>50K +85;Private;98611;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;3;Poland;<=50K +62;Private;128092;HS-grad;9;Widowed;Adm-clerical;Not-in-family;White;Female;0;0;32;United-States;<=50K +24;Private;284317;Bachelors;13;Never-married;Machine-op-inspct;Not-in-family;White;Female;0;0;32;United-States;<=50K +58;Local-gov;223214;HS-grad;9;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +45;Self-emp-inc;173664;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;45;United-States;>50K +66;Private;269665;HS-grad;9;Widowed;Exec-managerial;Not-in-family;White;Female;0;0;25;United-States;<=50K +55;Private;199713;9th;5;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;48;United-States;<=50K +39;Self-emp-not-inc;193689;HS-grad;9;Never-married;Exec-managerial;Not-in-family;White;Male;0;0;65;United-States;<=50K +58;Self-emp-inc;181974;Doctorate;16;Never-married;Prof-specialty;Not-in-family;White;Female;0;0;99;?;<=50K +50;Private;485710;Doctorate;16;Divorced;Prof-specialty;Not-in-family;White;Female;0;0;50;United-States;<=50K +28;Private;185647;Some-college;10;Divorced;Handlers-cleaners;Not-in-family;White;Male;0;0;50;United-States;<=50K +34;Private;30673;Masters;14;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;55;United-States;<=50K +36;Private;186819;Assoc-acdm;12;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;52;United-States;>50K +22;Private;67234;HS-grad;9;Never-married;Handlers-cleaners;Unmarried;White;Male;0;0;45;United-States;<=50K +35;Private;30673;12th;8;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;84;United-States;<=50K +49;?;114648;12th;8;Divorced;?;Other-relative;Black;Male;0;0;40;United-States;<=50K +21;Private;182117;Assoc-acdm;12;Never-married;Other-service;Own-child;White;Male;0;0;40;United-States;<=50K +64;State-gov;222966;7th-8th;4;Married-civ-spouse;Other-service;Wife;Black;Female;0;0;40;United-States;<=50K +41;Private;201495;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +52;Private;301229;Assoc-voc;11;Separated;Sales;Unmarried;White;Female;0;0;40;United-States;<=50K +32;Private;157747;Some-college;10;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +27;Private;155382;Some-college;10;Never-married;Other-service;Not-in-family;White;Female;0;0;25;United-States;<=50K +48;Private;268083;Some-college;10;Divorced;Exec-managerial;Not-in-family;White;Female;0;0;40;United-States;<=50K +28;Private;113987;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +24;Private;216984;Some-college;10;Married-civ-spouse;Other-service;Own-child;Asian-Pac-Islander;Female;0;0;35;United-States;<=50K +51;Private;177669;Some-college;10;Married-civ-spouse;Sales;Husband;White;Male;0;0;60;United-States;<=50K +32;Private;164190;Some-college;10;Never-married;Exec-managerial;Own-child;White;Male;0;0;40;United-States;<=50K +61;Private;355645;HS-grad;9;Married-civ-spouse;Sales;Husband;Black;Male;0;0;40;United-States;<=50K +60;?;134152;9th;5;Divorced;?;Not-in-family;Black;Male;0;0;35;United-States;<=50K +33;Private;63079;HS-grad;9;Divorced;Adm-clerical;Unmarried;Black;Female;0;0;40;United-States;<=50K +42;Self-emp-not-inc;217597;HS-grad;9;Divorced;Sales;Own-child;White;Male;0;0;50;?;<=50K +24;Private;381895;11th;7;Divorced;Machine-op-inspct;Unmarried;White;Female;0;0;40;United-States;<=50K +82;?;403910;HS-grad;9;Never-married;?;Not-in-family;White;Male;0;0;3;United-States;<=50K +26;Private;179010;Some-college;10;Never-married;Craft-repair;Not-in-family;White;Male;0;0;65;United-States;<=50K +18;Private;436163;11th;7;Never-married;Prof-specialty;Own-child;White;Male;0;0;20;United-States;<=50K +34;Private;321709;HS-grad;9;Never-married;Other-service;Not-in-family;White;Female;0;0;28;United-States;<=50K +57;Private;153918;HS-grad;9;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +25;Private;403788;HS-grad;9;Never-married;Craft-repair;Other-relative;Black;Male;0;0;40;United-States;<=50K +71;Private;138145;9th;5;Married-civ-spouse;Other-service;Husband;White;Male;0;0;40;United-States;<=50K +35;Local-gov;79649;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;50;United-States;<=50K +47;Private;312088;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +50;Private;208630;Masters;14;Divorced;Sales;Not-in-family;White;Female;0;0;50;United-States;>50K +33;Private;182401;10th;6;Never-married;Adm-clerical;Not-in-family;Black;Male;0;0;40;United-States;<=50K +38;Private;32916;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;55;United-States;>50K +50;Private;302372;Bachelors;13;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;40;United-States;<=50K +45;Private;155093;10th;6;Divorced;Other-service;Not-in-family;Black;Female;0;0;38;Dominican-Republic;<=50K +32;Private;192965;HS-grad;9;Separated;Sales;Not-in-family;White;Female;0;0;45;United-States;<=50K +39;Private;107302;HS-grad;9;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;45;?;>50K +25;Local-gov;514716;Bachelors;13;Never-married;Adm-clerical;Own-child;Black;Female;0;0;40;United-States;<=50K +20;Private;270436;HS-grad;9;Never-married;Machine-op-inspct;Own-child;White;Male;0;0;40;United-States;<=50K +46;Private;42972;Masters;14;Married-civ-spouse;Prof-specialty;Wife;White;Female;0;0;22;United-States;>50K +40;Private;142657;Assoc-voc;11;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;45;United-States;<=50K +30;Private;176175;Assoc-voc;11;Divorced;Adm-clerical;Unmarried;White;Female;0;0;24;United-States;<=50K +36;Private;131459;7th-8th;4;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;40;United-States;<=50K +46;Private;364548;Some-college;10;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;48;United-States;>50K +27;Private;177398;HS-grad;9;Never-married;Other-service;Unmarried;White;Female;0;0;64;United-States;<=50K +33;Private;273243;HS-grad;9;Married-civ-spouse;Craft-repair;Husband;Black;Male;0;0;40;United-States;<=50K +58;Private;147707;11th;7;Married-civ-spouse;Sales;Husband;White;Male;0;0;40;United-States;<=50K +30;Private;77266;HS-grad;9;Divorced;Transport-moving;Not-in-family;White;Male;0;0;55;United-States;<=50K +26;Private;191648;Assoc-acdm;12;Never-married;Machine-op-inspct;Other-relative;White;Female;0;0;15;United-States;<=50K +81;?;120478;Assoc-voc;11;Divorced;?;Unmarried;White;Female;0;0;1;?;<=50K +32;Private;211349;10th;6;Married-civ-spouse;Transport-moving;Husband;White;Male;0;0;40;United-States;<=50K +22;Private;203715;Some-college;10;Never-married;Adm-clerical;Own-child;White;Male;0;0;40;United-States;<=50K +31;Private;292592;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Wife;White;Female;0;0;40;United-States;<=50K +29;Private;125976;HS-grad;9;Separated;Sales;Unmarried;White;Female;0;0;35;United-States;<=50K +35;?;320084;Bachelors;13;Married-civ-spouse;?;Wife;White;Female;0;0;55;United-States;>50K +30;?;33811;Bachelors;13;Never-married;?;Not-in-family;Asian-Pac-Islander;Female;0;0;99;United-States;<=50K +34;Private;204461;Doctorate;16;Married-civ-spouse;Prof-specialty;Husband;White;Male;0;0;60;United-States;>50K +54;Private;337992;Bachelors;13;Married-civ-spouse;Exec-managerial;Husband;Asian-Pac-Islander;Male;0;0;50;Japan;>50K +37;Private;179137;Some-college;10;Divorced;Adm-clerical;Unmarried;White;Female;0;0;39;United-States;<=50K +22;Private;325033;12th;8;Never-married;Protective-serv;Own-child;Black;Male;0;0;35;United-States;<=50K +34;Private;160216;Bachelors;13;Never-married;Exec-managerial;Not-in-family;White;Female;0;0;55;United-States;>50K +30;Private;345898;HS-grad;9;Never-married;Craft-repair;Not-in-family;Black;Male;0;0;46;United-States;<=50K +71;?;287372;Doctorate;16;Married-civ-spouse;?;Husband;White;Male;0;0;10;United-States;>50K +45;State-gov;252208;HS-grad;9;Separated;Adm-clerical;Own-child;White;Female;0;0;40;United-States;<=50K +41;?;202822;HS-grad;9;Separated;?;Not-in-family;Black;Female;0;0;32;United-States;<=50K +72;?;129912;HS-grad;9;Married-civ-spouse;?;Husband;White;Male;0;0;25;United-States;<=50K +45;Local-gov;119199;Assoc-acdm;12;Divorced;Prof-specialty;Unmarried;White;Female;0;0;48;United-States;<=50K +31;Private;199655;Masters;14;Divorced;Other-service;Not-in-family;Other;Female;0;0;30;United-States;<=50K +39;Local-gov;111499;Assoc-acdm;12;Married-civ-spouse;Adm-clerical;Wife;White;Female;0;0;20;United-States;>50K +37;Private;198216;Assoc-acdm;12;Divorced;Tech-support;Not-in-family;White;Female;0;0;40;United-States;<=50K +43;Private;260761;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;Mexico;<=50K +43;State-gov;255835;Some-college;10;Divorced;Adm-clerical;Other-relative;White;Female;0;0;40;United-States;<=50K +43;Self-emp-not-inc;27242;Some-college;10;Married-civ-spouse;Craft-repair;Husband;White;Male;0;0;50;United-States;<=50K +32;Private;34066;10th;6;Married-civ-spouse;Handlers-cleaners;Husband;Amer-Indian-Eskimo;Male;0;0;40;United-States;<=50K +43;Private;84661;Assoc-voc;11;Married-civ-spouse;Sales;Husband;White;Male;0;0;45;United-States;<=50K +32;Private;116138;Masters;14;Never-married;Tech-support;Not-in-family;Asian-Pac-Islander;Male;0;0;11;Taiwan;<=50K +53;Private;321865;Masters;14;Married-civ-spouse;Exec-managerial;Husband;White;Male;0;0;40;United-States;>50K +22;Private;310152;Some-college;10;Never-married;Protective-serv;Not-in-family;White;Male;0;0;40;United-States;<=50K +27;Private;257302;Assoc-acdm;12;Married-civ-spouse;Tech-support;Wife;White;Female;0;0;38;United-States;<=50K +40;Private;154374;HS-grad;9;Married-civ-spouse;Machine-op-inspct;Husband;White;Male;0;0;40;United-States;>50K +58;Private;151910;HS-grad;9;Widowed;Adm-clerical;Unmarried;White;Female;0;0;40;United-States;<=50K +22;Private;201490;HS-grad;9;Never-married;Adm-clerical;Own-child;White;Male;0;0;20;United-States;<=50K diff --git a/alembic.ini b/alembic.ini new file mode 100644 index 0000000000000000000000000000000000000000..638f2fc773d3f8d388b8e01558acfe3f22a8b341 --- /dev/null +++ b/alembic.ini @@ -0,0 +1,149 @@ +# A generic, single database configuration. + +[alembic] +# path to migration scripts. +# this is typically a path given in POSIX (e.g. forward slashes) +# format, relative to the token %(here)s which refers to the location of this +# ini file +script_location = %(here)s/alembic + +# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s +# Uncomment the line below if you want the files to be prepended with date and time +# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file +# for all available tokens +# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s +# Or organize into date-based subdirectories (requires recursive_version_locations = true) +# file_template = %%(year)d/%%(month).2d/%%(day).2d_%%(hour).2d%%(minute).2d_%%(second).2d_%%(rev)s_%%(slug)s + +# sys.path path, will be prepended to sys.path if present. +# defaults to the current working directory. for multiple paths, the path separator +# is defined by "path_separator" below. +prepend_sys_path = . + + +# timezone to use when rendering the date within the migration file +# as well as the filename. +# If specified, requires the tzdata library which can be installed by adding +# `alembic[tz]` to the pip requirements. +# string value is passed to ZoneInfo() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the "slug" field +# truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; This defaults +# to /versions. When using multiple version +# directories, initial revisions must be specified with --version-path. +# The path separator used here should be the separator specified by "path_separator" +# below. +# version_locations = %(here)s/bar:%(here)s/bat:%(here)s/alembic/versions + +# path_separator; This indicates what character is used to split lists of file +# paths, including version_locations and prepend_sys_path within configparser +# files such as alembic.ini. +# The default rendered in new alembic.ini files is "os", which uses os.pathsep +# to provide os-dependent path splitting. +# +# Note that in order to support legacy alembic.ini files, this default does NOT +# take place if path_separator is not present in alembic.ini. If this +# option is omitted entirely, fallback logic is as follows: +# +# 1. Parsing of the version_locations option falls back to using the legacy +# "version_path_separator" key, which if absent then falls back to the legacy +# behavior of splitting on spaces and/or commas. +# 2. Parsing of the prepend_sys_path option falls back to the legacy +# behavior of splitting on spaces, commas, or colons. +# +# Valid values for path_separator are: +# +# path_separator = : +# path_separator = ; +# path_separator = space +# path_separator = newline +# +# Use os.pathsep. Default configuration used for new projects. +path_separator = os + +# set to 'true' to search source files recursively +# in each "version_locations" directory +# new in Alembic version 1.10 +# recursive_version_locations = false + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + +# database URL. This is consumed by the user-maintained env.py script only. +# other means of configuring database URLs may be customized within the env.py +# file. +sqlalchemy.url = sqlite:///./oraculo.db + + +[post_write_hooks] +# post_write_hooks defines scripts or Python functions that are run +# on newly generated revision scripts. See the documentation for further +# detail and examples + +# format using "black" - use the console_scripts runner, against the "black" entrypoint +# hooks = black +# black.type = console_scripts +# black.entrypoint = black +# black.options = -l 79 REVISION_SCRIPT_FILENAME + +# lint with attempts to fix using "ruff" - use the module runner, against the "ruff" module +# hooks = ruff +# ruff.type = module +# ruff.module = ruff +# ruff.options = check --fix REVISION_SCRIPT_FILENAME + +# Alternatively, use the exec runner to execute a binary found on your PATH +# hooks = ruff +# ruff.type = exec +# ruff.executable = ruff +# ruff.options = check --fix REVISION_SCRIPT_FILENAME + +# Logging configuration. This is also consumed by the user-maintained +# env.py script only. +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARNING +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARNING +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/alembic/README b/alembic/README new file mode 100644 index 0000000000000000000000000000000000000000..98e4f9c44effe479ed38c66ba922e7bcc672916f --- /dev/null +++ b/alembic/README @@ -0,0 +1 @@ +Generic single-database configuration. \ No newline at end of file diff --git a/alembic/env.py b/alembic/env.py new file mode 100644 index 0000000000000000000000000000000000000000..af31ef3b16689a05887836b426f358bb775ff6cf --- /dev/null +++ b/alembic/env.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from logging.config import fileConfig + +from alembic import context +from sqlalchemy import engine_from_config, pool + +from app.core.config import get_settings +from app.db import models # noqa: F401 +from app.db.base import Base + +config = context.config +settings = get_settings() +config.set_main_option("sqlalchemy.url", settings.database_url) + +if config.config_file_name is not None: + fileConfig(config.config_file_name) + +target_metadata = Base.metadata + + +def run_migrations_offline() -> None: + url = config.get_main_option("sqlalchemy.url") + context.configure( + url=url, + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + compare_type=True, + ) + + with context.begin_transaction(): + context.run_migrations() + + +def run_migrations_online() -> None: + connectable = engine_from_config( + config.get_section(config.config_ini_section, {}), + prefix="sqlalchemy.", + poolclass=pool.NullPool, + ) + + with connectable.connect() as connection: + context.configure( + connection=connection, + target_metadata=target_metadata, + compare_type=True, + ) + + with context.begin_transaction(): + context.run_migrations() + + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/alembic/script.py.mako b/alembic/script.py.mako new file mode 100644 index 0000000000000000000000000000000000000000..11016301e749297acb67822efc7974ee53c905c6 --- /dev/null +++ b/alembic/script.py.mako @@ -0,0 +1,28 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision: str = ${repr(up_revision)} +down_revision: Union[str, Sequence[str], None] = ${repr(down_revision)} +branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)} +depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)} + + +def upgrade() -> None: + """Upgrade schema.""" + ${upgrades if upgrades else "pass"} + + +def downgrade() -> None: + """Downgrade schema.""" + ${downgrades if downgrades else "pass"} diff --git a/alembic/versions/33e682013d1c_initial_api_schema.py b/alembic/versions/33e682013d1c_initial_api_schema.py new file mode 100644 index 0000000000000000000000000000000000000000..efd4038faf9c482cfabc6b6de3151b443cc860ec --- /dev/null +++ b/alembic/versions/33e682013d1c_initial_api_schema.py @@ -0,0 +1,71 @@ +"""initial_api_schema + +Revision ID: 33e682013d1c +Revises: +Create Date: 2026-04-11 14:36:06.659737 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '33e682013d1c' +down_revision: Union[str, Sequence[str], None] = None +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('users', + sa.Column('id', sa.String(length=36), nullable=False), + sa.Column('email', sa.String(length=255), nullable=False), + sa.Column('full_name', sa.String(length=255), nullable=False), + sa.Column('password_hash', sa.String(length=255), nullable=False), + sa.Column('role', sa.String(length=32), nullable=False), + sa.Column('is_active', sa.Boolean(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=False), + sa.Column('updated_at', sa.DateTime(), nullable=False), + sa.PrimaryKeyConstraint('id', name=op.f('pk_users')) + ) + op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True) + op.create_table('prediction_logs', + sa.Column('id', sa.String(length=36), nullable=False), + sa.Column('user_id', sa.String(length=36), nullable=False), + sa.Column('request_id', sa.String(length=64), nullable=False), + sa.Column('ip_address', sa.String(length=64), nullable=False), + sa.Column('label', sa.String(length=16), nullable=False), + sa.Column('probability', sa.Float(), nullable=False), + sa.Column('latency_ms', sa.Float(), nullable=False), + sa.Column('model_version', sa.String(length=64), nullable=False), + sa.Column('payload_hash', sa.String(length=64), nullable=False), + sa.Column('input_payload', sa.JSON(), nullable=False), + sa.Column('normalized_payload', sa.JSON(), nullable=False), + sa.Column('notes', sa.Text(), nullable=True), + sa.Column('created_at', sa.DateTime(), nullable=False), + sa.Column('updated_at', sa.DateTime(), nullable=False), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], name=op.f('fk_prediction_logs_user_id_users')), + sa.PrimaryKeyConstraint('id', name=op.f('pk_prediction_logs')) + ) + op.create_index(op.f('ix_prediction_logs_label'), 'prediction_logs', ['label'], unique=False) + op.create_index(op.f('ix_prediction_logs_payload_hash'), 'prediction_logs', ['payload_hash'], unique=False) + op.create_index(op.f('ix_prediction_logs_request_id'), 'prediction_logs', ['request_id'], unique=False) + op.create_index(op.f('ix_prediction_logs_user_id'), 'prediction_logs', ['user_id'], unique=False) + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('ix_prediction_logs_user_id'), table_name='prediction_logs') + op.drop_index(op.f('ix_prediction_logs_request_id'), table_name='prediction_logs') + op.drop_index(op.f('ix_prediction_logs_payload_hash'), table_name='prediction_logs') + op.drop_index(op.f('ix_prediction_logs_label'), table_name='prediction_logs') + op.drop_table('prediction_logs') + op.drop_index(op.f('ix_users_email'), table_name='users') + op.drop_table('users') + # ### end Alembic commands ### diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/api/__init__.py b/app/api/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9a34133de473b71d32136ef03b04dc1a84955bd5 --- /dev/null +++ b/app/api/__init__.py @@ -0,0 +1,3 @@ +from app.api.router import router + +__all__ = ["router"] diff --git a/app/api/dependencies.py b/app/api/dependencies.py new file mode 100644 index 0000000000000000000000000000000000000000..94952b236c51291391e2f1276213ba579acdecbc --- /dev/null +++ b/app/api/dependencies.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +from collections.abc import Generator + +from fastapi import Depends, Request +from sqlalchemy.orm import Session + +from app.core.config import Settings +from app.core.exceptions import AuthorizationError +from app.core.security import bearer_scheme, decode_access_token, extract_bearer_token +from app.db.models import User +from app.db.repositories import PredictionRepository, UserRepository +from app.db.session import yield_session +from app.ml.model_manager import ModelManager +from app.services import AuthService, HealthService, PredictionService + + +def get_settings(request: Request) -> Settings: + return request.app.state.settings + + +def get_model_manager(request: Request) -> ModelManager: + return request.app.state.model_manager + + +def get_db_session(request: Request) -> Generator[Session, None, None]: + yield from yield_session(request.app.state.session_factory) + + +def get_user_repository(session: Session = Depends(get_db_session)) -> UserRepository: + return UserRepository(session) + + +def get_prediction_repository(session: Session = Depends(get_db_session)) -> PredictionRepository: + return PredictionRepository(session) + + +def get_auth_service( + settings: Settings = Depends(get_settings), + user_repository: UserRepository = Depends(get_user_repository), +) -> AuthService: + return AuthService(user_repository=user_repository, settings=settings) + + +def get_prediction_service( + model_manager: ModelManager = Depends(get_model_manager), + prediction_repository: PredictionRepository = Depends(get_prediction_repository), +) -> PredictionService: + return PredictionService( + model_manager=model_manager, + prediction_repository=prediction_repository, + ) + + +def get_health_service( + settings: Settings = Depends(get_settings), + model_manager: ModelManager = Depends(get_model_manager), +) -> HealthService: + return HealthService(settings=settings, model_manager=model_manager) + + +def get_current_user( + credentials=Depends(bearer_scheme), + settings: Settings = Depends(get_settings), + auth_service: AuthService = Depends(get_auth_service), +) -> User: + token = extract_bearer_token(credentials) + token_payload = decode_access_token(token, settings) + user = auth_service.get_user(token_payload.sub) + if not user.is_active: + raise AuthorizationError("Inactive users cannot access this resource.") + return user + + +def get_current_admin_user(current_user: User = Depends(get_current_user)) -> User: + if current_user.role != "admin": + raise AuthorizationError("Administrator privileges are required.") + return current_user diff --git a/app/api/router.py b/app/api/router.py new file mode 100644 index 0000000000000000000000000000000000000000..2581eeec928bfea8f59b2a1860cc408a8652b3b5 --- /dev/null +++ b/app/api/router.py @@ -0,0 +1,6 @@ +from fastapi import APIRouter + +from app.api.v1.router import router as v1_router + +router = APIRouter() +router.include_router(v1_router) diff --git a/app/api/v1/__init__.py b/app/api/v1/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..ede43b6d5fb6f5db9354acbf650a92ac8a4e25dc --- /dev/null +++ b/app/api/v1/__init__.py @@ -0,0 +1,3 @@ +from app.api.v1.router import router + +__all__ = ["router"] diff --git a/app/api/v1/endpoints/__init__.py b/app/api/v1/endpoints/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..a936b5f78431fc22710d368b3e76793840bf6a94 --- /dev/null +++ b/app/api/v1/endpoints/__init__.py @@ -0,0 +1 @@ +# Package marker for API endpoints. diff --git a/app/api/v1/endpoints/auth.py b/app/api/v1/endpoints/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..bbf7bfa23a17fc3fc8ce918ace693f20ac4f691d --- /dev/null +++ b/app/api/v1/endpoints/auth.py @@ -0,0 +1,29 @@ +from fastapi import APIRouter, Depends, status + +from app.api.dependencies import get_auth_service, get_current_user +from app.db.models import User +from app.schemas.auth import LoginRequest, RegisterRequest, TokenResponse, UserResponse +from app.services.auth import AuthService + +router = APIRouter(prefix="/auth", tags=["Authentication"]) + + +@router.post("/register", response_model=UserResponse, status_code=status.HTTP_201_CREATED) +def register( + payload: RegisterRequest, + auth_service: AuthService = Depends(get_auth_service), +) -> UserResponse: + return auth_service.register(payload) + + +@router.post("/login", response_model=TokenResponse) +def login( + payload: LoginRequest, + auth_service: AuthService = Depends(get_auth_service), +) -> TokenResponse: + return auth_service.login(payload) + + +@router.get("/me", response_model=UserResponse) +def me(current_user: User = Depends(get_current_user)) -> UserResponse: + return UserResponse.model_validate(current_user) diff --git a/app/api/v1/endpoints/health.py b/app/api/v1/endpoints/health.py new file mode 100644 index 0000000000000000000000000000000000000000..2cda795bf707255c60704c3589fbbfaff1bcbe5e --- /dev/null +++ b/app/api/v1/endpoints/health.py @@ -0,0 +1,21 @@ +from fastapi import APIRouter, Depends +from sqlalchemy.orm import Session + +from app.api.dependencies import get_db_session, get_health_service +from app.schemas.health import LiveHealthResponse, ReadyHealthResponse +from app.services.health import HealthService + +router = APIRouter(prefix="/health", tags=["Health"]) + + +@router.get("/live", response_model=LiveHealthResponse) +def live(service: HealthService = Depends(get_health_service)) -> LiveHealthResponse: + return service.live() + + +@router.get("/ready", response_model=ReadyHealthResponse) +def ready( + service: HealthService = Depends(get_health_service), + session: Session = Depends(get_db_session), +) -> ReadyHealthResponse: + return service.ready(session) diff --git a/app/api/v1/endpoints/predictions.py b/app/api/v1/endpoints/predictions.py new file mode 100644 index 0000000000000000000000000000000000000000..8ed3ff0262177d47efdd922145a1b85ccab6eae6 --- /dev/null +++ b/app/api/v1/endpoints/predictions.py @@ -0,0 +1,61 @@ +from fastapi import APIRouter, Depends, Query, Request, status + +from app.api.dependencies import get_current_user, get_prediction_service, get_settings +from app.core.config import Settings +from app.db.models import User +from app.schemas.prediction import ( + PredictionDetailResponse, + PredictionInput, + PredictionListResponse, + PredictionLabel, +) +from app.services.prediction import PredictionService + +router = APIRouter(prefix="/predictions", tags=["Predictions"]) + + +@router.post("", response_model=PredictionDetailResponse, status_code=status.HTTP_201_CREATED) +def create_prediction( + payload: PredictionInput, + request: Request, + current_user: User = Depends(get_current_user), + prediction_service: PredictionService = Depends(get_prediction_service), +) -> PredictionDetailResponse: + return prediction_service.predict( + payload=payload, + user=current_user, + request_id=request.state.request_id, + client_ip=request.state.client_ip, + ) + + +@router.get("", response_model=PredictionListResponse) +def list_predictions( + skip: int = Query(default=0, ge=0), + limit: int = Query(default=20, ge=1, le=100), + label: PredictionLabel | None = Query(default=None), + min_probability: float | None = Query(default=None, ge=0.0, le=1.0), + current_user: User = Depends(get_current_user), + prediction_service: PredictionService = Depends(get_prediction_service), + settings: Settings = Depends(get_settings), +) -> PredictionListResponse: + safe_limit = min(limit, settings.prediction_history_max_limit) + return prediction_service.list_predictions( + user=current_user, + skip=skip, + limit=safe_limit, + label=label, + min_probability=min_probability, + ) + + +@router.get("/{prediction_id}", response_model=PredictionDetailResponse) +def get_prediction( + prediction_id: str, + current_user: User = Depends(get_current_user), + prediction_service: PredictionService = Depends(get_prediction_service), +) -> PredictionDetailResponse: + return prediction_service.get_prediction( + prediction_id=prediction_id, + user=current_user, + ) diff --git a/app/api/v1/router.py b/app/api/v1/router.py new file mode 100644 index 0000000000000000000000000000000000000000..c9d03751050a14f81d44a9905bc19d6ea13dcb5e --- /dev/null +++ b/app/api/v1/router.py @@ -0,0 +1,10 @@ +from fastapi import APIRouter + +from app.api.v1.endpoints.auth import router as auth_router +from app.api.v1.endpoints.health import router as health_router +from app.api.v1.endpoints.predictions import router as predictions_router + +router = APIRouter(prefix="/api/v1") +router.include_router(health_router) +router.include_router(auth_router) +router.include_router(predictions_router) diff --git a/app/core/__init__.py b/app/core/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/core/config.py b/app/core/config.py new file mode 100644 index 0000000000000000000000000000000000000000..bce05f74fc95d74c3742763ea6c6c29eafa6d2ee --- /dev/null +++ b/app/core/config.py @@ -0,0 +1,103 @@ +from __future__ import annotations + +from functools import lru_cache +from pathlib import Path +from typing import Literal + +from pydantic import Field, field_validator +from pydantic_settings import BaseSettings, SettingsConfigDict + + +class Settings(BaseSettings): + model_config = SettingsConfigDict( + env_file=".env", + env_prefix="ORACULO_", + case_sensitive=False, + extra="ignore", + ) + + app_name: str = "Oraculo Adult Income API" + app_version: str = "2.0.0" + environment: Literal["local", "development", "test", "staging", "production"] = "development" + debug: bool = False + + api_v1_prefix: str = "/api/v1" + docs_enabled: bool = True + openapi_url: str = "/openapi.json" + docs_url: str = "/docs" + redoc_url: str = "/redoc" + + database_url: str = "sqlite:///./oraculo.db" + database_echo: bool = False + auto_create_tables: bool = True + auto_seed_admin: bool = True + seed_admin_email: str | None = None + seed_admin_password: str | None = None + seed_admin_name: str = "Administrator" + + model_path: str = "app/ml/pipeline_produccion.pkl" + + jwt_secret_key: str = "change-me-in-production" + jwt_algorithm: str = "HS256" + access_token_expire_minutes: int = 60 + + allowed_hosts: list[str] = Field( + default_factory=lambda: [ + "localhost", + "127.0.0.1", + "testserver", + "*.hf.space", + "*.huggingface.co", + ] + ) + cors_allow_origins: list[str] = Field( + default_factory=lambda: ["http://localhost:3000", "http://127.0.0.1:3000"] + ) + + max_request_size_bytes: int = 32_768 + rate_limit_enabled: bool = True + rate_limit_requests: int = 60 + rate_limit_window_seconds: int = 60 + rate_limit_exempt_paths: list[str] = Field( + default_factory=lambda: [ + "/", + "/docs", + "/redoc", + "/openapi.json", + "/api/v1/health/live", + "/api/v1/health/ready", + ] + ) + security_headers_enabled: bool = True + + prediction_history_default_limit: int = 20 + prediction_history_max_limit: int = 100 + + @field_validator("allowed_hosts", "cors_allow_origins", "rate_limit_exempt_paths", mode="before") + @classmethod + def _split_csv_values(cls, value: str | list[str]) -> list[str]: + if isinstance(value, list): + return value + if not value: + return [] + return [item.strip() for item in value.split(",") if item.strip()] + + @property + def base_dir(self) -> Path: + return Path(__file__).resolve().parents[2] + + @property + def resolved_model_path(self) -> Path: + model_path = Path(self.model_path) + if model_path.is_absolute(): + return model_path + return self.base_dir / model_path + + @property + def is_production(self) -> bool: + return self.environment == "production" + + +@lru_cache +def get_settings() -> Settings: + return Settings() diff --git a/app/core/error_handlers.py b/app/core/error_handlers.py new file mode 100644 index 0000000000000000000000000000000000000000..a1b30a2774a9fb2c1c5a56cdc907dcfdaa09ffc9 --- /dev/null +++ b/app/core/error_handlers.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +import logging +from typing import Any + +from fastapi import FastAPI, HTTPException, Request +from fastapi.exceptions import RequestValidationError +from fastapi.responses import JSONResponse + +from app.core.exceptions import AppError + +logger = logging.getLogger("oraculo_api.errors") + + +def build_error_payload( + request: Request, + *, + code: str, + message: str, + detail: dict[str, Any] | None = None, +) -> dict[str, Any]: + request_id = getattr(request.state, "request_id", None) + return { + "error": { + "code": code, + "message": message, + "detail": detail or {}, + "request_id": request_id, + } + } + + +def register_error_handlers(app: FastAPI) -> None: + @app.exception_handler(AppError) + async def handle_app_error(request: Request, exc: AppError) -> JSONResponse: + payload = build_error_payload(request, code=exc.code, message=exc.message, detail=exc.detail) + return JSONResponse(status_code=exc.status_code, content=payload) + + @app.exception_handler(RequestValidationError) + async def handle_validation_error(request: Request, exc: RequestValidationError) -> JSONResponse: + payload = build_error_payload( + request, + code="validation_error", + message="Request validation failed.", + detail={"errors": exc.errors()}, + ) + return JSONResponse(status_code=422, content=payload) + + @app.exception_handler(HTTPException) + async def handle_http_exception(request: Request, exc: HTTPException) -> JSONResponse: + detail = exc.detail if isinstance(exc.detail, dict) else {"reason": exc.detail} + payload = build_error_payload( + request, + code="http_error", + message="HTTP error.", + detail=detail, + ) + return JSONResponse(status_code=exc.status_code, content=payload, headers=exc.headers) + + @app.exception_handler(Exception) + async def handle_unexpected_error(request: Request, exc: Exception) -> JSONResponse: + logger.exception("Unhandled error: %s", exc) + payload = build_error_payload( + request, + code="internal_server_error", + message="Unexpected internal error.", + ) + return JSONResponse(status_code=500, content=payload) diff --git a/app/core/exceptions.py b/app/core/exceptions.py new file mode 100644 index 0000000000000000000000000000000000000000..49307a831b965cc4ae1323d6314625315bf8b676 --- /dev/null +++ b/app/core/exceptions.py @@ -0,0 +1,62 @@ +from __future__ import annotations + +from dataclasses import dataclass, field +from typing import Any + + +@dataclass(slots=True) +class AppError(Exception): + message: str + status_code: int = 400 + code: str = "app_error" + detail: dict[str, Any] = field(default_factory=dict) + + +class BadRequestError(AppError): + def __init__(self, message: str, detail: dict[str, Any] | None = None) -> None: + super().__init__(message=message, status_code=400, code="bad_request", detail=detail or {}) + + +class AuthenticationError(AppError): + def __init__(self, message: str = "Authentication failed.") -> None: + super().__init__(message=message, status_code=401, code="authentication_error") + + +class AuthorizationError(AppError): + def __init__(self, message: str = "You are not allowed to access this resource.") -> None: + super().__init__(message=message, status_code=403, code="authorization_error") + + +class ResourceNotFoundError(AppError): + def __init__(self, resource_name: str, resource_id: str) -> None: + super().__init__( + message=f"{resource_name} '{resource_id}' was not found.", + status_code=404, + code="resource_not_found", + detail={"resource_name": resource_name, "resource_id": resource_id}, + ) + + +class ConflictError(AppError): + def __init__(self, message: str, detail: dict[str, Any] | None = None) -> None: + super().__init__(message=message, status_code=409, code="conflict", detail=detail or {}) + + +class RateLimitExceededError(AppError): + def __init__(self, retry_after_seconds: int) -> None: + super().__init__( + message="Rate limit exceeded. Please retry later.", + status_code=429, + code="rate_limit_exceeded", + detail={"retry_after_seconds": retry_after_seconds}, + ) + + +class ServiceUnavailableError(AppError): + def __init__(self, message: str = "Service temporarily unavailable.") -> None: + super().__init__(message=message, status_code=503, code="service_unavailable") + + +class ModelInferenceError(AppError): + def __init__(self, message: str = "Model inference failed.") -> None: + super().__init__(message=message, status_code=500, code="model_inference_error") diff --git a/app/core/logging.py b/app/core/logging.py new file mode 100644 index 0000000000000000000000000000000000000000..67db84b37472df486fef1df1d216402233ba23df --- /dev/null +++ b/app/core/logging.py @@ -0,0 +1,34 @@ +from __future__ import annotations + +import logging +import logging.config + +from app.core.config import Settings + + +def configure_logging(settings: Settings) -> None: + level = "DEBUG" if settings.debug else "INFO" + logging.config.dictConfig( + { + "version": 1, + "disable_existing_loggers": False, + "formatters": { + "standard": { + "format": "%(asctime)s | %(levelname)s | %(name)s | %(message)s", + } + }, + "handlers": { + "default": { + "class": "logging.StreamHandler", + "level": level, + "formatter": "standard", + } + }, + "root": {"level": level, "handlers": ["default"]}, + "loggers": { + "uvicorn": {"level": level, "handlers": ["default"], "propagate": False}, + "uvicorn.access": {"level": level, "handlers": ["default"], "propagate": False}, + "oraculo_api": {"level": level, "handlers": ["default"], "propagate": False}, + }, + } + ) diff --git a/app/core/middleware.py b/app/core/middleware.py new file mode 100644 index 0000000000000000000000000000000000000000..1e21a37f1107bbd373afb0d2b32897108d8e1b97 --- /dev/null +++ b/app/core/middleware.py @@ -0,0 +1,151 @@ +from __future__ import annotations + +import logging +import time +from collections import defaultdict, deque +from threading import Lock +from typing import Deque +from uuid import uuid4 + +from fastapi import Request +from fastapi.responses import JSONResponse +from starlette.middleware.base import BaseHTTPMiddleware + +from app.core.config import Settings +from app.core.error_handlers import build_error_payload + +logger = logging.getLogger("oraculo_api.middleware") + + +def resolve_client_ip(request: Request) -> str: + forwarded_for = request.headers.get("x-forwarded-for") + if forwarded_for: + return forwarded_for.split(",")[0].strip() + if request.client: + return request.client.host + return "unknown" + + +class RequestContextMiddleware(BaseHTTPMiddleware): + async def dispatch(self, request: Request, call_next): + request_id = request.headers.get("x-request-id", str(uuid4())) + request.state.request_id = request_id + request.state.started_at = time.perf_counter() + request.state.client_ip = resolve_client_ip(request) + + response = await call_next(request) + duration_ms = (time.perf_counter() - request.state.started_at) * 1000 + response.headers["X-Request-ID"] = request_id + response.headers["X-Process-Time-MS"] = f"{duration_ms:.2f}" + return response + + +class SecurityHeadersMiddleware(BaseHTTPMiddleware): + def __init__(self, app, settings: Settings): + super().__init__(app) + self.settings = settings + + def _content_security_policy_for_path(self, path: str) -> str: + docs_paths = { + self.settings.docs_url, + self.settings.redoc_url, + self.settings.openapi_url, + } + if path in {value for value in docs_paths if value}: + return ( + "default-src 'self'; " + "script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; " + "style-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; " + "img-src 'self' data: https://fastapi.tiangolo.com https://cdn.jsdelivr.net; " + "font-src 'self' https://cdn.jsdelivr.net; " + "connect-src 'self'; " + "frame-ancestors 'none'; " + "base-uri 'self';" + ) + + return "default-src 'none'; frame-ancestors 'none'; base-uri 'none';" + + async def dispatch(self, request: Request, call_next): + response = await call_next(request) + if not self.settings.security_headers_enabled: + return response + + response.headers["X-Content-Type-Options"] = "nosniff" + response.headers["X-Frame-Options"] = "DENY" + response.headers["Referrer-Policy"] = "no-referrer" + response.headers["Permissions-Policy"] = "camera=(), microphone=(), geolocation=()" + response.headers["Cache-Control"] = "no-store" + response.headers["Pragma"] = "no-cache" + response.headers["Content-Security-Policy"] = self._content_security_policy_for_path(request.url.path) + return response + + +class MaxRequestSizeMiddleware(BaseHTTPMiddleware): + def __init__(self, app, max_request_size_bytes: int): + super().__init__(app) + self.max_request_size_bytes = max_request_size_bytes + + async def dispatch(self, request: Request, call_next): + content_length = request.headers.get("content-length") + if content_length and int(content_length) > self.max_request_size_bytes: + payload = build_error_payload( + request, + code="payload_too_large", + message="Payload exceeds the maximum allowed size.", + detail={"max_request_size_bytes": self.max_request_size_bytes}, + ) + return JSONResponse(status_code=413, content=payload) + return await call_next(request) + + +class SimpleInMemoryRateLimiter: + def __init__(self, max_requests: int, window_seconds: int): + self.max_requests = max_requests + self.window_seconds = window_seconds + self._storage: dict[str, Deque[float]] = defaultdict(deque) + self._lock = Lock() + + def is_allowed(self, client_key: str) -> tuple[bool, int]: + now = time.time() + with self._lock: + bucket = self._storage[client_key] + while bucket and now - bucket[0] > self.window_seconds: + bucket.popleft() + + if len(bucket) >= self.max_requests: + retry_after = max(1, int(self.window_seconds - (now - bucket[0]))) + return False, retry_after + + bucket.append(now) + return True, 0 + + +class RateLimitMiddleware(BaseHTTPMiddleware): + def __init__(self, app, settings: Settings): + super().__init__(app) + self.settings = settings + self.limiter = SimpleInMemoryRateLimiter( + max_requests=settings.rate_limit_requests, + window_seconds=settings.rate_limit_window_seconds, + ) + + async def dispatch(self, request: Request, call_next): + if not self.settings.rate_limit_enabled or request.url.path in self.settings.rate_limit_exempt_paths: + return await call_next(request) + + client_key = resolve_client_ip(request) + is_allowed, retry_after = self.limiter.is_allowed(client_key) + if not is_allowed: + payload = build_error_payload( + request, + code="rate_limit_exceeded", + message="Rate limit exceeded. Please retry later.", + detail={"retry_after_seconds": retry_after}, + ) + return JSONResponse( + status_code=429, + content=payload, + headers={"Retry-After": str(retry_after)}, + ) + + return await call_next(request) diff --git a/app/core/security.py b/app/core/security.py new file mode 100644 index 0000000000000000000000000000000000000000..2e7df63da4a222d1c67ab275b065505a178512dd --- /dev/null +++ b/app/core/security.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from datetime import datetime, timedelta, timezone +import hashlib +from typing import Any + +import bcrypt +import jwt +from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer +from pydantic import BaseModel + +from app.core.config import Settings +from app.core.exceptions import AuthenticationError + + +bearer_scheme = HTTPBearer(auto_error=False) + + +class TokenPayload(BaseModel): + sub: str + role: str = "user" + exp: int + + +def hash_password(password: str) -> str: + password_bytes = _password_to_bytes(password) + return bcrypt.hashpw(password_bytes, bcrypt.gensalt()).decode("utf-8") + + +def verify_password(plain_password: str, hashed_password: str) -> bool: + password_bytes = _password_to_bytes(plain_password) + return bcrypt.checkpw(password_bytes, hashed_password.encode("utf-8")) + + +def _password_to_bytes(password: str) -> bytes: + raw_bytes = password.encode("utf-8") + if len(raw_bytes) <= 72: + return raw_bytes + return hashlib.sha256(raw_bytes).hexdigest().encode("utf-8") + + +def create_access_token( + *, + subject: str, + role: str, + settings: Settings, + expires_delta: timedelta | None = None, +) -> str: + expire_at = datetime.now(timezone.utc) + ( + expires_delta or timedelta(minutes=settings.access_token_expire_minutes) + ) + payload: dict[str, Any] = { + "sub": subject, + "role": role, + "exp": expire_at, + } + return jwt.encode(payload, settings.jwt_secret_key, algorithm=settings.jwt_algorithm) + + +def decode_access_token(token: str, settings: Settings) -> TokenPayload: + try: + payload = jwt.decode(token, settings.jwt_secret_key, algorithms=[settings.jwt_algorithm]) + return TokenPayload(**payload) + except jwt.ExpiredSignatureError as exc: + raise AuthenticationError("Access token expired.") from exc + except jwt.PyJWTError as exc: + raise AuthenticationError("Invalid access token.") from exc + + +def extract_bearer_token(credentials: HTTPAuthorizationCredentials | None) -> str: + if credentials is None or not credentials.credentials: + raise AuthenticationError("Missing bearer token.") + return credentials.credentials diff --git a/app/db/__init__.py b/app/db/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f0bf0308aa3a9ecd90741deb423c8633a8c5119d --- /dev/null +++ b/app/db/__init__.py @@ -0,0 +1,3 @@ +from app.db import models + +__all__ = ["models"] diff --git a/app/db/base.py b/app/db/base.py new file mode 100644 index 0000000000000000000000000000000000000000..b19f9cdfefb602fba4fa199fd9fd349171a4fd3b --- /dev/null +++ b/app/db/base.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +from datetime import datetime, timezone + +from sqlalchemy import MetaData +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column + + +NAMING_CONVENTION = { + "ix": "ix_%(column_0_label)s", + "uq": "uq_%(table_name)s_%(column_0_name)s", + "ck": "ck_%(table_name)s_%(constraint_name)s", + "fk": "fk_%(table_name)s_%(column_0_name)s_%(referred_table_name)s", + "pk": "pk_%(table_name)s", +} + + +class Base(DeclarativeBase): + metadata = MetaData(naming_convention=NAMING_CONVENTION) + + +class TimestampMixin: + created_at: Mapped[datetime] = mapped_column(default=lambda: datetime.now(timezone.utc)) + updated_at: Mapped[datetime] = mapped_column( + default=lambda: datetime.now(timezone.utc), + onupdate=lambda: datetime.now(timezone.utc), + ) diff --git a/app/db/models/__init__.py b/app/db/models/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..22299e80413712019d237d3a30d2224a2cdaa951 --- /dev/null +++ b/app/db/models/__init__.py @@ -0,0 +1,4 @@ +from app.db.models.prediction_log import PredictionLog +from app.db.models.user import User, UserRole + +__all__ = ["PredictionLog", "User", "UserRole"] diff --git a/app/db/models/prediction_log.py b/app/db/models/prediction_log.py new file mode 100644 index 0000000000000000000000000000000000000000..7366d51d9ba71cac828e44ed7c3a9976174c9d4a --- /dev/null +++ b/app/db/models/prediction_log.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +from uuid import uuid4 + +from sqlalchemy import Float, ForeignKey, JSON, String, Text +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from app.db.base import Base, TimestampMixin + + +class PredictionLog(TimestampMixin, Base): + __tablename__ = "prediction_logs" + + id: Mapped[str] = mapped_column(String(36), primary_key=True, default=lambda: str(uuid4())) + user_id: Mapped[str] = mapped_column(String(36), ForeignKey("users.id"), index=True) + request_id: Mapped[str] = mapped_column(String(64), index=True) + ip_address: Mapped[str] = mapped_column(String(64)) + label: Mapped[str] = mapped_column(String(16), index=True) + probability: Mapped[float] = mapped_column(Float) + latency_ms: Mapped[float] = mapped_column(Float) + model_version: Mapped[str] = mapped_column(String(64)) + payload_hash: Mapped[str] = mapped_column(String(64), index=True) + input_payload: Mapped[dict] = mapped_column(JSON) + normalized_payload: Mapped[dict] = mapped_column(JSON) + notes: Mapped[str | None] = mapped_column(Text, nullable=True) + + user = relationship("User", back_populates="predictions") diff --git a/app/db/models/user.py b/app/db/models/user.py new file mode 100644 index 0000000000000000000000000000000000000000..308e839412b9f3a5b7f0c2344cc3afd257898867 --- /dev/null +++ b/app/db/models/user.py @@ -0,0 +1,27 @@ +from __future__ import annotations + +from enum import Enum +from uuid import uuid4 + +from sqlalchemy import Boolean, String +from sqlalchemy.orm import Mapped, mapped_column, relationship + +from app.db.base import Base, TimestampMixin + + +class UserRole(str, Enum): + ADMIN = "admin" + USER = "user" + + +class User(TimestampMixin, Base): + __tablename__ = "users" + + id: Mapped[str] = mapped_column(String(36), primary_key=True, default=lambda: str(uuid4())) + email: Mapped[str] = mapped_column(String(255), unique=True, index=True) + full_name: Mapped[str] = mapped_column(String(255)) + password_hash: Mapped[str] = mapped_column(String(255)) + role: Mapped[str] = mapped_column(String(32), default=UserRole.USER.value) + is_active: Mapped[bool] = mapped_column(Boolean, default=True) + + predictions = relationship("PredictionLog", back_populates="user", cascade="all, delete-orphan") diff --git a/app/db/repositories/__init__.py b/app/db/repositories/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f8cbec2577b82952cefad121cb7964abcaaa8132 --- /dev/null +++ b/app/db/repositories/__init__.py @@ -0,0 +1,4 @@ +from app.db.repositories.predictions import PredictionRepository +from app.db.repositories.users import UserRepository + +__all__ = ["PredictionRepository", "UserRepository"] diff --git a/app/db/repositories/predictions.py b/app/db/repositories/predictions.py new file mode 100644 index 0000000000000000000000000000000000000000..734e4adcc21fc477c5972b169117db2277c641a9 --- /dev/null +++ b/app/db/repositories/predictions.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from sqlalchemy import Select, func, select +from sqlalchemy.orm import Session + +from app.db.models import PredictionLog + + +class PredictionRepository: + def __init__(self, session: Session): + self.session = session + + def create( + self, + *, + user_id: str, + request_id: str, + ip_address: str, + label: str, + probability: float, + latency_ms: float, + model_version: str, + payload_hash: str, + input_payload: dict, + normalized_payload: dict, + notes: str | None = None, + ) -> PredictionLog: + prediction_log = PredictionLog( + user_id=user_id, + request_id=request_id, + ip_address=ip_address, + label=label, + probability=probability, + latency_ms=latency_ms, + model_version=model_version, + payload_hash=payload_hash, + input_payload=input_payload, + normalized_payload=normalized_payload, + notes=notes, + ) + self.session.add(prediction_log) + self.session.flush() + self.session.refresh(prediction_log) + return prediction_log + + def list_for_user( + self, + *, + user_id: str, + skip: int, + limit: int, + label: str | None = None, + min_probability: float | None = None, + ) -> tuple[list[PredictionLog], int]: + statement: Select[tuple[PredictionLog]] = select(PredictionLog).where(PredictionLog.user_id == user_id) + + if label: + statement = statement.where(PredictionLog.label == label) + if min_probability is not None: + statement = statement.where(PredictionLog.probability >= min_probability) + + total = self.session.scalar(select(func.count()).select_from(statement.subquery())) or 0 + rows = self.session.scalars( + statement.order_by(PredictionLog.created_at.desc()).offset(skip).limit(limit) + ).all() + return rows, total + + def get_for_user(self, *, prediction_id: str, user_id: str) -> PredictionLog | None: + statement = select(PredictionLog).where( + PredictionLog.id == prediction_id, + PredictionLog.user_id == user_id, + ) + return self.session.scalar(statement) diff --git a/app/db/repositories/users.py b/app/db/repositories/users.py new file mode 100644 index 0000000000000000000000000000000000000000..523d51923c421ba1459fdfd323a0b7899f24d1d3 --- /dev/null +++ b/app/db/repositories/users.py @@ -0,0 +1,31 @@ +from __future__ import annotations + +from sqlalchemy import select +from sqlalchemy.orm import Session + +from app.db.models import User + + +class UserRepository: + def __init__(self, session: Session): + self.session = session + + def get_by_email(self, email: str) -> User | None: + statement = select(User).where(User.email == email.lower()) + return self.session.scalar(statement) + + def get_by_id(self, user_id: str) -> User | None: + statement = select(User).where(User.id == user_id) + return self.session.scalar(statement) + + def create(self, *, email: str, full_name: str, password_hash: str, role: str = "user") -> User: + user = User( + email=email.lower(), + full_name=full_name, + password_hash=password_hash, + role=role, + ) + self.session.add(user) + self.session.flush() + self.session.refresh(user) + return user diff --git a/app/db/seeds.py b/app/db/seeds.py new file mode 100644 index 0000000000000000000000000000000000000000..37135f5d22b5785ff77ad0d16c15c1b9991b5aa1 --- /dev/null +++ b/app/db/seeds.py @@ -0,0 +1,32 @@ +from __future__ import annotations + +import logging + +from sqlalchemy.orm import Session + +from app.core.config import Settings +from app.core.security import hash_password +from app.db.models import UserRole +from app.db.repositories import UserRepository + +logger = logging.getLogger("oraculo_api.seeds") + + +def seed_admin_user(session: Session, settings: Settings) -> None: + if not settings.auto_seed_admin: + return + if not settings.seed_admin_email or not settings.seed_admin_password: + return + + repository = UserRepository(session) + existing_user = repository.get_by_email(settings.seed_admin_email) + if existing_user: + return + + repository.create( + email=settings.seed_admin_email, + full_name=settings.seed_admin_name, + password_hash=hash_password(settings.seed_admin_password), + role=UserRole.ADMIN.value, + ) + logger.info("Default admin user created for bootstrap.") diff --git a/app/db/session.py b/app/db/session.py new file mode 100644 index 0000000000000000000000000000000000000000..0c001b82aa9a61aecfb5ef53ff48498090d9f73e --- /dev/null +++ b/app/db/session.py @@ -0,0 +1,57 @@ +from __future__ import annotations + +from collections.abc import Generator + +from sqlalchemy import create_engine, text +from sqlalchemy.engine import Engine +from sqlalchemy.orm import Session, sessionmaker +from sqlalchemy.pool import StaticPool + +from app.core.config import Settings +from app.db.base import Base + + +def build_engine(settings: Settings) -> Engine: + connect_args = {"check_same_thread": False} if settings.database_url.startswith("sqlite") else {} + engine_kwargs = { + "echo": settings.database_echo, + "pool_pre_ping": True, + "future": True, + "connect_args": connect_args, + } + if settings.database_url.endswith(":memory:"): + engine_kwargs["poolclass"] = StaticPool + + return create_engine( + settings.database_url, + **engine_kwargs, + ) + + +def build_session_factory(engine: Engine) -> sessionmaker[Session]: + return sessionmaker(bind=engine, autoflush=False, autocommit=False, expire_on_commit=False) + + +def create_tables(engine: Engine) -> None: + Base.metadata.create_all(bind=engine) + + +def check_database_connection(session: Session) -> bool: + session.execute(text("SELECT 1")) + return True + + +def get_db_session_factory(request) -> sessionmaker[Session]: + return request.app.state.session_factory + + +def yield_session(session_factory: sessionmaker[Session]) -> Generator[Session, None, None]: + session = session_factory() + try: + yield session + session.commit() + except Exception: + session.rollback() + raise + finally: + session.close() diff --git a/app/main.py b/app/main.py new file mode 100644 index 0000000000000000000000000000000000000000..657bf67130d36122eca3a39ce876891a5d8f9b20 --- /dev/null +++ b/app/main.py @@ -0,0 +1,100 @@ +from __future__ import annotations + +import logging +from contextlib import asynccontextmanager + +from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware +from fastapi.middleware.gzip import GZipMiddleware +from starlette.middleware.trustedhost import TrustedHostMiddleware + +from app.api.router import router as api_router +from app.core.config import Settings, get_settings +from app.core.error_handlers import register_error_handlers +from app.core.logging import configure_logging +from app.core.middleware import ( + MaxRequestSizeMiddleware, + RateLimitMiddleware, + RequestContextMiddleware, + SecurityHeadersMiddleware, +) +from app.db import models # noqa: F401 +from app.db.seeds import seed_admin_user +from app.db.session import build_engine, build_session_factory, create_tables +from app.ml.model_manager import ModelManager + +logger = logging.getLogger("oraculo_api") + + +def create_app(settings: Settings | None = None, model_manager: ModelManager | None = None) -> FastAPI: + app_settings = settings or get_settings() + configure_logging(app_settings) + + @asynccontextmanager + async def lifespan(app: FastAPI): + engine = build_engine(app_settings) + session_factory = build_session_factory(engine) + + app.state.settings = app_settings + app.state.engine = engine + app.state.session_factory = session_factory + + if app_settings.auto_create_tables: + create_tables(engine) + + with session_factory() as session: + seed_admin_user(session, app_settings) + session.commit() + + active_model_manager = model_manager or ModelManager(app_settings.resolved_model_path) + active_model_manager.load_model() + app.state.model_manager = active_model_manager + + logger.info("%s started in %s mode.", app_settings.app_name, app_settings.environment) + yield + + if hasattr(app.state.model_manager, "unload_model"): + app.state.model_manager.unload_model() + app.state.engine.dispose() + logger.info("%s shutdown completed.", app_settings.app_name) + + docs_enabled = app_settings.docs_enabled + application = FastAPI( + title=app_settings.app_name, + version=app_settings.app_version, + debug=app_settings.debug, + lifespan=lifespan, + docs_url=app_settings.docs_url if docs_enabled else None, + redoc_url=app_settings.redoc_url if docs_enabled else None, + openapi_url=app_settings.openapi_url if docs_enabled else None, + ) + + application.add_middleware(GZipMiddleware, minimum_size=1024) + application.add_middleware( + CORSMiddleware, + allow_origins=app_settings.cors_allow_origins, + allow_credentials=True, + allow_methods=["GET", "POST", "PUT", "PATCH", "DELETE"], + allow_headers=["*"], + ) + application.add_middleware(TrustedHostMiddleware, allowed_hosts=app_settings.allowed_hosts) + application.add_middleware(SecurityHeadersMiddleware, settings=app_settings) + application.add_middleware(MaxRequestSizeMiddleware, max_request_size_bytes=app_settings.max_request_size_bytes) + application.add_middleware(RateLimitMiddleware, settings=app_settings) + application.add_middleware(RequestContextMiddleware) + + register_error_handlers(application) + application.include_router(api_router) + + @application.get("/", tags=["Root"]) + def root() -> dict[str, str]: + return { + "service": app_settings.app_name, + "version": app_settings.app_version, + "environment": app_settings.environment, + } + + return application + + +app = create_app() diff --git a/app/ml/__init__.py b/app/ml/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/app/ml/custom_transformers.py b/app/ml/custom_transformers.py new file mode 100644 index 0000000000000000000000000000000000000000..6a9e323161b7856d5ac063f1117bb818462e005e --- /dev/null +++ b/app/ml/custom_transformers.py @@ -0,0 +1,479 @@ +import logging +import re +import time +import warnings +from pathlib import Path +from typing import Any, Dict, Iterable, Optional + +import numpy as np +import pandas as pd + +logger = logging.getLogger("api_logger") + +_COLUMN_SANITIZER = re.compile(r"[^a-z0-9_]") +_MULTI_UNDERSCORE = re.compile(r"_+") +_MASK_PATTERN = re.compile(r"(?i)^(unknown|n/?a|null|nan|missing|none|-1|)$|^[^a-zA-Z0-9]+$") +_LLM_OPERATORS = {"_+_": "+", "_-_": "-", "_*_": "*"} +_RARE_LABEL = "Rare" + + +class PipelineProduccionMLOps: + """ + Standalone production pipeline compatible with the notebook artifact. + + The current notebook exports a partially broken pickle: several feature + engineering recipes are not serialized, and the API receives raw JSON with + snake_case / dotted-name mismatches. This class heals that gap at runtime. + """ + + def __init__(self, rutas: Dict, artefactos: Dict, modelos: Dict): + self.rutas = rutas or {} + self.artefactos = artefactos or {} + self.modelos = modelos or {} + self.umbral_oro = float( + self.artefactos.get( + "umbral_decision", + self.rutas.get("umbral_decision_optimo", 0.50), + ) + ) + self.version = "1.0.0" + self.fecha_ensamblaje = time.strftime("%Y-%m-%d %H:%M:%S") + + def _ensure_runtime_state(self) -> None: + if not hasattr(self, "rutas") or self.rutas is None: + self.rutas = {} + if not hasattr(self, "artefactos") or self.artefactos is None: + self.artefactos = {} + if not hasattr(self, "modelos") or self.modelos is None: + self.modelos = {} + if not hasattr(self, "umbral_oro"): + self.umbral_oro = float( + self.artefactos.get( + "umbral_decision", + self.rutas.get("umbral_decision_optimo", 0.50), + ) + ) + if not hasattr(self, "_reference_dataset"): + self._reference_dataset = None + if not hasattr(self, "_did_infer_missing_artefacts"): + self._did_infer_missing_artefacts = False + + def _get_modelo_final(self) -> Any: + self._ensure_runtime_state() + return self.modelos.get("oraculo_calibrado", self.modelos.get("oraculo_lightgbm")) + + def _get_training_feature_names(self) -> list[str]: + modelo_final = self._get_modelo_final() + if modelo_final is None: + return [] + + if hasattr(modelo_final, "feature_names_in_"): + return [str(col) for col in modelo_final.feature_names_in_] + + if hasattr(modelo_final, "estimator") and hasattr(modelo_final.estimator, "feature_name_"): + feature_names = modelo_final.estimator.feature_name_ + feature_names = feature_names() if callable(feature_names) else feature_names + return [str(col) for col in feature_names] + + if hasattr(modelo_final, "booster_"): + return [str(col) for col in modelo_final.booster_.feature_name()] + + return [] + + @staticmethod + def _sanitize_column_name(name: Any) -> str: + text = str(name).strip().lower() + text = _COLUMN_SANITIZER.sub("_", text) + text = _MULTI_UNDERSCORE.sub("_", text) + return text.strip("_") + + @classmethod + def _sanitize_text_series(cls, series: pd.Series) -> pd.Series: + mask = series.isna() + clean = series.astype("string") + clean = clean.str.lower() + clean = clean.str.normalize("NFKD").str.encode("ascii", errors="ignore").str.decode("utf-8") + clean = clean.str.replace(r"\s+", " ", regex=True) + clean = clean.str.replace(r"\s*([^\w\s])\s*", r"\1", regex=True) + clean = clean.str.replace(r"(?<=\d)\s+(?=[a-z])|(?<=[a-z])\s+(?=\d)", "", regex=True) + clean = clean.str.strip().str.replace(r"\s+", "_", regex=True) + clean = clean.astype(object) + clean[mask] = np.nan + return clean + + @classmethod + def _normalize_input_frame(cls, X_raw: pd.DataFrame) -> pd.DataFrame: + X = X_raw.copy() + X.columns = [cls._sanitize_column_name(col) for col in X.columns] + + for col in X.columns: + dtype = X[col].dtype + if ( + pd.api.types.is_object_dtype(dtype) + or pd.api.types.is_string_dtype(dtype) + or isinstance(dtype, pd.CategoricalDtype) + ): + X[col] = cls._sanitize_text_series(X[col]) + return X + + def _reference_dataset_path(self) -> Path: + return Path(__file__).resolve().parents[2] / "adult.csv" + + def _load_reference_dataset(self) -> Optional[pd.DataFrame]: + self._ensure_runtime_state() + if self._reference_dataset is not None: + return self._reference_dataset.copy() + + dataset_path = self._reference_dataset_path() + if not dataset_path.exists(): + logger.warning( + "No se encontro '%s'; la inferencia seguira sin reconstruir recetas faltantes.", + dataset_path, + ) + return None + + try: + df = pd.read_csv(dataset_path, sep=";") + except Exception as exc: + logger.warning( + "No fue posible leer '%s' para reconstruir artefactos de inferencia: %s", + dataset_path, + exc, + ) + return None + + df = self._normalize_input_frame(df) + self._reference_dataset = df + return df.copy() + + def _get_rare_recipe(self) -> Dict[str, list]: + self._ensure_runtime_state() + recipe = self.artefactos.get("receta_categorias_raras") + if recipe: + return recipe + recipe = self.modelos.get("vocabulario_rare_labeling") + if recipe: + return recipe + return {} + + def _get_binary_recipe(self) -> Dict[str, Dict[Any, int]]: + self._ensure_runtime_state() + recipe = self.artefactos.get("receta_mapeo_binario") or self.artefactos.get("reglas_binarias") or {} + return { + col: mapping + for col, mapping in recipe.items() + if not str(col).startswith("TARGET_") + } + + def _get_target_recipe(self) -> Dict[str, Dict[str, Dict[Any, float]]]: + self._ensure_runtime_state() + return self.artefactos.get("receta_target_encoding") or self.artefactos.get("receta_woe_encoding") or {} + + def _get_ratio_recipe(self) -> Iterable[tuple]: + self._ensure_runtime_state() + return self.artefactos.get("receta_ratios_matematicos") or self.artefactos.get("receta_ratios_train") or [] + + def _get_llm_recipe(self) -> Dict[str, str]: + self._ensure_runtime_state() + return self.artefactos.get("receta_llm_fe") or {} + + def _learn_rare_recipe(self, X: pd.DataFrame, threshold: float = 0.01) -> Dict[str, list]: + recipe: Dict[str, list] = {} + cat_cols = X.select_dtypes(include=["object", "category", "string"]).columns.tolist() + + for col in cat_cols: + frequencies = X[col].value_counts(normalize=True) + valid_categories = frequencies[frequencies >= threshold].index.tolist() + masks = [val for val in frequencies.index if _MASK_PATTERN.match(str(val).strip())] + valid_categories.extend(masks) + valid_categories = list(dict.fromkeys(valid_categories)) + rare_categories = frequencies[~frequencies.index.isin(valid_categories)] + if not rare_categories.empty: + recipe[col] = valid_categories + + return recipe + + @staticmethod + def _apply_rare_labeling(X: pd.DataFrame, recipe: Dict[str, list]) -> pd.DataFrame: + X_trans = X.copy() + for col, valid_categories in recipe.items(): + if col not in X_trans.columns: + continue + mask_null = X_trans[col].isna() + mask_replace = ~X_trans[col].isin(valid_categories) & ~mask_null + X_trans.loc[mask_replace, col] = _RARE_LABEL + return X_trans + + @staticmethod + def _encode_binary_target(target: pd.Series) -> pd.Series: + ordered_values = sorted(target.dropna().unique().tolist()) + mapping = {value: index for index, value in enumerate(ordered_values)} + return target.map(mapping).astype(float) + + @staticmethod + def _learn_binary_recipe(X: pd.DataFrame) -> Dict[str, Dict[Any, int]]: + recipe: Dict[str, Dict[Any, int]] = {} + for col in X.columns: + values = X[col].dropna().unique().tolist() + if len(values) != 2: + continue + if pd.api.types.is_numeric_dtype(X[col]): + continue + ordered_values = sorted(values) + recipe[col] = {ordered_values[0]: 0, ordered_values[1]: 1} + return recipe + + @staticmethod + def _learn_target_encoding_recipe( + X: pd.DataFrame, + y: pd.Series, + rutas: Optional[Dict[str, list]] = None, + smoothing: float = 10.0, + ) -> Dict[str, Dict[str, Dict[Any, float]]]: + rutas = rutas or {"cat_vars": []} + recipe: Dict[str, Dict[str, Dict[Any, float]]] = {} + + for col in X.columns: + if col.startswith("TARGET_"): + continue + + unique_values = X[col].dropna().nunique() + is_numeric = pd.api.types.is_numeric_dtype(X[col]) + is_categorical = ( + col in rutas.get("cat_vars", []) + or pd.api.types.is_object_dtype(X[col]) + or isinstance(X[col].dtype, pd.CategoricalDtype) + ) + + if not is_categorical or is_numeric or unique_values <= 2: + continue + + working = X[col].astype(object) + stats = pd.DataFrame({"Target": y, "Categoria": working}).groupby("Categoria")["Target"].agg(["count", "mean"]) + n_obs = stats["count"] + global_mean = float(y.mean()) + smooth = (n_obs * stats["mean"] + smoothing * global_mean) / (n_obs + smoothing) + recipe[col] = { + "Target_Directo": { + **smooth.to_dict(), + "__GLOBAL_MEAN__": global_mean, + } + } + + return recipe + + def _infer_llm_recipe_from_feature_names(self, feature_names: Iterable[str]) -> Dict[str, str]: + llm_recipe: Dict[str, str] = {} + + for feature_name in feature_names: + if not feature_name.startswith("llm_"): + continue + + expression = feature_name[4:] + for token, operator in _LLM_OPERATORS.items(): + if token not in expression: + continue + left, right = expression.split(token, 1) + llm_recipe[feature_name] = f"X['{left}'] {operator} X['{right}']" + break + + return llm_recipe + + def _infer_missing_artefacts(self) -> None: + self._ensure_runtime_state() + if self._did_infer_missing_artefacts: + return + + feature_names = self._get_training_feature_names() + needs_binary = "sex" in feature_names and not self._get_binary_recipe() + needs_target = any( + feature in feature_names + for feature in ("workclass", "marital_status", "occupation", "relationship", "race", "native_country") + ) and not self._get_target_recipe() + needs_rare = (needs_binary or needs_target) and not self._get_rare_recipe() + needs_llm = any(feature.startswith("llm_") for feature in feature_names) and not self._get_llm_recipe() + + if not any((needs_binary, needs_target, needs_rare, needs_llm)): + self._did_infer_missing_artefacts = True + return + + reference_df = self._load_reference_dataset() + if reference_df is None: + self._did_infer_missing_artefacts = True + return + + target_name = self.rutas.get("target_name", "income") + if target_name not in reference_df.columns: + logger.warning( + "El dataset de referencia no contiene la columna target '%s'; no se pudieron reconstruir todas las recetas.", + target_name, + ) + self._did_infer_missing_artefacts = True + return + + X_ref = reference_df.drop(columns=[target_name]).copy() + y_ref = self._encode_binary_target(reference_df[target_name].copy()) + + rare_recipe = self._get_rare_recipe() or self._learn_rare_recipe(X_ref) + X_rare = self._apply_rare_labeling(X_ref, rare_recipe) + + if rare_recipe and "receta_categorias_raras" not in self.artefactos: + self.artefactos["receta_categorias_raras"] = rare_recipe + + binary_recipe = self._get_binary_recipe() or self._learn_binary_recipe(X_rare) + if binary_recipe and "receta_mapeo_binario" not in self.artefactos: + self.artefactos["receta_mapeo_binario"] = binary_recipe + + target_recipe = self._get_target_recipe() or self._learn_target_encoding_recipe(X_rare, y_ref, self.rutas) + if target_recipe and "receta_target_encoding" not in self.artefactos and "receta_woe_encoding" not in self.artefactos: + self.artefactos["receta_target_encoding"] = target_recipe + + llm_recipe = self._get_llm_recipe() or self._infer_llm_recipe_from_feature_names(feature_names) + if llm_recipe and "receta_llm_fe" not in self.artefactos: + self.artefactos["receta_llm_fe"] = llm_recipe + + if needs_binary or needs_target or needs_rare or needs_llm: + logger.warning( + "Se reconstruyeron artefactos faltantes del notebook usando '%s'. " + "La causa raiz es un desajuste entre la exportacion del .pkl y la API.", + self._reference_dataset_path().name, + ) + + self._did_infer_missing_artefacts = True + + def _apply_llm_formulas(self, X: pd.DataFrame) -> pd.DataFrame: + llm_recipe = self._get_llm_recipe() + if not llm_recipe: + return X + + X_trans = X.copy() + safe_env = {"np": np, "X": X_trans} + + for feature_name, formula in llm_recipe.items(): + try: + X_trans[feature_name] = eval(formula, {"__builtins__": {}}, safe_env) + except Exception: + X_trans[feature_name] = 0.0 + + return X_trans + + def _transformar_features(self, X_raw: pd.DataFrame) -> pd.DataFrame: + self._ensure_runtime_state() + self._infer_missing_artefacts() + + X = self._normalize_input_frame(X_raw) + X = self._apply_llm_formulas(X) + + receta_raras = self._get_rare_recipe() + if receta_raras: + X = self._apply_rare_labeling(X, receta_raras) + + receta_target = self._get_target_recipe() + for col, config_encoding in receta_target.items(): + if col not in X.columns: + continue + + if "__GLOBAL_NEUTRAL__" in config_encoding: + neutral = config_encoding.get("__GLOBAL_NEUTRAL__", 0.0) + mask_nan = X[col].isna() + pure_map = {key: value for key, value in config_encoding.items() if key != "__GLOBAL_NEUTRAL__"} + X[col] = X[col].astype(object).map(pure_map).fillna(neutral) + X.loc[mask_nan, col] = np.nan + continue + + for class_name, mapping in config_encoding.items(): + global_mean = mapping.get("__GLOBAL_MEAN__", 0.0) + pure_map = {key: value for key, value in mapping.items() if key != "__GLOBAL_MEAN__"} + new_col = col if len(config_encoding) == 1 else f"{col}_prob_{class_name}" + mask_nan = X[col].isna() + X[new_col] = X[col].astype(object).map(pure_map).fillna(global_mean) + X.loc[mask_nan, new_col] = np.nan + + if len(config_encoding) > 1: + X.drop(columns=[col], inplace=True) + + receta_binaria = self._get_binary_recipe() + for col, mapping in receta_binaria.items(): + if col in X.columns: + X[col] = X[col].map(mapping).fillna(0).astype(int) + + receta_ratios = self._get_ratio_recipe() + for ratio in receta_ratios: + if len(ratio) != 3: + continue + if ratio[0] in X.columns and ratio[1] in X.columns and ratio[2] not in X.columns: + div_col, num_col, ratio_name = ratio + else: + ratio_name, num_col, div_col = ratio + + if num_col in X.columns and div_col in X.columns: + X[ratio_name] = X[num_col].astype(float) / (X[div_col].astype(float) + 1e-9) + + receta_winsor = self.artefactos.get("receta_winsorizacion", {}) + for col, (lim_inf, lim_sup) in receta_winsor.items(): + if col in X.columns: + X[col] = pd.to_numeric(X[col], errors="coerce").clip(lower=lim_inf, upper=lim_sup) + + escalador = self.modelos.get("escalador_numerico") + if escalador is not None: + cols_to_scale = getattr(escalador, "feature_names_in_", []) + cols_present = [col for col in cols_to_scale if col in X.columns] + if cols_present: + X.loc[:, cols_present] = escalador.transform(X[cols_present]).astype(np.float32) + + basura = ( + self.rutas.get("basura_boruta", []) + + self.rutas.get("gemelos_colineales", []) + + self.rutas.get("fugas_del_futuro", []) + ) + basura_presente = [col for col in basura if col in X.columns] + if basura_presente: + X.drop(columns=basura_presente, inplace=True) + + return X + + def _coerce_model_input(self, X: pd.DataFrame, expected_features: list[str]) -> pd.DataFrame: + X_final = X.copy() + + for feature in expected_features: + if feature not in X_final.columns: + X_final[feature] = np.nan + + X_final = X_final[expected_features].copy() + + receta_nativas = self.artefactos.get("receta_categorias_nativas", {}) + for col, categories in receta_nativas.items(): + if col in X_final.columns: + dtype = pd.CategoricalDtype(categories=categories, ordered=False) + X_final[col] = X_final[col].astype(str).replace("nan", np.nan).astype(dtype) + + for col in X_final.columns: + if isinstance(X_final[col].dtype, pd.CategoricalDtype): + continue + if pd.api.types.is_object_dtype(X_final[col]) or pd.api.types.is_string_dtype(X_final[col]): + X_final[col] = pd.to_numeric(X_final[col], errors="coerce") + + return X_final + + def predict_proba(self, X_raw: pd.DataFrame) -> np.ndarray: + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + + modelo_final = self._get_modelo_final() + if modelo_final is None: + raise RuntimeError("No hay un modelo cargado dentro del pipeline de produccion.") + + expected_features = self._get_training_feature_names() + X_procesado = self._transformar_features(X_raw) + X_final = self._coerce_model_input(X_procesado, expected_features or list(X_procesado.columns)) + return modelo_final.predict_proba(X_final) + + def predict(self, X_raw: pd.DataFrame) -> np.ndarray: + probas = self.predict_proba(X_raw) + + if probas.shape[1] == 2: + classes = (probas[:, 1] >= self.umbral_oro).astype(int) + label_map = {0: "<=50K", 1: ">50K"} + return np.array([label_map[value] for value in classes]) + + return np.argmax(probas, axis=1) diff --git a/app/ml/model_manager.py b/app/ml/model_manager.py new file mode 100644 index 0000000000000000000000000000000000000000..ea899619da97509f53282aa5373f520e2521ace8 --- /dev/null +++ b/app/ml/model_manager.py @@ -0,0 +1,123 @@ +from __future__ import annotations + +import logging +import sys +from dataclasses import dataclass +import json +from pathlib import Path +from threading import Lock +from typing import Any + +import joblib +import numpy as np +import pandas as pd + +import app.ml.custom_transformers as custom_transformers +from app.core.exceptions import ModelInferenceError, ServiceUnavailableError + +logger = logging.getLogger("oraculo_api.model") + + +@dataclass(slots=True) +class ModelPrediction: + label: str + probability: float + raw_probabilities: list[float] + model_version: str + + +class ModelManager: + def __init__(self, model_path: str | Path): + self.model_path = Path(model_path) + self.pipeline: Any = None + self.manifest: dict[str, Any] = {} + self._lock = Lock() + + @property + def is_loaded(self) -> bool: + return self.pipeline is not None + + @property + def model_version(self) -> str: + if self.manifest.get("model_version"): + return str(self.manifest["model_version"]) + if self.pipeline is None: + return "unloaded" + return str(getattr(self.pipeline, "version", "unknown")) + + @property + def manifest_path(self) -> Path: + return self.model_path.with_name("model_manifest.json") + + def _register_pickle_bridge(self) -> None: + setattr( + sys.modules["__main__"], + "PipelineProduccionMLOps", + custom_transformers.PipelineProduccionMLOps, + ) + + def load_model(self) -> None: + with self._lock: + if self.pipeline is not None: + return + + if not self.model_path.exists(): + raise ServiceUnavailableError(f"Model artifact not found at '{self.model_path}'.") + + try: + self._register_pickle_bridge() + self.pipeline = joblib.load(self.model_path) + if hasattr(self.pipeline, "_infer_missing_artefacts"): + self.pipeline._infer_missing_artefacts() + if self.manifest_path.exists(): + self.manifest = json.loads(self.manifest_path.read_text(encoding="utf-8")) + logger.info("Model artifact loaded from %s", self.model_path) + except Exception as exc: + logger.exception("Unable to load model artifact: %s", exc) + raise ServiceUnavailableError("Model artifact could not be loaded.") from exc + + def unload_model(self) -> None: + with self._lock: + self.pipeline = None + self.manifest = {} + + def _ensure_loaded(self) -> Any: + if self.pipeline is None: + raise ServiceUnavailableError("Model is not loaded.") + return self.pipeline + + @staticmethod + def _to_frame(input_data: dict[str, Any] | pd.DataFrame) -> pd.DataFrame: + if isinstance(input_data, pd.DataFrame): + return input_data.copy() + return pd.DataFrame([input_data]) + + def predict(self, input_data: dict[str, Any] | pd.DataFrame) -> np.ndarray: + pipeline = self._ensure_loaded() + try: + frame = self._to_frame(input_data) + return pipeline.predict(frame) + except Exception as exc: + logger.exception("Prediction failed: %s", exc) + raise ModelInferenceError("Prediction failed.") from exc + + def predict_proba(self, input_data: dict[str, Any] | pd.DataFrame) -> np.ndarray: + pipeline = self._ensure_loaded() + try: + frame = self._to_frame(input_data) + return pipeline.predict_proba(frame) + except Exception as exc: + logger.exception("Probability inference failed: %s", exc) + raise ModelInferenceError("Probability inference failed.") from exc + + def predict_one(self, input_data: dict[str, Any]) -> ModelPrediction: + labels = self.predict(input_data) + probabilities = self.predict_proba(input_data) + probability_vector = probabilities[0].tolist() + positive_probability = float(probability_vector[1] if len(probability_vector) > 1 else probability_vector[0]) + return ModelPrediction( + label=str(labels[0]), + probability=positive_probability, + raw_probabilities=probability_vector, + model_version=self.model_version, + ) diff --git a/app/ml/pipeline_produccion.pkl b/app/ml/pipeline_produccion.pkl new file mode 100644 index 0000000000000000000000000000000000000000..61346219fc213035cd0fcef227c0f40bbb90f511 --- /dev/null +++ b/app/ml/pipeline_produccion.pkl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78ce8c47e3e47951191bbe190af36bc975973b249fbf7449a621d554ab45ad87 +size 6454915 diff --git a/app/schemas/__init__.py b/app/schemas/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9823839c2571c265bbad66a2bc909b66b267b2b5 --- /dev/null +++ b/app/schemas/__init__.py @@ -0,0 +1,21 @@ +from app.schemas.auth import LoginRequest, RegisterRequest, TokenResponse, UserResponse +from app.schemas.health import LiveHealthResponse, ReadyHealthResponse +from app.schemas.prediction import ( + PredictionDetailResponse, + PredictionInput, + PredictionListResponse, + PredictionResponse, +) + +__all__ = [ + "LiveHealthResponse", + "LoginRequest", + "PredictionDetailResponse", + "PredictionInput", + "PredictionListResponse", + "PredictionResponse", + "ReadyHealthResponse", + "RegisterRequest", + "TokenResponse", + "UserResponse", +] diff --git a/app/schemas/adult_dataset.py b/app/schemas/adult_dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..6d34d7925dbf302d6074c7764c3f3fd416775674 --- /dev/null +++ b/app/schemas/adult_dataset.py @@ -0,0 +1,4 @@ +from app.schemas.prediction import PredictionInput as AdultDataInput +from app.schemas.prediction import PredictionResponse as AdultPredictionOutput + +__all__ = ["AdultDataInput", "AdultPredictionOutput"] diff --git a/app/schemas/auth.py b/app/schemas/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..0c0b25aaebe98fcf4f90a6d50a027e0c58b1f4f5 --- /dev/null +++ b/app/schemas/auth.py @@ -0,0 +1,74 @@ +from __future__ import annotations + +import re +from datetime import datetime +from typing import Literal + +from pydantic import ConfigDict, Field, field_validator + +from app.schemas.common import BaseSchema + +EMAIL_PATTERN = re.compile(r"^[^@\s]+@[^@\s]+\.[^@\s]+$") + + +class RegisterRequest(BaseSchema): + model_config = ConfigDict(extra="forbid", str_strip_whitespace=True) + + email: str = Field(..., max_length=255) + full_name: str = Field(..., min_length=3, max_length=255) + password: str = Field(..., min_length=12, max_length=128) + + @field_validator("email") + @classmethod + def validate_email(cls, value: str) -> str: + lowered = value.lower() + if not EMAIL_PATTERN.match(lowered): + raise ValueError("Invalid email format.") + return lowered + + @field_validator("password") + @classmethod + def validate_password_strength(cls, value: str) -> str: + checks = [ + any(char.islower() for char in value), + any(char.isupper() for char in value), + any(char.isdigit() for char in value), + any(not char.isalnum() for char in value), + ] + if not all(checks): + raise ValueError( + "Password must contain uppercase, lowercase, numeric, and special characters." + ) + return value + + +class LoginRequest(BaseSchema): + model_config = ConfigDict(extra="forbid", str_strip_whitespace=True) + + email: str = Field(..., max_length=255) + password: str = Field(..., min_length=12, max_length=128) + + @field_validator("email") + @classmethod + def normalize_email(cls, value: str) -> str: + lowered = value.lower() + if not EMAIL_PATTERN.match(lowered): + raise ValueError("Invalid email format.") + return lowered + + +class UserResponse(BaseSchema): + id: str + email: str + full_name: str + role: Literal["admin", "user"] + is_active: bool + created_at: datetime + updated_at: datetime + + +class TokenResponse(BaseSchema): + access_token: str + token_type: Literal["bearer"] = "bearer" + expires_in_seconds: int + user: UserResponse diff --git a/app/schemas/common.py b/app/schemas/common.py new file mode 100644 index 0000000000000000000000000000000000000000..83b0f24ba384dd73efc66da9e5b22bac38272202 --- /dev/null +++ b/app/schemas/common.py @@ -0,0 +1,20 @@ +from __future__ import annotations + +from datetime import datetime + +from pydantic import BaseModel, ConfigDict + + +class BaseSchema(BaseModel): + model_config = ConfigDict(from_attributes=True) + + +class PaginationMeta(BaseSchema): + total: int + skip: int + limit: int + + +class TimestampedSchema(BaseSchema): + created_at: datetime + updated_at: datetime diff --git a/app/schemas/health.py b/app/schemas/health.py new file mode 100644 index 0000000000000000000000000000000000000000..d2200be4296fa0ecb2b3bc26c301b5d8f288fed4 --- /dev/null +++ b/app/schemas/health.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from app.schemas.common import BaseSchema + + +class LiveHealthResponse(BaseSchema): + status: str + service: str + version: str + + +class ReadyHealthResponse(BaseSchema): + status: str + service: str + version: str + model_loaded: bool + database_connected: bool diff --git a/app/schemas/prediction.py b/app/schemas/prediction.py new file mode 100644 index 0000000000000000000000000000000000000000..d48dd5268fe7f4312c5f8e8524a4c4575a4cc30e --- /dev/null +++ b/app/schemas/prediction.py @@ -0,0 +1,80 @@ +from __future__ import annotations + +from datetime import datetime +from typing import Any, Literal + +from pydantic import ConfigDict, Field, field_validator + +from app.schemas.common import BaseSchema, PaginationMeta + +PredictionLabel = Literal["<=50K", ">50K"] + + +def _validate_category_text(value: str) -> str: + if not isinstance(value, str): + return value + clean_value = value.strip() + if not clean_value: + raise ValueError("Value must not be blank.") + if len(clean_value) > 64: + raise ValueError("Value exceeds the maximum allowed length.") + if any(ord(character) < 32 for character in clean_value): + raise ValueError("Control characters are not allowed.") + return clean_value + + +class PredictionInput(BaseSchema): + model_config = ConfigDict( + populate_by_name=True, + extra="forbid", + str_strip_whitespace=True, + ) + + age: int = Field(..., ge=17, le=100) + workclass: str = Field(..., min_length=1, max_length=64) + fnlwgt: int = Field(..., ge=1, le=2_000_000) + education: str = Field(..., min_length=1, max_length=64) + education_num: int = Field(..., alias="education.num", ge=1, le=16) + marital_status: str = Field(..., alias="marital.status", min_length=1, max_length=64) + occupation: str = Field(..., min_length=1, max_length=64) + relationship: str = Field(..., min_length=1, max_length=64) + race: str = Field(..., min_length=1, max_length=64) + sex: Literal["Male", "Female"] + capital_gain: int = Field(..., alias="capital.gain", ge=0, le=100_000) + capital_loss: int = Field(..., alias="capital.loss", ge=0, le=10_000) + hours_per_week: int = Field(..., alias="hours.per.week", ge=1, le=99) + native_country: str = Field(..., alias="native.country", min_length=1, max_length=64) + + @field_validator( + "workclass", + "education", + "marital_status", + "occupation", + "relationship", + "race", + "native_country", + ) + @classmethod + def validate_category_fields(cls, value: str) -> str: + return _validate_category_text(value) + + +class PredictionResponse(BaseSchema): + id: str + prediction: PredictionLabel + probability: float = Field(..., ge=0.0, le=1.0) + is_counterfactual_applied: bool = False + execution_time_ms: float = Field(..., ge=0.0) + model_version: str + request_id: str + created_at: datetime + + +class PredictionDetailResponse(PredictionResponse): + input_payload: dict[str, Any] + normalized_payload: dict[str, Any] + + +class PredictionListResponse(BaseSchema): + items: list[PredictionDetailResponse] + pagination: PaginationMeta diff --git a/app/services/__init__.py b/app/services/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..95c759ea70f0959ca706bebd4f05e25af6cc6d6b --- /dev/null +++ b/app/services/__init__.py @@ -0,0 +1,5 @@ +from app.services.auth import AuthService +from app.services.health import HealthService +from app.services.prediction import PredictionService + +__all__ = ["AuthService", "HealthService", "PredictionService"] diff --git a/app/services/auth.py b/app/services/auth.py new file mode 100644 index 0000000000000000000000000000000000000000..5decff0b476bc6ca54ab169c595a1db3e814d3ae --- /dev/null +++ b/app/services/auth.py @@ -0,0 +1,49 @@ +from __future__ import annotations + +from app.core.config import Settings +from app.core.exceptions import AuthenticationError, ConflictError, ResourceNotFoundError +from app.core.security import create_access_token, hash_password, verify_password +from app.db.models import User +from app.db.repositories import UserRepository +from app.schemas.auth import LoginRequest, RegisterRequest, TokenResponse, UserResponse + + +class AuthService: + def __init__(self, user_repository: UserRepository, settings: Settings): + self.user_repository = user_repository + self.settings = settings + + def register(self, payload: RegisterRequest) -> UserResponse: + if self.user_repository.get_by_email(payload.email): + raise ConflictError("A user with that email already exists.", {"email": payload.email}) + + user = self.user_repository.create( + email=payload.email, + full_name=payload.full_name, + password_hash=hash_password(payload.password), + ) + return UserResponse.model_validate(user) + + def login(self, payload: LoginRequest) -> TokenResponse: + user = self.user_repository.get_by_email(payload.email) + if user is None or not verify_password(payload.password, user.password_hash): + raise AuthenticationError("Invalid email or password.") + if not user.is_active: + raise AuthenticationError("Inactive user.") + + access_token = create_access_token( + subject=user.id, + role=user.role, + settings=self.settings, + ) + return TokenResponse( + access_token=access_token, + expires_in_seconds=self.settings.access_token_expire_minutes * 60, + user=UserResponse.model_validate(user), + ) + + def get_user(self, user_id: str) -> User: + user = self.user_repository.get_by_id(user_id) + if user is None: + raise ResourceNotFoundError("User", user_id) + return user diff --git a/app/services/health.py b/app/services/health.py new file mode 100644 index 0000000000000000000000000000000000000000..31fe403d73e84db3c017df92a05544cebbba1dff --- /dev/null +++ b/app/services/health.py @@ -0,0 +1,33 @@ +from __future__ import annotations + +from sqlalchemy.orm import Session + +from app.core.config import Settings +from app.db.session import check_database_connection +from app.ml.model_manager import ModelManager +from app.schemas.health import LiveHealthResponse, ReadyHealthResponse + + +class HealthService: + def __init__(self, *, settings: Settings, model_manager: ModelManager): + self.settings = settings + self.model_manager = model_manager + + def live(self) -> LiveHealthResponse: + return LiveHealthResponse( + status="ok", + service=self.settings.app_name, + version=self.settings.app_version, + ) + + def ready(self, session: Session) -> ReadyHealthResponse: + database_connected = check_database_connection(session) + model_loaded = self.model_manager.is_loaded + status = "ready" if database_connected and model_loaded else "degraded" + return ReadyHealthResponse( + status=status, + service=self.settings.app_name, + version=self.settings.app_version, + model_loaded=model_loaded, + database_connected=database_connected, + ) diff --git a/app/services/prediction.py b/app/services/prediction.py new file mode 100644 index 0000000000000000000000000000000000000000..f09d520a3af435e7793a38059ee6fadc41101cee --- /dev/null +++ b/app/services/prediction.py @@ -0,0 +1,100 @@ +from __future__ import annotations + +import hashlib +import json +import time + +from app.db.models import User +from app.db.repositories import PredictionRepository +from app.ml.model_manager import ModelManager +from app.schemas.common import PaginationMeta +from app.schemas.prediction import ( + PredictionDetailResponse, + PredictionInput, + PredictionListResponse, +) + + +class PredictionService: + def __init__(self, *, model_manager: ModelManager, prediction_repository: PredictionRepository): + self.model_manager = model_manager + self.prediction_repository = prediction_repository + + @staticmethod + def _hash_payload(payload: dict) -> str: + encoded = json.dumps(payload, sort_keys=True, separators=(",", ":")).encode("utf-8") + return hashlib.sha256(encoded).hexdigest() + + @staticmethod + def _build_detail_response(prediction_log) -> PredictionDetailResponse: + return PredictionDetailResponse( + id=prediction_log.id, + prediction=prediction_log.label, + probability=prediction_log.probability, + is_counterfactual_applied=False, + execution_time_ms=prediction_log.latency_ms, + model_version=prediction_log.model_version, + request_id=prediction_log.request_id, + created_at=prediction_log.created_at, + input_payload=prediction_log.input_payload, + normalized_payload=prediction_log.normalized_payload, + ) + + def predict( + self, + *, + payload: PredictionInput, + user: User, + request_id: str, + client_ip: str, + ) -> PredictionDetailResponse: + started_at = time.perf_counter() + input_payload = payload.model_dump(by_alias=True) + normalized_payload = payload.model_dump(by_alias=False) + + model_prediction = self.model_manager.predict_one(normalized_payload) + latency_ms = (time.perf_counter() - started_at) * 1000 + + prediction_log = self.prediction_repository.create( + user_id=user.id, + request_id=request_id, + ip_address=client_ip, + label=model_prediction.label, + probability=model_prediction.probability, + latency_ms=latency_ms, + model_version=model_prediction.model_version, + payload_hash=self._hash_payload(normalized_payload), + input_payload=input_payload, + normalized_payload=normalized_payload, + ) + return self._build_detail_response(prediction_log) + + def list_predictions( + self, + *, + user: User, + skip: int, + limit: int, + label: str | None, + min_probability: float | None, + ) -> PredictionListResponse: + rows, total = self.prediction_repository.list_for_user( + user_id=user.id, + skip=skip, + limit=limit, + label=label, + min_probability=min_probability, + ) + return PredictionListResponse( + items=[self._build_detail_response(row) for row in rows], + pagination=PaginationMeta(total=total, skip=skip, limit=limit), + ) + + def get_prediction(self, *, prediction_id: str, user: User) -> PredictionDetailResponse: + prediction_log = self.prediction_repository.get_for_user(prediction_id=prediction_id, user_id=user.id) + if prediction_log is None: + from app.core.exceptions import ResourceNotFoundError + + raise ResourceNotFoundError("Prediction", prediction_id) + + return self._build_detail_response(prediction_log) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..401db3c0771675a861799707ded8adb98930cc01 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,41 @@ +# ========================================== +# API / Web +# ========================================== +fastapi==0.135.3 +uvicorn==0.44.0 +httptools==0.7.1 +watchfiles==1.1.1 +websockets==16.0 +python-multipart==0.0.26 + +# ========================================== +# Configuration / Security +# ========================================== +bcrypt==5.0.0 +PyJWT==2.12.1 +pydantic==2.12.5 +pydantic-settings==2.13.1 +python-dotenv==1.2.2 + +# ========================================== +# Database / ORM / Migrations +# ========================================== +SQLAlchemy==2.0.49 +alembic==1.18.4 + +# ========================================== +# Machine Learning / Data +# ========================================== +joblib==1.5.3 +lightgbm==4.6.0 +numpy==2.4.4 +pandas==3.0.2 +scikit-learn==1.8.0 +scipy==1.17.1 + +# ========================================== +# Testing +# ========================================== +httpx==0.28.1 +pytest==9.0.3 +pytest-asyncio==1.3.0 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/api/test_auth_api.py b/tests/api/test_auth_api.py new file mode 100644 index 0000000000000000000000000000000000000000..881c1397a2b3092c4e91a9760fc6b37e17f0ce3f --- /dev/null +++ b/tests/api/test_auth_api.py @@ -0,0 +1,87 @@ +from fastapi.testclient import TestClient + + +def test_register_user_success(client: TestClient) -> None: + response = client.post( + "/api/v1/auth/register", + json={ + "email": "user@example.com", + "full_name": "Test User", + "password": "StrongPass!123", + }, + ) + + assert response.status_code == 201 + body = response.json() + assert body["email"] == "user@example.com" + assert body["role"] == "user" + + +def test_register_duplicate_user_returns_conflict(client: TestClient) -> None: + payload = { + "email": "duplicate@example.com", + "full_name": "Duplicate User", + "password": "StrongPass!123", + } + + first_response = client.post("/api/v1/auth/register", json=payload) + second_response = client.post("/api/v1/auth/register", json=payload) + + assert first_response.status_code == 201 + assert second_response.status_code == 409 + assert second_response.json()["error"]["code"] == "conflict" + + +def test_login_returns_token(client: TestClient) -> None: + client.post( + "/api/v1/auth/register", + json={ + "email": "login@example.com", + "full_name": "Login User", + "password": "StrongPass!123", + }, + ) + + response = client.post( + "/api/v1/auth/login", + json={"email": "login@example.com", "password": "StrongPass!123"}, + ) + + assert response.status_code == 200 + body = response.json() + assert body["token_type"] == "bearer" + assert body["access_token"] + assert body["user"]["email"] == "login@example.com" + + +def test_login_rejects_invalid_password(client: TestClient) -> None: + client.post( + "/api/v1/auth/register", + json={ + "email": "invalid-login@example.com", + "full_name": "Invalid Login", + "password": "StrongPass!123", + }, + ) + + response = client.post( + "/api/v1/auth/login", + json={"email": "invalid-login@example.com", "password": "WrongPass!123"}, + ) + + assert response.status_code == 401 + assert response.json()["error"]["code"] == "authentication_error" + + +def test_me_requires_authentication(client: TestClient) -> None: + response = client.get("/api/v1/auth/me") + + assert response.status_code == 401 + assert response.json()["error"]["code"] == "authentication_error" + + +def test_me_returns_current_user(client: TestClient, auth_headers: dict[str, str]) -> None: + response = client.get("/api/v1/auth/me", headers=auth_headers) + + assert response.status_code == 200 + assert response.json()["email"] == "user@example.com" diff --git a/tests/api/test_health_api.py b/tests/api/test_health_api.py new file mode 100644 index 0000000000000000000000000000000000000000..ce5e1835e2c96f6916a6f5350780188acc354e13 --- /dev/null +++ b/tests/api/test_health_api.py @@ -0,0 +1,28 @@ +from fastapi.testclient import TestClient + + +def test_root_returns_service_metadata(client: TestClient) -> None: + response = client.get("/") + + assert response.status_code == 200 + body = response.json() + assert body["service"] + assert body["version"] + assert body["environment"] == "test" + + +def test_live_health_endpoint(client: TestClient) -> None: + response = client.get("/api/v1/health/live") + + assert response.status_code == 200 + assert response.json()["status"] == "ok" + + +def test_ready_health_endpoint(client: TestClient) -> None: + response = client.get("/api/v1/health/ready") + + assert response.status_code == 200 + body = response.json() + assert body["status"] == "ready" + assert body["model_loaded"] is True + assert body["database_connected"] is True diff --git a/tests/api/test_prediction_api.py b/tests/api/test_prediction_api.py new file mode 100644 index 0000000000000000000000000000000000000000..e8abc561d72516c6ab8751b843d6d03766bbb734 --- /dev/null +++ b/tests/api/test_prediction_api.py @@ -0,0 +1,142 @@ +from __future__ import annotations + +from fastapi.testclient import TestClient + +from app.core.exceptions import ModelInferenceError + + +def test_prediction_requires_authentication(client: TestClient, valid_prediction_payload: dict) -> None: + response = client.post("/api/v1/predictions", json=valid_prediction_payload) + + assert response.status_code == 401 + assert response.json()["error"]["code"] == "authentication_error" + + +def test_prediction_success_creates_audit_log( + client: TestClient, + auth_headers: dict[str, str], + valid_prediction_payload: dict, +) -> None: + response = client.post("/api/v1/predictions", json=valid_prediction_payload, headers=auth_headers) + + assert response.status_code == 201 + body = response.json() + assert body["prediction"] == ">50K" + assert body["probability"] == 0.91 + assert body["request_id"] + assert body["model_version"] == "fake-1.0.0" + assert body["normalized_payload"]["education_num"] == 14 + assert response.headers["X-Request-ID"] + + +def test_prediction_rejects_invalid_payload( + client: TestClient, + auth_headers: dict[str, str], + valid_prediction_payload: dict, +) -> None: + payload = dict(valid_prediction_payload) + payload["age"] = 5 + response = client.post("/api/v1/predictions", json=payload, headers=auth_headers) + + assert response.status_code == 422 + assert response.json()["error"]["code"] == "validation_error" + + +def test_prediction_rejects_large_payload(client: TestClient, auth_headers: dict[str, str]) -> None: + response = client.post( + "/api/v1/predictions", + content="x" * 40_000, + headers={"Content-Type": "application/json"} | auth_headers, + ) + + assert response.status_code == 413 + assert response.json()["error"]["code"] == "payload_too_large" + + +def test_list_predictions_supports_query_filters( + client: TestClient, + auth_headers: dict[str, str], + valid_prediction_payload: dict, +) -> None: + client.post("/api/v1/predictions", json=valid_prediction_payload, headers=auth_headers) + low_income_payload = dict(valid_prediction_payload) + low_income_payload["education.num"] = 9 + low_income_payload["hours.per.week"] = 20 + client.post("/api/v1/predictions", json=low_income_payload, headers=auth_headers) + + response = client.get( + "/api/v1/predictions?label=%3E50K&min_probability=0.8", + headers=auth_headers, + ) + + assert response.status_code == 200 + body = response.json() + assert body["pagination"]["total"] == 1 + assert body["items"][0]["prediction"] == ">50K" + + +def test_get_prediction_by_id( + client: TestClient, + auth_headers: dict[str, str], + valid_prediction_payload: dict, +) -> None: + creation_response = client.post( + "/api/v1/predictions", + json=valid_prediction_payload, + headers=auth_headers, + ) + prediction_id = creation_response.json()["id"] + + response = client.get(f"/api/v1/predictions/{prediction_id}", headers=auth_headers) + + assert response.status_code == 200 + assert response.json()["id"] == prediction_id + + +def test_prediction_history_is_isolated_per_user( + client: TestClient, + auth_headers: dict[str, str], + valid_prediction_payload: dict, +) -> None: + own_prediction = client.post("/api/v1/predictions", json=valid_prediction_payload, headers=auth_headers).json() + + client.post( + "/api/v1/auth/register", + json={ + "email": "other@example.com", + "full_name": "Other User", + "password": "StrongPass!123", + }, + ) + login_response = client.post( + "/api/v1/auth/login", + json={"email": "other@example.com", "password": "StrongPass!123"}, + ) + other_headers = {"Authorization": f"Bearer {login_response.json()['access_token']}"} + + response = client.get(f"/api/v1/predictions/{own_prediction['id']}", headers=other_headers) + + assert response.status_code == 404 + assert response.json()["error"]["code"] == "resource_not_found" + + +def test_prediction_failure_is_mapped_to_controlled_error( + app, + client: TestClient, + auth_headers: dict[str, str], + valid_prediction_payload: dict, +) -> None: + class BrokenModelManager: + @property + def is_loaded(self) -> bool: + return True + + def predict_one(self, input_data: dict): + raise ModelInferenceError("Broken model.") + + app.state.model_manager = BrokenModelManager() + + response = client.post("/api/v1/predictions", json=valid_prediction_payload, headers=auth_headers) + + assert response.status_code == 500 + assert response.json()["error"]["code"] == "model_inference_error" diff --git a/tests/api/test_schemas.py b/tests/api/test_schemas.py new file mode 100644 index 0000000000000000000000000000000000000000..f8ddc226fc5dd9c5e88fa0c4e6fe0c8f3b6b74a5 --- /dev/null +++ b/tests/api/test_schemas.py @@ -0,0 +1,65 @@ +import pytest +from pydantic import ValidationError + +from app.schemas.auth import LoginRequest, RegisterRequest +from app.schemas.prediction import PredictionInput + + +VALID_PAYLOAD = { + "age": 35, + "workclass": "Private", + "fnlwgt": 150000, + "education": "Bachelors", + "education.num": 13, + "marital.status": "Married-civ-spouse", + "occupation": "Tech-support", + "relationship": "Husband", + "race": "White", + "sex": "Male", + "capital.gain": 5000, + "capital.loss": 0, + "hours.per.week": 40, + "native.country": "United-States", +} + + +def test_prediction_input_accepts_aliases() -> None: + payload = PredictionInput(**VALID_PAYLOAD) + assert payload.education_num == 13 + assert payload.capital_gain == 5000 + assert payload.marital_status == "Married-civ-spouse" + + +@pytest.mark.parametrize( + "field_name, invalid_value", + [ + ("age", 16), + ("education.num", 0), + ("hours.per.week", 100), + ("workclass", ""), + ("native.country", "x" * 65), + ("sex", "Unknown"), + ], +) +def test_prediction_input_rejects_invalid_values(field_name: str, invalid_value) -> None: + payload = dict(VALID_PAYLOAD) + payload[field_name] = invalid_value + with pytest.raises(ValidationError): + PredictionInput(**payload) + + +def test_prediction_input_rejects_unknown_fields() -> None: + payload = dict(VALID_PAYLOAD) + payload["unexpected"] = "boom" + with pytest.raises(ValidationError): + PredictionInput(**payload) + + +def test_register_request_enforces_password_strength() -> None: + with pytest.raises(ValidationError): + RegisterRequest(email="user@example.com", full_name="User Test", password="weakpassword") + + +def test_login_request_normalizes_email() -> None: + payload = LoginRequest(email="USER@EXAMPLE.COM", password="StrongPass!123") + assert payload.email == "user@example.com" diff --git a/tests/api/test_security_middleware.py b/tests/api/test_security_middleware.py new file mode 100644 index 0000000000000000000000000000000000000000..ef9f7d7311546d83993471862a3547f7c55acd60 --- /dev/null +++ b/tests/api/test_security_middleware.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +from fastapi.testclient import TestClient + +from app.main import create_app +from tests.conftest import FakeModelManager, build_test_settings + + +def test_security_headers_and_request_id_are_present(client: TestClient) -> None: + response = client.get("/api/v1/health/live") + + assert response.status_code == 200 + assert response.headers["X-Request-ID"] + assert response.headers["X-Content-Type-Options"] == "nosniff" + assert response.headers["X-Frame-Options"] == "DENY" + assert response.headers["Cache-Control"] == "no-store" + + +def test_docs_endpoint_remains_renderable_under_csp(client: TestClient) -> None: + response = client.get("/docs") + + assert response.status_code == 200 + assert "Swagger UI" in response.text + assert "cdn.jsdelivr.net" in response.headers["Content-Security-Policy"] + + +def test_rate_limit_blocks_excess_requests(tmp_path) -> None: + settings = build_test_settings( + f"sqlite:///{tmp_path / 'rate_limit.db'}", + rate_limit_requests=1, + rate_limit_window_seconds=60, + ) + app = create_app(settings=settings, model_manager=FakeModelManager()) + + with TestClient(app) as client: + first_response = client.post( + "/api/v1/auth/register", + json={ + "email": "limit@example.com", + "full_name": "Limit User", + "password": "StrongPass!123", + }, + ) + second_response = client.post( + "/api/v1/auth/register", + json={ + "email": "limit2@example.com", + "full_name": "Limit User Two", + "password": "StrongPass!123", + }, + ) + + assert first_response.status_code == 201 + assert second_response.status_code == 429 + assert second_response.json()["error"]["code"] == "rate_limit_exceeded" + + +def test_trusted_host_middleware_rejects_invalid_hosts(client: TestClient) -> None: + response = client.get("/api/v1/health/live", headers={"Host": "evil.example.com"}) + + assert response.status_code == 400 diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..2c4cb68cc350037df21ce6afec935cc584f075b8 --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,113 @@ +from __future__ import annotations + +from collections.abc import Generator + +import pytest +from fastapi.testclient import TestClient + +from app.core.config import Settings +from app.main import create_app +from app.ml.model_manager import ModelPrediction + + +class FakeModelManager: + def __init__(self) -> None: + self.loaded = False + self.version = "fake-1.0.0" + + @property + def is_loaded(self) -> bool: + return self.loaded + + @property + def model_version(self) -> str: + return self.version + + def load_model(self) -> None: + self.loaded = True + + def unload_model(self) -> None: + self.loaded = False + + def predict_one(self, input_data: dict) -> ModelPrediction: + label = ">50K" if input_data["education_num"] >= 13 and input_data["hours_per_week"] >= 40 else "<=50K" + probability = 0.91 if label == ">50K" else 0.24 + return ModelPrediction( + label=label, + probability=probability, + raw_probabilities=[1 - probability, probability], + model_version=self.version, + ) + + +def build_test_settings(database_url: str, **overrides) -> Settings: + base_values = { + "environment": "test", + "debug": False, + "docs_enabled": True, + "database_url": database_url, + "jwt_secret_key": "test-secret-key-32-characters-minimum", + "allowed_hosts": ["testserver", "localhost", "127.0.0.1"], + "cors_allow_origins": ["http://testserver"], + "rate_limit_enabled": True, + "rate_limit_requests": 50, + "rate_limit_window_seconds": 60, + "auto_seed_admin": False, + "seed_admin_email": None, + "seed_admin_password": None, + } + return Settings(**(base_values | overrides)) + + +@pytest.fixture +def app(tmp_path) -> Generator: + db_path = tmp_path / "test_api.db" + settings = build_test_settings(f"sqlite:///{db_path}") + application = create_app(settings=settings, model_manager=FakeModelManager()) + yield application + + +@pytest.fixture +def client(app) -> Generator[TestClient, None, None]: + with TestClient(app) as test_client: + yield test_client + + +@pytest.fixture +def auth_token(client: TestClient) -> str: + registration_payload = { + "email": "user@example.com", + "full_name": "Test User", + "password": "StrongPass!123", + } + client.post("/api/v1/auth/register", json=registration_payload) + response = client.post( + "/api/v1/auth/login", + json={"email": registration_payload["email"], "password": registration_payload["password"]}, + ) + return response.json()["access_token"] + + +@pytest.fixture +def auth_headers(auth_token: str) -> dict[str, str]: + return {"Authorization": f"Bearer {auth_token}"} + + +@pytest.fixture +def valid_prediction_payload() -> dict[str, object]: + return { + "age": 45, + "workclass": "Private", + "fnlwgt": 250000, + "education": "Masters", + "education.num": 14, + "marital.status": "Married-civ-spouse", + "occupation": "Exec-managerial", + "relationship": "Husband", + "race": "White", + "sex": "Male", + "capital.gain": 15000, + "capital.loss": 0, + "hours.per.week": 50, + "native.country": "United-States", + } diff --git a/tests/ml/test_model_manager.py b/tests/ml/test_model_manager.py new file mode 100644 index 0000000000000000000000000000000000000000..ca4ad19d3a9ce8a445477bba43907d46828236aa --- /dev/null +++ b/tests/ml/test_model_manager.py @@ -0,0 +1,49 @@ +from pathlib import Path + +import pytest + +from app.core.exceptions import ServiceUnavailableError +from app.ml.model_manager import ModelManager + + +VALID_PAYLOAD = { + "age": 45, + "workclass": "Private", + "fnlwgt": 250000, + "education": "Masters", + "education_num": 14, + "marital_status": "Married-civ-spouse", + "occupation": "Exec-managerial", + "relationship": "Husband", + "race": "White", + "sex": "Male", + "capital_gain": 15000, + "capital_loss": 0, + "hours_per_week": 50, + "native_country": "United-States", +} + + +def test_model_manager_loads_real_artifact() -> None: + manager = ModelManager(Path("app/ml/pipeline_produccion.pkl")) + manager.load_model() + + assert manager.is_loaded is True + assert manager.model_version + + +def test_model_manager_predict_one_real_artifact() -> None: + manager = ModelManager(Path("app/ml/pipeline_produccion.pkl")) + manager.load_model() + + prediction = manager.predict_one(VALID_PAYLOAD) + + assert prediction.label in {"<=50K", ">50K"} + assert 0.0 <= prediction.probability <= 1.0 + assert len(prediction.raw_probabilities) == 2 + + +def test_model_manager_rejects_missing_artifact(tmp_path) -> None: + manager = ModelManager(tmp_path / "missing.pkl") + with pytest.raises(ServiceUnavailableError): + manager.load_model()