{"id":51082394,"url":"https://github.com/stitchsages/implyo","last_synced_at":"2026-06-23T19:38:29.699Z","repository":{"id":294354164,"uuid":"983778105","full_name":"stitchsages/implyo","owner":"stitchsages","description":"An advanced imputation library compatible with mixed type data with a focus on performance and high accuracy, with advanced imputation algorithms for numeric and categorical variables.","archived":false,"fork":false,"pushed_at":"2025-06-16T13:28:46.000Z","size":71,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-24T09:21:37.269Z","etag":null,"topics":["imputation","imputation-algorithm","imputation-methods","knn","machine-learning","pandas","pandas-dataframe","pip","python","python3","random-forest","scikit-learn"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stitchsages.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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-14T22:49:25.000Z","updated_at":"2025-06-16T13:41:40.000Z","dependencies_parsed_at":"2025-05-20T03:25:33.030Z","dependency_job_id":"87900a1c-aa74-43bb-ac64-782c60dff4f1","html_url":"https://github.com/stitchsages/implyo","commit_stats":null,"previous_names":["wdarrenww/implyo","stitchsages/implyo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stitchsages/implyo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stitchsages%2Fimplyo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stitchsages%2Fimplyo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stitchsages%2Fimplyo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stitchsages%2Fimplyo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stitchsages","download_url":"https://codeload.github.com/stitchsages/implyo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stitchsages%2Fimplyo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34704748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["imputation","imputation-algorithm","imputation-methods","knn","machine-learning","pandas","pandas-dataframe","pip","python","python3","random-forest","scikit-learn"],"created_at":"2026-06-23T19:38:28.845Z","updated_at":"2026-06-23T19:38:29.693Z","avatar_url":"https://github.com/stitchsages.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Implyo: Advanced Missing Value Imputation Library\n\nImplyo is a powerful Python library for handling missing values in mixed-type data, with a focus on performance, accuracy, and uncertainty quantification. It provides a collection of advanced imputation algorithms that can handle both numeric and categorical variables efficiently.\n\n## Features\n\n### Core Imputation Algorithms\n\n- **KNN Imputer**: Fast and efficient k-nearest neighbors imputation with support for mixed data types\n- **MICE (Iterative Imputer)**: Multiple Imputation by Chained Equations with various estimator options\n- **Random Forest Imputer**: Tree-based imputation with uncertainty quantification\n- **XGBoost Imputer**: Gradient boosting based imputation with advanced features\n- **LightGBM Imputer**: Light gradient boosting based imputation with high performance\n\n### Key Features\n\n- **Mixed Data Type Support**: Handle both numeric and categorical variables seamlessly\n- **Uncertainty Quantification**: Get prediction intervals for imputed values\n- **Parallel Processing**: Efficient handling of large datasets\n- **Early Stopping**: Automatic convergence detection\n- **Feature Importance**: Track which features are most important for imputation\n- **Missing Value Indicators**: Optional indicators for missing value patterns\n- **Comprehensive Testing**: Extensive test coverage for all imputers\n- **Benchmarking Tools**: Compare performance across different imputers\n\n## Installation\n\n```bash\npip install implyo\n```\n\nFor development installation:\n\n```bash\ngit clone https://github.com/yourusername/implyo.git\ncd implyo\npip install -e \".[dev]\"\n```\n\n## Quick Start\n\n```python\nimport pandas as pd\nimport numpy as np\nfrom implyo import XGBoostImputer, LightGBMImputer, KNNImputer\n\n# Create a sample dataset with missing values\ndata = pd.DataFrame({\n    'numeric1': [1, 2, np.nan, 4, 5],\n    'numeric2': [1.1, np.nan, 3.3, 4.4, 5.5],\n    'categorical': ['a', 'b', 'c', np.nan, 'e']\n})\n\n# Initialize and fit the imputer\nimputer = XGBoostImputer(\n    n_estimators=100,\n    categorical_features=['categorical'],\n    uncertainty_quantile=0.95,  # Get prediction intervals\n    random_state=42\n)\n\n# Fit and transform the data\nX_imputed = imputer.fit_transform(data)\n\n# Get uncertainty intervals\nintervals = imputer.uncertainty_intervals_\n\n# Get feature importances\nimportances = imputer.feature_importances_\n```\n\n## Advanced Usage\n\n### Uncertainty Quantification\n\nAll tree-based imputers (Random Forest, XGBoost, LightGBM) support uncertainty quantification:\n\n```python\nfrom implyo import RandomForestImputer\n\nimputer = RandomForestImputer(\n    uncertainty_quantile=0.95,  # 95% prediction intervals\n    n_estimators=100,\n    random_state=42\n)\n\nX_imputed = imputer.fit_transform(data)\nintervals = imputer.uncertainty_intervals_\n\n# Access intervals for a specific column\nlower, upper = intervals['numeric1']\n```\n\n### Parallel Processing\n\nAll imputers support parallel processing for faster computation:\n\n```python\nimputer = XGBoostImputer(\n    n_jobs=-1,  # Use all available cores\n    n_estimators=100,\n    random_state=42\n)\n```\n\n### Feature Importance\n\nTree-based imputers provide feature importance information:\n\n```python\nimputer = LightGBMImputer(\n    n_estimators=100,\n    random_state=42\n)\nimputer.fit_transform(data)\n\n# Get feature importances for each imputed variable\nimportances = imputer.feature_importances_\n```\n\n### Missing Value Indicators\n\nAdd binary indicators for missing value patterns:\n\n```python\nimputer = KNNImputer(\n    add_indicator=True,  # Add missing value indicators\n    n_neighbors=5\n)\nX_imputed = imputer.fit_transform(data)\n```\n\n## Benchmarking\n\nThe package includes comprehensive benchmarking tools to compare different imputers:\n\n```python\nfrom implyo.benchmarks import run_benchmark\n\n# Run benchmarks with different configurations\nresults = run_benchmark(\n    n_samples=1000,\n    n_numeric_features=5,\n    n_categorical_features=3,\n    missing_ratio=0.2,\n    n_repeats=3\n)\nprint(results)\n```\n\n## Performance\n\nImplyo's imputers are optimized for performance:\n\n- **KNN Imputer**: Faster than scikit-learn's implementation\n- **XGBoost Imputer**: Efficient handling of large datasets\n- **LightGBM Imputer**: High performance with low memory usage\n- **Random Forest Imputer**: Balanced performance and accuracy\n- **MICE**: Flexible and robust for complex missing patterns\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Citation\n\nIf you use Implyo in your research, please cite:\n\n```bibtex\n@software{implyo2024,\n  author = {Darren Wei},\n  title = {Implyo: Advanced Missing Value Imputation Library},\n  year = {2024},\n  publisher = {GitHub},\n  url = {https://github.com/yourusername/implyo}\n}\n```\n\n## Roadmap\n\n- [ ] Add more advanced imputation algorithms\n- [ ] Support for time series data\n- [ ] Integration with deep learning models\n- [ ] Web-based visualization tools\n- [ ] Distributed computing support\n- [ ] GPU acceleration for large datasets","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstitchsages%2Fimplyo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstitchsages%2Fimplyo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstitchsages%2Fimplyo/lists"}