{"id":28135522,"url":"https://github.com/etsi-ai/etna","last_synced_at":"2026-01-18T13:38:32.054Z","repository":{"id":292481174,"uuid":"980852521","full_name":"etsi-ai/etna","owner":"etsi-ai","description":"A high level abstraction library designed for effortless tabular data based tasks.","archived":false,"fork":false,"pushed_at":"2026-01-16T18:39:39.000Z","size":197,"stargazers_count":27,"open_issues_count":7,"forks_count":25,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-17T05:34:44.942Z","etag":null,"topics":["classification","deep-learning","machine-learning","neural-network","python","rust","tabular-data"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etsi-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-09T20:38:30.000Z","updated_at":"2026-01-16T18:39:43.000Z","dependencies_parsed_at":"2025-06-29T08:33:34.264Z","dependency_job_id":null,"html_url":"https://github.com/etsi-ai/etna","commit_stats":null,"previous_names":["etsi-ai/etna"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/etsi-ai/etna","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etsi-ai%2Fetna","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etsi-ai%2Fetna/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etsi-ai%2Fetna/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etsi-ai%2Fetna/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etsi-ai","download_url":"https://codeload.github.com/etsi-ai/etna/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etsi-ai%2Fetna/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28536764,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classification","deep-learning","machine-learning","neural-network","python","rust","tabular-data"],"created_at":"2025-05-14T15:19:02.145Z","updated_at":"2026-01-18T13:38:32.042Z","avatar_url":"https://github.com/etsi-ai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# etsi-etna\n### High-Performance Neural Networks. Rust Core. Python Ease.\n\n[![License](https://img.shields.io/badge/License-BSD_2--Clause-orange.svg)](LICENSE)\n[![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/)\n[![Rust](https://img.shields.io/badge/Rust-1.70%2B-black)](https://www.rust-lang.org/)\n[![PyPI](https://img.shields.io/pypi/v/etsi-etna.svg)](https://pypi.org/project/etsi-etna/)\n[![MLflow](https://img.shields.io/badge/MLflow-Integrated-blueviolet)](https://mlflow.org/)\n\n\u003e **What if machine learning felt effortless?**\n\n`etsi-etna` is a minimalistic, dependency-light neural network library\ndesigned to make training and evaluating models on structured data fast,\ninterpretable and beginner-friendly. It focuses on auto-preprocessing,\nsimple linear networks, and core metrics - ideal for research\nprototyping, learning, and quick deployments.\n\n[Features](#key-features) • [Installation](#installation) • [MVP Demo](#run-the-mvp-demo) • [Quickstart](#quickstart) • [Experiment Tracking](#experiment-tracking)\n\n\u003c/div\u003e\n\n---\n\n## Why Etna?\n\nMachine learning libraries often force a trade-off: simplicity or speed. Etna removes that barrier.\n\n* **Blazing Fast**: The heavy lifting (Linear layers, ReLU, Softmax, Backprop) is handled by a highly optimized **Rust** core (`etna_core`).\n* **Pythonic API**: Users interact with a familiar, Scikit-learn-like Python interface.\n* **Arbitrary Depth**: Etna now supports sequential multi-layer architectures.\n* **Stateful Optimization**: Advanced optimizers like Adam maintain momentum and moment estimates across training sessions.\n\n---\n\n## Key Features\n\n* **Sequential Multi-Layer Architecture**: Define any number of hidden layers using a simple list (e.g., `[64, 32, 16]`).\n* **Hybrid Architecture**: `pyo3` bindings bridge Python ease with Rust performance.\n* **Auto-Preprocessing**: Automatic scaling and categorical encoding based on column types.\n* **Persistent Training**: Save and load models while preserving weight values and optimizer states.\n* **Flexible MLflow Tracking**: Single-line experiment tracking that is now safely optional for local-only use.\n\n---\n\n## Installation\n\n### Prerequisites\n* Python (3.8 or later)\n* Rust (1.70 or later)\n\n### From Source (Development)\nEtna uses `maturin` to build the Rust extensions.\n\n1.  **Clone the repository**\n    ```bash\n    git clone https://github.com/etsi-ai/etna.git\n    cd etna\n    ```\n\n2.  **Set up a Virtual Environment (Recommended)**\n    ```bash\n    python -m venv .venv\n\n    # Activate the environment\n    source .venv/bin/activate  # Linux/macOS\n    # .venv\\Scripts\\activate   # Windows\n    ```\n\n3.  **Install dependencies \u0026 build**\n    ```bash\n    # Install build tools\n    pip install -r requirements.txt\n\n    # Build and install locally\n    maturin develop --release\n    ```\n\n---\n\n## Run the MVP Demo\n\nThe best way to see Etna in action is to run our interactive MVP notebook. This notebook verifies your installation by performing an end-to-end test of the entire system.\n\nIt will automatically:\n1.  **Generate Dummy Data**: Creates synthetic datasets for both classification and regression.\n2.  **Train Models**: Trains the Rust backend on both tasks.\n3.  **Track Experiments**: Logs loss curves and artifacts to a local MLflow server.\n\nTo run it:\n```bash\njupyter notebook mvp_testing.ipynb\n```\n\n---\n\n## Quickstart\n\nIf you prefer to start coding immediately, here are the basics:\n\n1. **Classification with Deep Architecture**\nEtna now supports any network depth. The example below initializes a 4-layer network.\n```bash\nfrom etna import Model\n\n# Initialize model with 3 hidden layers: 64 -\u003e 32 -\u003e 16\nmodel = Model(\n    file_path=\"iris.csv\",\n    target=\"species\",\n    hidden_layers=[64, 32, 16],\n    activation=\"leaky_relu\"\n)\n\n# Train with Adam optimizer\nmodel.train(epochs=100, lr=0.01, optimizer=\"adam\")\n\n# Predict original class labels\npredictions = model.predict()\n```\n\n2. **Regression \u0026 Incremental Training**\nBecause optimizer states are persistent, you can resume training smoothly.\n```bash\nmodel = Model(\"housing.csv\", target=\"price\", task_type=\"regression\")\n\n# First training phase\nmodel.train(epochs=50)\n\n# Resume training: Adam momentum is preserved!\nmodel.train(epochs=50)\n```\n\n---\n\n## Experiment Tracking\n\nEtna includes native MLflow integration. To use it, simply provide your tracking URI when saving.\n```bash\n# Save locally AND log to MLflow in one step\nmodel.save_model(\n    path=\"my_model_v1.json\",\n    run_name=\"Deep_Run_01\",\n    mlflow_tracking_uri=\"http://localhost:5000\"\n)\n```\n**What happens automatically:**\n\n* Model artifact saved to `my_model_v1.json`\n* Parameters (`task_type`, `target`) logged to MLflow\n* Training Loss history logged as metrics\n* Artifacts uploaded to the MLflow run\n\nView your dashboard by running `mlflow ui` in your terminal and visiting `http://localhost:5000`\n\n---\n\n## Contributing\n\nPull requests are welcome!\n\nPlease refer to [CONTRIBUTING.md](https://github.com/etsi-ai/etna/blob/main/CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](https://github.com/etsi-ai/etna/blob/main/CODE_OF_CONDUCT.md) before submitting a Pull Request.\n\n---\n\n## Join the Community\n\nConnect with the **etsi.ai** team and other contributors on our Discord.\n\n[![Discord](https://img.shields.io/badge/Discord-Join%20the%20Server-7289DA?style=for-the-badge\u0026logo=discord\u0026logoColor=white)](https://discord.com/invite/VCeY6H72rq)\n\n---\n\n## License\n\nThis project is distributed under the **BSD-2-Clause License**. See the [LICENSE](https://github.com/etsi-ai/etna/blob/main/LICENSE) for details.\n\n---\n\n\u003e Built with ❤️ by etsi.ai\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetsi-ai%2Fetna","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetsi-ai%2Fetna","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetsi-ai%2Fetna/lists"}