⚙️ Motor
Cargando Python científico en tu navegador vía Pyodide (WebAssembly). No se instala nada, no se envían datos a ningún servidor.
Suelte aquí sus datos · CSV, TXT, TSV, XML o JSON
🔍 2. Vista previa y limpieza
Revise el estado de sus datos y elija cómo tratarlos antes de modelar.
La variable objetivo se excluye automáticamente de la codificación, para que no desaparezca al convertir categóricas en columnas.
Si marca "serie temporal", el test se toma siempre de las fechas más recientes (nunca al azar) para evitar look-ahead bias: la columna de orden elegida se excluye de las features y no se codifica.
Excluir columnas del modelo (opcional) — útil para columnas que su fuente en vivo ya no incluye (ej. una divisa retirada tras adoptar el euro):
Variables de momentum (opcional): genera rezagos y medias/desviaciones móviles de una columna, calculados solo con datos anteriores a cada fila (sin fuga), para que los modelos aprendan tendencia real en vez de solo el nivel del día. Aplique primero "Aplicar limpieza" con "serie temporal" activado.
🧪 3. Extraiga su modelo científico
Elija una técnica y ejecútela sobre sus datos ya procesados.
Columnas numéricas usadas:
Igual que en la red profunda: se prueban varias combinaciones de capas, nodos, tasa de aprendizaje (learning_rate_init) y regularización L2 (alpha) — ninguna expuesta en el modo manual — dentro de los márgenes indicados, eligiendo la ganadora por rendimiento en validación. El test solo se evalúa una vez, al final, con la configuración ganadora. Más alpha penaliza pesos grandes y ayuda cuando hay pocas filas de entrenamiento respecto a variables (sobreajuste al ruido).
Entrena un autoencoder (red neuronal no supervisada, TensorFlow.js) para comprimir sus datos a 2 dimensiones y detectar estructura sin usar ninguna etiqueta.
Las columnas de momentum generadas (rezagos y medias/desviaciones móviles) se excluyen de este análisis: al ser ecos mecánicos de la misma serie se correlacionan casi por definición y tapan las covarianzas reales entre columnas originales.
Ajusta una regresión lineal (target numérico) o logística (target categórico) y devuelve la ecuación explícita, además del snippet JS correspondiente.
Con x² activado, capta curvatura simple (sin interacciones cruzadas, para que la ecuación siga siendo legible) — sigue siendo una regresión cerrada de sklearn, sin tasa de aprendizaje ni búsqueda de hiperparámetros.
Red neuronal implementada desde cero (numpy puro, sin sklearn ni TensorFlow): en cada paso se guarda la salida de cada capa (forward pass) y luego el error se propaga hacia atrás capa por capa, ajustando los pesos con descenso de gradiente clásico (backpropagation manual).
Se prueban varias combinaciones de capas, nodos, tasa de aprendizaje, regularización L2 (alpha, weight decay) y optimizador (gradiente puro, momentum clásico 0.9, y Adam real — el mismo algoritmo que usa la red de sklearn, con promedios móviles de 1er/2º momento y tamaño de paso adaptado por parámetro, no una aproximación) — ninguna expuesta en el modo manual — dentro de los márgenes indicados, eligiendo la ganadora por rendimiento en un subconjunto de validación (separado del train). El test final no se toca hasta evaluar solo la configuración ganadora, una única vez — para no hacer trampa ajustando a escondidas al propio test. Más alpha penaliza pesos grandes. Nodos y alpha se muestrean en 3 puntos (no solo los extremos), para que una arquitectura intermedia tenga oportunidad de competir en vez de que la ganadora quede forzada al extremo más simple por descarte. Además, la configuración ganadora se re-entrena con 2 semillas iniciales distintas para descartar que haya ganado por una inicialización afortunada/desafortunada.
Tras elegir la configuración ganadora, se re-entrena desde cero (mismos hiperparámetros y semilla, pero muchas más épocas) antes de evaluarla en test — invierte más tiempo solo en la ganadora, en vez de repartirlo entre las todas las configuraciones probadas. Con miles de épocas puede tardar varios minutos. Ponga 0 para desactivar el pulido y usar directamente el modelo de la búsqueda.
Con esto activado, todas las arquitecturas compiten en igualdad de condiciones (mismo lr/alpha/optimizador) — útil para responder "¿qué arquitectura es mejor?" sin que la respuesta esté mezclada con qué combinación de lr/alpha le tocó en la búsqueda conjunta. Los campos de lr/alpha de arriba se ignoran en este modo (se usa el valor recomendado de cada uno).
Detecta filas anómalas con Isolation Forest sobre las columnas numéricas.
Support Vector Machine. Con kernel lineal exporta una ecuación igual que en el módulo anterior (soporta multiclase). Con kernel no lineal (RBF, polinómico, sigmoide) exporta los vectores de soporte y la función kernel real — fiel al modelo, pero solo disponible para clasificación binaria o regresión: una SVM no lineal con más de 2 clases no tiene una única ecuación simple y no se aproxima.
Analiza una columna a lo largo del tiempo: autocorrelación (ACF, calculada desde cero) y una prueba de raíz unitaria (Dickey-Fuller aumentado, regresión OLS real contra valores críticos asintóticos estándar de MacKinnon) — para saber si la serie tiene estructura predecible o es esencialmente un paseo aleatorio antes de intentar modelarla. Requiere "serie temporal" activado en el paso 2.
📡 Fuente de datos en vivo (opcional)
Aplica un modelo ya entrenado sobre datos frescos de una URL, sin volver a entrenar. Cada modelo que entrene en el paso 3 queda disponible aquí para elegir y comparar. Solo funciona con URLs sin autenticación que permitan CORS desde el navegador (como la API de Frankfurter, o cualquier otra igual de permisiva) — un esquema con API key no se puede generalizar aquí, ese paso lo haría usted directamente contra su API.
Cambiar el selector "Modelo a usar" recalcula al instante con el último dato ya descargado, sin volver a pedirle nada a la URL. "Comparar" hace lo mismo con todos los modelos entrenados a la vez.
🖼️ 4. Flujo: imágenes (CNN)
Clasificación de imágenes con una red convolucional entrenada 100% en su navegador (TensorFlow.js). Es independiente del flujo de datos tabulares — no requiere haber subido un CSV. El navegador decodifica cualquier imagen (incluidas JPEG en CMYK) a RGB automáticamente; puede entrenar en color (3 canales) o convertir a escala de grises (1 canal) para ir más rápido con imágenes grandes.
Seleccione una carpeta con una subcarpeta por clase (ej. gatos/, perros/). Funciona en Chrome/Edge.
Suba un .zip con una subcarpeta por clase dentro (ej. gatos/, perros/). Funciona en cualquier navegador.
Seleccione las imágenes sueltas y un CSV con columnas archivo,etiqueta.
Todo el entrenamiento ocurre en memoria del navegador — con datasets grandes o imágenes de alta resolución puede consumir bastante RAM; empiece con tamaños pequeños (32-64px).
En vez de reducir cada imagen completa al tamaño de arriba (lo que diluye una característica pequeña en una foto grande — un lunar, un grano, un detalle localizado), cada imagen se trocea en una cuadrícula de recortes a resolución nativa (el mismo tamaño que ve el reconocedor) y CADA recorte se entrena como una muestra propia con la etiqueta de la imagen completa. Multiplica el número de muestras de entrenamiento (más lento, más RAM) y puede incluir recortes sin la característica relevante etiquetados igual que el resto — es un compromiso conocido de este enfoque, no algo que se pueda evitar del todo. Los recortes de una misma imagen nunca se reparten entre train y test. Al clasificar imágenes nuevas después, se aplica el mismo troceado y se muestra tanto el veredicto agregado (promedio entre todos los recortes) como el recorte individual más seguro de una clase concreta.
Ya hay un modelo entrenado. Aplíquelo sobre imágenes nuevas o sin etiquetar — esto solo clasifica, no vuelve a entrenar.
📦 Proyecto
Exporte un archivo .json "neto" y autocontenido: los datos (las columnas que elija), los modelos entrenados que elija (con su función JS y sus resultados) — o cargue uno para seguir exactamente donde lo dejó, sin volver a subir el archivo original ni reentrenar nada.