{"id":14958288,"url":"https://github.com/zhiningliu1998/imbalanced-ensemble","last_synced_at":"2025-05-15T05:06:11.184Z","repository":{"id":45292611,"uuid":"346345336","full_name":"ZhiningLiu1998/imbalanced-ensemble","owner":"ZhiningLiu1998","description":"🛠️ Class-imbalanced Ensemble Learning Toolbox. | 类别不平衡/长尾机器学习库","archived":false,"fork":false,"pushed_at":"2025-04-29T23:15:15.000Z","size":17740,"stargazers_count":363,"open_issues_count":0,"forks_count":51,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-05-15T05:06:05.397Z","etag":null,"topics":["class-imbalance","classification","data-mining","data-science","ensemble","ensemble-imbalanced-learning","ensemble-learning","ensemble-model","imbalanced-classification","imbalanced-data","imbalanced-learning","long-tail","machine-learning","multi-class-classification","python","python3","scikit-learn","sklearn"],"latest_commit_sha":null,"homepage":"https://imbalanced-ensemble.readthedocs.io","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/ZhiningLiu1998.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2021-03-10T12:16:06.000Z","updated_at":"2025-05-13T05:04:22.000Z","dependencies_parsed_at":"2022-08-31T21:01:32.566Z","dependency_job_id":"985bc9c8-f2de-40b3-8136-d96dbdfffecd","html_url":"https://github.com/ZhiningLiu1998/imbalanced-ensemble","commit_stats":{"total_commits":170,"total_committers":4,"mean_commits":42.5,"dds":0.08823529411764708,"last_synced_commit":"9892cdbf523592de7788b007061e3f5340089132"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZhiningLiu1998%2Fimbalanced-ensemble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZhiningLiu1998%2Fimbalanced-ensemble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZhiningLiu1998%2Fimbalanced-ensemble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZhiningLiu1998%2Fimbalanced-ensemble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZhiningLiu1998","download_url":"https://codeload.github.com/ZhiningLiu1998/imbalanced-ensemble/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254276447,"owners_count":22043867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["class-imbalance","classification","data-mining","data-science","ensemble","ensemble-imbalanced-learning","ensemble-learning","ensemble-model","imbalanced-classification","imbalanced-data","imbalanced-learning","long-tail","machine-learning","multi-class-classification","python","python3","scikit-learn","sklearn"],"created_at":"2024-09-24T13:16:40.880Z","updated_at":"2025-05-15T05:06:06.175Z","avatar_url":"https://github.com/ZhiningLiu1998.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![](https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/imbalanced-ensemble/imbens-logo.png)\n\u003c!-- ![](https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/imbalanced-ensemble/example_gallery_snapshot_horizontal.png) --\u003e\n\n\u003ch1 align=\"center\"\u003e\n    IMBENS: Class-imbalanced Ensemble Learning in Python\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003e\n    \u003c!-- [\u003ca href=\"https://arxiv.org/pdf/2111.12776.pdf\"\u003ePaper\u003c/a\u003e] --\u003e\n    [\u003ca href=\"https://imbalanced-ensemble.readthedocs.io\"\u003eDocumentation\u003c/a\u003e]\n    [\u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/index.html#\"\u003eGallery\u003c/a\u003e]\n    [\u003ca href=\"https://pypi.org/project/imbalanced-ensemble/\"\u003ePyPI\u003c/a\u003e]\n    [\u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/release_history.html\"\u003eChangelog\u003c/a\u003e]\n    [\u003ca href=\"https://zhuanlan.zhihu.com/p/376572330\"\u003eZhihu/知乎\u003c/a\u003e]\n\u003c/h3\u003e\n\n\n\u003ctable align=\"center\"\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eStatus\u003c/td\u003e\n        \u003ctd\u003e\n            \u003ca href=\"https://codecov.io/gh/ZhiningLiu1998/imbalanced-ensemble\"\u003e\n                \u003cimg src=\"https://codecov.io/gh/ZhiningLiu1998/imbalanced-ensemble/branch/main/graph/badge.svg?token=46Y73QPA68\"\u003e\u003c/a\u003e\n            \u003ca href='https://dl.circleci.com/status-badge/redirect/gh/ZhiningLiu1998/imbalanced-ensemble/tree/main'\u003e\n                \u003cimg src='https://dl.circleci.com/status-badge/img/gh/ZhiningLiu1998/imbalanced-ensemble/tree/main.svg?style=shield' alt='CircleCI Status'\u003e\u003c/a\u003e\n            \u003ca href='https://imbalanced-ensemble.readthedocs.io/en/latest/?badge=latest'\u003e\n                \u003cimg alt=\"Read the Docs\" src=\"https://img.shields.io/readthedocs/imbalanced-ensemble\"\u003e\u003c/a\u003e\n                \u003c!-- \u003cimg src='https://readthedocs.org/projects/imbalanced-ensemble/badge/?version=latest'\u003e\u003c/a\u003e --\u003e\n            \u003ca href=\"https://github.com/psf/black\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/blob/master/LICENSE\"\u003e\n                \u003cimg src=\"https://img.shields.io/github/license/ZhiningLiu1998/imbalanced-ensemble\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/issues\"\u003e\n                \u003cimg src=\"https://img.shields.io/github/issues/ZhiningLiu1998/imbalanced-ensemble?logo=github\"\u003e\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ePyPI\u003c/td\u003e\n        \u003ctd\u003e\n            \u003ca href=\"https://pypi.org/project/imbalanced-ensemble/\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/PyPi-imbalanced--ensemble-3775A9?logo=pypi\u0026labelColor=white\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://pypi.org/project/imbalanced-ensemble/\"\u003e\n                \u003cimg src=\"https://img.shields.io/pypi/v/imbalanced-ensemble?logo=pypi\u0026label=version\u0026labelColor=white\u0026color=3775A9\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://www.python.org/\"\u003e\n                \u003cimg src=\"https://img.shields.io/pypi/pyversions/imbalanced-ensemble.svg?logo=python\u0026labelColor=white\"\u003e\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTraffic\u003c/td\u003e\n        \u003ctd\u003e\n            \u003ca href=\"https://pepy.tech/project/imbalanced-ensemble\"\u003e\n                \u003cimg src=\"https://img.shields.io/github/stars/ZhiningLiu1998/imbalanced-ensemble\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/network/members\"\u003e\n                \u003cimg src=\"https://img.shields.io/github/forks/ZhiningLiu1998/imbalanced-ensemble\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://pepy.tech/project/imbalanced-ensemble\"\u003e\n                \u003cimg src=\"https://pepy.tech/badge/imbalanced-ensemble\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://pepy.tech/project/imbalanced-ensemble\"\u003e\n                \u003cimg src=\"https://pepy.tech/badge/imbalanced-ensemble/month\"\u003e\u003c/a\u003e\n            \u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n            \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble#contributors-\"\u003e\u003cimg src=\"https://img.shields.io/badge/all_contributors-5-orange.svg\"\u003e\u003c/a\u003e\n            \u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eDocumentation\u003c/td\u003e\n        \u003ctd\u003e\n            \u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/ReadTheDoc-Latest-green?logo=readthedocs\u0026labelColor=376681\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/release_history.html\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Doc-Changelog-blue?logo=readthedocs\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/index.html#\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Doc-Examples \u0026 Gallery-blue?logo=readthedocs\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/api.html\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Doc-API Reference-blue?logo=readthedocs\"\u003e\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ePaper \u0026 Citation\u003c/td\u003e\n        \u003ctd\u003e\n            \u003ca href=\"https://arxiv.org/abs/2111.12776\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/arXiv-2111.12776-B31B1B?logo=arXiv\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://arxiv.org/pdf/2111.12776\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/arXiv-PDF-B31B1B?logo=arXiv\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://zhuanlan.zhihu.com/p/376572330\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Blog-知乎/Zhihu-0084ff?logo=Zhihu\u0026labelColor=white\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://scholar.google.com/scholar?q=IMBENS%3A+Ensemble+class-imbalanced+learning+in+Python\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/Citation-Bibtex-4285F4?logo=googlescholar\u0026labelColor=white\"\u003e\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eLanguage\u003c/td\u003e\n        \u003ctd\u003e\n            \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/README-English-blue?logo=github\u0026labelColor=black\"\u003e\u003c/a\u003e\n            \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/blob/main/docs/README_CN.md\"\u003e\n                \u003cimg src=\"https://img.shields.io/badge/README-中文-blue?logo=github\u0026labelColor=black\"\u003e\u003c/a\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003ch3 align=\"center\"\u003e\n⏳Quick Start with our \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble#5-min-quick-start-with-imbens\"\u003e5-minute Guide\u003c/a\u003e \u0026 \u003ca href=\"https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/index.html#\"\u003eDetailed Examples\u003c/a\u003e\n\u003c/h3\u003e\n\n***IMBENS* (imported as `imbens`) is a Python library for quick implementation, modification, evaluation, and visualization of ensemble [learning from class-imbalanced data](https://github.com/ZhiningLiu1998/awesome-imbalanced-learning)**. \nCurrently, IMBENS includes **[over 15 ensemble imbalanced learning algorithms](#list-of-implemented-methods) (SMOTEBoost, SMOTEBagging, RUSBoost, EasyEnsemble, SelfPacedEnsemble, etc)** and **[19 over-/under-sampling methods](https://imbalanced-ensemble.readthedocs.io/en/latest/api/sampler/api.html) (SMOTE, ADASYN, TomekLinks, etc)** from [imbalance-learn](https://imbalanced-learn.org/stable/references/index.html#api).\n\n\u003ch2 align=\"left\"\u003e🌈 IMBENS Highlights\u003c/h2\u003e\n\n- 🧑‍💻 **Ease-of-use:** Unified, easy-to-use APIs with [documentation](https://imbalanced-ensemble.readthedocs.io/) and [examples](https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/index.html#).\n- 🚀 **Performance:** Optimized performance with parallelization using [joblib](https://github.com/joblib/joblib).\n- 📊 **Benchmarking:** Running \u0026 comparing multiple models with our [visualizer](#visualize-ensemble-classifiers).\n- 📺 **Monitoring:** Powerful, customizable, interactive training [logging]((#customizing-training-log)).\n- 🪐 **Versatility:** Full compatibility with [scikit-learn](https://scikit-learn.org/stable/) and [imbalanced-learn](https://imbalanced-learn.org/stable/).\n- 📈 **Functionality:** Extending existing techniques from binary to ***multi-class*** setting.\n\n### ✂️ **Use IMBENS for class-imbalanced classification with \u003c5 lines of code:**\n\n```python\n# Train an SPE classifier\nfrom imbens.ensemble import SelfPacedEnsembleClassifier\nclf = SelfPacedEnsembleClassifier(random_state=42)\nclf.fit(X_train, y_train)\n\n# Predict with an SPE classifier\ny_pred = clf.predict(X_test)\n```\n\n### 🤗 Citing IMBENS\n\n🍻 We appreciate your citation if you find our work helpful! The BibTeX entry:\n\n```bib\n@article{liu2023imbens,\n  title={IMBENS: Ensemble Class-imbalanced Learning in Python},\n  author={Liu, Zhining and Kang, Jian and Tong, Hanghang and Chang, Yi},\n  journal={arXiv preprint arXiv:2111.12776},\n  year={2023}\n}\n```\n\n### 👯‍♂️ Contribute to IMBENS\n\nJoin us and become a contributor!\nPlease refer to the [contributing guidelines](https://github.com/ZhiningLiu1998/imbalanced-ensemble/blob/main/CONTRIBUTING.md).\n\n\u003ch2 align=\"left\"\u003e📚 Table of Contents\u003c/h2\u003e\n\n- [Installation](#installation)\n- [List of implemented methods](#list-of-implemented-methods)\n- [5-min Quick Start with IMBENS](#5-min-quick-start-with-imbens)\n  - [A minimal working example](#a-minimal-working-example)\n  - [Visualize ensemble classifiers](#visualize-ensemble-classifiers)\n  - [Customizing training log](#customizing-training-log)\n- [About imbalanced learning](#about-imbalanced-learning)\n- [Acknowledgements](#acknowledgements)\n- [References](#references)\n- [Related Projects](#related-projects)\n- [Contributors ✨](#contributors-)\n\n\n## Installation\n\nIt is recommended to use **pip** for installation.  \nPlease make sure the **latest version** is installed to avoid potential problems:\n```shell\n$ pip install imbalanced-ensemble            # normal install\n$ pip install --upgrade imbalanced-ensemble  # update if needed\n```\n\nOr you can install imbalanced-ensemble by clone this repository:\n```shell\n$ git clone https://github.com/ZhiningLiu1998/imbalanced-ensemble.git\n$ cd imbalanced-ensemble\n$ pip install .\n```\n\nimbalanced-ensemble requires following dependencies:\n\n- [Python](https://www.python.org/) (\u003e=3.6)\n- [numpy](https://numpy.org/) (\u003e=1.16.0)\n- [pandas](https://pandas.pydata.org/) (\u003e=1.1.3)\n- [scipy](https://www.scipy.org/) (\u003e=1.9.1)\n- [joblib](https://pypi.org/project/joblib/) (\u003e=0.11)\n- [scikit-learn](https://scikit-learn.org/stable/) (\u003e=1.2.0)\n- [matplotlib](https://matplotlib.org/) (\u003e=3.3.2)\n- [seaborn](https://seaborn.pydata.org/) (\u003e=0.11.0)\n- [tqdm](https://tqdm.github.io/) (\u003e=4.50.2)\n\n\n\u003c!-- ## Highlights\n\n- \u0026#x1F34E; ***Unified, easy-to-use API design.***  \nAll ensemble learning methods implemented in IMBENS share a unified API design. \nSimilar to sklearn, all methods have functions (e.g., `fit()`, `predict()`, `predict_proba()`) that allow users to deploy them with only a few lines of code.\n- \u0026#x1F34E; ***Extended functionalities, wider application scenarios.***  \n*All methods in IMBENS are ready for **multi-class imbalanced classification**.* We extend binary ensemble imbalanced learning methods to get them to work under the multi-class scenario. Additionally, for supported methods, we provide more training options like class-wise resampling control, balancing scheduler during the ensemble training process, etc.\n- \u0026#x1F34E; ***Detailed training log, quick intuitive visualization.***   \nWe provide additional parameters (e.g., `eval_datasets`, `eval_metrics`, `training_verbose`) in `fit()` for users to control the information they want to monitor during the ensemble training. We also implement an [`EnsembleVisualizer`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/visualizer/_autosummary/imbens.visualizer.ImbalancedEnsembleVisualizer.html) to quickly visualize the ensemble estimator(s) for providing further information/conducting comparison. See an example [here](https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/basic/plot_basic_example.html#sphx-glr-auto-examples-basic-plot-basic-example-py).\n- \u0026#x1F34E; ***Wide compatiblilty.***   \nIMBENS is designed to be compatible with [scikit-learn](https://scikit-learn.org/stable/) (sklearn) and also other compatible projects like [imbalanced-learn](https://imbalanced-learn.org/stable/). Therefore, users can take advantage of various utilities from the sklearn community for data processing/cross-validation/hyper-parameter tuning, etc. --\u003e\n\n\u003c!-- ## Background\n\nClass-imbalance (also known as the long-tail problem in multi-class) is the fact that the classes are not represented equally in a classification problem, which is quite common in practice. For instance, fraud detection, prediction of rare adverse drug reactions and prediction gene families. Failure to account for the class imbalance often causes inaccurate and decreased predictive performance of many classification algorithms.\n\nImbalanced learning (IL) aims to tackle the class imbalance problem to learn an unbiased model from imbalanced data. This is usually achieved by changing the training data distribution by resampling or reweighting. However, naive resampling or reweighting may introduce bias/variance to the training data, especially when the data has class-overlapping or contains noise.\n\nEnsemble imbalanced learning (EIL) is known to effectively improve typical IL solutions by combining the outputs of multiple classifiers, thereby reducing the variance introduce by resampling/reweighting. --\u003e\n\n## List of implemented methods\n\n***16* ensemble imbalanced learning methods were implemented:  \n(Click to jump to the document page)**\n\n- **Resampling-based**\n  - *Under-sampling + Ensemble*\n    1. **[`SelfPacedEnsembleClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.SelfPacedEnsembleClassifier.html) [1] ([in Github](https://github.com/ZhiningLiu1998/self-paced-ensemble))**\n    2. **[`BalanceCascadeClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.BalanceCascadeClassifier.html) [2]**\n    3. **[`BalancedRandomForestClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.BalancedRandomForestClassifier.html) [3] ([imblearn version](https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.BalancedRandomForestClassifier.html))**\n    4. **[`EasyEnsembleClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.EasyEnsembleClassifier.html) [2] ([imblearn version](https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.EasyEnsembleClassifier.html))**\n    5. **[`RUSBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.RUSBoostClassifier.html) [4] ([imblearn version](https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.RUSBoostClassifier.html))**\n    6. **[`UnderBaggingClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.UnderBaggingClassifier.html) [5] ([imblearn version](https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.BalancedBaggingClassifier.html))**\n  - *Over-sampling + Ensemble*\n    1. **[`OverBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.OverBoostClassifier.html)**\n    2. **[`SMOTEBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.SMOTEBoostClassifier.html) [6]**\n    3. **[`KmeansSMOTEBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.KmeansSMOTEBoostClassifier.html)**\n    4. **[`OverBaggingClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.OverBaggingClassifier.html) [5] ([imblearn version](https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.BalancedBaggingClassifier.html))**\n    5. **[`SMOTEBaggingClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.SMOTEBaggingClassifier.html) [7] ([imblearn version](https://imbalanced-learn.org/stable/references/generated/imblearn.ensemble.BalancedBaggingClassifier.html))**\n- **Reweighting-based**\n  - *Cost-sensitive Learning*\n    1. **[`AdaCostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.AdaCostClassifier.html) [8]**\n    2. **[`AdaUBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.AdaUBoostClassifier.html) [9]**\n    3. **[`AsymBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.AsymBoostClassifier.html) [10]**\n- **Compatible**\n  - **[`CompatibleAdaBoostClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.CompatibleAdaBoostClassifier.html) [11]**\n  - **[`CompatibleBaggingClassifier`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.CompatibleBaggingClassifier.html) [12]**\n\n\u003e **Note: `imbalanced-ensemble` is still under development, please see [API reference](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/api.html) for the latest list.**\n\n## 5-min Quick Start with IMBENS\n\n**Here, we provide some quick guides to help you get started with IMBENS.**  \n**We strongly encourage users to check out the [**example gallery**](https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/index.html#) for more comprehensive usage examples, which demonstrate many advanced features of IMBENS.**\n\n![](https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/imbalanced-ensemble/example_gallery_snapshot.png)\n\n### A minimal working example\n\nTaking self-paced ensemble [1] as an example, it only requires less than 10 lines of code to deploy it:\n\n```python\n\u003e\u003e\u003e from imbens.ensemble import SelfPacedEnsembleClassifier\n\u003e\u003e\u003e from sklearn.datasets import make_classification\n\u003e\u003e\u003e from sklearn.model_selection import train_test_split\n\u003e\u003e\u003e \n\u003e\u003e\u003e X, y = make_classification(n_samples=1000, n_classes=3,\n...                            n_informative=4, weights=[0.2, 0.3, 0.5],\n...                            random_state=0)\n\u003e\u003e\u003e X_train, X_test, y_train, y_test = train_test_split(\n...                            X, y, test_size=0.2, random_state=42)\n\u003e\u003e\u003e clf = SelfPacedEnsembleClassifier(random_state=0)\n\u003e\u003e\u003e clf.fit(X_train, y_train)\nSelfPacedEnsembleClassifier(...)\n\u003e\u003e\u003e clf.predict(X_test)  \narray([...])\n```\n\n### Visualize ensemble classifiers\n\nThe [`imbens.visualizer`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/visualizer/api.html) sub-module provide an [`ImbalancedEnsembleVisualizer`](https://imbalanced-ensemble.readthedocs.io/en/latest/api/visualizer/_autosummary/imbens.visualizer.ImbalancedEnsembleVisualizer.html).\nIt can be used to visualize the ensemble estimator(s) for further information or comparison.\nPlease refer to [**visualizer documentation**](https://imbalanced-ensemble.readthedocs.io/en/latest/api/visualizer/_autosummary/imbens.visualizer.ImbalancedEnsembleVisualizer.html) and [**examples**](https://imbalanced-ensemble.readthedocs.io/en/latest/auto_examples/index.html) for more details.\n\n**Fit an ImbalancedEnsembleVisualizer**\n```python\nfrom imbens.ensemble import SelfPacedEnsembleClassifier\nfrom imbens.ensemble import RUSBoostClassifier\nfrom imbens.ensemble import EasyEnsembleClassifier\nfrom sklearn.tree import DecisionTreeClassifier\n\n# Fit ensemble classifiers\ninit_kwargs = {'estimator': DecisionTreeClassifier()}\nensembles = {\n    'spe': SelfPacedEnsembleClassifier(**init_kwargs).fit(X_train, y_train),\n    'rusboost': RUSBoostClassifier(**init_kwargs).fit(X_train, y_train),\n    'easyens': EasyEnsembleClassifier(**init_kwargs).fit(X_train, y_train),\n}\n\n# Fit visualizer\nfrom imbens.visualizer import ImbalancedEnsembleVisualizer\nvisualizer = ImbalancedEnsembleVisualizer().fit(ensembles=ensembles)\n```\n**Plot performance curves**\n```python\nfig, axes = visualizer.performance_lineplot()\n```\n![](https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/imbalanced-ensemble/examples/visualize_performance_example.png)\n\n**Plot confusion matrices**\n```python\nfig, axes = visualizer.confusion_matrix_heatmap()\n```\n![](https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/imbalanced-ensemble/examples/visualize_confusion_matrix_example.png)\n\n### Customizing training log\n\nAll ensemble classifiers in IMBENS support customizable training logging.\nThe training log is controlled by 3 parameters `eval_datasets`, `eval_metrics`, and `training_verbose` of the `fit()` method.\nRead more details in the [**fit documentation**](https://imbalanced-ensemble.readthedocs.io/en/latest/api/ensemble/_autosummary/imbens.ensemble.SelfPacedEnsembleClassifier.html#imbens.ensemble.SelfPacedEnsembleClassifier.fit).\n\n**Enable auto training log**\n```python\nclf.fit(..., train_verbose=True)\n```\n```\n┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃             ┃                          ┃            Data: train             ┃\n┃ #Estimators ┃    Class Distribution    ┃               Metric               ┃\n┃             ┃                          ┃  acc    balanced_acc   weighted_f1 ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n┃      1      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.838      0.877          0.839    ┃\n┃      5      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.924      0.949          0.924    ┃\n┃     10      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.954      0.970          0.954    ┃\n┃     15      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.979      0.986          0.979    ┃\n┃     20      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.990      0.993          0.990    ┃\n┃     25      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.994      0.996          0.994    ┃\n┃     30      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.988      0.992          0.988    ┃\n┃     35      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.999      0.999          0.999    ┃\n┃     40      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.995      0.997          0.995    ┃\n┃     45      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.995      0.997          0.995    ┃\n┃     50      ┃ {0: 150, 1: 150, 2: 150} ┃ 0.993      0.995          0.993    ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n┃    final    ┃ {0: 150, 1: 150, 2: 150} ┃ 0.993      0.995          0.993    ┃\n┗━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n```\n\n\n**Customize granularity and content of the training log**\n```python\nclf.fit(..., \n        train_verbose={\n            'granularity': 10,\n            'print_distribution': False,\n            'print_metrics': True,\n        })\n```\n\n\u003cdetails\u003e\u003csummary\u003e Click to view example output \u003c/summary\u003e\n\n```\n┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃             ┃            Data: train             ┃\n┃ #Estimators ┃               Metric               ┃\n┃             ┃  acc    balanced_acc   weighted_f1 ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n┃      1      ┃ 0.964      0.970          0.964    ┃\n┃     10      ┃ 1.000      1.000          1.000    ┃\n┃     20      ┃ 1.000      1.000          1.000    ┃\n┃     30      ┃ 1.000      1.000          1.000    ┃\n┃     40      ┃ 1.000      1.000          1.000    ┃\n┃     50      ┃ 1.000      1.000          1.000    ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n┃    final    ┃ 1.000      1.000          1.000    ┃\n┗━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n```\n\n\u003c/details\u003e\n\n**Add evaluation dataset(s)**\n```python\n  clf.fit(..., \n          eval_datasets={\n              'valid': (X_valid, y_valid)\n          })\n```\n\n\u003cdetails\u003e\u003csummary\u003e Click to view example output \u003c/summary\u003e\n\n```\n┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n┃             ┃            Data: train             ┃            Data: valid             ┃\n┃ #Estimators ┃               Metric               ┃               Metric               ┃\n┃             ┃  acc    balanced_acc   weighted_f1 ┃  acc    balanced_acc   weighted_f1 ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n┃      1      ┃ 0.939      0.961          0.940    ┃ 0.935      0.933          0.936    ┃\n┃     10      ┃ 1.000      1.000          1.000    ┃ 0.971      0.974          0.971    ┃\n┃     20      ┃ 1.000      1.000          1.000    ┃ 0.982      0.981          0.982    ┃\n┃     30      ┃ 1.000      1.000          1.000    ┃ 0.983      0.983          0.983    ┃\n┃     40      ┃ 1.000      1.000          1.000    ┃ 0.983      0.982          0.983    ┃\n┃     50      ┃ 1.000      1.000          1.000    ┃ 0.983      0.982          0.983    ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n┃    final    ┃ 1.000      1.000          1.000    ┃ 0.983      0.982          0.983    ┃\n┗━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n```\n\n\u003c/details\u003e\n\n**Customize evaluation metric(s)**\n```python\nfrom sklearn.metrics import accuracy_score, f1_score\nclf.fit(..., \n        eval_metrics={\n            'acc': (accuracy_score, {}),\n            'weighted_f1': (f1_score, {'average':'weighted'}),\n        })\n```\n\n\u003cdetails\u003e\u003csummary\u003e Click to view example output \u003c/summary\u003e\n\n```\n┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━┓\n┃             ┃     Data: train      ┃     Data: valid      ┃\n┃ #Estimators ┃        Metric        ┃        Metric        ┃\n┃             ┃  acc    weighted_f1  ┃  acc    weighted_f1  ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫\n┃      1      ┃ 0.942      0.961     ┃ 0.919      0.936     ┃\n┃     10      ┃ 1.000      1.000     ┃ 0.976      0.976     ┃\n┃     20      ┃ 1.000      1.000     ┃ 0.977      0.977     ┃\n┃     30      ┃ 1.000      1.000     ┃ 0.981      0.980     ┃\n┃     40      ┃ 1.000      1.000     ┃ 0.980      0.979     ┃\n┃     50      ┃ 1.000      1.000     ┃ 0.981      0.980     ┃\n┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━┫\n┃    final    ┃ 1.000      1.000     ┃ 0.981      0.980     ┃\n┗━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━┛\n```\n\n\u003c/details\u003e\n\n## About imbalanced learning\n\n**Class-imbalance** (also known as the **long-tail problem**) is the fact that the classes are not represented equally in a classification problem, which is quite common in practice. For instance, fraud detection, prediction of rare adverse drug reactions and prediction gene families. Failure to account for the class imbalance often causes inaccurate and decreased predictive performance of many classification algorithms. **Imbalanced learning** aims to tackle the class imbalance problem to learn an unbiased model from imbalanced data.\n\nFor more resources on imbalanced learning, please refer to [**awesome-imbalanced-learning**](https://github.com/ZhiningLiu1998/awesome-imbalanced-learning).\n\n## Acknowledgements\n\nIMBENS was initially developed on top of [imbalanced-learn](https://github.com/scikit-learn-contrib/imbalanced-learn), but has undergone heavy developments to implement many important imbalanced ensemble techniques.\nThe infrastructure also underwent significant refactoring to support advanced ensemble learning features that are essential to practical usability (fine-grained training control, parallel computing, multi-class support, training logs, visualization, etc).\n\n## References\n\n| #    | Reference                                                                                                                                                                                                                                                         |\n| ---- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| [1]  | Zhining Liu, Wei Cao, Zhifeng Gao, Jiang Bian, Hechang Chen, Yi Chang, and Tie-Yan Liu. 2019. Self-paced Ensemble for Highly Imbalanced Massive Data Classification. 2020 IEEE 36th International Conference on Data Engineering (ICDE). IEEE, 2020, pp. 841-852. |\n| [2]  | X.-Y. Liu, J. Wu, and Z.-H. Zhou, Exploratory undersampling for class-imbalance learning. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), vol. 39, no. 2, pp. 539–550, 2009.                                                            |\n| [3]  | Chen, Chao, Andy Liaw, and Leo Breiman. “Using random forest to learn imbalanced data.” University of California, Berkeley 110 (2004): 1-12.                                                                                                                      |\n| [4]  | C. Seiffert, T. M. Khoshgoftaar, J. Van Hulse, and A. Napolitano, Rusboost: A hybrid approach to alleviating class imbalance. IEEE Transactions on Systems, Man, and Cybernetics-Part A: Systems and Humans, vol. 40, no. 1, pp. 185–197, 2010.                   |\n| [5]  | Maclin, R., \u0026 Opitz, D. (1997). An empirical evaluation of bagging and boosting. AAAI/IAAI, 1997, 546-551.                                                                                                                                                        |\n| [6]  | N. V. Chawla, A. Lazarevic, L. O. Hall, and K. W. Bowyer, Smoteboost: Improving prediction of the minority class in boosting. in European conference on principles of data mining and knowledge discovery. Springer, 2003, pp. 107–119                            |\n| [7]  | S. Wang and X. Yao, Diversity analysis on imbalanced data sets by using ensemble models. in 2009 IEEE Symposium on Computational Intelligence and Data Mining. IEEE, 2009, pp. 324–331.                                                                           |\n| [8]  | Fan, W., Stolfo, S. J., Zhang, J., \u0026 Chan, P. K. (1999, June). AdaCost: misclassification cost-sensitive boosting. In Icml (Vol. 99, pp. 97-105).                                                                                                                 |\n| [9]  | Shawe-Taylor, G. K. J., \u0026 Karakoulas, G. (1999). Optimizing classifiers for imbalanced training sets. Advances in neural information processing systems, 11(11), 253.                                                                                             |\n| [10] | Viola, P., \u0026 Jones, M. (2001). Fast and robust classification using asymmetric adaboost and a detector cascade. Advances in Neural Information Processing System, 14.                                                                                             |\n| [11] | Freund, Y., \u0026 Schapire, R. E. (1997). A decision-theoretic generalization of on-line learning and an application to boosting. Journal of computer and system sciences, 55(1), 119-139.                                                                            |\n| [12] | Breiman, L. (1996). Bagging predictors. Machine learning, 24(2), 123-140.                                                                                                                                                                                         |\n| [13] | Guillaume Lemaître, Fernando Nogueira, and Christos K. Aridas. Imbalanced-learn: A python toolbox to tackle the curse of imbalanced datasets in machine learning. Journal of Machine Learning Research, 18(17):1–5, 2017.                                         |\n\n## Related Projects\n\n**Check out [Zhining](https://zhiningliu.com/)'s other open-source projects!**  \n\u003ctable style=\"font-size:15px;\"\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/awesome-imbalanced-learning\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/thumbnails/awesomeil-thumb.png\" height=\"80px\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eImbalanced Learning [Awesome]\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://github.com/ZhiningLiu1998/awesome-imbalanced-learning/stargazers\"\u003e\n      \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/ZhiningLiu1998/awesome-imbalanced-learning?style=social\"\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/awesome-awesome-machine-learning\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/thumbnails/awesomeml-thumb.png\" height=\"80px\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMachine Learning [Awesome]\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://github.com/ZhiningLiu1998/awesome-awesome-machine-learning/stargazers\"\u003e\n      \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/ZhiningLiu1998/awesome-awesome-machine-learning?style=social\"\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/self-paced-ensemble\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/thumbnails/spe-thumb-1.png\" height=\"80px\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eSelf-paced Ensemble [ICDE]\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://github.com/ZhiningLiu1998/self-paced-ensemble/stargazers\"\u003e\n      \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/ZhiningLiu1998/self-paced-ensemble?style=social\"\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/mesa\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/ZhiningLiu1998/figures/master/thumbnails/mesa-thumb.png\" height=\"80px\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMeta-Sampler [NeurIPS]\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\n      \u003ca href=\"https://github.com/ZhiningLiu1998/mesa/stargazers\"\u003e\n      \u003cimg alt=\"GitHub stars\" src=\"https://img.shields.io/github/stars/ZhiningLiu1998/mesa?style=social\"\u003e\n      \u003c/a\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://zhiningliu.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/26108487?v=4?s=100\" width=\"100px;\" alt=\"Zhining Liu\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eZhining Liu\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/commits?author=ZhiningLiu1998\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-ZhiningLiu1998\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#maintenance-ZhiningLiu1998\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/issues?q=author%3AZhiningLiu1998\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/commits?author=ZhiningLiu1998\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/leaphan\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/35593707?v=4?s=100\" width=\"100px;\" alt=\"leaphan\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eleaphan\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/issues?q=author%3Aleaphan\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/hannanhtang\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/23587399?v=4?s=100\" width=\"100px;\" alt=\"hannanhtang\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ehannanhtang\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/issues?q=author%3Ahannanhtang\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/huajuanren\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/37321841?v=4?s=100\" width=\"100px;\" alt=\"H.J.Ren\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eH.J.Ren\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/issues?q=author%3Ahuajuanren\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://datamodelsanalytics.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/42288570?v=4?s=100\" width=\"100px;\" alt=\"Marc Skov Madsen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMarc Skov Madsen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/ZhiningLiu1998/imbalanced-ensemble/issues?q=author%3AMarcSkovMadsen\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhiningliu1998%2Fimbalanced-ensemble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhiningliu1998%2Fimbalanced-ensemble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhiningliu1998%2Fimbalanced-ensemble/lists"}