SynaptIX
Librería integral de Machine Learning para Python. Una API unificada y en español que cubre aprendizaje supervisado, no supervisado, por refuerzo, redes neuronales y preprocesamiento de datos — pensada para AI Engineers y analistas de modelos.
Documentación completa + playground en línea: https://synaptix-blue.vercel.app/ (sitio Next.js en web/ de este repo — el docs-web/ anterior queda deprecado tras la migración).
pip install synaptix # núcleo (sklearn incluido)
pip install synaptix[dl] # + tensorflow (redes neuronales y DQN)
pip install synaptix[bayes] # + pymc (inferencia bayesiana completa)
pip install synaptix[viewx] # + ViewX (dashboards HTML, PDF, presentaciones)
pip install synaptix[stats] # + StatsLibX (diagnóstico estadístico de modelos)
pip install synaptix[polars] # + polars (DataFrames polars como entrada)
pip install synaptix[all] # todo
Inicio rápido
import synaptix as sx
# 1. Cargar un dataset incluido
df = sx.load_dataset("iris")
# 2. Preparar los datos
X, y = df.drop(columns="species"), df["species"]
X_train, X_test, y_train, y_test = sx.preprocessing.train_test_split(
X, y, test_size=0.2, random_state=42
)
# 3. Entrenar y evaluar
model = sx.supervised.RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
model.evaluate(X_test, y_test, plot=True) # métricas + matriz de confusión
Módulos
| Módulo | Contenido |
|---|---|
synaptix.pipeline |
AutoPipeline (ML automático de principio a fin) y Pipeline declarativo por pasos |
synaptix.preprocessing |
Scaler, Encoder, Imputer, DataCleaner (con transform para datos nuevos), detect_outliers, remove_outliers, train_test_split |
synaptix.supervised |
8 regresores, 7 clasificadores y 9 modelos bayesianos (BayesianRidge, ARD, procesos gaussianos, variantes de Naive Bayes, PyMC) |
synaptix.unsupervised |
KMeans (con codo y silhouette), DBSCAN, HierarchicalClustering, GaussianMixture, PCA, TSNE |
synaptix.reinforcement |
QLearningAgent, SARSAAgent, DQNAgent, entorno GridWorld |
synaptix.neural |
MLP, CNN, LSTMNet sobre Keras (requiere synaptix[dl]) |
synaptix.metrics |
regression_metrics, classification_metrics, clustering_metrics, classification_report |
synaptix.model_selection |
cross_validate, GridSearch, compare_models (AutoML-lite) |
synaptix.visualization |
Gráficas de modelos (matriz de confusión, ROC, curva de aprendizaje, residuos, frontera de decisión, model_report) y EDA (distribuciones, correlación, boxplots, scatter matrix, nulos) |
synaptix.datasets |
iris, penguins, titanic, sp500_companies, course_completion (compatible con backend="polars" y return_X_y=True) |
synaptix.legacy |
API clásica v0.x (IntelligenceArtificial, MachineLearning, ...) |
synaptix.viewx |
Puente opcional a ViewX: to_report_data, render_html/report/presentation (requiere synaptix[viewx]) |
synaptix.viz |
Figuras Plotly para exportación (matriz de confusión, ROC, residuos, comparación de modelos; requiere synaptix[viz]) |
Ejemplos por área
AutoPipeline: ML en una línea (para empezar sin experiencia)
import synaptix as sx
df = sx.load_dataset("penguins")
pipe = sx.AutoPipeline() # el sistema se encarga de los parámetros
pipe.fit(df, target="species") # limpia, compara 7 modelos, ajusta y evalúa
pipe.report() # ranking + métricas + matriz de confusión
predicciones = pipe.predict(df_nuevo) # acepta datos crudos (con nulos)
pipe.save("mi_pipeline.pkl")
Todo es configurable: AutoPipeline(models=["random_forest", "svm"], cv=10, tune=False, scale_method="robust", param_grids={"random_forest": {"n_estimators": [300]}}).
También hay un Pipeline declarativo por pasos, donde el sistema rellena los parámetros de cada paso:
from synaptix.pipeline import Pipeline
pipe = Pipeline([
"clean", # DataCleaner con defaults
("outliers", {"method": "iqr"}), # params propios opcionales
("model", "random_forest"), # o "model" solo = elegir automático
"tune", # rejilla por defecto del modelo
("evaluate", {"plot": True}),
])
pipe.fit(df, target="species")
Modelos bayesianos (con incertidumbre)
from synaptix.supervised import BayesianRidgeRegression, GaussianProcessRegressor
model = BayesianRidgeRegression()
model.fit(X_train, y_train)
# Además de la predicción puntual, un intervalo de incertidumbre:
media, inferior, superior = model.predict_interval(X_test, std=2) # ~95%
Con el extra [bayes] (PyMC) se obtiene la distribución posterior completa:
from synaptix.supervised import PyMCLinearRegression
model = PyMCLinearRegression(draws=1000)
model.fit(X_train, y_train) # inferencia MCMC
media, low, high = model.predict_interval(X_test, hdi=0.94)
model.summary() # posteriores de cada parámetro
model.plot_posterior()
Preprocesamiento
from synaptix.preprocessing import DataCleaner
cleaner = DataCleaner(impute_strategy="median", scale_method="standard")
cleaner.analyze(df) # reporte: nulos, outliers, tipos
df_listo = cleaner.clean(df, target="precio")
Comparar modelos automáticamente
from synaptix.model_selection import compare_models
tabla = compare_models(X, y, task="classification", cv=5)
# Entrena 7 modelos con validación cruzada y devuelve un ranking
Clustering (no supervisado)
from synaptix.unsupervised import KMeans
KMeans.elbow(X, k_max=10) # elegir k con el método del codo
km = KMeans(n_clusters=3)
labels = km.fit_predict(X)
km.plot(X) # scatter coloreado por cluster
print(km.silhouette(X))
Aprendizaje por refuerzo
from synaptix.reinforcement import GridWorld, QLearningAgent
env = GridWorld(rows=5, cols=5, obstacles=[(1, 1), (2, 3)])
agent = QLearningAgent(env.n_states, env.n_actions)
agent.train(env, episodes=500)
agent.plot_rewards()
env.render(agent.policy()) # política aprendida con flechas
Redes neuronales
from synaptix.neural import MLP, LSTMNet
# Clasificación tabular
net = MLP(task="classification", hidden_layers=(64, 32), dropout=0.2)
net.fit(X_train, y_train, epochs=50)
net.evaluate(X_test, y_test)
net.plot_history()
# Series de tiempo
lstm = LSTMNet(window=12, units=(64,))
lstm.fit(serie, epochs=50)
futuro = lstm.forecast(serie, steps=6)
Gráficas a partir de datos y modelos
from synaptix.visualization import (
plot_distributions, # histogramas de todas las numéricas
plot_correlation, # heatmap de correlación
plot_boxplots, # outliers, segmentables por categoría
plot_missing, # % de nulos por columna
plot_residuals, # diagnóstico de regresión
plot_decision_boundary, # frontera de decisión 2D
model_report, # reporte visual completo en una llamada
)
plot_correlation(df)
plot_boxplots(df, by="species")
model_report(modelo, X_test, y_test) # métricas + gráficos según la tarea
Búsqueda de hiperparámetros
from synaptix.supervised import RandomForestClassifier
from synaptix.model_selection import GridSearch
search = GridSearch(
RandomForestClassifier(),
{"n_estimators": [50, 100, 200], "max_depth": [3, 5, None]},
)
mejor_modelo = search.fit(X, y)
print(search.best_params_)
Integración con ViewX y StatsLibX
SynaptIX es el motor de machine learning del ecosistema GhostAnalyst, junto con StatsLibX (estadística) y ViewX (visualización y reportes). Las tres comparten el mismo contrato de payload y cargadores de datasets, y cada una funciona por separado:
flowchart TD
U["Datos crudos<br/>(CSV, DataFrame, arrays)"]
SLX["StatsLibX<br/>estadistica + manejo de datos + simulacion"]
SYN["SynaptIX<br/>modelos + evaluacion y mejora"]
VX["ViewX<br/>dashboards, EDA, PDF, slides"]
U --> SLX
U --> SYN
U --> VX
SLX -->|"DataFrame / polars"| SYN
SLX -->|"to_report_data() payload"| VX
SYN -->|"to_report_data() payload"| VX
SYN -->|"diagnostics() usa InferentialStats"| SLX
VX -->|"HTML / PDF / slides"| U
SynaptIX hace todo el machine learning; las integraciones son opcionales y cada librería funciona por separado.
Flujo completo del ecosistema (StatsLibX → SynaptIX → ViewX)
# pip install statslibx[viewx] synaptix[viewx,stats] viewx
from statslibx import DescriptiveStats, load_iris
import synaptix as sx
from viewx import from_report_payload
df = load_iris()
# 1. Estadística y calidad de datos (StatsLibX)
DescriptiveStats(df).summary()
# 2. Modelo, evaluación y diagnóstico estadístico (SynaptIX + StatsLibX)
X, y = df.drop(columns="species"), df["species"]
modelo = sx.supervised.RandomForestClassifier().fit(X, y)
evaluacion = modelo.evaluate(X, y)
diagnostico = modelo.diagnostics(X, y) # requiere synaptix[stats]
# 3. Todo en un dashboard (ViewX)
payload = evaluacion.to_report_data(include_figures=True)
from_report_payload(payload, target="html", filename="analisis.html")
Portal con documentación y playground unificado de las tres librerías: Libraries_of_Emms (en este workspace).
Exportar resultados con ViewX (pip install synaptix[viewx])
Los resultados de evaluate(), cross_validate() y compare_models() siguen siendo dicts/DataFrames normales, pero además se pueden exportar a dashboards HTML, reportes PDF y presentaciones:
import synaptix as sx
df = sx.load_dataset("iris")
X, y = df.drop(columns="species"), df["species"]
model = sx.supervised.RandomForestClassifier().fit(X, y)
resultado = model.evaluate(X, y) # dict de métricas, como siempre
# Requiere: pip install synaptix[viewx]
resultado.to_html("evaluacion.html", theme="dark_enterprise") # dashboard
resultado.to_report("evaluacion") # PDF
resultado.to_presentation("evaluacion_slides.html") # slides
# La tabla de compare_models sigue siendo un DataFrame; para el dashboard usa to_dashboard()
tabla = sx.model_selection.compare_models(X, y, task="classification")
tabla.to_dashboard("comparacion.html")
# Pipeline manual con el mismo contrato de payload que StatsLibX
payload = resultado.to_report_data(include_figures=True)
from viewx import from_report_payload
from_report_payload(payload, target="html", filename="evaluacion.html")
Sin ViewX instalado: el análisis funciona normal. Los métodos
.to_html()/.to_report()/.to_presentation()lanzan un error claro con la instrucción de instalación.
Diagnóstico estadístico con StatsLibX (pip install synaptix[stats])
# Regresión: normalidad de residuos + test de media cero
# Clasificación: chi-cuadrado de asociación real vs. predicho
diagnostico = model.diagnostics(X_test, y_test)
diagnostico["normalidad_residuos"].interpretation
Entrada polars
Los modelos y pipelines aceptan DataFrames de polars directamente (se convierten internamente), por lo que la salida de StatsLibX con backend polars entra sin conversión manual:
df_pl = sx.load_dataset("iris", backend="polars") # requiere synaptix[polars]
model.fit(df_pl.drop("species"), df_pl["species"])
X, y = sx.load_dataset("iris", return_X_y=True) # misma firma que statslibx/viewx
API legacy (v0.x)
Las clases de la versión 0.x siguen disponibles: IntelligenceArtificial (agentes, búsqueda, algoritmos genéticos, chatbots), MachineLearning y NaturalLanguageProcessing. La API key de OpenRouter ahora se lee de la variable de entorno OPENROUTER_API_KEY.
from synaptix import IntelligenceArtificial
ia = IntelligenceArtificial(backend_ia=("mistral", "")) # usa OPENROUTER_API_KEY
Licencia
MIT. Autor: Emmanuel Ascendra — github.com/GhostAnalyst30/SynaptIX
Metadata
Release files for synaptix 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| synaptix-0.1.7.tar.gz | 4.7 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| synaptix-0.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.5 MB
Release files / synaptix-0.1.7.tar.gz
| Download URL | synaptix-0.1.7.tar.gz |
|---|---|
| Size | 4.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c11561719fd4fdb69c12761bb3a8894cc9bb362f71637449aaa1e51c49ce6c7
|
|
BLAKE2b-256 checksum How to use checksums |
74ee22f6883cb809ed4b73dec16e562c75046204359054a1081974d15ea4a0cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Release files / synaptix-0.1.7-py3-none-any.whl
| Download URL | synaptix-0.1.7-py3-none-any.whl |
|---|---|
| Size | 4.8 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
18698270f0e75c2cfd649aca27f340a24001bbe2e1b2ff0a2b7e914ebccb4312
|
|
BLAKE2b-256 checksum How to use checksums |
bd146575c981e2b7ab44cc277c289bfca2bc41ede857000c708a4a502ef32ec7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.7
|
Security for synaptix 0.1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.