diff --git a/.coveragerc b/.coveragerc index d85fc5369..ae59ba6ff 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,10 +2,11 @@ [run] branch = True -source = unbalanced_dataset -include = */unbalanced_dataset/* +source = imblearn +include = */imblearn/* omit = */setup.py + */benchmarks/* [report] exclude_lines = @@ -16,4 +17,6 @@ exclude_lines = raise AssertionError raise NotImplementedError if 0: - if __name__ == .__main__.: \ No newline at end of file + if __name__ == .__main__.: + if self.verbose: +show_missing = True \ No newline at end of file diff --git a/.gitignore b/.gitignore index 8edb32d96..baff57d6b 100644 --- a/.gitignore +++ b/.gitignore @@ -56,4 +56,14 @@ docs/_build/ # PyBuilder target/ -*~ \ No newline at end of file +# vim +*.swp + +# emacs +*~ + +# Visual Studio +*.sln +*.pyproj +*.suo +*.vs \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 19a58b789..1a27a76dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -23,7 +23,7 @@ env: global: # Directory where tests are run from - TEST_DIR=/tmp/test_dir - - MODULE=unbalanced_dataset + - MODULE=imblearn - OMP_NUM_THREADS=4 - OPENBLAS_NUM_THREADS=4 matrix: @@ -36,3 +36,11 @@ env: install: source build_tools/travis/install.sh script: bash build_tools/travis/test_script.sh after_success: source build_tools/travis/after_success.sh + +notifications: + webhooks: + urls: + - https://webhooks.gitter.im/e/188e3c7a5180fd4f2120 + on_success: always # options: [always|never|change] default: always + on_failure: always # options: [always|never|change] default: always + on_start: never # options: [always|never|change] default: always diff --git a/AUTHORS.rst b/AUTHORS.rst new file mode 100644 index 000000000..cc10cc44f --- /dev/null +++ b/AUTHORS.rst @@ -0,0 +1,16 @@ +History +------- + +Development lead +~~~~~~~~~~~~~~~~ + +The project started in August 2014 by Fernando Nogueira and focused on SMOTE implementation. +Together with Guillaume Lemaitre, Dayvid Victor, and Christos Aridas, additional under-sampling and over-sampling methods have been implemented as well as major changes in the API to be fully compatible with scikit-learn_. + +Contributors +------------ + +Refers to GitHub contributors page_. + +.. _scikit-learn: http://scikit-learn.org +.. _page: https://github.com/scikit-learn-contrib/imbalanced-learn/graphs/contributors diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..20cbc5632 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,179 @@ + +Contributing code +================= + +This guide is adapted from (scikit-learn)[https://github.com/scikit-learn/scikit-learn/blob/master/CONTRIBUTING.md] + +How to contribute +----------------- + +The preferred way to contribute to imbalanced-learn is to fork the +[main repository](https://github.com/scikit-learn-contrib/imbalanced-learn) on +GitHub: + +1. Fork the [project repository](https://github.com/scikit-learn-contrib/imbalanced-learn): + click on the 'Fork' button near the top of the page. This creates + a copy of the code under your account on the GitHub server. + +2. Clone this copy to your local disk: + + $ git clone git@github.com:YourLogin/imbalanced-learn.git + $ cd UnbalancedDataset + +3. Create a branch to hold your changes: + + $ git checkout -b my-feature + + and start making changes. Never work in the ``master`` branch! + +4. Work on this copy on your computer using Git to do the version + control. When you're done editing, do: + + $ git add modified_files + $ git commit + + to record your changes in Git, then push them to GitHub with: + + $ git push -u origin my-feature + +Finally, go to the web page of your fork of the imbalanced-learn repo, +and click 'Pull request' to send your changes to the maintainers for +review. This will send an email to the committers. + +(If any of the above seems like magic to you, then look up the +[Git documentation](http://git-scm.com/documentation) on the web.) + +Contributing Pull Requests +-------------------------- + +It is recommended to check that your contribution complies with the +following rules before submitting a pull request: + +- Follow the + [coding-guidelines](http://scikit-learn.org/dev/developers/contributing.html#coding-guidelines) + as for scikit-learn. + +- When applicable, use the validation tools and other code in the + `sklearn.utils` submodule. A list of utility routines available + for developers can be found in the + [Utilities for Developers](http://scikit-learn.org/dev/developers/utilities.html#developers-utils) + page. + +- If your pull request addresses an issue, please use the title to describe + the issue and mention the issue number in the pull request description to + ensure a link is created to the original issue. + +- All public methods should have informative docstrings with sample + usage presented as doctests when appropriate. + +- Please prefix the title of your pull request with `[MRG]` if the + contribution is complete and should be subjected to a detailed review. + Incomplete contributions should be prefixed `[WIP]` to indicate a work + in progress (and changed to `[MRG]` when it matures). WIPs may be useful + to: indicate you are working on something to avoid duplicated work, + request broad review of functionality or API, or seek collaborators. + WIPs often benefit from the inclusion of a + [task list](https://github.com/blog/1375-task-lists-in-gfm-issues-pulls-comments) + in the PR description. + +- All other tests pass when everything is rebuilt from scratch. On + Unix-like systems, check with (from the toplevel source folder): + + $ make + +- When adding additional functionality, provide at least one + example script in the ``examples/`` folder. Have a look at other + examples for reference. Examples should demonstrate why the new + functionality is useful in practice and, if possible, compare it + to other methods available in scikit-learn. + +- Documentation and high-coverage tests are necessary for enhancements + to be accepted. + +- At least one paragraph of narrative documentation with links to + references in the literature (with PDF links when possible) and + the example. + +You can also check for common programming errors with the following +tools: + +- Code with good unittest coverage (at least 80%), check with: + + $ pip install nose coverage + $ nosetests --with-coverage path/to/tests_for_package + +- No pyflakes warnings, check with: + + $ pip install pyflakes + $ pyflakes path/to/module.py + +- No PEP8 warnings, check with: + + $ pip install pep8 + $ pep8 path/to/module.py + +- AutoPEP8 can help you fix some of the easy redundant errors: + + $ pip install autopep8 + $ autopep8 path/to/pep8.py + +Filing bugs +----------- +We use Github issues to track all bugs and feature requests; feel free to +open an issue if you have found a bug or wish to see a feature implemented. + +It is recommended to check that your issue complies with the +following rules before submitting: + +- Verify that your issue is not being currently addressed by other + [issues](https://github.com/scikit-learn-contrib/imbalanced-learn/issues?q=) + or [pull requests](https://github.com/scikit-learn-contrib/imbalanced-learn/pulls?q=). + +- Please ensure all code snippets and error messages are formatted in + appropriate code blocks. + See [Creating and highlighting code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks). + +- Please include your operating system type and version number, as well + as your Python, scikit-learn, numpy, and scipy versions. This information + can be found by runnning the following code snippet: + + ```python + import platform; print(platform.platform()) + import sys; print("Python", sys.version) + import numpy; print("NumPy", numpy.__version__) + import scipy; print("SciPy", scipy.__version__) + import sklearn; print("Scikit-Learn", sklearn.__version__) + ``` + +- Please be specific about what estimators and/or functions are involved + and the shape of the data, as appropriate; please include a + [reproducible](http://stackoverflow.com/help/mcve) code snippet + or link to a [gist](https://gist.github.com). If an exception is raised, + please provide the traceback. + +Documentation +------------- + +We are glad to accept any sort of documentation: function docstrings, +reStructuredText documents (like this one), tutorials, etc. +reStructuredText documents live in the source code repository under the +doc/ directory. + +You can edit the documentation using any text editor and then generate +the HTML output by typing ``make html`` from the doc/ directory. +Alternatively, ``make`` can be used to quickly generate the +documentation without the example gallery. The resulting HTML files will +be placed in _build/html/ and are viewable in a web browser. See the +README file in the doc/ directory for more information. + +For building the documentation, you will need +[sphinx](http://sphinx.pocoo.org/), +[matplotlib](http://matplotlib.sourceforge.net/), and +[pillow](http://pillow.readthedocs.org/en/latest/). + +When you are writing documentation, it is important to keep a good +compromise between mathematical and algorithmic details, and give +intuition to the reader on what the algorithm does. It is best to always +start with a small paragraph with a hand-waving explanation of what the +method does to the data and a figure (coming from an example) +illustrating it. diff --git a/LICENSE.md b/LICENSE similarity index 90% rename from LICENSE.md rename to LICENSE index a7e5a4459..281735d4d 100644 --- a/LICENSE.md +++ b/LICENSE @@ -1,6 +1,8 @@ The MIT License (MIT) -Copyright (c) 2014 Fernando M. F. Nogueira +Copyright (c) 2014 Fernando M. F. Nogueira, + Guillaume Lemaitre, + Dayvid Victor Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 000000000..192436787 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ + +recursive-include doc * +recursive-include examples * +include AUTHORS.rst +include CONTRIBUTING.ms +include LICENSE +include README.rst \ No newline at end of file diff --git a/Makefile b/Makefile index a0c5716dc..bab8e3cca 100644 --- a/Makefile +++ b/Makefile @@ -11,16 +11,20 @@ clean: rm -rf coverage rm -rf dist rm -rf build + rm -rf doc/auto_examples + rm -rf doc/generated + rm -rf doc/modules + rm -rf examples/.ipynb_checkpoints test: - $(NOSETESTS) -s -v unbalanced_dataset - -# doctest: -# $(PYTHON) -c "import unbalanced_dataset, sys, io; sys.exit(unbalanced_dataset.doctest_verbose())" + $(NOSETESTS) -s -v imblearn coverage: - $(NOSETESTS) unbalanced_dataset -s -v --with-coverage --cover-package=unbalanced_dataset + $(NOSETESTS) imblearn -s -v --with-coverage --cover-package=imblearn html: conda install -y sphinx sphinx_rtd_theme numpydoc export SPHINXOPTS=-W; make -C doc html + +conda: + conda-build conda-recipe diff --git a/README.md b/README.md deleted file mode 100644 index 60a8d5ca6..000000000 --- a/README.md +++ /dev/null @@ -1,84 +0,0 @@ -UnbalancedDataset -================= - -UnbalancedDataset is a python package offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance. - -[![Code Health](https://landscape.io/github/glemaitre/UnbalancedDataset/master/landscape.svg?style=flat)](https://landscape.io/github/glemaitre/UnbalancedDataset/master) -[![Build Status](https://travis-ci.org/glemaitre/UnbalancedDataset.svg?branch=master)](https://travis-ci.org/glemaitre/UnbalancedDataset) -[![Coverage Status](https://coveralls.io/repos/github/glemaitre/UnbalancedDataset/badge.svg?branch=master)](https://coveralls.io/github/glemaitre/UnbalancedDataset?branch=master) -[![Join the chat at https://gitter.im/glemaitre/UnbalancedDataset](https://badges.gitter.im/glemaitre/UnbalancedDataset.svg)](https://gitter.im/glemaitre/UnbalancedDataset?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -Installation -============ - -### Dependencies - -* numpy -* scikit-learn - -### Installation - -UnbalancedDataset is not currently available on the PyPi's reporitories, -however you can install it via `pip`: - - pip install git+https://github.com/fmfn/UnbalancedDataset - -If you prefer, you can clone it and run the setup.py file. Use the following commands to get a -copy from Github and install all dependencies: - - git clone https://github.com/fmfn/UnbalancedDataset.git - cd UnbalancedDataset - python setup.py install - -About -===== - -Most classification algorithms will only perform optimally when the number of samples of each class is roughly the same. Highly skewed datasets, where the minority is heavily outnumbered by one or more classes, have proven to be a challenge while at the same time becoming more and more common. - -One way of addresing this issue is by re-sampling the dataset as to offset this imbalance with the hope of arriving at a more robust and fair decision boundary than you would otherwise. - -Re-sampling techniques are divided in two categories: - 1. Under-sampling the majority class(es). - 2. Over-sampling the minority class. - -Bellow is a list of the methods currently implemented in this module. - -* Under-sampling - 1. Random majority under-sampling with replacement - 2. Extraction of majority-minority Tomek links - 3. Under-sampling with Cluster Centroids - 4. NearMiss-(1 & 2 & 3) - 5. Condensend Nearest Neighbour - 6. One-Sided Selection - 7. Neighboorhood Cleaning Rule - -* Over-sampling - 1. Random minority over-sampling with replacement - 2. SMOTE - Synthetic Minority Over-sampling Technique - 3. bSMOTE(1&2) - Borderline SMOTE of types 1 and 2 - 4. SVM_SMOTE - Support Vectors SMOTE - -* Over-sampling followed by under-sampling - 1. SMOTE + Tomek links - 2. SMOTE + ENN - -* Ensemble sampling - 1. EasyEnsemble - 2. BalanceCascade - -The different algorithms are presented in the [following notebook](https://github.com/glemaitre/UnbalancedDataset/blob/master/notebook/Notebook_UnbalancedDataset.ipynb). - -This is a work in progress. Any comments, suggestions or corrections are welcome. - -References: - -1. NearMiss - ["kNN approach to unbalanced data distributions: A case study involving information extraction"](http://web0.site.uottawa.ca:4321/~nat/Workshop2003/jzhang.pdf), by Zhang et al., 2003. -1. CNN - ["Addressing the Curse of Imbalanced Training Sets: One-Sided Selection"](http://sci2s.ugr.es/keel/pdf/algorithm/congreso/kubat97addressing.pdf), by Kubat et al., 1997. -1. One-Sided Selection - ["Addressing the Curse of Imbalanced Training Sets: One-Sided Selection"](http://sci2s.ugr.es/keel/pdf/algorithm/congreso/kubat97addressing.pdf), by Kubat et al., 1997. -1. NCL - ["Improving identification of difficult small classes by balancing class distribution"](http://sci2s.ugr.es/keel/pdf/algorithm/congreso/2001-Laurikkala-LNCS.pdf), by Laurikkala et al., 2001. -1. SMOTE - ["SMOTE: synthetic minority over-sampling technique"](https://www.jair.org/media/953/live-953-2037-jair.pdf), by Chawla et al., 2002. -1. Borderline SMOTE - ["Borderline-SMOTE: A New Over-Sampling Method in Imbalanced Data Sets Learning"](http://sci2s.ugr.es/keel/keel-dataset/pdfs/2005-Han-LNCS.pdf), by Han et al., 2005 -1. SVM_SMOTE - ["Borderline Over-sampling for Imbalanced Data Classification"](https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjABahUKEwjH7qqamr_HAhWLthoKHUr0BIo&url=http%3A%2F%2Fousar.lib.okayama-u.ac.jp%2Ffile%2F19617%2FIWCIA2009_A1005.pdf&ei=a7zZVYeNDIvtasrok9AI&usg=AFQjCNHoQ6oC_dH1M1IncBP0ZAaKj8a8Cw&sig2=lh32CHGjs5WBqxa_l0ylbg), Nguyen et al., 2011. -1. SMOTE + Tomek - ["Balancing training data for automated annotation of keywords: a case study"](http://www.icmc.usp.br/~gbatista/files/wob2003.pdf), Batista et al., 2003. -1. SMOTE + ENN - ["A study of the behavior of several methods for balancing machine learning training data"](http://www.sigkdd.org/sites/default/files/issues/6-1-2004-06/batista.pdf), Batista et al., 2004. -1. EasyEnsemble & BalanceCascade - ["Exploratory Understanding for Class-Imbalance Learning"](http://cse.seu.edu.cn/people/xyliu/publication/tsmcb09.pdf), by Liu et al., 2009. diff --git a/README.rst b/README.rst new file mode 100644 index 000000000..4d69b500d --- /dev/null +++ b/README.rst @@ -0,0 +1,166 @@ +.. -*- mode: rst -*- + +imbalanced-learn +================ + +imbalanced-learn is a python package offering a number of re-sampling techniques commonly used in datasets showing strong between-class imbalance. +It is compatible with scikit-learn_ and is part of scikit-learn-contrib_ projects. + +.. _scikit-learn: http://scikit-learn.org/stable/ + +.. _scikit-learn-contrib: https://github.com/scikit-learn-contrib + +|Landscape|_ |Travis|_ |AppVeyor|_ |Coveralls|_ |CircleCI|_ |Python27|_ |Python35|_ |Pypi|_ |Gitter|_ + +.. |Landscape| image:: https://landscape.io/github/scikit-learn-contrib/imbalanced-learn/master/landscape.svg?style=flat +.. _Landscape: https://landscape.io/github/scikit-learn-contrib/imbalanced-learn/master + +.. |Travis| image:: https://travis-ci.org/scikit-learn-contrib/imbalanced-learn.svg?branch=master +.. _Travis: https://travis-ci.org/scikit-learn-contrib/imbalanced-learn + +.. |AppVeyor| image:: https://ci.appveyor.com/api/projects/status/c8w4xb7re4euntvi/branch/master?svg=true +.. _AppVeyor: https://ci.appveyor.com/project/glemaitre/imbalanced-learn/history + +.. |Coveralls| image:: https://coveralls.io/repos/github/scikit-learn-contrib/imbalanced-learn/badge.svg?branch=master +.. _Coveralls: https://coveralls.io/github/scikit-learn-contrib/imbalanced-learn?branch=master + +.. |CircleCI| image:: https://circleci.com/gh/scikit-learn-contrib/imbalanced-learn.svg?style=shield&circle-token=:circle-token +.. _CircleCI: https://circleci.com/gh/scikit-learn-contrib/imbalanced-learn/tree/master + +.. |Python27| image:: https://img.shields.io/badge/python-2.7-blue.svg +.. _Python27: https://badge.fury.io/py/scikit-learn + +.. |Python35| image:: https://img.shields.io/badge/python-3.5-blue.svg +.. _Python35: https://badge.fury.io/py/scikit-learn + +.. |Pypi| image:: https://badge.fury.io/py/imbalanced-learn.svg +.. _Pypi: https://badge.fury.io/py/imbalanced-learn + +.. |Gitter| image:: https://badges.gitter.im/scikit-learn-contrib/imbalanced-learn.svg +.. _Gitter: https://gitter.im/scikit-learn-contrib/imbalanced-learn?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge + +Documentation +============= + +Installation documentation, API documentation, and examples can be found on the documentation_. + +.. _documentation: http://contrib.scikit-learn.org/imbalanced-learn/ + +Installation +============ + +Dependencies +------------ + +imbalanced-learn is tested to work under Python 2.7 and Python 3.5. + +* scipy(>=0.17.0) +* numpy(>=1.10.4) +* scikit-learn(>=0.17.1) + +Installation +------------ + +imbalanced-learn is currently available on the PyPi's reporitories and you can install it via `pip`:: + + pip install -U imbalanced-learn + +The package is release also in Anaconda Cloud platform:: + + conda install -c glemaitre imbalanced-learn + +If you prefer, you can clone it and run the setup.py file. Use the following commands to get a +copy from Github and install all dependencies:: + + git clone https://github.com/scikit-learn-contrib/imbalanced-learn.git + cd imbalanced-learn + python setup.py install + +Testing +------- + +After installation, you can use `nose` to run the test suite:: + + make coverage + +About +===== + +Most classification algorithms will only perform optimally when the number of samples of each class is roughly the same. Highly skewed datasets, where the minority is heavily outnumbered by one or more classes, have proven to be a challenge while at the same time becoming more and more common. + +One way of addresing this issue is by re-sampling the dataset as to offset this imbalance with the hope of arriving at a more robust and fair decision boundary than you would otherwise. + +Re-sampling techniques are divided in two categories: + 1. Under-sampling the majority class(es). + 2. Over-sampling the minority class. + 3. Combining over- and under-sampling. + 4. Create ensemble balanced sets. + +Below is a list of the methods currently implemented in this module. + +* Under-sampling + 1. Random majority under-sampling with replacement + 2. Extraction of majority-minority Tomek links [1]_ + 3. Under-sampling with Cluster Centroids + 4. NearMiss-(1 & 2 & 3) [2]_ + 5. Condensend Nearest Neighbour [3]_ + 6. One-Sided Selection [4]_ + 7. Neighboorhood Cleaning Rule [5]_ + 8. Edited Nearest Neighbours [6]_ + 9. Instance Hardness Threshold [7]_ + 10. Repeated Edited Nearest Neighbours [14]_ + 11. AllKNN [14]_ + +* Over-sampling + 1. Random minority over-sampling with replacement + 2. SMOTE - Synthetic Minority Over-sampling Technique [8]_ + 3. bSMOTE(1 & 2) - Borderline SMOTE of types 1 and 2 [9]_ + 4. SVM SMOTE - Support Vectors SMOTE [10]_ + 5. ADASYN - Adaptive synthetic sampling approach for imbalanced learning [15]_ + +* Over-sampling followed by under-sampling + 1. SMOTE + Tomek links [12]_ + 2. SMOTE + ENN [11]_ + +* Ensemble sampling + 1. EasyEnsemble [13]_ + 2. BalanceCascade [13]_ + +The different algorithms are presented in the following notebook_. + +.. _notebook: https://github.com/scikit-learn-contrib/imbalanced-learn/blob/master/examples/plot_unbalanced_dataset.ipynb + +This is a work in progress. Any comments, suggestions or corrections are welcome. + +References: +----------- + +.. [1] : I. Tomek, “Two modifications of CNN,” In Systems, Man, and Cybernetics, IEEE Transactions on, vol. 6, pp 769-772, 2010. + +.. [2] : I. Mani, I. Zhang. “kNN approach to unbalanced data distributions: a case study involving information extraction,” In Proceedings of workshop on learning from imbalanced datasets, 2003. + +.. [3] : P. Hart, “The condensed nearest neighbor rule,” In Information Theory, IEEE Transactions on, vol. 14(3), pp. 515-516, 1968. + +.. [4] : M. Kubat, S. Matwin, “Addressing the curse of imbalanced training sets: one-sided selection,” In ICML, vol. 97, pp. 179-186, 1997. + +.. [5] : J. Laurikkala, “Improving identification of difficult small classes by balancing class distribution,” Springer Berlin Heidelberg, 2001. + +.. [6] : D. Wilson, “Asymptotic Properties of Nearest Neighbor Rules Using Edited Data,” In IEEE Transactions on Systems, Man, and Cybernetrics, vol. 2 (3), pp. 408-421, 1972. + +.. [7] : D. Smith, Michael R., Tony Martinez, and Christophe Giraud-Carrier. “An instance level analysis of data complexity.” Machine learning 95.2 (2014): 225-256. + +.. [8] : N. V. Chawla, K. W. Bowyer, L. O.Hall, W. P. Kegelmeyer, “SMOTE: synthetic minority over-sampling technique,” Journal of artificial intelligence research, 321-357, 2002. + +.. [9] : H. Han, W. Wen-Yuan, M. Bing-Huan, “Borderline-SMOTE: a new over-sampling method in imbalanced data sets learning,” Advances in intelligent computing, 878-887, 2005. + +.. [10] : H. M. Nguyen, E. W. Cooper, K. Kamei, “Borderline over-sampling for imbalanced data classification,” International Journal of Knowledge Engineering and Soft Data Paradigms, 3(1), pp.4-21, 2001. + +.. [11] : G. Batista, R. C. Prati, M. C. Monard. “A study of the behavior of several methods for balancing machine learning training data,” ACM Sigkdd Explorations Newsletter 6 (1), 20-29, 2004. + +.. [12] : G. Batista, B. Bazzan, M. Monard, [“Balancing Training Data for Automated Annotation of Keywords: a Case Study,” In WOB, 10-18, 2003. + +.. [13] : X. Y. Liu, J. Wu and Z. H. Zhou, “Exploratory Undersampling for Class-Imbalance Learning,” in IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), vol. 39, no. 2, pp. 539-550, April 2009. + +.. [14] : I. Tomek, “An Experiment with the Edited Nearest-Neighbor Rule,” IEEE Transactions on Systems, Man, and Cybernetics, vol. 6(6), pp. 448-452, June 1976. + +.. [15] : He, Haibo, Yang Bai, Edwardo A. Garcia, and Shutao Li. “ADASYN: Adaptive synthetic sampling approach for imbalanced learning,” In IEEE International Joint Conference on Neural Networks (IEEE World Congress on Computational Intelligence), pp. 1322-1328, 2008. diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 000000000..51f4d1563 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,51 @@ +environment: + # There is no need to run the build for all the Python version / + # architectures combo as the generated nilearn wheel is the same on all + # platforms (universal wheel). + # We run the tests on 2 different target platforms for testing purpose only. + # We use miniconda versions of Python provided by appveyor windows images + matrix: + - PYTHON: "C:\\Miniconda-x64" + PYTHON_VERSION: "2.7.x" + PYTHON_ARCH: "64" + + - PYTHON: "C:\\Miniconda3-x64" + PYTHON_VERSION: "3.5.x" + PYTHON_ARCH: "64" + +install: + # Prepend miniconda installed Python to the PATH of this build + # Add Library/bin directory to fix issue + # https://github.com/conda/conda/issues/1753 + - "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PYTHON%\\Library\\bin;%PATH%" + + # Check that we have the expected version and architecture for Python + - "python --version" + - "python -c \"import struct; print(struct.calcsize('P') * 8)\"" + + # Installed prebuilt dependencies from conda + - "conda install pip numpy scipy scikit-learn nose wheel matplotlib -y -q" + + # Install other nilearn dependencies + - "pip install coverage nose-timer" + - "python setup.py bdist_wheel" + - ps: "ls dist" + + # Install the generated wheel package to test it + - "pip install --pre --no-index --find-links dist/ imbalanced-learn" + +# Not a .NET project, we build in the install step instead +build: false + +test_script: + # Change to a non-source folder to make sure we run the tests on the + # installed library. + - "cd C:\\" + - "python -c \"import nose; nose.main()\" -v -s --with-timer --timer-top-n 50 imblearn" + +artifacts: + # Archive the generated packages in the ci.appveyor.com build report. + - path: dist\* + +#on_success: +# - TODO: upload the content of dist/*.whl to a public wheelhouse diff --git a/benchmarks/README.md b/benchmarks/README.md new file mode 100644 index 000000000..3421b6d62 --- /dev/null +++ b/benchmarks/README.md @@ -0,0 +1,55 @@ +Imbalanced dataset for benchmarking +=================================== + +Purposes +-------- + +A benchmark of the different methods proposed in the `imbalanced-learn` toolbox is provided. The methods are tested in conjunction of different `scikit-learn` classifiers. ROC analysis as well as computation time analysis are performed. + +Datasets +-------- + +The different algorithms of the `imbalanced-learn` toolbox are evaluated on a set of common dataset, which are more or less balanced. These benchmark have been proposed in [1]. The following section presents the main characteristics of this benchmark. + +### Characteristics + +|ID |Name |Repository & Target |Ratio|# samples| # features | +|:---:|:------------:|-----------------------------|:---:|:-------:|:----------:| +|1 |Ecoli |UCI, target: imU |8.6:1|336 |7 | +|2 |Optical Digits|UCI, target: 8 |9.1:1|5,620 |64 | +|3 |SatImage |UCI, target: 4 |9.3:1|6,435 |36 | +|4 |Pen Digits |UCI, target: 5 |9.4:1|10,992 |16 | +|5 |Abalone |UCI, target: 7 |9.7:1|4,177 |8 | +|6 |Sick Euthyroid|UCI, target: sick euthyroid |9.8:1|3,163 |25 | +|7 |Spectrometer |UCI, target: >=44 |11:1 |531 |93 | +|8 |Car_Eval_34 |UCI, target: good, v good |12:1 |1,728 |6 | +|9 |ISOLET |UCI, target: A, B |12:1 |7,797 |617 | +|10 |US Crime |UCI, target: >0.65 |12:1 |1,994 |122 | +|11 |Yeast_ML8 |LIBSVM, target: 8 |13:1 |2,417 |103 | +|12 |Scene |LIBSVM, target: >one label |13:1 |2,407 |294 | +|13 |Libras Move |UCI, target: 1 |14:1 |360 |90 | +|14 |Thyroid Sick |UCI, target: sick |15:1 |3,772 |28 | +|15 |Coil_2000 |KDD, CoIL, target: minority |16:1 |9,822 |85 | +|16 |Arrhythmia |UCI, target: 06 |17:1 |452 |279 | +|17 |Solar Flare M0|UCI, target: M->0 |19:1 |1,389 |10 | +|18 |OIL |UCI, target: minority |22:1 |937 |49 | +|19 |Car_Eval_4 |UCI, target: vgood |26:1 |1,728 |6 | +|20 |Wine Quality |UCI, wine, target: <=4 |26:1 |4,898 |11 | +|21 |Letter Img |UCI, target: Z |26:1 |20,000 |16 | +|22 |Yeast _ME2 |UCI, target: ME2 |28:1 |1,484 |8 | +|23 |Webpage |LIBSVM, w7a, target: minority|33:1 |49,749 |300 | +|24 |Ozone Level |UCI, ozone, data |34:1 |2,536 |72 | +|25 |Mammography |UCI, target: minority |42:1 |11,183 |6 | +|26 |Protein homo. |KDD CUP 2004, minority |111:1|145,751 |74 | +|27 |Abalone_19 |UCI, target: 19 |130:1|4,177 |8 | + +### References + +[1] Ding, Zejin, "Diversified Ensemble Classifiers for H +ighly Imbalanced Data Learning and their Application in Bioinformatics." Dissertation, Georgia State University, (2011). + +[2] Blake, Catherine, and Christopher J. Merz. "UCI Repository of machine learning databases." (1998). + +[3] Chang, Chih-Chung, and Chih-Jen Lin. "LIBSVM: a library for support vector machines." ACM Transactions on Intelligent Systems and Technology (TIST) 2.3 (2011): 27. + +[4] Caruana, Rich, Thorsten Joachims, and Lars Backstrom. "KDD-Cup 2004: results and analysis." ACM SIGKDD Explorations Newsletter 6.2 (2004): 95-108. diff --git a/benchmarks/bench_plot_combine.py b/benchmarks/bench_plot_combine.py new file mode 100644 index 000000000..bc3338d14 --- /dev/null +++ b/benchmarks/bench_plot_combine.py @@ -0,0 +1,190 @@ +"""Benchmarks of combination of over- and under-sampling methods. +""" +from __future__ import print_function + +import os + +import matplotlib as mpl +mpl.use('Agg') +import matplotlib.pyplot as plt +import seaborn as sns +import numpy as np + +lines_marker = ['-', '-.', '--', ':'] + +import numpy as np + +from time import time + +from imblearn import combine +from imblearn.datasets import fetch_benchmark +from imblearn.pipeline import make_pipeline + +from sklearn.cross_validation import StratifiedKFold +from sklearn.ensemble import RandomForestClassifier +from sklearn.ensemble import GradientBoostingClassifier +from sklearn.naive_bayes import GaussianNB +from sklearn.neighbors import KNeighborsClassifier +from sklearn.tree import DecisionTreeClassifier +from sklearn.metrics import roc_curve +from sklearn.metrics import auc + +from scipy import interp + +STORE_PATH = './results/combine' +N_JOBS = -1 + +# Check that the storage path is existing +if not os.path.exists(STORE_PATH): + os.makedirs(STORE_PATH) + +# Fetch the dataset if not done already done +dataset = fetch_benchmark() + +# Create the combine-sampling objects +combine_samplers = [combine.SMOTEENN(n_jobs=N_JOBS), + combine.SMOTETomek(n_jobs=N_JOBS)] +combine_samplers_legend = ['SMOTE+ENN', 'SMOTE+TL'] + +# Set the number of color in the palette depending of the number of methods +sns.palplot(sns.color_palette("hls", len(combine_samplers_legend))) + +# Create the classifier objects +classifiers = [RandomForestClassifier(n_jobs=N_JOBS), + GradientBoostingClassifier(), + GaussianNB(), + KNeighborsClassifier(n_jobs=N_JOBS), + DecisionTreeClassifier()] +classifiers_legend = ['RF', 'GB', 'NB', 'kNN', 'DT'] + +# Create the diffrent pipeline +pipelines = [] +for cl in classifiers: + for comb in combine_samplers: + pipelines.append(make_pipeline(comb, cl)) + +datasets_nb_samples = [] +datasets_time = [] +# For each dataset +for idx_dataset, current_set in enumerate(dataset): + + print('Process the dataset {}/{}'.format(idx_dataset+1, len(dataset))) + + # Apply sttratified k-fold cross-validation + skf = StratifiedKFold(current_set['label']) + + # For each pipeline, make the classification + pipeline_tpr_mean = [] + pipeline_tpr_std = [] + pipeline_auc = [] + pipeline_auc_std = [] + pipeline_time = [] + pipeline_nb_samples = [] + for idx_pipe, pipe in enumerate(pipelines): + print('Pipeline {}/{}'.format(idx_pipe+1, len(pipelines))) + # For each fold from the cross-validation + mean_tpr = [] + mean_fpr = np.linspace(0, 1, 30) + cv_auc = [] + cv_time = [] + cv_nb_samples = [] + for train_index, test_index in skf: + # Extract the data + X_train, X_test = (current_set['data'][train_index], + current_set['data'][test_index]) + y_train, y_test = (current_set['label'][train_index], + current_set['label'][test_index]) + cv_nb_samples.append(y_train.size) + + # Launch the time to check the performance of each combine-sampler + tstart = time() + # Fit the pipeline on the training_set + pipe.fit(X_train, y_train) + # Stop the timer + elapsed_time = time() - tstart + cv_time.append(elapsed_time) + # Predict on the testing set + y_hat = pipe.predict_proba(X_test) + + # Compute the statistics + fpr, tpr, thresholds = roc_curve(y_test, y_hat[:, 1]) + mean_tpr.append(interp(mean_fpr, fpr, tpr)) + mean_tpr[-1][0] = 0.0 + cv_auc.append(auc(mean_fpr, mean_tpr[-1])) + + avg_tpr = np.mean(mean_tpr, axis=0) + std_tpr = np.std(mean_tpr, axis=0) + avg_tpr[-1] = 1.0 + pipeline_tpr_mean.append(avg_tpr) + pipeline_tpr_std.append(std_tpr) + pipeline_auc.append(auc(mean_fpr, avg_tpr)) + pipeline_auc_std.append(np.std(cv_auc)) + pipeline_time.append(np.mean(cv_time)) + pipeline_nb_samples.append(np.mean(cv_nb_samples)) + + # For each classifier make a different plot + for cl_idx in range(len(classifiers)): + + fig = plt.figure() + ax = fig.add_subplot(111) + + # For each combine-sampling methods + for comb_idx in range(len(combine_samplers)): + + # Find the linear index for the pipeline + idx_pipeline = cl_idx * len(combine_samplers) + comb_idx + + ax.plot(mean_fpr, pipeline_tpr_mean[idx_pipeline], + label=(combine_samplers_legend[comb_idx] + + r' - AUC $= {:1.3f} \pm {:1.3f}$'.format( + pipeline_auc[idx_pipeline], + pipeline_auc_std[idx_pipeline])), + lw=2, linestyle=lines_marker[comb_idx%len(lines_marker)]) + + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.0]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('ROC analysis using a ' + classifiers_legend[cl_idx] + + ' classifier') + handles, labels = ax.get_legend_handles_labels() + lgd = ax.legend(handles, labels, loc='lower right') + + # Save the plot + plt.savefig(os.path.join(STORE_PATH, 'x{}data_{}.pdf'.format( + idx_dataset, + classifiers_legend[cl_idx])), + bbox_extra_artists=(lgd,), + bbox_inches='tight') + + # Keep only the interesting data + datasets_nb_samples.append(np.mean(pipeline_nb_samples)) + datasets_time.append(pipeline_time[:len(combine_samplers)]) + +datasets_time = np.array(datasets_time) +datasets_nb_samples = np.array(datasets_nb_samples) + +# Sort the array +idx_sort = np.argsort(datasets_nb_samples) +datasets_nb_samples = datasets_nb_samples[idx_sort] +for i in range(datasets_time.shape[1]): + datasets_time[:, i] = datasets_time[idx_sort, i] + +fig = plt.figure() +ax = fig.add_subplot(111) + +for comb_idx in range(len(combine_samplers)): + ax.loglog(datasets_nb_samples, datasets_time[:, comb_idx], + label=combine_samplers_legend[comb_idx], + lw=2, linestyle=lines_marker[comb_idx%len(lines_marker)]) + plt.xlabel('# samples') + plt.ylabel('Time (s)') + plt.title('Complexity time of the different combining over- and' + ' under-sampling methods') + handles, labels = ax.get_legend_handles_labels() + lgd = ax.legend(handles, labels, loc='lower right') + +# Save the plot +plt.savefig(os.path.join(STORE_PATH, 'complexity.pdf'), + bbox_extra_artists=(lgd,), + bbox_inches='tight') diff --git a/benchmarks/bench_plot_over_sampling.py b/benchmarks/bench_plot_over_sampling.py new file mode 100644 index 000000000..f2a7eafee --- /dev/null +++ b/benchmarks/bench_plot_over_sampling.py @@ -0,0 +1,194 @@ +"""Benchmarks of the over-sampling methods. +""" +from __future__ import print_function + +import os + +import matplotlib as mpl +mpl.use('Agg') +import matplotlib.pyplot as plt +import seaborn as sns +import numpy as np + +lines_marker = ['-', '-.', '--', ':'] + +import numpy as np + +from time import time + +from imblearn import over_sampling +from imblearn.datasets import fetch_benchmark +from imblearn.pipeline import make_pipeline + +from sklearn.cross_validation import StratifiedKFold +from sklearn.ensemble import RandomForestClassifier +from sklearn.ensemble import GradientBoostingClassifier +from sklearn.naive_bayes import GaussianNB +from sklearn.neighbors import KNeighborsClassifier +from sklearn.tree import DecisionTreeClassifier +from sklearn.metrics import roc_curve +from sklearn.metrics import auc + +from scipy import interp + +STORE_PATH = './results/over-sampling' +N_JOBS = -1 + +# Check that the storage path is existing +if not os.path.exists(STORE_PATH): + os.makedirs(STORE_PATH) + +# Fetch the dataset if not done already done +dataset = fetch_benchmark() + +# Create the over-sampling objects +over_samplers = [over_sampling.ADASYN(n_jobs=N_JOBS), + over_sampling.SMOTE(kind='regular', n_jobs=N_JOBS), + over_sampling.SMOTE(kind='borderline1', n_jobs=N_JOBS), + over_sampling.SMOTE(kind='borderline2', n_jobs=N_JOBS), + over_sampling.SMOTE(kind='svm', n_jobs=N_JOBS), + over_sampling.RandomOverSampler()] +over_samplers_legend = ['ADASYN', 'SMOTE', 'SMOTE-B1', 'SMOTE-B2', + 'SMOTE-SVM', 'ROS'] + +# Set the number of color in the palette depending of the number of methods +sns.palplot(sns.color_palette("hls", len(over_samplers_legend))) + +# Create the classifier objects +classifiers = [RandomForestClassifier(n_jobs=N_JOBS), + GradientBoostingClassifier(), + GaussianNB(), + KNeighborsClassifier(n_jobs=N_JOBS), + DecisionTreeClassifier()] +classifiers_legend = ['RF', 'GB', 'NB', 'kNN', 'DT'] + +# Create the diffrent pipeline +pipelines = [] +for cl in classifiers: + for oss in over_samplers: + pipelines.append(make_pipeline(oss, cl)) + +datasets_nb_samples = [] +datasets_time = [] +# For each dataset +for idx_dataset, current_set in enumerate(dataset): + + print('Process the dataset {}/{}'.format(idx_dataset+1, len(dataset))) + + # Apply sttratified k-fold cross-validation + skf = StratifiedKFold(current_set['label']) + + # For each pipeline, make the classification + pipeline_tpr_mean = [] + pipeline_tpr_std = [] + pipeline_auc = [] + pipeline_auc_std = [] + pipeline_time = [] + pipeline_nb_samples = [] + for idx_pipe, pipe in enumerate(pipelines): + print('Pipeline {}/{}'.format(idx_pipe+1, len(pipelines))) + # For each fold from the cross-validation + mean_tpr = [] + mean_fpr = np.linspace(0, 1, 30) + cv_auc = [] + cv_time = [] + cv_nb_samples = [] + for train_index, test_index in skf: + # Extract the data + X_train, X_test = (current_set['data'][train_index], + current_set['data'][test_index]) + y_train, y_test = (current_set['label'][train_index], + current_set['label'][test_index]) + cv_nb_samples.append(y_train.size) + + # Launch the time to check the performance of each over-sampler + tstart = time() + # Fit the pipeline on the training_set + pipe.fit(X_train, y_train) + # Stop the timer + elapsed_time = time() - tstart + cv_time.append(elapsed_time) + # Predict on the testing set + y_hat = pipe.predict_proba(X_test) + + # Compute the statistics + fpr, tpr, thresholds = roc_curve(y_test, y_hat[:, 1]) + mean_tpr.append(interp(mean_fpr, fpr, tpr)) + mean_tpr[-1][0] = 0.0 + cv_auc.append(auc(mean_fpr, mean_tpr[-1])) + + avg_tpr = np.mean(mean_tpr, axis=0) + std_tpr = np.std(mean_tpr, axis=0) + avg_tpr[-1] = 1.0 + pipeline_tpr_mean.append(avg_tpr) + pipeline_tpr_std.append(std_tpr) + pipeline_auc.append(auc(mean_fpr, avg_tpr)) + pipeline_auc_std.append(np.std(cv_auc)) + pipeline_time.append(np.mean(cv_time)) + pipeline_nb_samples.append(np.mean(cv_nb_samples)) + + # For each classifier make a different plot + for cl_idx in range(len(classifiers)): + + fig = plt.figure() + ax = fig.add_subplot(111) + + # For each over-sampling methods + for os_idx in range(len(over_samplers)): + + # Find the linear index for the pipeline + idx_pipeline = cl_idx * len(over_samplers) + os_idx + + ax.plot(mean_fpr, pipeline_tpr_mean[idx_pipeline], + label=(over_samplers_legend[os_idx] + + r' - AUC $= {:1.3f} \pm {:1.3f}$'.format( + pipeline_auc[idx_pipeline], + pipeline_auc_std[idx_pipeline])), + lw=2, linestyle=lines_marker[os_idx%len(lines_marker)]) + + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.0]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('ROC analysis using a ' + classifiers_legend[cl_idx] + + ' classifier') + handles, labels = ax.get_legend_handles_labels() + lgd = ax.legend(handles, labels, loc='lower right') + + # Save the plot + plt.savefig(os.path.join(STORE_PATH, 'x{}data_{}.pdf'.format( + idx_dataset, + classifiers_legend[cl_idx])), + bbox_extra_artists=(lgd,), + bbox_inches='tight') + + # Keep only the interesting data + datasets_nb_samples.append(np.mean(pipeline_nb_samples)) + datasets_time.append(pipeline_time[:len(over_samplers)]) + +datasets_time = np.array(datasets_time) +datasets_nb_samples = np.array(datasets_nb_samples) + +# Sort the array +idx_sort = np.argsort(datasets_nb_samples) +datasets_nb_samples = datasets_nb_samples[idx_sort] +for i in range(datasets_time.shape[1]): + datasets_time[:, i] = datasets_time[idx_sort, i] + +fig = plt.figure() +ax = fig.add_subplot(111) + +for os_idx in range(len(over_samplers)): + ax.loglog(datasets_nb_samples, datasets_time[:, os_idx], + label=over_samplers_legend[os_idx], + lw=2, linestyle=lines_marker[os_idx%len(lines_marker)]) + plt.xlabel('# samples') + plt.ylabel('Time (s)') + plt.title('Complexity time of the different over-sampling methods') + handles, labels = ax.get_legend_handles_labels() + lgd = ax.legend(handles, labels, loc='lower right') + +# Save the plot +plt.savefig(os.path.join(STORE_PATH, 'complexity.pdf'), + bbox_extra_artists=(lgd,), + bbox_inches='tight') diff --git a/benchmarks/bench_plot_under_sampling.py b/benchmarks/bench_plot_under_sampling.py new file mode 100644 index 000000000..3f41c862d --- /dev/null +++ b/benchmarks/bench_plot_under_sampling.py @@ -0,0 +1,203 @@ +"""Benchmarks of the under-sampling methods. +""" +from __future__ import print_function + +import os + +import matplotlib as mpl +mpl.use('Agg') +import matplotlib.pyplot as plt +import seaborn as sns + +lines_marker = ['-', '-.', '--', ':'] + +import numpy as np + +from time import time + +from imblearn import under_sampling +from imblearn.datasets import fetch_benchmark +from imblearn.pipeline import make_pipeline + +from sklearn.cross_validation import StratifiedKFold +from sklearn.ensemble import RandomForestClassifier +from sklearn.ensemble import GradientBoostingClassifier +from sklearn.naive_bayes import GaussianNB +from sklearn.neighbors import KNeighborsClassifier +from sklearn.tree import DecisionTreeClassifier +from sklearn.metrics import roc_curve +from sklearn.metrics import auc + +from scipy import interp + +STORE_PATH = './results/under-sampling' +N_JOBS = -1 + +# Check that the storage path is existing +if not os.path.exists(STORE_PATH): + os.makedirs(STORE_PATH) + +# Fetch the dataset if not done already done +dataset = fetch_benchmark() + +# Create the under-sampling objects +under_samplers = [under_sampling.ClusterCentroids(n_jobs=N_JOBS), + under_sampling.CondensedNearestNeighbour(n_jobs=N_JOBS), + under_sampling.EditedNearestNeighbours(n_jobs=N_JOBS), + under_sampling.RepeatedEditedNearestNeighbours( + n_jobs=N_JOBS), + under_sampling.AllKNN(n_jobs=N_JOBS), + under_sampling.InstanceHardnessThreshold(n_jobs=N_JOBS), + under_sampling.NearMiss(version=1, n_jobs=N_JOBS), + under_sampling.NearMiss(version=2, n_jobs=N_JOBS), + under_sampling.NearMiss(version=3, n_jobs=N_JOBS), + under_sampling.NeighbourhoodCleaningRule(n_jobs=N_JOBS), + under_sampling.OneSidedSelection(n_jobs=N_JOBS), + under_sampling.RandomUnderSampler(), + under_sampling.TomekLinks(n_jobs=N_JOBS)] +under_samplers_legend = ['CC', + 'CNN', + 'ENN', 'RENN', 'AkNN', 'IHT', 'NM1', + 'NM2', 'NM3', 'NCR', 'OSS', 'RUS', 'TL'] + +# Set the number of color in the palette depending of the number of methods +sns.palplot(sns.color_palette("hls", len(under_samplers_legend))) + +# Create the classifier objects +classifiers = [RandomForestClassifier(n_jobs=N_JOBS), + GradientBoostingClassifier(), + GaussianNB(), + KNeighborsClassifier(n_jobs=N_JOBS), + DecisionTreeClassifier()] +classifiers_legend = ['RF', 'GB', 'NB', 'kNN', 'DT'] + +# Create the diffrent pipeline +pipelines = [] +for cl in classifiers: + for us in under_samplers: + pipelines.append(make_pipeline(us, cl)) + +datasets_nb_samples = [] +datasets_time = [] +# For each dataset +for idx_dataset, current_set in enumerate(dataset): + + print('Process the dataset {}/{}'.format(idx_dataset+1, len(dataset))) + + # Apply sttratified k-fold cross-validation + skf = StratifiedKFold(current_set['label']) + + # For each pipeline, make the classification + pipeline_tpr_mean = [] + pipeline_tpr_std = [] + pipeline_auc = [] + pipeline_auc_std = [] + pipeline_time = [] + pipeline_nb_samples = [] + for idx_pipe, pipe in enumerate(pipelines): + print('Pipeline {}/{}'.format(idx_pipe+1, len(pipelines))) + # For each fold from the cross-validation + mean_tpr = [] + mean_fpr = np.linspace(0, 1, 30) + cv_auc = [] + cv_time = [] + cv_nb_samples = [] + for train_index, test_index in skf: + # Extract the data + X_train, X_test = (current_set['data'][train_index], + current_set['data'][test_index]) + y_train, y_test = (current_set['label'][train_index], + current_set['label'][test_index]) + cv_nb_samples.append(y_train.size) + + # Launch the time to check the performance of each under-sampler + tstart = time() + # Fit the pipeline on the training_set + pipe.fit(X_train, y_train) + # Stop the timer + elapsed_time = time() - tstart + cv_time.append(elapsed_time) + # Predict on the testing set + y_hat = pipe.predict_proba(X_test) + + # Compute the statistics + fpr, tpr, thresholds = roc_curve(y_test, y_hat[:, 1]) + mean_tpr.append(interp(mean_fpr, fpr, tpr)) + mean_tpr[-1][0] = 0.0 + cv_auc.append(auc(mean_fpr, mean_tpr[-1])) + + avg_tpr = np.mean(mean_tpr, axis=0) + std_tpr = np.std(mean_tpr, axis=0) + avg_tpr[-1] = 1.0 + pipeline_tpr_mean.append(avg_tpr) + pipeline_tpr_std.append(std_tpr) + pipeline_auc.append(auc(mean_fpr, avg_tpr)) + pipeline_auc_std.append(np.std(cv_auc)) + pipeline_time.append(np.mean(cv_time)) + pipeline_nb_samples.append(np.mean(cv_nb_samples)) + + # For each classifier make a different plot + for cl_idx in range(len(classifiers)): + + fig = plt.figure() + ax = fig.add_subplot(111) + + # For each under-sampling methods + for us_idx in range(len(under_samplers)): + + # Find the linear index for the pipeline + idx_pipeline = cl_idx * len(under_samplers) + us_idx + + ax.plot(mean_fpr, pipeline_tpr_mean[idx_pipeline], + label=(under_samplers_legend[us_idx] + + r' - AUC $= {:1.3f} \pm {:1.3f}$'.format( + pipeline_auc[idx_pipeline], + pipeline_auc_std[idx_pipeline])), + lw=2, linestyle=lines_marker[us_idx%len(lines_marker)]) + + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.0]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('ROC analysis using a ' + classifiers_legend[cl_idx] + + ' classifier') + handles, labels = ax.get_legend_handles_labels() + lgd = ax.legend(handles, labels, loc='lower right') + + # Save the plot + plt.savefig(os.path.join(STORE_PATH, 'x{}data_{}.pdf'.format( + idx_dataset, + classifiers_legend[cl_idx])), + bbox_extra_artists=(lgd,), + bbox_inches='tight') + + # Keep only the interesting data + datasets_nb_samples.append(np.mean(pipeline_nb_samples)) + datasets_time.append(pipeline_time[:len(under_samplers)]) + +datasets_time = np.array(datasets_time) +datasets_nb_samples = np.array(datasets_nb_samples) + +# Sort the array +idx_sort = np.argsort(datasets_nb_samples) +datasets_nb_samples = datasets_nb_samples[idx_sort] +for i in range(datasets_time.shape[1]): + datasets_time[:, i] = datasets_time[idx_sort, i] + +fig = plt.figure() +ax = fig.add_subplot(111) + +for us_idx in range(len(under_samplers)): + ax.loglog(datasets_nb_samples, datasets_time[:, us_idx], + label=under_samplers_legend[us_idx], + lw=2, linestyle=lines_marker[us_idx%len(lines_marker)]) + plt.xlabel('# samples') + plt.ylabel('Time (s)') + plt.title('Complexity time of the different under-sampling methods') + handles, labels = ax.get_legend_handles_labels() + lgd = ax.legend(handles, labels, loc='lower right') + +# Save the plot +plt.savefig(os.path.join(STORE_PATH, 'complexity.pdf'), + bbox_extra_artists=(lgd,), + bbox_inches='tight') diff --git a/benchmarks/results/combine/complexity.pdf b/benchmarks/results/combine/complexity.pdf new file mode 100644 index 000000000..be2f0613b Binary files /dev/null and b/benchmarks/results/combine/complexity.pdf differ diff --git a/benchmarks/results/combine/x0data_DT.pdf b/benchmarks/results/combine/x0data_DT.pdf new file mode 100644 index 000000000..5792e899d Binary files /dev/null and b/benchmarks/results/combine/x0data_DT.pdf differ diff --git a/benchmarks/results/combine/x0data_GB.pdf b/benchmarks/results/combine/x0data_GB.pdf new file mode 100644 index 000000000..d396c61d7 Binary files /dev/null and b/benchmarks/results/combine/x0data_GB.pdf differ diff --git a/benchmarks/results/combine/x0data_NB.pdf b/benchmarks/results/combine/x0data_NB.pdf new file mode 100644 index 000000000..430556ff6 Binary files /dev/null and b/benchmarks/results/combine/x0data_NB.pdf differ diff --git a/benchmarks/results/combine/x0data_RF.pdf b/benchmarks/results/combine/x0data_RF.pdf new file mode 100644 index 000000000..5d58080b1 Binary files /dev/null and b/benchmarks/results/combine/x0data_RF.pdf differ diff --git a/benchmarks/results/combine/x0data_kNN.pdf b/benchmarks/results/combine/x0data_kNN.pdf new file mode 100644 index 000000000..75b9440d7 Binary files /dev/null and b/benchmarks/results/combine/x0data_kNN.pdf differ diff --git a/benchmarks/results/combine/x10data_DT.pdf b/benchmarks/results/combine/x10data_DT.pdf new file mode 100644 index 000000000..d4062c3a9 Binary files /dev/null and b/benchmarks/results/combine/x10data_DT.pdf differ diff --git a/benchmarks/results/combine/x10data_GB.pdf b/benchmarks/results/combine/x10data_GB.pdf new file mode 100644 index 000000000..7041f491d Binary files /dev/null and b/benchmarks/results/combine/x10data_GB.pdf differ diff --git a/benchmarks/results/combine/x10data_NB.pdf b/benchmarks/results/combine/x10data_NB.pdf new file mode 100644 index 000000000..06b98b8f7 Binary files /dev/null and b/benchmarks/results/combine/x10data_NB.pdf differ diff --git a/benchmarks/results/combine/x10data_RF.pdf b/benchmarks/results/combine/x10data_RF.pdf new file mode 100644 index 000000000..9d0df0a21 Binary files /dev/null and b/benchmarks/results/combine/x10data_RF.pdf differ diff --git a/benchmarks/results/combine/x10data_kNN.pdf b/benchmarks/results/combine/x10data_kNN.pdf new file mode 100644 index 000000000..84122e412 Binary files /dev/null and b/benchmarks/results/combine/x10data_kNN.pdf differ diff --git a/benchmarks/results/combine/x11data_DT.pdf b/benchmarks/results/combine/x11data_DT.pdf new file mode 100644 index 000000000..455f26c39 Binary files /dev/null and b/benchmarks/results/combine/x11data_DT.pdf differ diff --git a/benchmarks/results/combine/x11data_GB.pdf b/benchmarks/results/combine/x11data_GB.pdf new file mode 100644 index 000000000..6c414c3ec Binary files /dev/null and b/benchmarks/results/combine/x11data_GB.pdf differ diff --git a/benchmarks/results/combine/x11data_NB.pdf b/benchmarks/results/combine/x11data_NB.pdf new file mode 100644 index 000000000..890782548 Binary files /dev/null and b/benchmarks/results/combine/x11data_NB.pdf differ diff --git a/benchmarks/results/combine/x11data_RF.pdf b/benchmarks/results/combine/x11data_RF.pdf new file mode 100644 index 000000000..739c972ff Binary files /dev/null and b/benchmarks/results/combine/x11data_RF.pdf differ diff --git a/benchmarks/results/combine/x11data_kNN.pdf b/benchmarks/results/combine/x11data_kNN.pdf new file mode 100644 index 000000000..66c293437 Binary files /dev/null and b/benchmarks/results/combine/x11data_kNN.pdf differ diff --git a/benchmarks/results/combine/x12data_DT.pdf b/benchmarks/results/combine/x12data_DT.pdf new file mode 100644 index 000000000..a49dc5725 Binary files /dev/null and b/benchmarks/results/combine/x12data_DT.pdf differ diff --git a/benchmarks/results/combine/x12data_GB.pdf b/benchmarks/results/combine/x12data_GB.pdf new file mode 100644 index 000000000..3e383570e Binary files /dev/null and b/benchmarks/results/combine/x12data_GB.pdf differ diff --git a/benchmarks/results/combine/x12data_NB.pdf b/benchmarks/results/combine/x12data_NB.pdf new file mode 100644 index 000000000..b65da4869 Binary files /dev/null and b/benchmarks/results/combine/x12data_NB.pdf differ diff --git a/benchmarks/results/combine/x12data_RF.pdf b/benchmarks/results/combine/x12data_RF.pdf new file mode 100644 index 000000000..7202d5284 Binary files /dev/null and b/benchmarks/results/combine/x12data_RF.pdf differ diff --git a/benchmarks/results/combine/x12data_kNN.pdf b/benchmarks/results/combine/x12data_kNN.pdf new file mode 100644 index 000000000..0d6c5b307 Binary files /dev/null and b/benchmarks/results/combine/x12data_kNN.pdf differ diff --git a/benchmarks/results/combine/x13data_DT.pdf b/benchmarks/results/combine/x13data_DT.pdf new file mode 100644 index 000000000..a346abbf9 Binary files /dev/null and b/benchmarks/results/combine/x13data_DT.pdf differ diff --git a/benchmarks/results/combine/x13data_GB.pdf b/benchmarks/results/combine/x13data_GB.pdf new file mode 100644 index 000000000..7f220f1cb Binary files /dev/null and b/benchmarks/results/combine/x13data_GB.pdf differ diff --git a/benchmarks/results/combine/x13data_NB.pdf b/benchmarks/results/combine/x13data_NB.pdf new file mode 100644 index 000000000..d81f0ac0f Binary files /dev/null and b/benchmarks/results/combine/x13data_NB.pdf differ diff --git a/benchmarks/results/combine/x13data_RF.pdf b/benchmarks/results/combine/x13data_RF.pdf new file mode 100644 index 000000000..c91b31e3a Binary files /dev/null and b/benchmarks/results/combine/x13data_RF.pdf differ diff --git a/benchmarks/results/combine/x13data_kNN.pdf b/benchmarks/results/combine/x13data_kNN.pdf new file mode 100644 index 000000000..030cefe25 Binary files /dev/null and b/benchmarks/results/combine/x13data_kNN.pdf differ diff --git a/benchmarks/results/combine/x14data_DT.pdf b/benchmarks/results/combine/x14data_DT.pdf new file mode 100644 index 000000000..52c55d8ed Binary files /dev/null and b/benchmarks/results/combine/x14data_DT.pdf differ diff --git a/benchmarks/results/combine/x14data_GB.pdf b/benchmarks/results/combine/x14data_GB.pdf new file mode 100644 index 000000000..3c6713cb6 Binary files /dev/null and b/benchmarks/results/combine/x14data_GB.pdf differ diff --git a/benchmarks/results/combine/x14data_NB.pdf b/benchmarks/results/combine/x14data_NB.pdf new file mode 100644 index 000000000..560cd1d08 Binary files /dev/null and b/benchmarks/results/combine/x14data_NB.pdf differ diff --git a/benchmarks/results/combine/x14data_RF.pdf b/benchmarks/results/combine/x14data_RF.pdf new file mode 100644 index 000000000..902bf44eb Binary files /dev/null and b/benchmarks/results/combine/x14data_RF.pdf differ diff --git a/benchmarks/results/combine/x14data_kNN.pdf b/benchmarks/results/combine/x14data_kNN.pdf new file mode 100644 index 000000000..17729a82c Binary files /dev/null and b/benchmarks/results/combine/x14data_kNN.pdf differ diff --git a/benchmarks/results/combine/x15data_DT.pdf b/benchmarks/results/combine/x15data_DT.pdf new file mode 100644 index 000000000..b65ae0558 Binary files /dev/null and b/benchmarks/results/combine/x15data_DT.pdf differ diff --git a/benchmarks/results/combine/x15data_GB.pdf b/benchmarks/results/combine/x15data_GB.pdf new file mode 100644 index 000000000..7b0a65ac2 Binary files /dev/null and b/benchmarks/results/combine/x15data_GB.pdf differ diff --git a/benchmarks/results/combine/x15data_NB.pdf b/benchmarks/results/combine/x15data_NB.pdf new file mode 100644 index 000000000..240357187 Binary files /dev/null and b/benchmarks/results/combine/x15data_NB.pdf differ diff --git a/benchmarks/results/combine/x15data_RF.pdf b/benchmarks/results/combine/x15data_RF.pdf new file mode 100644 index 000000000..06c24c6f8 Binary files /dev/null and b/benchmarks/results/combine/x15data_RF.pdf differ diff --git a/benchmarks/results/combine/x15data_kNN.pdf b/benchmarks/results/combine/x15data_kNN.pdf new file mode 100644 index 000000000..3f25d43a3 Binary files /dev/null and b/benchmarks/results/combine/x15data_kNN.pdf differ diff --git a/benchmarks/results/combine/x16data_DT.pdf b/benchmarks/results/combine/x16data_DT.pdf new file mode 100644 index 000000000..1ff974544 Binary files /dev/null and b/benchmarks/results/combine/x16data_DT.pdf differ diff --git a/benchmarks/results/combine/x16data_GB.pdf b/benchmarks/results/combine/x16data_GB.pdf new file mode 100644 index 000000000..84c5095cd Binary files /dev/null and b/benchmarks/results/combine/x16data_GB.pdf differ diff --git a/benchmarks/results/combine/x16data_NB.pdf b/benchmarks/results/combine/x16data_NB.pdf new file mode 100644 index 000000000..5681681ef Binary files /dev/null and b/benchmarks/results/combine/x16data_NB.pdf differ diff --git a/benchmarks/results/combine/x16data_RF.pdf b/benchmarks/results/combine/x16data_RF.pdf new file mode 100644 index 000000000..6e302acc9 Binary files /dev/null and b/benchmarks/results/combine/x16data_RF.pdf differ diff --git a/benchmarks/results/combine/x16data_kNN.pdf b/benchmarks/results/combine/x16data_kNN.pdf new file mode 100644 index 000000000..47b4f3b7a Binary files /dev/null and b/benchmarks/results/combine/x16data_kNN.pdf differ diff --git a/benchmarks/results/combine/x17data_DT.pdf b/benchmarks/results/combine/x17data_DT.pdf new file mode 100644 index 000000000..44b71f971 Binary files /dev/null and b/benchmarks/results/combine/x17data_DT.pdf differ diff --git a/benchmarks/results/combine/x17data_GB.pdf b/benchmarks/results/combine/x17data_GB.pdf new file mode 100644 index 000000000..968ea7432 Binary files /dev/null and b/benchmarks/results/combine/x17data_GB.pdf differ diff --git a/benchmarks/results/combine/x17data_NB.pdf b/benchmarks/results/combine/x17data_NB.pdf new file mode 100644 index 000000000..e38524551 Binary files /dev/null and b/benchmarks/results/combine/x17data_NB.pdf differ diff --git a/benchmarks/results/combine/x17data_RF.pdf b/benchmarks/results/combine/x17data_RF.pdf new file mode 100644 index 000000000..71b9e66f0 Binary files /dev/null and b/benchmarks/results/combine/x17data_RF.pdf differ diff --git a/benchmarks/results/combine/x17data_kNN.pdf b/benchmarks/results/combine/x17data_kNN.pdf new file mode 100644 index 000000000..2bef204dd Binary files /dev/null and b/benchmarks/results/combine/x17data_kNN.pdf differ diff --git a/benchmarks/results/combine/x18data_DT.pdf b/benchmarks/results/combine/x18data_DT.pdf new file mode 100644 index 000000000..a2a4a8720 Binary files /dev/null and b/benchmarks/results/combine/x18data_DT.pdf differ diff --git a/benchmarks/results/combine/x18data_GB.pdf b/benchmarks/results/combine/x18data_GB.pdf new file mode 100644 index 000000000..17f064023 Binary files /dev/null and b/benchmarks/results/combine/x18data_GB.pdf differ diff --git a/benchmarks/results/combine/x18data_NB.pdf b/benchmarks/results/combine/x18data_NB.pdf new file mode 100644 index 000000000..7bedc444c Binary files /dev/null and b/benchmarks/results/combine/x18data_NB.pdf differ diff --git a/benchmarks/results/combine/x18data_RF.pdf b/benchmarks/results/combine/x18data_RF.pdf new file mode 100644 index 000000000..0e7dc7546 Binary files /dev/null and b/benchmarks/results/combine/x18data_RF.pdf differ diff --git a/benchmarks/results/combine/x18data_kNN.pdf b/benchmarks/results/combine/x18data_kNN.pdf new file mode 100644 index 000000000..fe7f8660d Binary files /dev/null and b/benchmarks/results/combine/x18data_kNN.pdf differ diff --git a/benchmarks/results/combine/x19data_DT.pdf b/benchmarks/results/combine/x19data_DT.pdf new file mode 100644 index 000000000..d7e9a3b41 Binary files /dev/null and b/benchmarks/results/combine/x19data_DT.pdf differ diff --git a/benchmarks/results/combine/x19data_GB.pdf b/benchmarks/results/combine/x19data_GB.pdf new file mode 100644 index 000000000..52580b279 Binary files /dev/null and b/benchmarks/results/combine/x19data_GB.pdf differ diff --git a/benchmarks/results/combine/x19data_NB.pdf b/benchmarks/results/combine/x19data_NB.pdf new file mode 100644 index 000000000..a3981bf3c Binary files /dev/null and b/benchmarks/results/combine/x19data_NB.pdf differ diff --git a/benchmarks/results/combine/x19data_RF.pdf b/benchmarks/results/combine/x19data_RF.pdf new file mode 100644 index 000000000..c370436e4 Binary files /dev/null and b/benchmarks/results/combine/x19data_RF.pdf differ diff --git a/benchmarks/results/combine/x19data_kNN.pdf b/benchmarks/results/combine/x19data_kNN.pdf new file mode 100644 index 000000000..19867efd7 Binary files /dev/null and b/benchmarks/results/combine/x19data_kNN.pdf differ diff --git a/benchmarks/results/combine/x1data_DT.pdf b/benchmarks/results/combine/x1data_DT.pdf new file mode 100644 index 000000000..2cf8df85e Binary files /dev/null and b/benchmarks/results/combine/x1data_DT.pdf differ diff --git a/benchmarks/results/combine/x1data_GB.pdf b/benchmarks/results/combine/x1data_GB.pdf new file mode 100644 index 000000000..00b7190a2 Binary files /dev/null and b/benchmarks/results/combine/x1data_GB.pdf differ diff --git a/benchmarks/results/combine/x1data_NB.pdf b/benchmarks/results/combine/x1data_NB.pdf new file mode 100644 index 000000000..d72f7b9e1 Binary files /dev/null and b/benchmarks/results/combine/x1data_NB.pdf differ diff --git a/benchmarks/results/combine/x1data_RF.pdf b/benchmarks/results/combine/x1data_RF.pdf new file mode 100644 index 000000000..fd5959673 Binary files /dev/null and b/benchmarks/results/combine/x1data_RF.pdf differ diff --git a/benchmarks/results/combine/x1data_kNN.pdf b/benchmarks/results/combine/x1data_kNN.pdf new file mode 100644 index 000000000..66538cebc Binary files /dev/null and b/benchmarks/results/combine/x1data_kNN.pdf differ diff --git a/benchmarks/results/combine/x20data_DT.pdf b/benchmarks/results/combine/x20data_DT.pdf new file mode 100644 index 000000000..015ea4d75 Binary files /dev/null and b/benchmarks/results/combine/x20data_DT.pdf differ diff --git a/benchmarks/results/combine/x20data_GB.pdf b/benchmarks/results/combine/x20data_GB.pdf new file mode 100644 index 000000000..c916ad1b8 Binary files /dev/null and b/benchmarks/results/combine/x20data_GB.pdf differ diff --git a/benchmarks/results/combine/x20data_NB.pdf b/benchmarks/results/combine/x20data_NB.pdf new file mode 100644 index 000000000..43c6b6412 Binary files /dev/null and b/benchmarks/results/combine/x20data_NB.pdf differ diff --git a/benchmarks/results/combine/x20data_RF.pdf b/benchmarks/results/combine/x20data_RF.pdf new file mode 100644 index 000000000..507599e0e Binary files /dev/null and b/benchmarks/results/combine/x20data_RF.pdf differ diff --git a/benchmarks/results/combine/x20data_kNN.pdf b/benchmarks/results/combine/x20data_kNN.pdf new file mode 100644 index 000000000..fc7ece49a Binary files /dev/null and b/benchmarks/results/combine/x20data_kNN.pdf differ diff --git a/benchmarks/results/combine/x21data_DT.pdf b/benchmarks/results/combine/x21data_DT.pdf new file mode 100644 index 000000000..f4fb44e35 Binary files /dev/null and b/benchmarks/results/combine/x21data_DT.pdf differ diff --git a/benchmarks/results/combine/x21data_GB.pdf b/benchmarks/results/combine/x21data_GB.pdf new file mode 100644 index 000000000..2578028e5 Binary files /dev/null and b/benchmarks/results/combine/x21data_GB.pdf differ diff --git a/benchmarks/results/combine/x21data_NB.pdf b/benchmarks/results/combine/x21data_NB.pdf new file mode 100644 index 000000000..b79662180 Binary files /dev/null and b/benchmarks/results/combine/x21data_NB.pdf differ diff --git a/benchmarks/results/combine/x21data_RF.pdf b/benchmarks/results/combine/x21data_RF.pdf new file mode 100644 index 000000000..fbae382b6 Binary files /dev/null and b/benchmarks/results/combine/x21data_RF.pdf differ diff --git a/benchmarks/results/combine/x21data_kNN.pdf b/benchmarks/results/combine/x21data_kNN.pdf new file mode 100644 index 000000000..e7f7c7f17 Binary files /dev/null and b/benchmarks/results/combine/x21data_kNN.pdf differ diff --git a/benchmarks/results/combine/x22data_DT.pdf b/benchmarks/results/combine/x22data_DT.pdf new file mode 100644 index 000000000..731be1a0f Binary files /dev/null and b/benchmarks/results/combine/x22data_DT.pdf differ diff --git a/benchmarks/results/combine/x22data_GB.pdf b/benchmarks/results/combine/x22data_GB.pdf new file mode 100644 index 000000000..7db222efa Binary files /dev/null and b/benchmarks/results/combine/x22data_GB.pdf differ diff --git a/benchmarks/results/combine/x22data_NB.pdf b/benchmarks/results/combine/x22data_NB.pdf new file mode 100644 index 000000000..632c8ef8b Binary files /dev/null and b/benchmarks/results/combine/x22data_NB.pdf differ diff --git a/benchmarks/results/combine/x22data_RF.pdf b/benchmarks/results/combine/x22data_RF.pdf new file mode 100644 index 000000000..71532ebef Binary files /dev/null and b/benchmarks/results/combine/x22data_RF.pdf differ diff --git a/benchmarks/results/combine/x22data_kNN.pdf b/benchmarks/results/combine/x22data_kNN.pdf new file mode 100644 index 000000000..e98617685 Binary files /dev/null and b/benchmarks/results/combine/x22data_kNN.pdf differ diff --git a/benchmarks/results/combine/x23data_DT.pdf b/benchmarks/results/combine/x23data_DT.pdf new file mode 100644 index 000000000..67998401a Binary files /dev/null and b/benchmarks/results/combine/x23data_DT.pdf differ diff --git a/benchmarks/results/combine/x23data_GB.pdf b/benchmarks/results/combine/x23data_GB.pdf new file mode 100644 index 000000000..82eb0ce1a Binary files /dev/null and b/benchmarks/results/combine/x23data_GB.pdf differ diff --git a/benchmarks/results/combine/x23data_NB.pdf b/benchmarks/results/combine/x23data_NB.pdf new file mode 100644 index 000000000..95f526300 Binary files /dev/null and b/benchmarks/results/combine/x23data_NB.pdf differ diff --git a/benchmarks/results/combine/x23data_RF.pdf b/benchmarks/results/combine/x23data_RF.pdf new file mode 100644 index 000000000..ec874e0c2 Binary files /dev/null and b/benchmarks/results/combine/x23data_RF.pdf differ diff --git a/benchmarks/results/combine/x23data_kNN.pdf b/benchmarks/results/combine/x23data_kNN.pdf new file mode 100644 index 000000000..01677a784 Binary files /dev/null and b/benchmarks/results/combine/x23data_kNN.pdf differ diff --git a/benchmarks/results/combine/x24data_DT.pdf b/benchmarks/results/combine/x24data_DT.pdf new file mode 100644 index 000000000..49fd36795 Binary files /dev/null and b/benchmarks/results/combine/x24data_DT.pdf differ diff --git a/benchmarks/results/combine/x24data_GB.pdf b/benchmarks/results/combine/x24data_GB.pdf new file mode 100644 index 000000000..0de9e57b9 Binary files /dev/null and b/benchmarks/results/combine/x24data_GB.pdf differ diff --git a/benchmarks/results/combine/x24data_NB.pdf b/benchmarks/results/combine/x24data_NB.pdf new file mode 100644 index 000000000..63790bc7e Binary files /dev/null and b/benchmarks/results/combine/x24data_NB.pdf differ diff --git a/benchmarks/results/combine/x24data_RF.pdf b/benchmarks/results/combine/x24data_RF.pdf new file mode 100644 index 000000000..eb998adbf Binary files /dev/null and b/benchmarks/results/combine/x24data_RF.pdf differ diff --git a/benchmarks/results/combine/x24data_kNN.pdf b/benchmarks/results/combine/x24data_kNN.pdf new file mode 100644 index 000000000..781cf223f Binary files /dev/null and b/benchmarks/results/combine/x24data_kNN.pdf differ diff --git a/benchmarks/results/combine/x25data_DT.pdf b/benchmarks/results/combine/x25data_DT.pdf new file mode 100644 index 000000000..ee814004d Binary files /dev/null and b/benchmarks/results/combine/x25data_DT.pdf differ diff --git a/benchmarks/results/combine/x25data_GB.pdf b/benchmarks/results/combine/x25data_GB.pdf new file mode 100644 index 000000000..dc9f01d6f Binary files /dev/null and b/benchmarks/results/combine/x25data_GB.pdf differ diff --git a/benchmarks/results/combine/x25data_NB.pdf b/benchmarks/results/combine/x25data_NB.pdf new file mode 100644 index 000000000..494e15282 Binary files /dev/null and b/benchmarks/results/combine/x25data_NB.pdf differ diff --git a/benchmarks/results/combine/x25data_RF.pdf b/benchmarks/results/combine/x25data_RF.pdf new file mode 100644 index 000000000..fcee0e5fa Binary files /dev/null and b/benchmarks/results/combine/x25data_RF.pdf differ diff --git a/benchmarks/results/combine/x25data_kNN.pdf b/benchmarks/results/combine/x25data_kNN.pdf new file mode 100644 index 000000000..c3442849c Binary files /dev/null and b/benchmarks/results/combine/x25data_kNN.pdf differ diff --git a/benchmarks/results/combine/x26data_DT.pdf b/benchmarks/results/combine/x26data_DT.pdf new file mode 100644 index 000000000..003fcf7db Binary files /dev/null and b/benchmarks/results/combine/x26data_DT.pdf differ diff --git a/benchmarks/results/combine/x26data_GB.pdf b/benchmarks/results/combine/x26data_GB.pdf new file mode 100644 index 000000000..eecf43fde Binary files /dev/null and b/benchmarks/results/combine/x26data_GB.pdf differ diff --git a/benchmarks/results/combine/x26data_NB.pdf b/benchmarks/results/combine/x26data_NB.pdf new file mode 100644 index 000000000..7266a3dc9 Binary files /dev/null and b/benchmarks/results/combine/x26data_NB.pdf differ diff --git a/benchmarks/results/combine/x26data_RF.pdf b/benchmarks/results/combine/x26data_RF.pdf new file mode 100644 index 000000000..71ea3c975 Binary files /dev/null and b/benchmarks/results/combine/x26data_RF.pdf differ diff --git a/benchmarks/results/combine/x26data_kNN.pdf b/benchmarks/results/combine/x26data_kNN.pdf new file mode 100644 index 000000000..68d11f330 Binary files /dev/null and b/benchmarks/results/combine/x26data_kNN.pdf differ diff --git a/benchmarks/results/combine/x2data_DT.pdf b/benchmarks/results/combine/x2data_DT.pdf new file mode 100644 index 000000000..1cbd1434c Binary files /dev/null and b/benchmarks/results/combine/x2data_DT.pdf differ diff --git a/benchmarks/results/combine/x2data_GB.pdf b/benchmarks/results/combine/x2data_GB.pdf new file mode 100644 index 000000000..6c4babfdc Binary files /dev/null and b/benchmarks/results/combine/x2data_GB.pdf differ diff --git a/benchmarks/results/combine/x2data_NB.pdf b/benchmarks/results/combine/x2data_NB.pdf new file mode 100644 index 000000000..1cb58a819 Binary files /dev/null and b/benchmarks/results/combine/x2data_NB.pdf differ diff --git a/benchmarks/results/combine/x2data_RF.pdf b/benchmarks/results/combine/x2data_RF.pdf new file mode 100644 index 000000000..86d744142 Binary files /dev/null and b/benchmarks/results/combine/x2data_RF.pdf differ diff --git a/benchmarks/results/combine/x2data_kNN.pdf b/benchmarks/results/combine/x2data_kNN.pdf new file mode 100644 index 000000000..14c6c9c2e Binary files /dev/null and b/benchmarks/results/combine/x2data_kNN.pdf differ diff --git a/benchmarks/results/combine/x3data_DT.pdf b/benchmarks/results/combine/x3data_DT.pdf new file mode 100644 index 000000000..29d309c23 Binary files /dev/null and b/benchmarks/results/combine/x3data_DT.pdf differ diff --git a/benchmarks/results/combine/x3data_GB.pdf b/benchmarks/results/combine/x3data_GB.pdf new file mode 100644 index 000000000..7a5c5def6 Binary files /dev/null and b/benchmarks/results/combine/x3data_GB.pdf differ diff --git a/benchmarks/results/combine/x3data_NB.pdf b/benchmarks/results/combine/x3data_NB.pdf new file mode 100644 index 000000000..12cbd9b80 Binary files /dev/null and b/benchmarks/results/combine/x3data_NB.pdf differ diff --git a/benchmarks/results/combine/x3data_RF.pdf b/benchmarks/results/combine/x3data_RF.pdf new file mode 100644 index 000000000..e5f1b8a19 Binary files /dev/null and b/benchmarks/results/combine/x3data_RF.pdf differ diff --git a/benchmarks/results/combine/x3data_kNN.pdf b/benchmarks/results/combine/x3data_kNN.pdf new file mode 100644 index 000000000..8ec717a1d Binary files /dev/null and b/benchmarks/results/combine/x3data_kNN.pdf differ diff --git a/benchmarks/results/combine/x4data_DT.pdf b/benchmarks/results/combine/x4data_DT.pdf new file mode 100644 index 000000000..2eb461487 Binary files /dev/null and b/benchmarks/results/combine/x4data_DT.pdf differ diff --git a/benchmarks/results/combine/x4data_GB.pdf b/benchmarks/results/combine/x4data_GB.pdf new file mode 100644 index 000000000..0117a5217 Binary files /dev/null and b/benchmarks/results/combine/x4data_GB.pdf differ diff --git a/benchmarks/results/combine/x4data_NB.pdf b/benchmarks/results/combine/x4data_NB.pdf new file mode 100644 index 000000000..7b8cb91f3 Binary files /dev/null and b/benchmarks/results/combine/x4data_NB.pdf differ diff --git a/benchmarks/results/combine/x4data_RF.pdf b/benchmarks/results/combine/x4data_RF.pdf new file mode 100644 index 000000000..35f9523c2 Binary files /dev/null and b/benchmarks/results/combine/x4data_RF.pdf differ diff --git a/benchmarks/results/combine/x4data_kNN.pdf b/benchmarks/results/combine/x4data_kNN.pdf new file mode 100644 index 000000000..c921e5f22 Binary files /dev/null and b/benchmarks/results/combine/x4data_kNN.pdf differ diff --git a/benchmarks/results/combine/x5data_DT.pdf b/benchmarks/results/combine/x5data_DT.pdf new file mode 100644 index 000000000..3cb863fcf Binary files /dev/null and b/benchmarks/results/combine/x5data_DT.pdf differ diff --git a/benchmarks/results/combine/x5data_GB.pdf b/benchmarks/results/combine/x5data_GB.pdf new file mode 100644 index 000000000..36a0a3cb1 Binary files /dev/null and b/benchmarks/results/combine/x5data_GB.pdf differ diff --git a/benchmarks/results/combine/x5data_NB.pdf b/benchmarks/results/combine/x5data_NB.pdf new file mode 100644 index 000000000..9100bd14b Binary files /dev/null and b/benchmarks/results/combine/x5data_NB.pdf differ diff --git a/benchmarks/results/combine/x5data_RF.pdf b/benchmarks/results/combine/x5data_RF.pdf new file mode 100644 index 000000000..2102320b5 Binary files /dev/null and b/benchmarks/results/combine/x5data_RF.pdf differ diff --git a/benchmarks/results/combine/x5data_kNN.pdf b/benchmarks/results/combine/x5data_kNN.pdf new file mode 100644 index 000000000..df99be57a Binary files /dev/null and b/benchmarks/results/combine/x5data_kNN.pdf differ diff --git a/benchmarks/results/combine/x6data_DT.pdf b/benchmarks/results/combine/x6data_DT.pdf new file mode 100644 index 000000000..6280f8d10 Binary files /dev/null and b/benchmarks/results/combine/x6data_DT.pdf differ diff --git a/benchmarks/results/combine/x6data_GB.pdf b/benchmarks/results/combine/x6data_GB.pdf new file mode 100644 index 000000000..6040246e5 Binary files /dev/null and b/benchmarks/results/combine/x6data_GB.pdf differ diff --git a/benchmarks/results/combine/x6data_NB.pdf b/benchmarks/results/combine/x6data_NB.pdf new file mode 100644 index 000000000..134f6bf56 Binary files /dev/null and b/benchmarks/results/combine/x6data_NB.pdf differ diff --git a/benchmarks/results/combine/x6data_RF.pdf b/benchmarks/results/combine/x6data_RF.pdf new file mode 100644 index 000000000..5584ea0d1 Binary files /dev/null and b/benchmarks/results/combine/x6data_RF.pdf differ diff --git a/benchmarks/results/combine/x6data_kNN.pdf b/benchmarks/results/combine/x6data_kNN.pdf new file mode 100644 index 000000000..f75589a99 Binary files /dev/null and b/benchmarks/results/combine/x6data_kNN.pdf differ diff --git a/benchmarks/results/combine/x7data_DT.pdf b/benchmarks/results/combine/x7data_DT.pdf new file mode 100644 index 000000000..c5958bb97 Binary files /dev/null and b/benchmarks/results/combine/x7data_DT.pdf differ diff --git a/benchmarks/results/combine/x7data_GB.pdf b/benchmarks/results/combine/x7data_GB.pdf new file mode 100644 index 000000000..21fe73e60 Binary files /dev/null and b/benchmarks/results/combine/x7data_GB.pdf differ diff --git a/benchmarks/results/combine/x7data_NB.pdf b/benchmarks/results/combine/x7data_NB.pdf new file mode 100644 index 000000000..3ebf26fe4 Binary files /dev/null and b/benchmarks/results/combine/x7data_NB.pdf differ diff --git a/benchmarks/results/combine/x7data_RF.pdf b/benchmarks/results/combine/x7data_RF.pdf new file mode 100644 index 000000000..ed77fe222 Binary files /dev/null and b/benchmarks/results/combine/x7data_RF.pdf differ diff --git a/benchmarks/results/combine/x7data_kNN.pdf b/benchmarks/results/combine/x7data_kNN.pdf new file mode 100644 index 000000000..794c1d843 Binary files /dev/null and b/benchmarks/results/combine/x7data_kNN.pdf differ diff --git a/benchmarks/results/combine/x8data_DT.pdf b/benchmarks/results/combine/x8data_DT.pdf new file mode 100644 index 000000000..0c9acf991 Binary files /dev/null and b/benchmarks/results/combine/x8data_DT.pdf differ diff --git a/benchmarks/results/combine/x8data_GB.pdf b/benchmarks/results/combine/x8data_GB.pdf new file mode 100644 index 000000000..8cf6615d8 Binary files /dev/null and b/benchmarks/results/combine/x8data_GB.pdf differ diff --git a/benchmarks/results/combine/x8data_NB.pdf b/benchmarks/results/combine/x8data_NB.pdf new file mode 100644 index 000000000..fd6f75e62 Binary files /dev/null and b/benchmarks/results/combine/x8data_NB.pdf differ diff --git a/benchmarks/results/combine/x8data_RF.pdf b/benchmarks/results/combine/x8data_RF.pdf new file mode 100644 index 000000000..dd4cd5bd1 Binary files /dev/null and b/benchmarks/results/combine/x8data_RF.pdf differ diff --git a/benchmarks/results/combine/x8data_kNN.pdf b/benchmarks/results/combine/x8data_kNN.pdf new file mode 100644 index 000000000..91fc60b07 Binary files /dev/null and b/benchmarks/results/combine/x8data_kNN.pdf differ diff --git a/benchmarks/results/combine/x9data_DT.pdf b/benchmarks/results/combine/x9data_DT.pdf new file mode 100644 index 000000000..9edbca869 Binary files /dev/null and b/benchmarks/results/combine/x9data_DT.pdf differ diff --git a/benchmarks/results/combine/x9data_GB.pdf b/benchmarks/results/combine/x9data_GB.pdf new file mode 100644 index 000000000..b59808379 Binary files /dev/null and b/benchmarks/results/combine/x9data_GB.pdf differ diff --git a/benchmarks/results/combine/x9data_NB.pdf b/benchmarks/results/combine/x9data_NB.pdf new file mode 100644 index 000000000..f765039df Binary files /dev/null and b/benchmarks/results/combine/x9data_NB.pdf differ diff --git a/benchmarks/results/combine/x9data_RF.pdf b/benchmarks/results/combine/x9data_RF.pdf new file mode 100644 index 000000000..27e27afe7 Binary files /dev/null and b/benchmarks/results/combine/x9data_RF.pdf differ diff --git a/benchmarks/results/combine/x9data_kNN.pdf b/benchmarks/results/combine/x9data_kNN.pdf new file mode 100644 index 000000000..8dd9209c2 Binary files /dev/null and b/benchmarks/results/combine/x9data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/complexity.pdf b/benchmarks/results/over-sampling/complexity.pdf new file mode 100644 index 000000000..66e27f321 Binary files /dev/null and b/benchmarks/results/over-sampling/complexity.pdf differ diff --git a/benchmarks/results/over-sampling/x0data_DT.pdf b/benchmarks/results/over-sampling/x0data_DT.pdf new file mode 100644 index 000000000..5d14baa50 Binary files /dev/null and b/benchmarks/results/over-sampling/x0data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x0data_GB.pdf b/benchmarks/results/over-sampling/x0data_GB.pdf new file mode 100644 index 000000000..8110e3e1f Binary files /dev/null and b/benchmarks/results/over-sampling/x0data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x0data_NB.pdf b/benchmarks/results/over-sampling/x0data_NB.pdf new file mode 100644 index 000000000..7e749fe50 Binary files /dev/null and b/benchmarks/results/over-sampling/x0data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x0data_RF.pdf b/benchmarks/results/over-sampling/x0data_RF.pdf new file mode 100644 index 000000000..eb30ebd50 Binary files /dev/null and b/benchmarks/results/over-sampling/x0data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x0data_kNN.pdf b/benchmarks/results/over-sampling/x0data_kNN.pdf new file mode 100644 index 000000000..ab6f0706d Binary files /dev/null and b/benchmarks/results/over-sampling/x0data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x10data_DT.pdf b/benchmarks/results/over-sampling/x10data_DT.pdf new file mode 100644 index 000000000..25f359c04 Binary files /dev/null and b/benchmarks/results/over-sampling/x10data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x10data_GB.pdf b/benchmarks/results/over-sampling/x10data_GB.pdf new file mode 100644 index 000000000..aa066e633 Binary files /dev/null and b/benchmarks/results/over-sampling/x10data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x10data_NB.pdf b/benchmarks/results/over-sampling/x10data_NB.pdf new file mode 100644 index 000000000..10daf7322 Binary files /dev/null and b/benchmarks/results/over-sampling/x10data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x10data_RF.pdf b/benchmarks/results/over-sampling/x10data_RF.pdf new file mode 100644 index 000000000..79c994bed Binary files /dev/null and b/benchmarks/results/over-sampling/x10data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x10data_kNN.pdf b/benchmarks/results/over-sampling/x10data_kNN.pdf new file mode 100644 index 000000000..a8d644b25 Binary files /dev/null and b/benchmarks/results/over-sampling/x10data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x11data_DT.pdf b/benchmarks/results/over-sampling/x11data_DT.pdf new file mode 100644 index 000000000..0b06035f8 Binary files /dev/null and b/benchmarks/results/over-sampling/x11data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x11data_GB.pdf b/benchmarks/results/over-sampling/x11data_GB.pdf new file mode 100644 index 000000000..8b1c7a23a Binary files /dev/null and b/benchmarks/results/over-sampling/x11data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x11data_NB.pdf b/benchmarks/results/over-sampling/x11data_NB.pdf new file mode 100644 index 000000000..ac8d89f94 Binary files /dev/null and b/benchmarks/results/over-sampling/x11data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x11data_RF.pdf b/benchmarks/results/over-sampling/x11data_RF.pdf new file mode 100644 index 000000000..7bb887459 Binary files /dev/null and b/benchmarks/results/over-sampling/x11data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x11data_kNN.pdf b/benchmarks/results/over-sampling/x11data_kNN.pdf new file mode 100644 index 000000000..da9ac3536 Binary files /dev/null and b/benchmarks/results/over-sampling/x11data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x12data_DT.pdf b/benchmarks/results/over-sampling/x12data_DT.pdf new file mode 100644 index 000000000..3ec3fa5ed Binary files /dev/null and b/benchmarks/results/over-sampling/x12data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x12data_GB.pdf b/benchmarks/results/over-sampling/x12data_GB.pdf new file mode 100644 index 000000000..15b0b439f Binary files /dev/null and b/benchmarks/results/over-sampling/x12data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x12data_NB.pdf b/benchmarks/results/over-sampling/x12data_NB.pdf new file mode 100644 index 000000000..dfd0426f5 Binary files /dev/null and b/benchmarks/results/over-sampling/x12data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x12data_RF.pdf b/benchmarks/results/over-sampling/x12data_RF.pdf new file mode 100644 index 000000000..7df16a120 Binary files /dev/null and b/benchmarks/results/over-sampling/x12data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x12data_kNN.pdf b/benchmarks/results/over-sampling/x12data_kNN.pdf new file mode 100644 index 000000000..611bf6775 Binary files /dev/null and b/benchmarks/results/over-sampling/x12data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x13data_DT.pdf b/benchmarks/results/over-sampling/x13data_DT.pdf new file mode 100644 index 000000000..91c959efd Binary files /dev/null and b/benchmarks/results/over-sampling/x13data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x13data_GB.pdf b/benchmarks/results/over-sampling/x13data_GB.pdf new file mode 100644 index 000000000..e2da904f1 Binary files /dev/null and b/benchmarks/results/over-sampling/x13data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x13data_NB.pdf b/benchmarks/results/over-sampling/x13data_NB.pdf new file mode 100644 index 000000000..8ca05cb61 Binary files /dev/null and b/benchmarks/results/over-sampling/x13data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x13data_RF.pdf b/benchmarks/results/over-sampling/x13data_RF.pdf new file mode 100644 index 000000000..5969d13f9 Binary files /dev/null and b/benchmarks/results/over-sampling/x13data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x13data_kNN.pdf b/benchmarks/results/over-sampling/x13data_kNN.pdf new file mode 100644 index 000000000..7725b1187 Binary files /dev/null and b/benchmarks/results/over-sampling/x13data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x14data_DT.pdf b/benchmarks/results/over-sampling/x14data_DT.pdf new file mode 100644 index 000000000..1be628004 Binary files /dev/null and b/benchmarks/results/over-sampling/x14data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x14data_GB.pdf b/benchmarks/results/over-sampling/x14data_GB.pdf new file mode 100644 index 000000000..d76dd2285 Binary files /dev/null and b/benchmarks/results/over-sampling/x14data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x14data_NB.pdf b/benchmarks/results/over-sampling/x14data_NB.pdf new file mode 100644 index 000000000..9f49812d4 Binary files /dev/null and b/benchmarks/results/over-sampling/x14data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x14data_RF.pdf b/benchmarks/results/over-sampling/x14data_RF.pdf new file mode 100644 index 000000000..ba81a8a76 Binary files /dev/null and b/benchmarks/results/over-sampling/x14data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x14data_kNN.pdf b/benchmarks/results/over-sampling/x14data_kNN.pdf new file mode 100644 index 000000000..370beb22c Binary files /dev/null and b/benchmarks/results/over-sampling/x14data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x15data_DT.pdf b/benchmarks/results/over-sampling/x15data_DT.pdf new file mode 100644 index 000000000..3eb6887b4 Binary files /dev/null and b/benchmarks/results/over-sampling/x15data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x15data_GB.pdf b/benchmarks/results/over-sampling/x15data_GB.pdf new file mode 100644 index 000000000..549e626e3 Binary files /dev/null and b/benchmarks/results/over-sampling/x15data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x15data_NB.pdf b/benchmarks/results/over-sampling/x15data_NB.pdf new file mode 100644 index 000000000..7aba756d9 Binary files /dev/null and b/benchmarks/results/over-sampling/x15data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x15data_RF.pdf b/benchmarks/results/over-sampling/x15data_RF.pdf new file mode 100644 index 000000000..71e70768f Binary files /dev/null and b/benchmarks/results/over-sampling/x15data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x15data_kNN.pdf b/benchmarks/results/over-sampling/x15data_kNN.pdf new file mode 100644 index 000000000..feb78abe2 Binary files /dev/null and b/benchmarks/results/over-sampling/x15data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x16data_DT.pdf b/benchmarks/results/over-sampling/x16data_DT.pdf new file mode 100644 index 000000000..922344afe Binary files /dev/null and b/benchmarks/results/over-sampling/x16data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x16data_GB.pdf b/benchmarks/results/over-sampling/x16data_GB.pdf new file mode 100644 index 000000000..5826a8e16 Binary files /dev/null and b/benchmarks/results/over-sampling/x16data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x16data_NB.pdf b/benchmarks/results/over-sampling/x16data_NB.pdf new file mode 100644 index 000000000..1df570b7c Binary files /dev/null and b/benchmarks/results/over-sampling/x16data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x16data_RF.pdf b/benchmarks/results/over-sampling/x16data_RF.pdf new file mode 100644 index 000000000..258b46c57 Binary files /dev/null and b/benchmarks/results/over-sampling/x16data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x16data_kNN.pdf b/benchmarks/results/over-sampling/x16data_kNN.pdf new file mode 100644 index 000000000..0a81340e1 Binary files /dev/null and b/benchmarks/results/over-sampling/x16data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x17data_DT.pdf b/benchmarks/results/over-sampling/x17data_DT.pdf new file mode 100644 index 000000000..68e6fa0f8 Binary files /dev/null and b/benchmarks/results/over-sampling/x17data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x17data_GB.pdf b/benchmarks/results/over-sampling/x17data_GB.pdf new file mode 100644 index 000000000..79129a942 Binary files /dev/null and b/benchmarks/results/over-sampling/x17data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x17data_NB.pdf b/benchmarks/results/over-sampling/x17data_NB.pdf new file mode 100644 index 000000000..82db3bda7 Binary files /dev/null and b/benchmarks/results/over-sampling/x17data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x17data_RF.pdf b/benchmarks/results/over-sampling/x17data_RF.pdf new file mode 100644 index 000000000..88362e076 Binary files /dev/null and b/benchmarks/results/over-sampling/x17data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x17data_kNN.pdf b/benchmarks/results/over-sampling/x17data_kNN.pdf new file mode 100644 index 000000000..e50673a2b Binary files /dev/null and b/benchmarks/results/over-sampling/x17data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x18data_DT.pdf b/benchmarks/results/over-sampling/x18data_DT.pdf new file mode 100644 index 000000000..176a90933 Binary files /dev/null and b/benchmarks/results/over-sampling/x18data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x18data_GB.pdf b/benchmarks/results/over-sampling/x18data_GB.pdf new file mode 100644 index 000000000..16a6ccce5 Binary files /dev/null and b/benchmarks/results/over-sampling/x18data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x18data_NB.pdf b/benchmarks/results/over-sampling/x18data_NB.pdf new file mode 100644 index 000000000..a9c099182 Binary files /dev/null and b/benchmarks/results/over-sampling/x18data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x18data_RF.pdf b/benchmarks/results/over-sampling/x18data_RF.pdf new file mode 100644 index 000000000..6349e005b Binary files /dev/null and b/benchmarks/results/over-sampling/x18data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x18data_kNN.pdf b/benchmarks/results/over-sampling/x18data_kNN.pdf new file mode 100644 index 000000000..3d0c49153 Binary files /dev/null and b/benchmarks/results/over-sampling/x18data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x19data_DT.pdf b/benchmarks/results/over-sampling/x19data_DT.pdf new file mode 100644 index 000000000..580ff6445 Binary files /dev/null and b/benchmarks/results/over-sampling/x19data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x19data_GB.pdf b/benchmarks/results/over-sampling/x19data_GB.pdf new file mode 100644 index 000000000..1f7e584ba Binary files /dev/null and b/benchmarks/results/over-sampling/x19data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x19data_NB.pdf b/benchmarks/results/over-sampling/x19data_NB.pdf new file mode 100644 index 000000000..f8e65d461 Binary files /dev/null and b/benchmarks/results/over-sampling/x19data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x19data_RF.pdf b/benchmarks/results/over-sampling/x19data_RF.pdf new file mode 100644 index 000000000..7d15311a2 Binary files /dev/null and b/benchmarks/results/over-sampling/x19data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x19data_kNN.pdf b/benchmarks/results/over-sampling/x19data_kNN.pdf new file mode 100644 index 000000000..ce3d60a5a Binary files /dev/null and b/benchmarks/results/over-sampling/x19data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x1data_DT.pdf b/benchmarks/results/over-sampling/x1data_DT.pdf new file mode 100644 index 000000000..a72e27e27 Binary files /dev/null and b/benchmarks/results/over-sampling/x1data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x1data_GB.pdf b/benchmarks/results/over-sampling/x1data_GB.pdf new file mode 100644 index 000000000..2324c21f3 Binary files /dev/null and b/benchmarks/results/over-sampling/x1data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x1data_NB.pdf b/benchmarks/results/over-sampling/x1data_NB.pdf new file mode 100644 index 000000000..a6d4ef4a3 Binary files /dev/null and b/benchmarks/results/over-sampling/x1data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x1data_RF.pdf b/benchmarks/results/over-sampling/x1data_RF.pdf new file mode 100644 index 000000000..900f4594c Binary files /dev/null and b/benchmarks/results/over-sampling/x1data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x1data_kNN.pdf b/benchmarks/results/over-sampling/x1data_kNN.pdf new file mode 100644 index 000000000..7fa044065 Binary files /dev/null and b/benchmarks/results/over-sampling/x1data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x20data_DT.pdf b/benchmarks/results/over-sampling/x20data_DT.pdf new file mode 100644 index 000000000..f2b21d4a3 Binary files /dev/null and b/benchmarks/results/over-sampling/x20data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x20data_GB.pdf b/benchmarks/results/over-sampling/x20data_GB.pdf new file mode 100644 index 000000000..993dffca2 Binary files /dev/null and b/benchmarks/results/over-sampling/x20data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x20data_NB.pdf b/benchmarks/results/over-sampling/x20data_NB.pdf new file mode 100644 index 000000000..28566ce8e Binary files /dev/null and b/benchmarks/results/over-sampling/x20data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x20data_RF.pdf b/benchmarks/results/over-sampling/x20data_RF.pdf new file mode 100644 index 000000000..697bab443 Binary files /dev/null and b/benchmarks/results/over-sampling/x20data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x20data_kNN.pdf b/benchmarks/results/over-sampling/x20data_kNN.pdf new file mode 100644 index 000000000..b5fab5e52 Binary files /dev/null and b/benchmarks/results/over-sampling/x20data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x21data_DT.pdf b/benchmarks/results/over-sampling/x21data_DT.pdf new file mode 100644 index 000000000..8b82ae77d Binary files /dev/null and b/benchmarks/results/over-sampling/x21data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x21data_GB.pdf b/benchmarks/results/over-sampling/x21data_GB.pdf new file mode 100644 index 000000000..6a31fe566 Binary files /dev/null and b/benchmarks/results/over-sampling/x21data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x21data_NB.pdf b/benchmarks/results/over-sampling/x21data_NB.pdf new file mode 100644 index 000000000..c9a744bfe Binary files /dev/null and b/benchmarks/results/over-sampling/x21data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x21data_RF.pdf b/benchmarks/results/over-sampling/x21data_RF.pdf new file mode 100644 index 000000000..9a45f9649 Binary files /dev/null and b/benchmarks/results/over-sampling/x21data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x21data_kNN.pdf b/benchmarks/results/over-sampling/x21data_kNN.pdf new file mode 100644 index 000000000..166f6ac5b Binary files /dev/null and b/benchmarks/results/over-sampling/x21data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x22data_DT.pdf b/benchmarks/results/over-sampling/x22data_DT.pdf new file mode 100644 index 000000000..b17f44a84 Binary files /dev/null and b/benchmarks/results/over-sampling/x22data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x22data_GB.pdf b/benchmarks/results/over-sampling/x22data_GB.pdf new file mode 100644 index 000000000..462f1b756 Binary files /dev/null and b/benchmarks/results/over-sampling/x22data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x22data_NB.pdf b/benchmarks/results/over-sampling/x22data_NB.pdf new file mode 100644 index 000000000..8c4ec191f Binary files /dev/null and b/benchmarks/results/over-sampling/x22data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x22data_RF.pdf b/benchmarks/results/over-sampling/x22data_RF.pdf new file mode 100644 index 000000000..44181cce8 Binary files /dev/null and b/benchmarks/results/over-sampling/x22data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x22data_kNN.pdf b/benchmarks/results/over-sampling/x22data_kNN.pdf new file mode 100644 index 000000000..3fa713842 Binary files /dev/null and b/benchmarks/results/over-sampling/x22data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x23data_DT.pdf b/benchmarks/results/over-sampling/x23data_DT.pdf new file mode 100644 index 000000000..d5d55d0eb Binary files /dev/null and b/benchmarks/results/over-sampling/x23data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x23data_GB.pdf b/benchmarks/results/over-sampling/x23data_GB.pdf new file mode 100644 index 000000000..c0df5b211 Binary files /dev/null and b/benchmarks/results/over-sampling/x23data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x23data_NB.pdf b/benchmarks/results/over-sampling/x23data_NB.pdf new file mode 100644 index 000000000..342622a0b Binary files /dev/null and b/benchmarks/results/over-sampling/x23data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x23data_RF.pdf b/benchmarks/results/over-sampling/x23data_RF.pdf new file mode 100644 index 000000000..affffcf6a Binary files /dev/null and b/benchmarks/results/over-sampling/x23data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x23data_kNN.pdf b/benchmarks/results/over-sampling/x23data_kNN.pdf new file mode 100644 index 000000000..3b5ece94b Binary files /dev/null and b/benchmarks/results/over-sampling/x23data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x24data_DT.pdf b/benchmarks/results/over-sampling/x24data_DT.pdf new file mode 100644 index 000000000..6fce1e43f Binary files /dev/null and b/benchmarks/results/over-sampling/x24data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x24data_GB.pdf b/benchmarks/results/over-sampling/x24data_GB.pdf new file mode 100644 index 000000000..aeb2d2177 Binary files /dev/null and b/benchmarks/results/over-sampling/x24data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x24data_NB.pdf b/benchmarks/results/over-sampling/x24data_NB.pdf new file mode 100644 index 000000000..a99876124 Binary files /dev/null and b/benchmarks/results/over-sampling/x24data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x24data_RF.pdf b/benchmarks/results/over-sampling/x24data_RF.pdf new file mode 100644 index 000000000..0fbad6a41 Binary files /dev/null and b/benchmarks/results/over-sampling/x24data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x24data_kNN.pdf b/benchmarks/results/over-sampling/x24data_kNN.pdf new file mode 100644 index 000000000..0705e9978 Binary files /dev/null and b/benchmarks/results/over-sampling/x24data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x25data_DT.pdf b/benchmarks/results/over-sampling/x25data_DT.pdf new file mode 100644 index 000000000..af7c1d0fd Binary files /dev/null and b/benchmarks/results/over-sampling/x25data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x25data_GB.pdf b/benchmarks/results/over-sampling/x25data_GB.pdf new file mode 100644 index 000000000..3c74cd6ba Binary files /dev/null and b/benchmarks/results/over-sampling/x25data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x25data_NB.pdf b/benchmarks/results/over-sampling/x25data_NB.pdf new file mode 100644 index 000000000..9fe95319d Binary files /dev/null and b/benchmarks/results/over-sampling/x25data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x25data_RF.pdf b/benchmarks/results/over-sampling/x25data_RF.pdf new file mode 100644 index 000000000..616d90ae0 Binary files /dev/null and b/benchmarks/results/over-sampling/x25data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x25data_kNN.pdf b/benchmarks/results/over-sampling/x25data_kNN.pdf new file mode 100644 index 000000000..db876d0ae Binary files /dev/null and b/benchmarks/results/over-sampling/x25data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x26data_DT.pdf b/benchmarks/results/over-sampling/x26data_DT.pdf new file mode 100644 index 000000000..ea9e3e659 Binary files /dev/null and b/benchmarks/results/over-sampling/x26data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x26data_GB.pdf b/benchmarks/results/over-sampling/x26data_GB.pdf new file mode 100644 index 000000000..16a73568f Binary files /dev/null and b/benchmarks/results/over-sampling/x26data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x26data_NB.pdf b/benchmarks/results/over-sampling/x26data_NB.pdf new file mode 100644 index 000000000..6a4f6c32f Binary files /dev/null and b/benchmarks/results/over-sampling/x26data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x26data_RF.pdf b/benchmarks/results/over-sampling/x26data_RF.pdf new file mode 100644 index 000000000..e16b13909 Binary files /dev/null and b/benchmarks/results/over-sampling/x26data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x26data_kNN.pdf b/benchmarks/results/over-sampling/x26data_kNN.pdf new file mode 100644 index 000000000..bdb1ba8f6 Binary files /dev/null and b/benchmarks/results/over-sampling/x26data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x2data_DT.pdf b/benchmarks/results/over-sampling/x2data_DT.pdf new file mode 100644 index 000000000..d5c6a2a5e Binary files /dev/null and b/benchmarks/results/over-sampling/x2data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x2data_GB.pdf b/benchmarks/results/over-sampling/x2data_GB.pdf new file mode 100644 index 000000000..6c33ec3f8 Binary files /dev/null and b/benchmarks/results/over-sampling/x2data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x2data_NB.pdf b/benchmarks/results/over-sampling/x2data_NB.pdf new file mode 100644 index 000000000..dab0bc089 Binary files /dev/null and b/benchmarks/results/over-sampling/x2data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x2data_RF.pdf b/benchmarks/results/over-sampling/x2data_RF.pdf new file mode 100644 index 000000000..d8ec2d0dd Binary files /dev/null and b/benchmarks/results/over-sampling/x2data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x2data_kNN.pdf b/benchmarks/results/over-sampling/x2data_kNN.pdf new file mode 100644 index 000000000..c5e7045aa Binary files /dev/null and b/benchmarks/results/over-sampling/x2data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x3data_DT.pdf b/benchmarks/results/over-sampling/x3data_DT.pdf new file mode 100644 index 000000000..71480c611 Binary files /dev/null and b/benchmarks/results/over-sampling/x3data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x3data_GB.pdf b/benchmarks/results/over-sampling/x3data_GB.pdf new file mode 100644 index 000000000..7be7625ec Binary files /dev/null and b/benchmarks/results/over-sampling/x3data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x3data_NB.pdf b/benchmarks/results/over-sampling/x3data_NB.pdf new file mode 100644 index 000000000..4a33eaf95 Binary files /dev/null and b/benchmarks/results/over-sampling/x3data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x3data_RF.pdf b/benchmarks/results/over-sampling/x3data_RF.pdf new file mode 100644 index 000000000..0204ca36d Binary files /dev/null and b/benchmarks/results/over-sampling/x3data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x3data_kNN.pdf b/benchmarks/results/over-sampling/x3data_kNN.pdf new file mode 100644 index 000000000..3298eaeb1 Binary files /dev/null and b/benchmarks/results/over-sampling/x3data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x4data_DT.pdf b/benchmarks/results/over-sampling/x4data_DT.pdf new file mode 100644 index 000000000..41d16a6f4 Binary files /dev/null and b/benchmarks/results/over-sampling/x4data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x4data_GB.pdf b/benchmarks/results/over-sampling/x4data_GB.pdf new file mode 100644 index 000000000..4384d95dd Binary files /dev/null and b/benchmarks/results/over-sampling/x4data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x4data_NB.pdf b/benchmarks/results/over-sampling/x4data_NB.pdf new file mode 100644 index 000000000..c98afb8ce Binary files /dev/null and b/benchmarks/results/over-sampling/x4data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x4data_RF.pdf b/benchmarks/results/over-sampling/x4data_RF.pdf new file mode 100644 index 000000000..7786cae79 Binary files /dev/null and b/benchmarks/results/over-sampling/x4data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x4data_kNN.pdf b/benchmarks/results/over-sampling/x4data_kNN.pdf new file mode 100644 index 000000000..4129abcc8 Binary files /dev/null and b/benchmarks/results/over-sampling/x4data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x5data_DT.pdf b/benchmarks/results/over-sampling/x5data_DT.pdf new file mode 100644 index 000000000..e5a7cf7ca Binary files /dev/null and b/benchmarks/results/over-sampling/x5data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x5data_GB.pdf b/benchmarks/results/over-sampling/x5data_GB.pdf new file mode 100644 index 000000000..88bfe35e1 Binary files /dev/null and b/benchmarks/results/over-sampling/x5data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x5data_NB.pdf b/benchmarks/results/over-sampling/x5data_NB.pdf new file mode 100644 index 000000000..b95c71736 Binary files /dev/null and b/benchmarks/results/over-sampling/x5data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x5data_RF.pdf b/benchmarks/results/over-sampling/x5data_RF.pdf new file mode 100644 index 000000000..49eddf7bf Binary files /dev/null and b/benchmarks/results/over-sampling/x5data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x5data_kNN.pdf b/benchmarks/results/over-sampling/x5data_kNN.pdf new file mode 100644 index 000000000..4c90d3ff4 Binary files /dev/null and b/benchmarks/results/over-sampling/x5data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x6data_DT.pdf b/benchmarks/results/over-sampling/x6data_DT.pdf new file mode 100644 index 000000000..d147e2064 Binary files /dev/null and b/benchmarks/results/over-sampling/x6data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x6data_GB.pdf b/benchmarks/results/over-sampling/x6data_GB.pdf new file mode 100644 index 000000000..c530e8561 Binary files /dev/null and b/benchmarks/results/over-sampling/x6data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x6data_NB.pdf b/benchmarks/results/over-sampling/x6data_NB.pdf new file mode 100644 index 000000000..52614c733 Binary files /dev/null and b/benchmarks/results/over-sampling/x6data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x6data_RF.pdf b/benchmarks/results/over-sampling/x6data_RF.pdf new file mode 100644 index 000000000..67a71d3b3 Binary files /dev/null and b/benchmarks/results/over-sampling/x6data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x6data_kNN.pdf b/benchmarks/results/over-sampling/x6data_kNN.pdf new file mode 100644 index 000000000..e18e4d89e Binary files /dev/null and b/benchmarks/results/over-sampling/x6data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x7data_DT.pdf b/benchmarks/results/over-sampling/x7data_DT.pdf new file mode 100644 index 000000000..42783c94d Binary files /dev/null and b/benchmarks/results/over-sampling/x7data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x7data_GB.pdf b/benchmarks/results/over-sampling/x7data_GB.pdf new file mode 100644 index 000000000..ccca02b5a Binary files /dev/null and b/benchmarks/results/over-sampling/x7data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x7data_NB.pdf b/benchmarks/results/over-sampling/x7data_NB.pdf new file mode 100644 index 000000000..10352c803 Binary files /dev/null and b/benchmarks/results/over-sampling/x7data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x7data_RF.pdf b/benchmarks/results/over-sampling/x7data_RF.pdf new file mode 100644 index 000000000..ee849c0eb Binary files /dev/null and b/benchmarks/results/over-sampling/x7data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x7data_kNN.pdf b/benchmarks/results/over-sampling/x7data_kNN.pdf new file mode 100644 index 000000000..24c8fd6f2 Binary files /dev/null and b/benchmarks/results/over-sampling/x7data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x8data_DT.pdf b/benchmarks/results/over-sampling/x8data_DT.pdf new file mode 100644 index 000000000..9c4f5f4a6 Binary files /dev/null and b/benchmarks/results/over-sampling/x8data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x8data_GB.pdf b/benchmarks/results/over-sampling/x8data_GB.pdf new file mode 100644 index 000000000..966689c82 Binary files /dev/null and b/benchmarks/results/over-sampling/x8data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x8data_NB.pdf b/benchmarks/results/over-sampling/x8data_NB.pdf new file mode 100644 index 000000000..03a55019b Binary files /dev/null and b/benchmarks/results/over-sampling/x8data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x8data_RF.pdf b/benchmarks/results/over-sampling/x8data_RF.pdf new file mode 100644 index 000000000..ee81873c2 Binary files /dev/null and b/benchmarks/results/over-sampling/x8data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x8data_kNN.pdf b/benchmarks/results/over-sampling/x8data_kNN.pdf new file mode 100644 index 000000000..c4336bfae Binary files /dev/null and b/benchmarks/results/over-sampling/x8data_kNN.pdf differ diff --git a/benchmarks/results/over-sampling/x9data_DT.pdf b/benchmarks/results/over-sampling/x9data_DT.pdf new file mode 100644 index 000000000..203ffffa7 Binary files /dev/null and b/benchmarks/results/over-sampling/x9data_DT.pdf differ diff --git a/benchmarks/results/over-sampling/x9data_GB.pdf b/benchmarks/results/over-sampling/x9data_GB.pdf new file mode 100644 index 000000000..e826d5274 Binary files /dev/null and b/benchmarks/results/over-sampling/x9data_GB.pdf differ diff --git a/benchmarks/results/over-sampling/x9data_NB.pdf b/benchmarks/results/over-sampling/x9data_NB.pdf new file mode 100644 index 000000000..76e84a1d8 Binary files /dev/null and b/benchmarks/results/over-sampling/x9data_NB.pdf differ diff --git a/benchmarks/results/over-sampling/x9data_RF.pdf b/benchmarks/results/over-sampling/x9data_RF.pdf new file mode 100644 index 000000000..3ce7e111d Binary files /dev/null and b/benchmarks/results/over-sampling/x9data_RF.pdf differ diff --git a/benchmarks/results/over-sampling/x9data_kNN.pdf b/benchmarks/results/over-sampling/x9data_kNN.pdf new file mode 100644 index 000000000..a15e99043 Binary files /dev/null and b/benchmarks/results/over-sampling/x9data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/complexity.pdf b/benchmarks/results/under-sampling/complexity.pdf new file mode 100644 index 000000000..6eb3cd33c Binary files /dev/null and b/benchmarks/results/under-sampling/complexity.pdf differ diff --git a/benchmarks/results/under-sampling/x0data_DT.pdf b/benchmarks/results/under-sampling/x0data_DT.pdf new file mode 100644 index 000000000..9c7c37534 Binary files /dev/null and b/benchmarks/results/under-sampling/x0data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x0data_GB.pdf b/benchmarks/results/under-sampling/x0data_GB.pdf new file mode 100644 index 000000000..fbf84ac8e Binary files /dev/null and b/benchmarks/results/under-sampling/x0data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x0data_NB.pdf b/benchmarks/results/under-sampling/x0data_NB.pdf new file mode 100644 index 000000000..62ec92c18 Binary files /dev/null and b/benchmarks/results/under-sampling/x0data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x0data_RF.pdf b/benchmarks/results/under-sampling/x0data_RF.pdf new file mode 100644 index 000000000..39b768e53 Binary files /dev/null and b/benchmarks/results/under-sampling/x0data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x0data_kNN.pdf b/benchmarks/results/under-sampling/x0data_kNN.pdf new file mode 100644 index 000000000..4a7820d51 Binary files /dev/null and b/benchmarks/results/under-sampling/x0data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x10data_DT.pdf b/benchmarks/results/under-sampling/x10data_DT.pdf new file mode 100644 index 000000000..c84ce8516 Binary files /dev/null and b/benchmarks/results/under-sampling/x10data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x10data_GB.pdf b/benchmarks/results/under-sampling/x10data_GB.pdf new file mode 100644 index 000000000..48c308253 Binary files /dev/null and b/benchmarks/results/under-sampling/x10data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x10data_NB.pdf b/benchmarks/results/under-sampling/x10data_NB.pdf new file mode 100644 index 000000000..3955a809e Binary files /dev/null and b/benchmarks/results/under-sampling/x10data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x10data_RF.pdf b/benchmarks/results/under-sampling/x10data_RF.pdf new file mode 100644 index 000000000..3b192b125 Binary files /dev/null and b/benchmarks/results/under-sampling/x10data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x10data_kNN.pdf b/benchmarks/results/under-sampling/x10data_kNN.pdf new file mode 100644 index 000000000..920b8b5f4 Binary files /dev/null and b/benchmarks/results/under-sampling/x10data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x11data_DT.pdf b/benchmarks/results/under-sampling/x11data_DT.pdf new file mode 100644 index 000000000..6f3420071 Binary files /dev/null and b/benchmarks/results/under-sampling/x11data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x11data_GB.pdf b/benchmarks/results/under-sampling/x11data_GB.pdf new file mode 100644 index 000000000..46200f4a6 Binary files /dev/null and b/benchmarks/results/under-sampling/x11data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x11data_NB.pdf b/benchmarks/results/under-sampling/x11data_NB.pdf new file mode 100644 index 000000000..37a35af18 Binary files /dev/null and b/benchmarks/results/under-sampling/x11data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x11data_RF.pdf b/benchmarks/results/under-sampling/x11data_RF.pdf new file mode 100644 index 000000000..28bc64428 Binary files /dev/null and b/benchmarks/results/under-sampling/x11data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x11data_kNN.pdf b/benchmarks/results/under-sampling/x11data_kNN.pdf new file mode 100644 index 000000000..526206a4b Binary files /dev/null and b/benchmarks/results/under-sampling/x11data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x12data_DT.pdf b/benchmarks/results/under-sampling/x12data_DT.pdf new file mode 100644 index 000000000..81176299e Binary files /dev/null and b/benchmarks/results/under-sampling/x12data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x12data_GB.pdf b/benchmarks/results/under-sampling/x12data_GB.pdf new file mode 100644 index 000000000..b55e2d6c8 Binary files /dev/null and b/benchmarks/results/under-sampling/x12data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x12data_NB.pdf b/benchmarks/results/under-sampling/x12data_NB.pdf new file mode 100644 index 000000000..69f87b9a6 Binary files /dev/null and b/benchmarks/results/under-sampling/x12data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x12data_RF.pdf b/benchmarks/results/under-sampling/x12data_RF.pdf new file mode 100644 index 000000000..fc12b292c Binary files /dev/null and b/benchmarks/results/under-sampling/x12data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x12data_kNN.pdf b/benchmarks/results/under-sampling/x12data_kNN.pdf new file mode 100644 index 000000000..d9dc35dde Binary files /dev/null and b/benchmarks/results/under-sampling/x12data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x13data_DT.pdf b/benchmarks/results/under-sampling/x13data_DT.pdf new file mode 100644 index 000000000..a4b3ca932 Binary files /dev/null and b/benchmarks/results/under-sampling/x13data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x13data_GB.pdf b/benchmarks/results/under-sampling/x13data_GB.pdf new file mode 100644 index 000000000..92c2d9903 Binary files /dev/null and b/benchmarks/results/under-sampling/x13data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x13data_NB.pdf b/benchmarks/results/under-sampling/x13data_NB.pdf new file mode 100644 index 000000000..4990d551e Binary files /dev/null and b/benchmarks/results/under-sampling/x13data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x13data_RF.pdf b/benchmarks/results/under-sampling/x13data_RF.pdf new file mode 100644 index 000000000..c219c04e6 Binary files /dev/null and b/benchmarks/results/under-sampling/x13data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x13data_kNN.pdf b/benchmarks/results/under-sampling/x13data_kNN.pdf new file mode 100644 index 000000000..539959fdf Binary files /dev/null and b/benchmarks/results/under-sampling/x13data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x14data_DT.pdf b/benchmarks/results/under-sampling/x14data_DT.pdf new file mode 100644 index 000000000..05569f73d Binary files /dev/null and b/benchmarks/results/under-sampling/x14data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x14data_GB.pdf b/benchmarks/results/under-sampling/x14data_GB.pdf new file mode 100644 index 000000000..9ceea6ccf Binary files /dev/null and b/benchmarks/results/under-sampling/x14data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x14data_NB.pdf b/benchmarks/results/under-sampling/x14data_NB.pdf new file mode 100644 index 000000000..b2a18f59e Binary files /dev/null and b/benchmarks/results/under-sampling/x14data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x14data_RF.pdf b/benchmarks/results/under-sampling/x14data_RF.pdf new file mode 100644 index 000000000..5625a30fa Binary files /dev/null and b/benchmarks/results/under-sampling/x14data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x14data_kNN.pdf b/benchmarks/results/under-sampling/x14data_kNN.pdf new file mode 100644 index 000000000..62780ad6b Binary files /dev/null and b/benchmarks/results/under-sampling/x14data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x15data_DT.pdf b/benchmarks/results/under-sampling/x15data_DT.pdf new file mode 100644 index 000000000..8e1ff8343 Binary files /dev/null and b/benchmarks/results/under-sampling/x15data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x15data_GB.pdf b/benchmarks/results/under-sampling/x15data_GB.pdf new file mode 100644 index 000000000..9e494e3a8 Binary files /dev/null and b/benchmarks/results/under-sampling/x15data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x15data_NB.pdf b/benchmarks/results/under-sampling/x15data_NB.pdf new file mode 100644 index 000000000..f6414af43 Binary files /dev/null and b/benchmarks/results/under-sampling/x15data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x15data_RF.pdf b/benchmarks/results/under-sampling/x15data_RF.pdf new file mode 100644 index 000000000..3cc4f63a1 Binary files /dev/null and b/benchmarks/results/under-sampling/x15data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x15data_kNN.pdf b/benchmarks/results/under-sampling/x15data_kNN.pdf new file mode 100644 index 000000000..c8e503229 Binary files /dev/null and b/benchmarks/results/under-sampling/x15data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x16data_DT.pdf b/benchmarks/results/under-sampling/x16data_DT.pdf new file mode 100644 index 000000000..e8b37483d Binary files /dev/null and b/benchmarks/results/under-sampling/x16data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x16data_GB.pdf b/benchmarks/results/under-sampling/x16data_GB.pdf new file mode 100644 index 000000000..412da3d24 Binary files /dev/null and b/benchmarks/results/under-sampling/x16data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x16data_NB.pdf b/benchmarks/results/under-sampling/x16data_NB.pdf new file mode 100644 index 000000000..eef09e7e6 Binary files /dev/null and b/benchmarks/results/under-sampling/x16data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x16data_RF.pdf b/benchmarks/results/under-sampling/x16data_RF.pdf new file mode 100644 index 000000000..cfd14e5f4 Binary files /dev/null and b/benchmarks/results/under-sampling/x16data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x16data_kNN.pdf b/benchmarks/results/under-sampling/x16data_kNN.pdf new file mode 100644 index 000000000..40a29eaa2 Binary files /dev/null and b/benchmarks/results/under-sampling/x16data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x1data_DT.pdf b/benchmarks/results/under-sampling/x1data_DT.pdf new file mode 100644 index 000000000..a228d2920 Binary files /dev/null and b/benchmarks/results/under-sampling/x1data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x1data_GB.pdf b/benchmarks/results/under-sampling/x1data_GB.pdf new file mode 100644 index 000000000..00cb28915 Binary files /dev/null and b/benchmarks/results/under-sampling/x1data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x1data_NB.pdf b/benchmarks/results/under-sampling/x1data_NB.pdf new file mode 100644 index 000000000..d86f95e1a Binary files /dev/null and b/benchmarks/results/under-sampling/x1data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x1data_RF.pdf b/benchmarks/results/under-sampling/x1data_RF.pdf new file mode 100644 index 000000000..4835db62e Binary files /dev/null and b/benchmarks/results/under-sampling/x1data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x1data_kNN.pdf b/benchmarks/results/under-sampling/x1data_kNN.pdf new file mode 100644 index 000000000..4ae07259f Binary files /dev/null and b/benchmarks/results/under-sampling/x1data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x2data_DT.pdf b/benchmarks/results/under-sampling/x2data_DT.pdf new file mode 100644 index 000000000..82435d7cf Binary files /dev/null and b/benchmarks/results/under-sampling/x2data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x2data_GB.pdf b/benchmarks/results/under-sampling/x2data_GB.pdf new file mode 100644 index 000000000..17e351d3a Binary files /dev/null and b/benchmarks/results/under-sampling/x2data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x2data_NB.pdf b/benchmarks/results/under-sampling/x2data_NB.pdf new file mode 100644 index 000000000..ee8175185 Binary files /dev/null and b/benchmarks/results/under-sampling/x2data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x2data_RF.pdf b/benchmarks/results/under-sampling/x2data_RF.pdf new file mode 100644 index 000000000..c041071a2 Binary files /dev/null and b/benchmarks/results/under-sampling/x2data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x2data_kNN.pdf b/benchmarks/results/under-sampling/x2data_kNN.pdf new file mode 100644 index 000000000..ec1bc5e79 Binary files /dev/null and b/benchmarks/results/under-sampling/x2data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x3data_DT.pdf b/benchmarks/results/under-sampling/x3data_DT.pdf new file mode 100644 index 000000000..8b42bfe3b Binary files /dev/null and b/benchmarks/results/under-sampling/x3data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x3data_GB.pdf b/benchmarks/results/under-sampling/x3data_GB.pdf new file mode 100644 index 000000000..1debd6e09 Binary files /dev/null and b/benchmarks/results/under-sampling/x3data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x3data_NB.pdf b/benchmarks/results/under-sampling/x3data_NB.pdf new file mode 100644 index 000000000..4f0ec6a45 Binary files /dev/null and b/benchmarks/results/under-sampling/x3data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x3data_RF.pdf b/benchmarks/results/under-sampling/x3data_RF.pdf new file mode 100644 index 000000000..984cff2a4 Binary files /dev/null and b/benchmarks/results/under-sampling/x3data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x3data_kNN.pdf b/benchmarks/results/under-sampling/x3data_kNN.pdf new file mode 100644 index 000000000..fd0dee477 Binary files /dev/null and b/benchmarks/results/under-sampling/x3data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x4data_DT.pdf b/benchmarks/results/under-sampling/x4data_DT.pdf new file mode 100644 index 000000000..8306164d1 Binary files /dev/null and b/benchmarks/results/under-sampling/x4data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x4data_GB.pdf b/benchmarks/results/under-sampling/x4data_GB.pdf new file mode 100644 index 000000000..7ac54e91f Binary files /dev/null and b/benchmarks/results/under-sampling/x4data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x4data_NB.pdf b/benchmarks/results/under-sampling/x4data_NB.pdf new file mode 100644 index 000000000..e8dac7529 Binary files /dev/null and b/benchmarks/results/under-sampling/x4data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x4data_RF.pdf b/benchmarks/results/under-sampling/x4data_RF.pdf new file mode 100644 index 000000000..f7a1fb7e6 Binary files /dev/null and b/benchmarks/results/under-sampling/x4data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x4data_kNN.pdf b/benchmarks/results/under-sampling/x4data_kNN.pdf new file mode 100644 index 000000000..525c8ee26 Binary files /dev/null and b/benchmarks/results/under-sampling/x4data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x5data_DT.pdf b/benchmarks/results/under-sampling/x5data_DT.pdf new file mode 100644 index 000000000..615202fa4 Binary files /dev/null and b/benchmarks/results/under-sampling/x5data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x5data_GB.pdf b/benchmarks/results/under-sampling/x5data_GB.pdf new file mode 100644 index 000000000..ca4b19fcd Binary files /dev/null and b/benchmarks/results/under-sampling/x5data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x5data_NB.pdf b/benchmarks/results/under-sampling/x5data_NB.pdf new file mode 100644 index 000000000..2028a101d Binary files /dev/null and b/benchmarks/results/under-sampling/x5data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x5data_RF.pdf b/benchmarks/results/under-sampling/x5data_RF.pdf new file mode 100644 index 000000000..518be04de Binary files /dev/null and b/benchmarks/results/under-sampling/x5data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x5data_kNN.pdf b/benchmarks/results/under-sampling/x5data_kNN.pdf new file mode 100644 index 000000000..988555300 Binary files /dev/null and b/benchmarks/results/under-sampling/x5data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x6data_DT.pdf b/benchmarks/results/under-sampling/x6data_DT.pdf new file mode 100644 index 000000000..2e11c9555 Binary files /dev/null and b/benchmarks/results/under-sampling/x6data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x6data_GB.pdf b/benchmarks/results/under-sampling/x6data_GB.pdf new file mode 100644 index 000000000..479ee19c6 Binary files /dev/null and b/benchmarks/results/under-sampling/x6data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x6data_NB.pdf b/benchmarks/results/under-sampling/x6data_NB.pdf new file mode 100644 index 000000000..8b53dd979 Binary files /dev/null and b/benchmarks/results/under-sampling/x6data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x6data_RF.pdf b/benchmarks/results/under-sampling/x6data_RF.pdf new file mode 100644 index 000000000..e35871c7f Binary files /dev/null and b/benchmarks/results/under-sampling/x6data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x6data_kNN.pdf b/benchmarks/results/under-sampling/x6data_kNN.pdf new file mode 100644 index 000000000..fc4949fa3 Binary files /dev/null and b/benchmarks/results/under-sampling/x6data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x7data_DT.pdf b/benchmarks/results/under-sampling/x7data_DT.pdf new file mode 100644 index 000000000..d5a2ea7d0 Binary files /dev/null and b/benchmarks/results/under-sampling/x7data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x7data_GB.pdf b/benchmarks/results/under-sampling/x7data_GB.pdf new file mode 100644 index 000000000..3d504c5ec Binary files /dev/null and b/benchmarks/results/under-sampling/x7data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x7data_NB.pdf b/benchmarks/results/under-sampling/x7data_NB.pdf new file mode 100644 index 000000000..1b1e952a8 Binary files /dev/null and b/benchmarks/results/under-sampling/x7data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x7data_RF.pdf b/benchmarks/results/under-sampling/x7data_RF.pdf new file mode 100644 index 000000000..6cf982452 Binary files /dev/null and b/benchmarks/results/under-sampling/x7data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x7data_kNN.pdf b/benchmarks/results/under-sampling/x7data_kNN.pdf new file mode 100644 index 000000000..80ed3ed44 Binary files /dev/null and b/benchmarks/results/under-sampling/x7data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x8data_DT.pdf b/benchmarks/results/under-sampling/x8data_DT.pdf new file mode 100644 index 000000000..86731b9a2 Binary files /dev/null and b/benchmarks/results/under-sampling/x8data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x8data_GB.pdf b/benchmarks/results/under-sampling/x8data_GB.pdf new file mode 100644 index 000000000..95bbe80cc Binary files /dev/null and b/benchmarks/results/under-sampling/x8data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x8data_NB.pdf b/benchmarks/results/under-sampling/x8data_NB.pdf new file mode 100644 index 000000000..2da18b1b7 Binary files /dev/null and b/benchmarks/results/under-sampling/x8data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x8data_RF.pdf b/benchmarks/results/under-sampling/x8data_RF.pdf new file mode 100644 index 000000000..83dca6eb6 Binary files /dev/null and b/benchmarks/results/under-sampling/x8data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x8data_kNN.pdf b/benchmarks/results/under-sampling/x8data_kNN.pdf new file mode 100644 index 000000000..0756485e2 Binary files /dev/null and b/benchmarks/results/under-sampling/x8data_kNN.pdf differ diff --git a/benchmarks/results/under-sampling/x9data_DT.pdf b/benchmarks/results/under-sampling/x9data_DT.pdf new file mode 100644 index 000000000..590496ba4 Binary files /dev/null and b/benchmarks/results/under-sampling/x9data_DT.pdf differ diff --git a/benchmarks/results/under-sampling/x9data_GB.pdf b/benchmarks/results/under-sampling/x9data_GB.pdf new file mode 100644 index 000000000..de010c772 Binary files /dev/null and b/benchmarks/results/under-sampling/x9data_GB.pdf differ diff --git a/benchmarks/results/under-sampling/x9data_NB.pdf b/benchmarks/results/under-sampling/x9data_NB.pdf new file mode 100644 index 000000000..acdeba6c3 Binary files /dev/null and b/benchmarks/results/under-sampling/x9data_NB.pdf differ diff --git a/benchmarks/results/under-sampling/x9data_RF.pdf b/benchmarks/results/under-sampling/x9data_RF.pdf new file mode 100644 index 000000000..fe3fda816 Binary files /dev/null and b/benchmarks/results/under-sampling/x9data_RF.pdf differ diff --git a/benchmarks/results/under-sampling/x9data_kNN.pdf b/benchmarks/results/under-sampling/x9data_kNN.pdf new file mode 100644 index 000000000..ac96b2b06 Binary files /dev/null and b/benchmarks/results/under-sampling/x9data_kNN.pdf differ diff --git a/build_tools/circle/push_doc.sh b/build_tools/circle/push_doc.sh new file mode 100644 index 000000000..79430c6f5 --- /dev/null +++ b/build_tools/circle/push_doc.sh @@ -0,0 +1,53 @@ +#!/bin/bash +# This script is meant to be called in the "deploy" step defined in +# circle.yml. See https://circleci.com/docs/ for more details. +# The behavior of the script is controlled by environment variable defined +# in the circle.yml in the top level folder of the project. + +MSG="Pushing the docs for revision for branch: $CIRCLE_BRANCH, commit $CIRCLE_SHA1" + +cd $HOME +# Copy the build docs to a temporary folder +rm -rf tmp +mkdir tmp +cp -R $HOME/$DOC_REPO/doc/_build/html/* ./tmp/ + +# Clone the docs repo if it isnt already there +if [ ! -d $DOC_REPO ]; + then git clone "git@github.com:$USERNAME/"$DOC_REPO".git"; +fi + +cd $DOC_REPO +git branch gh-pages +git checkout -f gh-pages +git reset --hard origin/gh-pages +git clean -dfx + +for name in $(ls -A $HOME/$DOC_REPO); do + case $name in + .nojekyll) # So that github does not build this as a Jekyll website. + ;; + circle.yml) # Config so that build gh-pages branch. + ;; + *) + git rm -rf $name + ;; + esac +done + +# Copy the new build docs +mkdir $DOC_URL +cp -R $HOME/tmp/* ./$DOC_URL/ + +git config --global user.email $EMAIL +git config --global user.name $USERNAME +git add -f ./$DOC_URL/ +git commit -m "$MSG" +git push -f origin gh-pages +if [ $? -ne 0 ]; then + echo "Pushing docs failed" + echo + exit 1 +fi + +echo $MSG diff --git a/build_tools/travis/install.sh b/build_tools/travis/install.sh index 275079a2b..a3ba43624 100644 --- a/build_tools/travis/install.sh +++ b/build_tools/travis/install.sh @@ -25,15 +25,18 @@ popd # Configure the conda environment and put it in the path using the # provided versions conda create -n testenv --yes python=$PYTHON_VERSION pip nose \ - numpy=$NUMPY_VERSION scipy=$SCIPY_VERSION \ - libgfortran nomkl -source activate testenv + numpy=$NUMPY_VERSION scipy=$SCIPY_VERSION \ + libgfortran nomkl +#source activate testenv # Install nose-timer via pip pip install nose-timer # Install libgfortran with conda -conda install --yes libgfortran scikit-learn six +conda install --yes libgfortran \ + numpy=1.10.4 scipy=0.17.1 \ + scikit-learn=0.17.1 \ + six=1.10.0 if [[ "$COVERAGE" == "true" ]]; then pip install coverage coveralls diff --git a/circle.yml b/circle.yml new file mode 100644 index 000000000..a8dde3168 --- /dev/null +++ b/circle.yml @@ -0,0 +1,62 @@ +machine: + environment: + # The github organization or username of the repository which hosts the + # project and documentation. + USERNAME: "scikit-learn-contrib" + + # The repository where the documentation will be hosted + DOC_REPO: "imbalanced-learn" + + # The base URL for the Github page where the documentation will be hosted + DOC_URL: "" + + # The email is to be used for commits in the Github Page + EMAIL: "g.lemaitre58@gmail.com" + +dependencies: + + # Various dependencies + pre: + - sudo -E apt-get -yq remove texlive-binaries --purge + - sudo apt-get update + - sudo apt-get install libatlas-dev libatlas3gf-base + - sudo apt-get install build-essential python-dev python-setuptools + # install numpy first as it is a compile time dependency for other packages + - pip install --upgrade numpy + - pip install --upgrade scipy matplotlib setuptools nose coverage sphinx pillow sphinx-gallery sphinx_rtd_theme + # Installing required packages for `make -C doc check command` to work. + - sudo -E apt-get -yq update + - sudo -E apt-get -yq --no-install-suggests --no-install-recommends --force-yes install dvipng texlive-latex-base texlive-latex-extra + - pip install --upgrade cython numpydoc + - pip install --upgrade scikit-learn + - pip install --upgrade seaborn + + # The --user is needed to let sphinx see the source and the binaries + # The pipefail is requested to propagate exit code + override: + - python setup.py clean + - python setup.py develop + - set -o pipefail && cd doc && make html 2>&1 | tee ~/log.txt +test: + # Grep error on the documentation + override: + - cat ~/log.txt && if grep -q "Traceback (most recent call last):" ~/log.txt; then false; else true; fi +deployment: + push: + branch: master + commands: + - bash build_tools/circle/push_doc.sh +general: + # Open the doc to the API + artifacts: + - "doc/_build/html" + - "~/log.txt" + # Restric the build to the branch master only + branches: + ignore: + - gh-pages +notify: + webhooks: + # A list of hook hashes, containing the url field + # gitter hook + - url: https://webhooks.gitter.im/e/c8d33a274b2b8f44819f diff --git a/conda-recipe/imbalanced-learn/bld.bat b/conda-recipe/imbalanced-learn/bld.bat new file mode 100644 index 000000000..fb9a835a3 --- /dev/null +++ b/conda-recipe/imbalanced-learn/bld.bat @@ -0,0 +1,8 @@ +"%PYTHON%" setup.py install +if errorlevel 1 exit 1 + +:: Add more build steps here, if they are necessary. + +:: See +:: http://docs.continuum.io/conda/build.html +:: for a list of environment variables that are set during the build process. \ No newline at end of file diff --git a/conda-recipe/imbalanced-learn/build.sh b/conda-recipe/imbalanced-learn/build.sh new file mode 100644 index 000000000..4d7fc032b --- /dev/null +++ b/conda-recipe/imbalanced-learn/build.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +$PYTHON setup.py install + +# Add more build steps here, if they are necessary. + +# See +# http://docs.continuum.io/conda/build.html +# for a list of environment variables that are set during the build process. diff --git a/conda-recipe/imbalanced-learn/meta.yaml b/conda-recipe/imbalanced-learn/meta.yaml new file mode 100644 index 000000000..9ea628b47 --- /dev/null +++ b/conda-recipe/imbalanced-learn/meta.yaml @@ -0,0 +1,36 @@ +package: + name: imbalanced-learn + version: "0.1.3" + +source: + git_rev: 0.1.3 + git_url: https://github.com/scikit-learn-contrib/imbalanced-learn.git + +requirements: + build: + - python + - setuptools + - numpy + - scipy + - scikit-learn + run: + - python + - numpy + - scipy + - scikit-learn + +test: + requires: + - nose + - coverage + imports: + - imblearn + +about: + home: https://github.com/scikit-learn-contrib/imbalanced-learn + license: MIT + license_file: LICENSE + +# See +# http://docs.continuum.io/conda/build.html for +# more information about meta.yaml diff --git a/doc/Makefile b/doc/Makefile index 1b186f45a..e0ea9bedf 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -5,21 +5,22 @@ SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = -BUILDDIR = ../../UnbalancedDataset-docs +BUILDDIR = _build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) - $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don\'t have Sphinx installed, grab it from http://sphinx-doc.org/) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others -I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext -.PHONY: help help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @@ -29,10 +30,8 @@ help: @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" - @echo " applehelp to make an Apple Help Book" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" - @echo " epub3 to make an epub3" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @@ -46,92 +45,72 @@ help: @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" - @echo " coverage to run coverage check of the documentation (if enabled)" - @echo " dummy to check syntax errors of document sources" -.PHONY: clean clean: - rm -rf $(BUILDDIR)/* + -rm -rf $(BUILDDIR)/* + -rm -rf auto_examples/ + -rm -rf generated/* + -rm -rf modules/generated/* -.PHONY: html html: + # These two lines make the build a bit more lengthy, and the + # the embedding of images more robust + rm -rf $(BUILDDIR)/html/_images + #rm -rf _build/doctrees/ $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + touch $(BUILDDIR)/html/.nojekyll @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." -.PHONY: dirhtml dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." -.PHONY: singlehtml singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." -.PHONY: pickle pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." -.PHONY: json json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." -.PHONY: htmlhelp htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." -.PHONY: qthelp qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/UnbalancedDataset.qhcp" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/imbalanced-learn.qhcp" @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/UnbalancedDataset.qhc" - -.PHONY: applehelp -applehelp: - $(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp - @echo - @echo "Build finished. The help book is in $(BUILDDIR)/applehelp." - @echo "N.B. You won't be able to view it unless you put it in" \ - "~/Library/Documentation/Help or install it in your application" \ - "bundle." + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/imbalanced-learn.qhc" -.PHONY: devhelp devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" - @echo "# mkdir -p $$HOME/.local/share/devhelp/UnbalancedDataset" - @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/UnbalancedDataset" + @echo "# mkdir -p $$HOME/.local/share/devhelp/imbalanced-learn" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/imbalanced-learn" @echo "# devhelp" -.PHONY: epub epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." -.PHONY: epub3 -epub3: - $(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3 - @echo - @echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3." - -.PHONY: latex latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @@ -139,33 +118,28 @@ latex: @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." -.PHONY: latexpdf latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." -.PHONY: latexpdfja latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." -.PHONY: text text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." -.PHONY: man man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." -.PHONY: texinfo texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @@ -173,58 +147,39 @@ texinfo: @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." -.PHONY: info info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." -.PHONY: gettext gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." -.PHONY: changes changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." -.PHONY: linkcheck linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." -.PHONY: doctest doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." -.PHONY: coverage -coverage: - $(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage - @echo "Testing of coverage in the sources finished, look at the " \ - "results in $(BUILDDIR)/coverage/python.txt." - -.PHONY: xml xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." -.PHONY: pseudoxml pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." - -.PHONY: dummy -dummy: - $(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy - @echo - @echo "Build finished. Dummy builder generates no files." diff --git a/doc/about.rst b/doc/about.rst new file mode 100644 index 000000000..10033e96a --- /dev/null +++ b/doc/about.rst @@ -0,0 +1,13 @@ +About us +======== + +.. include:: ../AUTHORS.rst + +.. _citing-imbalanced-learn: + +Citing imbalanced-learn +----------------------- + +If you use imbalanced-learn in a scientific publication, we would appreciate +citations to the following paper: + diff --git a/doc/api.rst b/doc/api.rst new file mode 100644 index 000000000..0d21bf1dc --- /dev/null +++ b/doc/api.rst @@ -0,0 +1,139 @@ +###################### +`imbalanced-learn` API +###################### + +This is the full API documentation of the `imbalanced-learn` toolbox. + +.. _under_sampling_ref: + +Under-sampling methods +====================== + +.. automodule:: imblearn.under_sampling + :no-members: + :no-inherited-members: + +Classes +------- +.. currentmodule:: imblearn + +.. autosummary:: + :toctree: generated/ + + under_sampling.ClusterCentroids + under_sampling.CondensedNearestNeighbour + under_sampling.EditedNearestNeighbours + under_sampling.RepeatedEditedNearestNeighbours + under_sampling.InstanceHardnessThreshold + under_sampling.NearMiss + under_sampling.NeighbourhoodCleaningRule + under_sampling.OneSidedSelection + under_sampling.RandomUnderSampler + under_sampling.TomekLinks + + +.. _over_sampling_ref: + +Over-sampling methods +===================== + +.. automodule:: imblearn.over_sampling + :no-members: + :no-inherited-members: + +Classes +------- +.. currentmodule:: imblearn + +.. autosummary:: + :toctree: generated/ + + over_sampling.ADASYN + over_sampling.RandomOverSampler + over_sampling.SMOTE + + +.. _combine_ref: + +Combination of over- and under-sampling methods +=============================================== + +.. automodule:: imblearn.combine + :no-members: + :no-inherited-members: + +Classes +------- +.. currentmodule:: imblearn + +.. autosummary:: + :toctree: generated/ + + combine.SMOTEENN + combine.SMOTETomek + + +.. _ensemble_ref: + +Ensemble methods +================ + +.. automodule:: imblearn.ensemble + :no-members: + :no-inherited-members: + +Classes +------- +.. currentmodule:: imblearn + +.. autosummary:: + :toctree: generated/ + + ensemble.BalanceCascade + ensemble.EasyEnsemble + + +.. _pipeline_ref: + +Pipeline +======== + +.. automodule:: imblearn.pipeline + :no-members: + :no-inherited-members: + +.. currentmodule:: imblearn + +Classes +------- +.. autosummary:: + :toctree: generated/ + + pipeline.Pipeline + +Functions +--------- +.. autosummary:: + :toctree: generated/ + + pipeline.make_pipeline + + +.. _datasets_ref: + +Datasets +======== + +.. automodule:: imblearn.datasets + :no-members: + :no-inherited-members: + +.. currentmodule:: imblearn + +Functions +--------- +.. autosummary:: + :toctree: generated/ + + datasets.make_imbalance + datasets.fetch_benchmark diff --git a/doc/source/conf.py b/doc/conf.py similarity index 71% rename from doc/source/conf.py rename to doc/conf.py index 9a5f6419e..6ba4298ff 100644 --- a/doc/source/conf.py +++ b/doc/conf.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# UnbalancedDataset documentation build configuration file, created by -# sphinx-quickstart on Fri May 20 18:02:05 2016. +# imbalanced-learn documentation build configuration file, created by +# sphinx-quickstart on Mon Jan 18 14:44:12 2016. # # This file is execfile()d with the current directory set to its # containing dir. @@ -14,6 +14,7 @@ import sys import os + import sphinx_rtd_theme # If extensions (or modules to document with autodoc) are in another directory, @@ -21,6 +22,13 @@ # documentation root, use os.path.abspath to make it absolute, like shown here. #sys.path.insert(0, os.path.abspath('.')) +# -- General configuration --------------------------------------------------- + +# Try to override the matplotlib configuration as early as possible +try: + import gen_rst +except: + pass # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. @@ -29,48 +37,64 @@ # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinx.ext.autodoc', - 'sphinx.ext.doctest', - 'sphinx.ext.coverage', - 'sphinx.ext.viewcode', - 'sphinx.ext.autosummary', - 'sphinx.ext.githubpages', - 'numpydoc'] +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.doctest', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + 'numpydoc', + 'sphinx.ext.pngmath', + 'sphinx.ext.ifconfig', + 'sphinx.ext.viewcode', + 'sphinx_gallery.gen_gallery', + 'sphinx.ext.autosummary' +] + +autosummary_generate = True + +autodoc_default_flags = ['members', 'inherited-members'] + +sphinx_gallery_conf = { + # path to your examples scripts + 'examples_dirs' : '../examples', + # path where to save gallery generated examples + 'gallery_dirs' : 'auto_examples'} # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] -# The suffix(es) of source filenames. -# You can specify multiple suffix as a list of string: -# source_suffix = ['.rst', '.md'] +# generate autosummary even if no references +autosummary_generate = True + +# The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8-sig' +# Generate the plots for the gallery +plot_gallery = True + # The master toctree document. master_doc = 'index' # General information about the project. -project = u'UnbalancedDataset' -copyright = u'2016, F. Nogueira, G. Lemaitre' -author = u'F. Nogueira, G. Lemaitre' +project = u'imbalanced-learn' +copyright = u'2016, G. Lemaitre, F. Nogueira, D. Oliveira, C. Aridas' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. -version = u'0.1' +__version__ = '0.2.0.dev0' +version = __version__ # The full version, including alpha/beta/rc tags. -release = u'0.1.dev0' +release = __version__ # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. -# -# This is also used if you do content translation via gettext catalogs. -# Usually you set "language" from the command line for these cases. -language = None +#language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: @@ -80,15 +104,14 @@ # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. -# This patterns also effect to html_static_path and html_extra_path -exclude_patterns = [] +exclude_patterns = ['_build'] # The reST default role (used for this markup: `text`) to use for all # documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True +add_function_parentheses = False # If true, the current module name will be prepended to all description # unit titles (such as .. function::). @@ -107,9 +130,6 @@ # If true, keep warnings as "system message" paragraphs in the built documents. #keep_warnings = False -# If true, `todo` and `todoList` produce output, else they produce nothing. -todo_include_todos = False - # -- Options for HTML output ---------------------------------------------- @@ -125,9 +145,9 @@ # Add any paths that contain custom themes here, relative to this directory. html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] -# The name for this set of Sphinx documents. -# " v documentation" by default. -#html_title = u'UnbalancedDataset v0.1.dev0' +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None # A shorter title for the navigation bar. Default is the same as html_title. #html_short_title = None @@ -136,8 +156,8 @@ # of the sidebar. #html_logo = None -# The name of an image file (relative to this directory) to use as a favicon of -# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None @@ -151,10 +171,9 @@ # directly to the root of the documentation. #html_extra_path = [] -# If not None, a 'Last updated on:' timestamp is inserted at every page -# bottom, using the given strftime format. -# The empty string is equivalent to '%b %d, %Y'. -#html_last_updated_fmt = None +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. @@ -193,23 +212,9 @@ # This is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = None -# Language to be used for generating the HTML full-text search index. -# Sphinx supports the following languages: -# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja' -# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr', 'zh' -#html_search_language = 'en' - -# A dictionary with options for the search language support, empty by default. -# 'ja' uses this config value. -# 'zh' user can custom change `jieba` dictionary path. -#html_search_options = {'type': 'default'} - -# The name of a javascript file (relative to the configuration directory) that -# implements a search results scorer. If empty, the default will be used. -#html_search_scorer = 'scorer.js' - # Output file base name for HTML help builder. -htmlhelp_basename = 'UnbalancedDatasetdoc' +htmlhelp_basename = 'imbalanced-learndoc' + # -- Options for LaTeX output --------------------------------------------- @@ -222,17 +227,14 @@ # Additional stuff for the LaTeX preamble. #'preamble': '', - -# Latex figure (float) alignment -#'figure_align': 'htbp', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ - (master_doc, 'UnbalancedDataset.tex', u'UnbalancedDataset Documentation', - u'F. Nogueira, G. Lemaitre', 'manual'), + ('index', 'imbalanced-learn.tex', u'imbalanced-learn Documentation', + u'G. Lemaitre, F. Nogueira, D. Oliveira, C. Aridas', 'manual'), ] # The name of an image file (relative to this directory) to place at the top of @@ -261,8 +263,8 @@ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ - (master_doc, 'unbalanceddataset', u'UnbalancedDataset Documentation', - [author], 1) + ('index', 'imbalanced-learn', u'imbalanced-learn Documentation', + [u'G. Lemaitre, F. Nogueira, D. Oliveira, C. Aridas'], 1) ] # If true, show URL addresses after external links. @@ -275,11 +277,24 @@ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'UnbalancedDataset', u'UnbalancedDataset Documentation', - author, 'UnbalancedDataset', 'One line description of project.', - 'Miscellaneous'), + ('index', 'imbalanced-learn', u'imbalanced-learn Documentation', + u'G. Lemaitre, F. Nogueira, D. Oliveira, C. Aridas', 'imbalanced-learn', 'Toolbox for imbalanced dataset in machine learning.', + 'Miscellaneous'), ] +def generate_example_rst(app, what, name, obj, options, lines): + # generate empty examples files, so that we don't get + # inclusion errors if there are no examples for a class / module + examples_path = os.path.join(app.srcdir, "modules", "generated", + "%s.examples" % name) + if not os.path.exists(examples_path): + # touch file + open(examples_path, 'w').close() + + +def setup(app): + app.connect('autodoc-process-docstring', generate_example_rst) + # Documents to append as an appendix to all manuals. #texinfo_appendices = [] @@ -291,3 +306,7 @@ # If true, do not generate a @detailmenu in the "Top" node's menu. #texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/index.rst b/doc/index.rst new file mode 100644 index 000000000..195647fa4 --- /dev/null +++ b/doc/index.rst @@ -0,0 +1,51 @@ +.. project-template documentation master file, created by + sphinx-quickstart on Mon Jan 18 14:44:12 2016. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +########################################## +Welcome to imbalanced-learn documentation! +########################################## + +Contents: +========= + +.. toctree:: + :maxdepth: 2 + :caption: User Documentation + + install + support + +.. toctree:: + :maxdepth: 2 + :hidden: + :caption: API Documentation + + api + +.. toctree:: + :maxdepth: 2 + :caption: Tutorial - Examples + + auto_examples/index + +.. toctree:: + :maxdepth: 1 + :caption: Addtional information + + whats_new + todo + about + +See the `README `_ +for more information. + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/doc/install.rst b/doc/install.rst new file mode 100644 index 000000000..f9e30bcd8 --- /dev/null +++ b/doc/install.rst @@ -0,0 +1,39 @@ +############### +Getting Started +############### + +Install +======= + +imbalanced-learn is currently available on the PyPi's reporitories and you can install it via `pip`:: + + pip install -U imbalanced-learn + +The package is release also in Anaconda Cloud platform:: + + conda install -c glemaitre imbalanced-learn + +If you prefer, you can clone it and run the setup.py file. Use the following commands to get a +copy from Github and install all dependencies:: + + git clone https://github.com/scikit-learn-contrib/imbalanced-learn.git + cd imbalanced-learn + python setup.py install + +Test and coverage +================= + +You want to test the code before to install:: + + $ make test + +You wish to test the coverage of your version:: + + $ make coverage + +Contribute +========== + +You can contribute to this code through Pull Request on GitHub_. Please, make sure that your code is coming with unit tests to ensure full coverage and continuous integration in the API. + +.. _GitHub: https://github.com/scikit-learn-contrib/imbalanced-learn/pulls diff --git a/doc/make.bat b/doc/make.bat index 806971d38..ba77face1 100644 --- a/doc/make.bat +++ b/doc/make.bat @@ -5,9 +5,9 @@ REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -set I18NSPHINXOPTS=%SPHINXOPTS% source +set BUILDDIR=_build +set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . +set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% @@ -27,7 +27,6 @@ if "%1" == "help" ( echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub - echo. epub3 to make an epub3 echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages @@ -38,8 +37,6 @@ if "%1" == "help" ( echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled - echo. coverage to run coverage check of the documentation if enabled - echo. dummy to check syntax errors of document sources goto end ) @@ -50,14 +47,6 @@ if "%1" == "clean" ( ) -REM Check if sphinx-build is available and fallback to Python version if any -%SPHINXBUILD% 1>NUL 2>NUL -if errorlevel 9009 goto sphinx_python -goto sphinx_ok - -:sphinx_python - -set SPHINXBUILD=python -m sphinx.__init__ %SPHINXBUILD% 2> nul if errorlevel 9009 ( echo. @@ -71,9 +60,6 @@ if errorlevel 9009 ( exit /b 1 ) -:sphinx_ok - - if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 @@ -129,9 +115,9 @@ if "%1" == "qthelp" ( echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\UnbalancedDataset.qhcp + echo.^> qcollectiongenerator %BUILDDIR%\qthelp\imbalanced-learn.qhcp echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\UnbalancedDataset.ghc + echo.^> assistant -collectionFile %BUILDDIR%\qthelp\imbalanced-learn.ghc goto end ) @@ -151,14 +137,6 @@ if "%1" == "epub" ( goto end ) -if "%1" == "epub3" ( - %SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3 - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub3 file is in %BUILDDIR%/epub3. - goto end -) - if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 @@ -171,7 +149,7 @@ if "%1" == "latexpdf" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf - cd %~dp0 + cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end @@ -181,7 +159,7 @@ if "%1" == "latexpdfja" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf-ja - cd %~dp0 + cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end @@ -245,15 +223,6 @@ results in %BUILDDIR%/doctest/output.txt. goto end ) -if "%1" == "coverage" ( - %SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage - if errorlevel 1 exit /b 1 - echo. - echo.Testing of coverage in the sources finished, look at the ^ -results in %BUILDDIR%/coverage/python.txt. - goto end -) - if "%1" == "xml" ( %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml if errorlevel 1 exit /b 1 @@ -270,12 +239,4 @@ if "%1" == "pseudoxml" ( goto end ) -if "%1" == "dummy" ( - %SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. Dummy builder generates no files. - goto end -) - :end diff --git a/doc/source/index.rst b/doc/source/index.rst deleted file mode 100644 index e35d5d657..000000000 --- a/doc/source/index.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. UnbalancedDataset documentation master file, created by - sphinx-quickstart on Fri May 20 18:02:05 2016. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to UnbalancedDataset's documentation! -============================================= - -Contents: - -.. toctree:: - :maxdepth: 2 - :caption: User Documentation - - install - support - -.. toctree:: - :maxdepth: 2 - :hidden: - :caption: API Documentation - - modules/modules - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/doc/source/install.rst b/doc/source/install.rst deleted file mode 100644 index e68a1e58c..000000000 --- a/doc/source/install.rst +++ /dev/null @@ -1,28 +0,0 @@ -Getting Started -=============== - -Install -------- - -The install of ``UnbalancedDataset`` is almost straightforward. You need to clone it from GitHub_:: - - $ git clone https://github.com/fmfn/UnbalancedDataset.git - $ python setup.py install - -Test and coverage ------------------ - -You want to test the code before to install:: - - $ make test - -You wish to test the coverage of your version:: - - $ make coverage - -Contribute ----------- - -You can contribute to this code through Pull Request on GitHub_. Please, make sure that your code is coming with unit tests to ensure full coverage and continuous integration in the API. - -.. _GitHub: https://github.com/fmfn/UnbalancedDataset.git diff --git a/doc/source/modules/modules.rst b/doc/source/modules/modules.rst deleted file mode 100644 index 6898a0c00..000000000 --- a/doc/source/modules/modules.rst +++ /dev/null @@ -1,7 +0,0 @@ -unbalanced_dataset -================== - -.. toctree:: - :maxdepth: 4 - - unbalanced_dataset diff --git a/doc/source/modules/unbalanced_dataset.combine.rst b/doc/source/modules/unbalanced_dataset.combine.rst deleted file mode 100644 index f902d7640..000000000 --- a/doc/source/modules/unbalanced_dataset.combine.rst +++ /dev/null @@ -1,37 +0,0 @@ -unbalanced_dataset.combine package -================================== - -Subpackages ------------ - -.. toctree:: - - unbalanced_dataset.combine.tests - -Submodules ----------- - -unbalanced_dataset.combine.smote_enn module -------------------------------------------- - -.. automodule:: unbalanced_dataset.combine.smote_enn - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.combine.smote_tomek module ---------------------------------------------- - -.. automodule:: unbalanced_dataset.combine.smote_tomek - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: unbalanced_dataset.combine - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/modules/unbalanced_dataset.ensemble.rst b/doc/source/modules/unbalanced_dataset.ensemble.rst deleted file mode 100644 index ab0409648..000000000 --- a/doc/source/modules/unbalanced_dataset.ensemble.rst +++ /dev/null @@ -1,45 +0,0 @@ -unbalanced_dataset.ensemble package -=================================== - -Subpackages ------------ - -.. toctree:: - - unbalanced_dataset.ensemble.tests - -Submodules ----------- - -unbalanced_dataset.ensemble.balance_cascade module --------------------------------------------------- - -.. automodule:: unbalanced_dataset.ensemble.balance_cascade - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.ensemble.easy_ensemble module ------------------------------------------------- - -.. automodule:: unbalanced_dataset.ensemble.easy_ensemble - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.ensemble.ensemble_sampler module ---------------------------------------------------- - -.. automodule:: unbalanced_dataset.ensemble.ensemble_sampler - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: unbalanced_dataset.ensemble - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/modules/unbalanced_dataset.over_sampling.rst b/doc/source/modules/unbalanced_dataset.over_sampling.rst deleted file mode 100644 index 2cba7ea55..000000000 --- a/doc/source/modules/unbalanced_dataset.over_sampling.rst +++ /dev/null @@ -1,45 +0,0 @@ -unbalanced_dataset.over_sampling package -======================================== - -Subpackages ------------ - -.. toctree:: - - unbalanced_dataset.over_sampling.tests - -Submodules ----------- - -unbalanced_dataset.over_sampling.over_sampler module ----------------------------------------------------- - -.. automodule:: unbalanced_dataset.over_sampling.over_sampler - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.over_sampling.random_over_sampler module ------------------------------------------------------------ - -.. automodule:: unbalanced_dataset.over_sampling.random_over_sampler - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.over_sampling.smote module ---------------------------------------------- - -.. automodule:: unbalanced_dataset.over_sampling.smote - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: unbalanced_dataset.over_sampling - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/modules/unbalanced_dataset.rst b/doc/source/modules/unbalanced_dataset.rst deleted file mode 100644 index 7b8b30cc5..000000000 --- a/doc/source/modules/unbalanced_dataset.rst +++ /dev/null @@ -1,41 +0,0 @@ -unbalanced_dataset package -========================== - -Subpackages ------------ - -.. toctree:: - - unbalanced_dataset.combine - unbalanced_dataset.ensemble - unbalanced_dataset.over_sampling - unbalanced_dataset.under_sampling - unbalanced_dataset.utils - -Submodules ----------- - -unbalanced_dataset.base_sampler module --------------------------------------- - -.. automodule:: unbalanced_dataset.base_sampler - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.setup module -------------------------------- - -.. automodule:: unbalanced_dataset.setup - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: unbalanced_dataset - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/modules/unbalanced_dataset.under_sampling.rst b/doc/source/modules/unbalanced_dataset.under_sampling.rst deleted file mode 100644 index 8f9cf1e7d..000000000 --- a/doc/source/modules/unbalanced_dataset.under_sampling.rst +++ /dev/null @@ -1,93 +0,0 @@ -unbalanced_dataset.under_sampling package -========================================= - -Subpackages ------------ - -.. toctree:: - - unbalanced_dataset.under_sampling.tests - -Submodules ----------- - -unbalanced_dataset.under_sampling.cluster_centroids module ----------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.cluster_centroids - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.condensed_nearest_neighbour module --------------------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.condensed_nearest_neighbour - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.edited_nearest_neighbours module ------------------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.edited_nearest_neighbours - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.nearmiss module -------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.nearmiss - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.neighbourhood_cleaning_rule module --------------------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.neighbourhood_cleaning_rule - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.one_sided_selection module ------------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.one_sided_selection - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.random_under_sampler module -------------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.random_under_sampler - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.tomek_links module ----------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.tomek_links - :members: - :undoc-members: - :show-inheritance: - -unbalanced_dataset.under_sampling.under_sampler module ------------------------------------------------------- - -.. automodule:: unbalanced_dataset.under_sampling.under_sampler - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: unbalanced_dataset.under_sampling - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/modules/unbalanced_dataset.utils.rst b/doc/source/modules/unbalanced_dataset.utils.rst deleted file mode 100644 index 08aa7adc4..000000000 --- a/doc/source/modules/unbalanced_dataset.utils.rst +++ /dev/null @@ -1,29 +0,0 @@ -unbalanced_dataset.utils package -================================ - -Subpackages ------------ - -.. toctree:: - - unbalanced_dataset.utils.tests - -Submodules ----------- - -unbalanced_dataset.utils.pipeline module ----------------------------------------- - -.. automodule:: unbalanced_dataset.utils.pipeline - :members: - :undoc-members: - :show-inheritance: - - -Module contents ---------------- - -.. automodule:: unbalanced_dataset.utils - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/support.rst b/doc/support.rst similarity index 94% rename from doc/source/support.rst rename to doc/support.rst index e3e7dc94b..f9ccada12 100644 --- a/doc/source/support.rst +++ b/doc/support.rst @@ -1,12 +1,13 @@ +####### Support -======= +####### Raise any issue on GitHub such that we can address your problem. For personal query, check :ref:`in-ct` section. .. _in-ct: Contact -------- +======= For any query, you can contact the following persons: diff --git a/doc/todo.rst b/doc/todo.rst new file mode 100644 index 000000000..fc15a23d8 --- /dev/null +++ b/doc/todo.rst @@ -0,0 +1,22 @@ +.. currentmodule:: imbalanced-learn + +.. _todo_0_2: + +========== +To Do list +========== + +Version 0.2 +----------- + +New methods +~~~~~~~~~~~ + +* SMOTEBagging_: Wang, Shuo, and Xin Yao. "Diversity analysis on imbalanced data sets by using ensemble models." Computational Intelligence and Data Mining, 2009. CIDM'09. IEEE Symposium on. IEEE, 2009. + +.. _SMOTEBagging: http://pages.bangor.ac.uk/~mas00a/papers/jpjrcolkis15.pdf + +API improvements +~~~~~~~~~~~~~~~~ + +* Remove `npy` files in the testting and perform toy tests instead. diff --git a/doc/whats_new.rst b/doc/whats_new.rst new file mode 100644 index 000000000..4b98a5e2b --- /dev/null +++ b/doc/whats_new.rst @@ -0,0 +1,93 @@ +.. currentmodule:: imbalanced-learn + +=============== +Release history +=============== + +.. _changes_0_2: + +Version 0.2 +=========== + +Changelog +--------- + +Bug fixes +~~~~~~~~~ + +- Fixed a bug in :class:`under_sampling.NearMiss` which was not picking the right samples during under sampling for the method 3. By `Guillaume Lemaitre`_. +- Fixed a bug in :class:`ensemble.EasyEnsemble`, correction of the `random_state` generation. By `Guillaume Lemaitre`_ and `Christos Aridas`_. +- Fixed a bug in :class:`under_sampling.RepeatedEditedNearestNeighbours`, add additional stopping criterion to avoid that the minority class become a majority class or that a class disappear. By `Guillaume Lemaitre`_. +- Fixed a bug in :class:`under_sampling.AllKNN`, add stopping criteria to avoid that the minority class become a majority class or that a class disappear. By `Guillaume Lemaitre`_. +- Fixed a bug in :class:`under_sampling.CondensedNeareastNeigbour`, correction of the list of indices returned. By `Guillaume Lemaitre`_. +- Fixed a bug in :class:`ensemble.BalanceCascade`, solve the issue to obtain a single array if desired. By `Guillaume Lemaitre`_. + +New features +~~~~~~~~~~~~ + +- Added AllKNN under sampling technique. By `Dayvid Oliveira`_. +- Added benchmark dataset which can be fetch using `fetch_benchmark` from the module `datasets`. By `Guillaume Lemaitre`_. + +API changes summary +~~~~~~~~~~~~~~~~~~~ + +- Two base classes :class:`BaseBinaryclassSampler` and :class:`BaseMulticlassSampler` have been created to handle the target type and raise warning in case of abnormality. By `Guillaume Lemaitre`_ and `Christos Aridas`_. + +Enhancement +~~~~~~~~~~~ + +- Added support for bumpversion. By `Guillaume Lemaitre`_. +- Validate the type of target in binary samplers. A warning is raised for the moment. By `Guillaume Lemaitre`_ and `Christos Aridas`_. + +Documentation changes +~~~~~~~~~~~~~~~~~~~~~ + +- Added doctest in the documentation. By `Guillaume Lemaitre`_. + +.. _changes_0_1: + +Version 0.1 +=========== + +Changelog +--------- + +API +~~~ + +- First release of the stable API. By `Fernando Nogueira`_, `Guillaume Lemaitre`_, `Christos Aridas`_, and `Dayvid Oliveira`_. + +New methods +~~~~~~~~~~~ + +* Under-sampling + 1. Random majority under-sampling with replacement + 2. Extraction of majority-minority Tomek links + 3. Under-sampling with Cluster Centroids + 4. NearMiss-(1 & 2 & 3) + 5. Condensend Nearest Neighbour + 6. One-Sided Selection + 7. Neighboorhood Cleaning Rule + 8. Edited Nearest Neighbours + 9. Instance Hardness Threshold + 10. Repeated Edited Nearest Neighbours + +* Over-sampling + 1. Random minority over-sampling with replacement + 2. SMOTE - Synthetic Minority Over-sampling Technique + 3. bSMOTE(1 & 2) - Borderline SMOTE of types 1 and 2 + 4. SVM SMOTE - Support Vectors SMOTE + 5. ADASYN - Adaptive synthetic sampling approach for imbalanced learning + +* Over-sampling followed by under-sampling + 1. SMOTE + Tomek links + 2. SMOTE + ENN + +* Ensemble sampling + 1. EasyEnsemble + 2. BalanceCascade + +.. _Guillaume Lemaitre: https://github.com/glemaitre +.. _Christos Aridas: https://github.com/chkoar +.. _Fernando Nogueira: https://github.com/fmfn +.. _Dayvid Oliveira: https://github.com/dvro diff --git a/example/plot_unbalanced_dataset.ipynb b/example/plot_unbalanced_dataset.ipynb deleted file mode 100644 index 8236deb53..000000000 --- a/example/plot_unbalanced_dataset.ipynb +++ /dev/null @@ -1,511 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# UnbalancedDataset\n", - "\n", - "### A python toolbox to tackle the problem of imbalanced dataset\n", - "\n", - "F. Nogueira - G. Lemaitre\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/lemaitre/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", - " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n", - "/home/lemaitre/anaconda/lib/python2.7/site-packages/matplotlib/__init__.py:872: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", - " warnings.warn(self.msg_depr % (key, alt_key))\n" - ] - } - ], - "source": [ - "%matplotlib inline\n", - "\n", - "import matplotlib as mpl\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "sns.set()\n", - "\n", - "import numpy as np\n", - "import itertools\n", - "\n", - "from sklearn.datasets import make_classification\n", - "from sklearn.decomposition import PCA\n", - "\n", - "from unbalanced_dataset.under_sampling import RandomUnderSampler\n", - "from unbalanced_dataset.under_sampling import NearMiss\n", - "from unbalanced_dataset.under_sampling import CondensedNearestNeighbour\n", - "from unbalanced_dataset.under_sampling import OneSidedSelection\n", - "from unbalanced_dataset.under_sampling import NeighbourhoodCleaningRule\n", - "from unbalanced_dataset.under_sampling import TomekLinks\n", - "from unbalanced_dataset.under_sampling import ClusterCentroids\n", - "from unbalanced_dataset.under_sampling import EditedNearestNeighbours\n", - "\n", - "from unbalanced_dataset.over_sampling import RandomOverSampler\n", - "from unbalanced_dataset.over_sampling import SMOTE\n", - "\n", - "from unbalanced_dataset.combine import SMOTETomek\n", - "from unbalanced_dataset.combine import SMOTEENN\n", - "\n", - "from unbalanced_dataset.ensemble import EasyEnsemble\n", - "from unbalanced_dataset.ensemble import BalanceCascade\n", - "\n", - "# Save a nice dark grey as a variable\n", - "almost_black = '#262626'" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Background\n", - "\n", - "UnbalancedDataset is a python module offering a number of resampling techniques commonly used in datasets showing strong between-class imbalance.\n", - "\n", - "Most classification algorithms will only perform optimally when the number of samples of each class is roughly the same. Highly skewed datasets, where the minority heavily outnumbered by one or more classes, haven proven to be a challenge while at the same time becoming more and more common.\n", - "\n", - "One way of addresing this issue is by resampling the dataset as to offset this imbalance with the hope of arriving and a more robust and fair decision boundary than you would otherwise.\n", - "\n", - "Resampling techniques are divided in three categories: (i) Under-sampling the majority class(es), (ii) Over-sampling the minority class and (ii) Ensemble sampling.\n", - "\n", - "Bellow is a list of the methods currently implemented in this module.\n", - "\n", - "* Under-sampling\n", - " 1. Random majority under-sampling with replacement\n", - " 2. Extraction of majority-minority Tomek links\n", - " 3. Under-sampling with Cluster Centroids\n", - " 4. NearMiss-(1 & 2 & 3)\n", - " 5. Condensend Nearest Neighbour\n", - " 6. One-Sided Selection\n", - " 7. Neighboorhood Cleaning Rule\n", - "\n", - "* Over-sampling\n", - " 1. Random minority over-sampling with replacement\n", - " 2. SMOTE - Synthetic Minority Over-sampling Technique\n", - " 3. bSMOTE(1&2) - Borderline SMOTE of types 1 and 2\n", - " 4. SVM_SMOTE - Support Vectors SMOTE\n", - "\n", - "* Over-sampling follow by under-sampling\n", - " 1. SMOTE + Tomek links\n", - " 2. SMOTE + ENN\n", - "\n", - "* Ensemble sampling\n", - " 1. EasyEnsemble\n", - " 2. BalanceCascade\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Data generation" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/lemaitre/anaconda/lib/python2.7/site-packages/matplotlib/__init__.py:892: UserWarning: axes.color_cycle is deprecated and replaced with axes.prop_cycle; please use the latter.\n", - " warnings.warn(self.msg_depr % (key, alt_key))\n" - ] - }, - { - "data": { - "image/png": "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\nAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Generate some data\n", - "x, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9],\n", - " n_informative=3, n_redundant=1, flip_y=0,\n", - " n_features=20, n_clusters_per_class=1,\n", - " n_samples=1000, random_state=10)\n", - "\n", - "# Instanciate a PCA object for the sake of easy visualisation\n", - "pca = PCA(n_components=2)\n", - "\n", - "# Fit and transform x to visualise inside a 2D feature space\n", - "x_vis = pca.fit_transform(x)\n", - "\n", - "# Plot the original data\n", - "# Plot the two classes\n", - "palette = sns.color_palette()\n", - "plt.scatter(x_vis[y == 0, 0], x_vis[y == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "plt.scatter(x_vis[y == 1, 0], x_vis[y == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "\n", - "plt.legend()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Under-sampling:" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The different under-sampling methods will be applied and a new dataset will be generated for each of them." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "# Generate the new dataset using under-sampling method\n", - "verbose = False\n", - "# 'Random under-sampling'\n", - "US = RandomUnderSampler(verbose=verbose)\n", - "usx, usy = US.fit_transform(x, y)\n", - "# 'Tomek links'\n", - "TL = TomekLinks(verbose=verbose)\n", - "tlx, tly = TL.fit_transform(x, y)\n", - "# 'Clustering centroids'\n", - "CC = ClusterCentroids(verbose=verbose)\n", - "ccx, ccy = CC.fit_transform(x, y)\n", - "# 'NearMiss-1'\n", - "NM1 = NearMiss(version=1, verbose=verbose)\n", - "nm1x, nm1y = NM1.fit_transform(x, y)\n", - "# 'NearMiss-2'\n", - "NM2 = NearMiss(version=2, verbose=verbose)\n", - "nm2x, nm2y = NM2.fit_transform(x, y)\n", - "# 'NearMiss-3'\n", - "NM3 = NearMiss(version=3, verbose=verbose)\n", - "nm3x, nm3y = NM3.fit_transform(x, y)\n", - "# 'Condensed Nearest Neighbour'\n", - "CNN = CondensedNearestNeighbour(size_ngh=51, n_seeds_S=51, verbose=verbose)\n", - "cnnx, cnny = CNN.fit_transform(x, y)\n", - "# 'One-Sided Selection'\n", - "OSS = OneSidedSelection(size_ngh=51, n_seeds_S=51, verbose=verbose)\n", - "ossx, ossy = OSS.fit_transform(x, y)\n", - "# 'Neighboorhood Cleaning Rule'\n", - "NCR = NeighbourhoodCleaningRule(size_ngh=51, verbose=verbose)\n", - "ncrx, ncry = NCR.fit_transform(x, y) \n", - "# 'Edited Neareast Neighbour'\n", - "ENN = EditedNearestNeighbours(size_ngh=51, verbose=verbose)\n", - "ennx, enny = ENN.fit_transform(x, y) \n", - "\n", - "# Apply PCA to be able to visualise the results\n", - "usx_vis = pca.transform(usx)\n", - "tlx_vis = pca.transform(tlx)\n", - "ccx_vis = pca.transform(ccx)\n", - "nm1x_vis = pca.transform(nm1x)\n", - "nm2x_vis = pca.transform(nm2x)\n", - "nm3x_vis = pca.transform(nm3x)\n", - "cnnx_vis = pca.transform(cnnx)\n", - "ossx_vis = pca.transform(ossx)\n", - "ncrx_vis = pca.transform(ncrx)\n", - "ennx_vis = pca.transform(ennx)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA28AAANvCAYAAABKz+L8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmYXGWZ9/8559Spvaq7q/clgZAYo0AIQhhARYjsLuOM\nPxiQRR1Hh2tkLpfXZSCIyiUiiMqlA8oqBLmEYUZenRlmXsVlVEZIWDqBQEhC0qa7013d1d21L2f9\n/VGpSnenl+ruqq6u7ufzT3K6zvKcU/Xc53vfz/3cj2Tbto1AIBAIBAKBQCAQCJY0crUbIBAIBAKB\nQCAQCASC2RHOm0AgEAgEAoFAIBDUAMJ5EwgEAoFAIBAIBIIaQDhvAoFAIBAIBAKBQFADCOdNIBAI\nBAKBQCAQCGoA4bwJBAKBQCAQCAQCQQ0gnLcqs337ds4++2yuvfZarr32Wv76r/+az372sxiGsaDz\nfv7zn2fHjh1lauX80DSNLVu2VLUNM7FlyxY0TeO+++7jlVdeqXZzBIIVz+23384111zDJZdcwnnn\nnce1117LZz/72bJf5yMf+Qi9vb1TfmaaJu95z3sA+MY3vsHQ0NC053nPe96DZVllb59AIFgc9u3b\nx9///d/z0Y9+lMsuu4x//ud/BvLa7POf//ycz/fYY4+Vu4klMTAwwG9/+9uS97/tttsYHByc8LcD\nBw5wzTXXlLtpggrgqHYDBHDWWWfxne98p7j9f/7P/+E3v/kNF154YRVbtXBs20aSpGo3Y1oKbfvU\npz5V5ZYIBAKAL3/5ywA89dRTHDx4cF7iqRRms0uFz2+66aYFnUcgECxdEokEn//857nnnntYtWoV\ntm3zmc98hieeeII1a9bMq3//8Ic/5KqrrqpAa2fmueee48CBA5x33nkl7X/DDTdM+Xdh02oD4bwt\nAcavk65pGsPDwwSDQSzL4uabb2ZwcJDh4WG2bNnCZz7zGW644QZUVaW/v59IJMK3vvUt3va2t/HY\nY4/xr//6rzQ3NzM6OgqAYRjccMMN9Pb2Yts2H/vYx7jkkku45ppr2LBhA/v27cPr9XL66afzxz/+\nkUQiwUMPPUQgECi26YYbbuB973sf73rXu/jDH/7A008/zW233caFF17IaaedxsGDB2lqauIHP/gB\nmUyGL3zhCyQSCVatWlU8xxtvvMGtt94KQH19Pd/85jd57bXXuPPOO3E6nVx++eV88IMfLO7/0ksv\ncfvtt6OqKm63m+9///tYlsVNN91EIpFgaGiIq666iiuuuGLWe3nmmWd45plnSKVSRKNRPv3pT3PB\nBRccc3/Dw8P8z//8D9lslt7eXj75yU/yoQ99iF27dnHLLbfg9/sJhUK4XC5uu+22iv0eBALBsXzz\nm9+ku7sbSZL44Ac/yFVXXcUXv/hFPB4P/f39aJrGJZdcwm9/+1vC4TA/+tGP6Ojo4Nvf/jbd3d2Y\npsnf/d3fcf755xdt7jPPPMNjjz3GD37wA/x+/zHX/MhHPsLtt9/Ov/3bvxEOh4lEIgwODnLjjTdy\n1llnFfd77LHH2LFjB3feeSd33XUXL7zwAqZpcumll/Lxj3980Z6RQCAonV//+tecddZZRa0iSVJR\nd7z00kvF/d71rnfxxz/+EchnNV155ZU0Nzdzww034HA4sG2b73znOzz11FNEo1FuueUWbrzxRr76\n1a9y6NAhLMvis5/9LJs3b+YDH/gAxx9/PE6nc0LQfteuXXzzm9/Etm1aW1u588476enp4Rvf+AYw\nUTfdf//9qKpKX18f73vf+/jkJz/JfffdRy6X4x3veAcPPfQQjY2NxONxfvSjH7F169YpNWBB13zh\nC18AoKmpqdie733vezz//PNYlsWFF17I3/3d31X8+xCUjkibXAI899xzXHvttbzvfe/jwx/+MBde\neCFnnnkmAwMDbNq0iQceeIAnn3ySn/70p8Vjurq6ePDBB7n66qt54oknGBkZYdu2bTz55JPcc889\n6LoOwBNPPEFjYyOPP/44Dz30EHfddRdjY2MAbNq0iYcffhhN0/B4PDz00EOsXbuW7du3l9Tuvr4+\nPvvZz/L4448zOjrKK6+8wuOPP8769et59NFHueKKK4r73nzzzXz1q19l27ZtnHPOOdx///1A3ln9\nyU9+MsFxg7youuSSS4rnicfjHDp0iPe///08+OCDPPjgg/z4xz8u7j/Vvaxbt654L9lslocffpgH\nH3yQ2267DdM0p7ynZDLJj370I+655x7uu+8+AL72ta9x++238/DDD09wSAUCweLwzDPPMDw8zL/8\ny7/wk5/8hKeeeoo333wTgNWrV/Pggw9y3HHHEQ6Huf/++znvvPP47W9/W3TkHnvsMR555BG+//3v\nk0wmAfiv//ovnnjiCe69994pHbfJeDwe7r//fr74xS/yyCOPAPnA249//GNeeeUV7rrrLhwOB08/\n/TR33XUXjz32WEnnFQgE1WFoaOiYd7rH48HhmH1c49lnn+WUU07h4Ycf5vrrryeRSHDddddRX1/P\nzTffzJNPPkkoFOLRRx/l7rvv5utf/zoAqVSKT3/60xMcN8hrpNtuu40nnniC97znPezfv5+vfOUr\nU+qmgYEB7r77bp544gnuv/9+ZFnmU5/6FO9///uLI28f+MAHeOihh3jyySen1ICFEbYf/ehHvP/9\n7+eRRx7hve99b7E9//Ef/8F3v/tdfvKTnxAMBuf/kAUVQYy8LQEKaZPRaJS//du/paurC4C6ujp2\n7drF888/j8/nKzpkAG9729sAaGtr46WXXuLQoUOsX7++aHROPvlkAN58803OPvtsAHw+H2vXri3O\n9SicIxgMsm7duuL/c7nctG0dP0oYCoVobW0FoL29nVwuR09PD+eeey4AGzduLLbnzTffLBovwzA4\n7rjjAFizZg0Ahw4dYuvWrUiSxF/+5V9y3XXX8cMf/pCPfvSjtLW1sWnTJhobG3nkkUf45S9/ic/n\nmzAvcKp7CQQCxXvZvHkzAI2NjdTV1RVHJidTOE/hfiBv4NeuXQvA6aefztNPPz3t8xEIBOXnwIED\nnH766QCoqsrGjRuLztuJJ54I5Pt7oe/X1dWhaRp79+7llVde4dprr8W2bSzLKs7zeO6550in0yiK\nUlIbxtsGTdOKf//Tn/6Ey+Uqbt9xxx3cfvvtjIyMlJzCJBAIFp+Ojg5279494W99fX3HzAUbT0ED\nXXbZZdx333184hOfIBgM8rnPfW7Cfnv37uXFF19k586d2LaNaZrFwHlB94wnEokU//7hD38YmF43\nrV+/HkmS8Hg8uN3uKdt5/PHHF88xnQa0bZuenh4uv/xyAE477TQef/xxAL797W9z5513EolEOOec\nc6Z9HoLqIEbelhD19fV8+9vfZuvWrQwPD/PUU09RV1fHt7/9bT7+8Y+TzWaL+07OSz7uuOPYt28f\nmqZhmiavvfYaAGvXruWFF14A8qNK+/btKzqHpeY2O51OhoeHAYrnnUzBoK1bt46XX365uG/BwTrh\nhBO444472LZtG1/4wheKokaW8z/B1atX8+ijj7Jt2zY+/OEP84tf/IIPf/jDbNu2jXXr1vH444/z\n4x//mFNPPZU77riDiy++eIIjOdu9vPrqq0DeQCaTSRobGyccP9N52tvbi0Jx586dM15HIBCUnxNO\n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\n3Fz/fEofRsjKY489xp5++mnJ515//XV2yy23MMYY43meXXfddezgwYNs06ZN7LHHHmOMMfb888+z\ne++9lw0NDbHLL7+c8TzPeJ5nn/vc59ju3bvZs88+y37xi18wxhgbGRlhV111FWOMsUsvvZS1t7cz\nxhjbuHEj+8tf/sL+9re/sVtvvZUFAgF24MAB9t5777EjR46wL37xiywcDrNQKMTWrVvHjh07xm66\n6Sb29ttvM8YYe/zxx9mmTZtixv7OO++wq666ioXDYTY2NsaWLFnCGGPstttuY3//+98ZY4y9/fbb\nbOPGjczn87Enn3ySMcZYOBxmV155JXM4HOyhhx5iW7ZsYYyxhOO49dZb2V//+lfGGGN/+MMf2Ojo\nKHvnnXfYhg0bpv08pa75jTfeYLfffjtjjLFAIMCuvvpq5vV62dq1a9mxY8fY/fffz5599lnGGGO7\ndu1iK1eujL7Xe++9xxhjbNOmTezFF19kO3fuZN/4xjcYY4wNDw+zyy67jIVCIbZy5UrmdDoZY4w9\n/fTT7Cc/+cm0MV588cXR9/qP//gPyb8HgigVnnjiCcm/8w0bNrDdu3dLOs7tdrNPf/rTbGJigjHG\n2He/+92ogwQOHz7MbrjhBubz+djJkyfZG2+8wRibur8+85nPsJMnTzLGGLv33nvZQw89lLXjMvHl\npk2b2Jtvvinp42AwyC699FLmcrkYY4w9+eSTrL+/n23atIm99dZbMeO/5pprWFdXF2OMsVdeeYXd\ncsstrKenh11wwQVsbGyMhUIhdumll7KhoaFcfj0EUVQI/5663W62atUqdvLkSfaLX/yC/f73v095\nT27fvp39/Oc/Z4wxdvToUXbOOecwxhhbs2YN++///m/GGGMPPfQQe/LJJ9k777zDPve5z7FgMMgm\nJibYFVdcwYaHhyXvy4MHD7LrrruOhUIhxhhjt9xyC3v99ddj5jU9PT3soosuYqOjoywcDrNPfvKT\nbHh4mN1yyy3stddeY4wx9uGHH7JrrrmGjYyMsFWrVrGxsTHGGGNbt25lzzzzDPv3f/939stf/pIx\nxlhHR0d0jiIwPDzMLr/8chYIBBhjjD3wwAPM7/dHnXLdddexI0eOMMYYe+GFF9i2bdtYb28ve+GF\nFxhjkXnRBRdcwBhjkl5mbMpPa9asYX/+858ZY4xt27aNPf744+zDDz9kN9xwA2OMsYmJCXb55Zez\n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\nWlpyHdKYRCIR1q5dy5e+9CW++MUv8uabb+Y6pDHr7u7msssu49ChQ7kOZcy0mJsuvfRSVq5cycqV\nK3niiSdyHY4mcp7f7+eOO+5g+fLl3HLLLXR2duYsFi3m0ddee401a9bk5L21mJt37drFihUrch3G\nuGkxPw1HC3liOFr8zsZp8fszVL60W/KhTfL000+zbNkyrr/+en75y1+O6rnjOudtLF588UWi0Sg/\n+9nP6OjoGHTeST7xer089thjmM3mXIcyJs8++yyLFi1i5cqVHDp0iDVr1rB9+/Zch5WW119/nVAo\nxPPPP8+uXbvYsGEDmzZtynVYo/bSSy9RVlbGY489htvt5gtf+AKXX355rsMatUgkwkMPPYTFYsl1\nKOOitdx09OhR5syZw49+9KOcxhGnlZz3wgsvMHfuXO644w5+9atf8cwzz/DAAw/kJBat5dH169fz\n1ltvcc455+Tk/bWWm7ds2cKLL76I3W7PWQyZorX8NByt5InhaO07m0xr359U8qHdkg9tkqamJnbu\n3Mnzzz9Pf3//qM96nPCRtz//+c9UV1dz22238eCDD/KpT31qokPIiAcffJDVq1dr+sNxOjfffDPL\nli0DBj7oWk20qbzzzjtccsklAMybN4/3338/xxGNzVVXXcWdd94JDPSqGgwT3peSEY8++ig33ngj\n1dXVuQ5lXLSWm95//306OjpYuXIlt912W857ELWS81atWsXXvvY1ANra2igpKclZLFrLoxdccAEP\nP/xwzt5fa7l52rRpbNy4MacxZIrW8tNwtJInhqO172wyrX1/UsmHdks+tEn+/Oc/M3PmTO644w6+\n9rWvjfr7nNXf+rZt29i6deugn5WXl2M2m9m8eTM7duzgvvvu47nnnstmGOOS6hrq6+u5+uqrmTVr\nFvlwTF6qa9iwYQNz586lq6uLtWvX5qzneiy8Xi8OhyNx22AwEIvFUJT8WsJptVqBgeu58847ufvu\nu3Mc0eht376diooKLr74Yv7jP/4j1+GkTWu5KVU8Dz30ELfddhuf/exneeedd/jGN77Btm3bchJL\nrnLe6XLXqlWr2Ldv36h7LLMRy0Tn0eFiueqqq2hqapqQGFLRWm5evHgxra2tOXnv8dBafkpFS3li\nOFr6zqZDa9+fVLTebsmXNklvby9tbW1s3ryZlpYWvva1r/Gb3/wm/RdQJ9jdd9+t/u53v0vcvvji\niyc6hHH7zGc+o3mM0UkAACAASURBVK5YsUJdvny5eu6556rLly/PdUhjsnv3bvWaa65R//SnP+U6\nlFHZsGGD+uqrryZuf/KTn8xdMOPU1tamXnfdder27dtzHcqYfOlLX1KXL1+uLl++XL3wwgvVpUuX\nqk6nM9dhjYnWcpPf71dDoVDi9qWXXpqzWLSa8w4cOKB++tOfzmkMWsujf/vb39TVq1fn5L21mJuP\nHTum3nDDDbkOY9y0lp9S0WqeGEpr39k4LX5/UtFyuyVf2iTf+9731GeffTZx+5/+6Z/U7u7utJ8/\n4eOdCxYs4I9//COLFy9m9+7d1NfXT3QI45Y81/zyyy+fsJ7fTNq/fz933XUXTz75JLNmzcp1OKNy\nwQUX8Pvf/54rr7yS5uZmZs6cmeuQxsTpdHLrrbfy4IMP8vGPfzzX4YxJcs/vihUr+OY3v0lFRUUO\nIxo7reWmp556itLSUr785S+ze/du6urqchaLlnLe008/TU1NDddeey02mw29Xp+zWPI5j2aDVnOz\nqoFRoPHSWn5KRUt5Yjha/s5q9fuTTOvtlnxpkyxYsICf/vSn/Mu//AsdHR0EAgHKysrSfv6EF29L\nly7l4Ycf5oYbbgDgkUcemegQMkqn0+Xl/xgef/xxQqEQ69evR1VViouL82ZtwOLFi3nrrbcS89Y3\nbNiQ44jGZvPmzXg8HjZt2sTGjRvR6XRs2bIFk8mU69DGRKfT5TqEcdFabvrqV7/KN77xDf74xz9i\nMBg08znPdc67/vrrWbduHdu2bUNV1Zz+XvI5j2aDVnNzvucm0F5+Gkmu88RwtPyd1er3J1k+tVu0\n/L2/7LLLePvtt1myZElil9HRxKtTtfjtEkIIIYQQQggxiHZWQQohhBBCCCGEGJYUb0IIIYQQQgiR\nB6R4E0IIIYQQQog8IMWbEEIIIYQQQuQBKd6EEEIIIYQQIg9I8SaEEEIIIYQQeUCKNyGEEEIIIYTI\nA1K8CSGEEEIIIUQekOJNCCGEEEIIIfKAFG9CCCEAaGpqYtGiRaxcuZIVK1awYsUK7rrrrlMe9/zz\nz/PUU0/hdDr55je/CcDbb7/N3r1703qfgwcPsmLFiozGPh6hUIj//u//HtdrPP3007z33nvD3r9i\nxQoOHTo06GdNTU2sXr16XO8rhBBicjHkOgAhhBDa8YlPfILvf//7aT22srKSBx98EIBf/vKXfO5z\nn2PmzJlpPVen0405xkzr7Oxk27ZtLF26dMyv8dWvfnVMz9PS70EIIYT2SfEmhBAiQVXVlD9/++23\n+c53vkNpaSmKojB//nxaW1tZvXo1Dz74IH/605/48MMPOfvss9m5cydbt25Fr9ezYMECVq9eTVdX\nF/fccw8wUPQN1draypo1a6irq+PIkSOcd955PPzww3i9Xu6//37cbjcA//Zv/8bZZ5/Nf/3Xf/G7\n3/2OQCBAWVkZTz31FP/zP//DL3/5S1RV5etf/zoul4uf/OQng+L4+9//zqOPPorRaMRisfDDH/6Q\nzZs3c+DAATZt2sQdd9yRiGnFihWcc8457Nu3D5/Pxw9+8APq6up47rnnePnll9HpdFx99dUsX76c\n++67j6uvvpqFCxeydu1aurq6qK2tZceOHfzpT38CSIxWBgKBRIF86NAhvvzlL+NyuVi2bBlLlizh\nww8/5Nvf/jZ6vR6z2cy3v/1totEoq1ev5he/+AUAN9xwA0888QTbt29n586d9Pf38+1vf5vvfe97\neL1eAoEAd999N4sWLcrch0MIIUTOSfEmhBAi4a9//SsrV65EVVV0Oh2XXXYZt9xyC4888ggbN25k\n6tSpPPzww4nH63Q65syZwyWXXMLVV1+N1WrlqaeeYvv27ZjNZtauXctf/vIX3njjDa655hqWLl3K\nK6+8wvPPP3/Kex8+fJhnn30Ws9nMpz/9abq7u3n22WdZtGgRy5Yt48iRI9x333387Gc/o7e3l61b\ntwJw6623JqYslpSUsHHjRtxuNzfddNMpcfz5z3/mqquuYtWqVbzxxht4PB5uv/129u3bN6hwi5s3\nbx73338/TzzxBC+//DKXX345r7zyCj//+c9RVZWbb76Ziy++OPH4X/ziFzQ2NvKDH/yAgwcP8vnP\nfz5x36c+9SmuueYannrqKX77299y7rnnEo1G2bx5M5FIhGuvvZbLL7+c//f//h/f+c53mDVrFm+8\n8Qbf+c53WLdu3aBRuuR/n3XWWdx///3s378fl8vFli1b6O7u5vDhw2P+HAghhNAmKd6EEEIkDDdt\nsqenh6lTpwJwwQUXcPTo0ZTPP3LkCD09PXzlK19BVVX6+/tpaWnh8OHDfPGLXwRgwYIFKYu3adOm\nYbVaAaiuriYYDLJ3717+9re/8corr6CqKh6PBwCTycTq1auxWq10dnYSiUQAmD59+mnjuP322/nR\nj37EqlWrqK2tZf78+USj0WF/H+eccw4AdXV1OJ1O9u7dS1tbG6tWrUJVVfr6+gb9Lg4cOMCll14K\nwJlnnklZWVnivo997GPAwMij0+kEBopDvV6PXq9nxowZtLa20tXVxaxZswBYuHAhjz/+ODB4VDQW\niyX+Hb/mGTNmcMMNN7B69WoikQgrV64c9rqEEELkJynehBBCJAw3bbKmpoaDBw9y5pln8t5771FS\nUjLofp1ORywWY8qUKdTV1fHss8+i1+v51a9+xTnnnMPBgwfZuXMns2bN4t133007jrPOOou5c+dy\n9dVX09PTw7Zt29izZw+vv/46L7zwAoFAgOuuuy7xeEUZ2IdruDheeuklrr/+etatW8fTTz/NL37x\nC6677rphC7iha9KmT5/O2WefzTPPPAPA1q1bmTVrFr/5zW8AmDlzJjt37uSKK67g6NGjuFyuYV8L\n4MMPPyQWixEIBDhw4ADTpk2jurqaPXv2MGvWLJqamjjjjDMwm8309PQkCsZjx44lXiN+zXv37sXn\n87F582a6urq48cYb+eQnPzni71oIIUT+kOJNCCFEwt/+9rfEiE186uSWLVt4+OGHWbt2LQ6HA7vd\nfkrxNm/ePL7//e/zxBNPcPPNN/OlL30pUcx97nOf4/bbb+eee+7hlVdeYcqUKSnfO9W0wNtuu40H\nHniA559/Hp/Px9e//nWmTZuGzWbjpptuQlVVqqur6ezsHPRa5eXlKeMIhUI88MADWK1W9Ho93/zm\nN6moqCASifD973+fNWvWpIwnbvbs2Xz84x/nxhtvJBQKMW/ePKqrqxP3L1myhHvvvZcVK1ZQV1eH\nyWQa9rUALBYLX/nKV/B4PHz961+nuLiYb33rW3zrW98CQK/Xs379eiorK1m0aBHXX389jY2NTJs2\n7ZTXOuOMM3jqqad49dVXUVWVO++8M+V7CiGEyF86dbhuViGEEEKMSnzzkIsvvpgjR47wla98hd/9\n7ne5DksIIUSBSOuct127dqU8k+fNN99kyZIlLFu2bNxn5AghRDZ0d3dz2WWXnXLGlhDZ0NjYyObN\nm7nxxhv5xje+wUMPPZTrkESOSNtJCJENI06b3LJlCy+++CJ2u33QzyORCN/97ncTO3ndeOONXHHF\nFZSXl2ctWCGEGI1IJMJDDz2ExWLJdShikqisrOQ///M/cx2GyDFpOwkhsmXEkbdp06axcePGU34e\n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\n5EIwlwnQdPugzWaE7GziOF/7rp2vET4REck+JW8iIlKwzkcCNJvELJ83wM73zcNFRGT2lLyJiIjM\nIJ8Ts9ko9PhFROQ0c+aHiIiIiIiISK5p5E1EilIwGOTOO+9kZGQEu93Oj3/8Y2pra3MdloiIiMhZ\n08ibiBSl3/3udzQ2NvLcc8/xhS98gSeffDLXIYmIiIicE428iUhRuvnmmzGMsf3OOjs7KStThT0p\nbNpsW0RElLyJSMHbvn07W7duTTvX2tpKY2MjN998M//5z394+umncxSdyNzQZtsiIqLkTUQKXktL\nCy0tLVNe27p1K0ePHuW2227jpZdeyvhaNTWlcx3enFOMc6PQYhxKhHG4HcljayKcF23IhxhERC4U\nSt5EpCg98cQTzJs3j2uvvRaXy4XFYpnV83p7fVmO7NzU1JQqxjlQiDEGzA5igb7kcbisOudtKJT3\nUUSkWCh5E5GitG7dOu655x62b9+OYRi0trbmOiSRc6LNtkVERMmbiBSlqqoqnnrqqVyHITJntNm2\niIhoqwAREREREZECoORNRERERESkACh5ExERERERKQBK3kRERERERAqAkjcREREREZECoORNRERE\nRESkACh5ExERERERKQBK3kRERERERAqAkjcREREREZECoORNRERERESkACh5ExERERERKQBK3kRE\nRERERAqAkjcREREREZECoORNRERERESkACh5ExERERERKQAZkzfDMLj//vvZsGEDmzZtoqOjI+36\nrl27aGlpYcOGDWzbti1rgYqInI0jR46wevVqIpFIrkMRkQuA+k0ikk0Zk7eXX36ZSCTC888/z513\n3klra2vyWiwW48c//jG//vWvaWtr47e//S0DAwNZDVhEZLb8fj8PPfQQDocj16GIyAVC/SYRyaaM\nydvevXtZu3YtAJdffjkHDhxIXjty5AiLFy/G4/Fgs9lYtWoVe/bsyV60IiJn4L777mPz5s04nc5c\nhyIiFwj1m0Qkm6yZHuD3+yktLT39BKuVRCKB2WyedM3tduPz+bITqYjINLZv387WrVvTztXX1/O5\nz32OSy+9FMMwchSZiFxo1G8SkWzKmLx5PB4CgUDyePwLaPya3+9PXgsEAni93ow3rakpzfiYfFcM\nbYDiaIfaIC0tLbS0tKSdu+aaa9i+fTvbtm2jr6+Pr371q7S1tWV8rUL4WSjGuaEY50YhxHg+ZaPf\nBMXxPqsN+aMY2lEMbTgbGadNXnHFFbz66qsAtLe3s2zZsuS1Sy65hOPHjzMyMkIkEmHPnj00NTVl\nL1oRkVl68cUXefbZZ2lra6O6upqnn3461yGJyAVA/SYRyaaMI2/Nzc3s3r2bDRs2ANDa2srOnTsJ\nBoOsX7+ee++9l1tvvRXDMFi/fj21tbVZD1pE5EyYTCZNnRSR80L9JhHJJpOhHo2IiIiIiEje0ybd\nIiIiIiIiBUDJm4iIiIiISAFQ8iYiIiIiIlIAspa8GYbB/fffz4YNG9i0aRMdHR1p13ft2kVLSwsb\nNmxg27Zt2QrjnGRqw86dO7n++uu58cYbeeCBB3ITZAaZ2jDuvvvu4+GHHz7P0c1Opja89dZb3HTT\nTdx0003ccccdRCKRHEU6s0zt+MMf/sCXvvQl1q9fz29+85scRTk7+/btY+PGjZPOF8LnejqJRIIt\nW7Zw44030tLSkqwWl4+OHDnC6tWr8/Lfut/v5xvf+AYbN25kw4YNtLe35zqkpNl+H+ZSLBbj7rvv\n5qabbuL6669n165duQ5pWv39/Vx11VUcO3Ys16FM6YknnmDDhg2sW7eOF154IdfhZFQM/SZQ3ylf\nFEPfSf2maRhZ8uc//9n4/ve/bxiGYbS3txu333578lo0GjWam5sNn89nRCIRY926dUZ/f3+2Qjlr\nM7UhFAoZzc3NRjgcNgzDMDZv3mzs2rUrJ3HOZKY2jPvNb35j3HDDDcZPf/rT8x3erGRqw7XXXmu8\n9957hmEYxrZt24xjx46d7xBnJVM7rrzySmNkZMSIRCJGc3OzMTIykoswM3ryySeNz3/+88YNN9yQ\ndr5QPtfT2bFjh/Hggw8ahmEYJ0+eNLZu3ZrjiKbm8/mMr3/968aaNWuS3z/55Oc//3nyvTt69Khx\n3XXX5Tii02bzfZhrL7zwgvGjH/3IMAzDGBoaMq666qocRzS1aDRqfOtb3zKuueYa4+jRo7kOZ5J/\n/vOfxje+8Q3DMAwjEAgYv/jFL3IcUWbF0G8yDPWd8kUx9J3Ub5pa1kbe9u7dy9q1awG4/PLLOXDg\nQPLakSNHWLx4MR6PB5vNxqpVq9izZ0+2QjlrM7XBbrfz/PPPY7fbgbG/ljocjpzEOZOZ2gDw5ptv\nsn///mRJ43w0UxuOHTtGeXk5zzzzDBs3bmR4eJiLLrooR5HOLNPPYvny5QwPDxMOh4Gx8vb5aPHi\nxTz66KOTzhfK53o6r732GrW1tdx2223cd999XH311bkOaUr33Xcfmzdvxul05jqUKd1yyy3J75N8\n+17M9BnMB5/5zGe44447gLHRYKs1444+OfGTn/yEL3/5y3lb5v61115j2bJlfPOb3+T222/P289z\nqmLoN4H6TvmiGPpO6jdNLWu/Ffx+P6Wlp3c+t1qtJBIJzGbzpGtutxufz5etUM7aTG0wmUxUVlYC\n0NbWRjAYZM2aNbkKdVoztaG3t5dHHnmExx57jD/+8Y85jHJmM7VhcHCQ9vZ27r//fhoaGrjtttto\nbGzkox/9aA4jntpM7QD4wAc+wLp163C5XDQ3N+PxeHIV6oyam5s5ceLEpPOF8rkG2L59O1u3bk07\nV1lZicPh4PHHH2fPnj3ce++9PPfcczmKcOoY6+vr+dznPsell16aF/vWTRVja2srjY2N9Pb2cvfd\nd/ODH/wgR9FNlukzmA9KSkqAsVjvuOMOvvvd7+Y4osl27NhBVVUVV155Jb/61a9yHc6UBgcH6ezs\n5PHHH6ejo4Pbb7+dP/3pT7kOa0bF0G8C9Z3yRTH0ndRvmlrWkjePx0MgEEgep77ZHo8Hv9+fvBYI\nBPB6vdkK5azN1AYYm4v70EMPcfz4cR555JFchJjRTG3405/+xNDQEF/72tfo7e0lHA5z8cUX88Uv\nfjFX4U5ppjaUl5ezaNEilixZAsDatWs5cOBA3n0BwczteOedd/jrX//Krl27cLlc3HXXXbz44otc\nc801uQr3jBXK5xqgpaWFlpaWtHObN29O/nX+Ix/5CO+++24OIjttqhivueYatm/fzrZt2+jr6+Or\nX/0qbW1tOYpw6hhh7N/zXXfdxT333MPq1atzENnUMn2n54uuri6+/e1v85WvfIXPfvazuQ5nkh07\ndmAymdi9ezeHDh3innvu4Ze//CVVVVW5Di2pvLycSy65BKvVypIlS3A4HAwMDCQTh3xUDP0mUN8p\nXxRD30n9pqll7bfWFVdckVzw397ezrJly5LXLrnkEo4fP87IyAiRSIQ9e/bQ1NSUrVDO2kxtAPjh\nD39INBrlscceS04ByDcztWHjxo288MILPPvss3z961/n85//fN59+cDMbWhoaGB0dDS5iHXv3r0s\nXbo0J3FmMlM7SktLKSkpwW63J/8yOTIykqtQZ2XiyE+hfK6ns2rVquTP59ChQ9TX1+c4oslefPFF\nnn32Wdra2qiurubpp5/OdUiTHD58mO985zv893//Nx/72MdyHU6aTN/p+WA8Kf/e977Hddddl+tw\npvTcc8/R1tZGW1sby5cv5yc/+UleJW4w9nn+29/+BkB3dzehUIiKioocRzWzYug3gfpO+aIY+k7q\nN00tayNvzc3N7N69OzkfuLW1lZ07dxIMBlm/fj333nsvt956K4ZhsH79+rycNz9TG1asWMGOHTtY\ntWoVGzduxGQysWnTJj71qU/lOOp0mX4OhSBTG7Zs2cLmzZsBWLlyJZ/4xCdyGe60MrVjvPqW3W5n\n0aJFedtxGzc+t7zQPtfTWb9+PQ888AA33HADAA8++GCOI5qZyWTKi6mTEz388MNEIhG2bNmCYRh4\nvd4p5/rnwlSfwXzz+OOPMzIywmOPPcajjz6KyWTiqaeeyttObr6uMbnqqqt44403aGlpSVasy9dY\nxxVDvwnUd8oXxdB3Ur9pmtcx8vG3v4iIiIiIiKTJv8n+IiIiIiIiMomSNxERERERkQKg5E1ERERE\nRKQAKHkTEREREREpAEreRERERERECoCSNxERERERkQKg5E1ERERERKQAKHkTEREREREpAP8fyjqO\nd9tlA7MAAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Initialise the figure\n", - "palette = sns.color_palette()\n", - "fs = 10 # fontsize\n", - "fig, axes = plt.subplots(nrows=4, ncols=3, figsize=(15,15))\n", - "\n", - "# Random under-sampling\n", - "axes[0, 0].scatter(usx_vis[usy == 0, 0], usx_vis[usy == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[0, 0].scatter(usx_vis[usy == 1, 0], usx_vis[usy == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[0, 0].set_title('Random under-sampling', fontsize=fs)\n", - "# Tomek links\n", - "axes[0, 1].scatter(tlx_vis[tly == 0, 0], tlx_vis[tly == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[0, 1].scatter(tlx_vis[tly == 1, 0], tlx_vis[tly == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[0, 1].set_title('Tomek links', fontsize=fs)\n", - "# Cluster centroids\n", - "axes[0, 2].scatter(ccx_vis[ccy == 0, 0], ccx_vis[ccy == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[0, 2].scatter(ccx_vis[ccy == 1, 0], ccx_vis[ccy == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[0, 2].set_title('Cluster centroids', fontsize=fs)\n", - "\n", - "# NearMiss-1\n", - "axes[1, 0].scatter(nm1x_vis[nm1y == 0, 0], nm1x_vis[nm1y == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[1, 0].scatter(nm1x_vis[nm1y == 1, 0], nm1x_vis[nm1y == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[1, 0].set_title('NearMiss-1', fontsize=fs)\n", - "# NearMiss-2\n", - "axes[1, 1].scatter(nm2x_vis[nm2y == 0, 0], nm2x_vis[nm2y == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[1, 1].scatter(nm2x_vis[nm2y == 1, 0], nm2x_vis[nm2y == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[1, 1].set_title('NearMiss-2', fontsize=fs)\n", - "# NearMiss-3\n", - "axes[1, 2].scatter(nm3x_vis[nm3y == 0, 0], nm3x_vis[nm3y == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[1, 2].scatter(nm3x_vis[nm3y == 1, 0], nm3x_vis[nm3y == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[1, 2].set_title('NearMiss-3', fontsize=fs)\n", - "\n", - "# Condensed nearest neighbour\n", - "axes[2, 0].scatter(cnnx_vis[cnny == 0, 0], cnnx_vis[cnny == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[2, 0].scatter(cnnx_vis[cnny == 1, 0], cnnx_vis[cnny == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[2, 0].set_title('Condensed nearest neighbour', fontsize=fs)\n", - "# One-sided selection\n", - "axes[2, 1].scatter(ossx_vis[ossy == 0, 0], ossx_vis[ossy == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[2, 1].scatter(ossx_vis[ossy == 1, 0], ossx_vis[ossy == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[2, 1].set_title('One-sided selection', fontsize=fs)\n", - "# Neighboorhood cleaning rule\n", - "axes[2, 2].scatter(ncrx_vis[ncry == 0, 0], ncrx_vis[ncry == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[2, 2].scatter(ncrx_vis[ncry == 1, 0], ncrx_vis[ncry == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[2, 2].set_title('Neighboorhood cleaning rule', fontsize=fs)\n", - "\n", - "# Edited nearest neighbours\n", - "axes[3, 1].scatter(ncrx_vis[ncry == 0, 0], ncrx_vis[ncry == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[3, 1].scatter(ncrx_vis[ncry == 1, 0], ncrx_vis[ncry == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[3, 1].set_title('Edited nearest neighbours', fontsize=fs)\n", - "\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "##### Over-sampling" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/lemaitre/anaconda/lib/python2.7/site-packages/sklearn/utils/class_weight.py:62: DeprecationWarning: The class_weight='auto' heuristic is deprecated in 0.17 in favor of a new heuristic class_weight='balanced'. 'auto' will be removed in 0.19\n", - " \" 0.19\", DeprecationWarning)\n" - ] - } - ], - "source": [ - "# Generate the new dataset using under-sampling method\n", - "verbose = False\n", - "ratio = 'auto'\n", - "# 'Random over-sampling'\n", - "OS = RandomOverSampler(ratio=ratio, verbose=verbose)\n", - "osx, osy = OS.fit_transform(x, y)\n", - "# 'SMOTE'\n", - "smote = SMOTE(ratio=ratio, verbose=verbose, kind='regular')\n", - "smox, smoy = smote.fit_transform(x, y)\n", - "# 'SMOTE bordeline 1'\n", - "bsmote1 = SMOTE(ratio=ratio, verbose=verbose, kind='borderline1')\n", - "bs1x, bs1y = bsmote1.fit_transform(x, y)\n", - "# 'SMOTE bordeline 2'\n", - "bsmote2 = SMOTE(ratio=ratio, verbose=verbose, kind='borderline2')\n", - "bs2x, bs2y = bsmote2.fit_transform(x, y)\n", - "# 'SMOTE SVM'\n", - "svm_args={'class_weight': 'auto'}\n", - "svmsmote = SMOTE(ratio=ratio, verbose=verbose, kind='svm', **svm_args)\n", - "svsx, svsy = svmsmote.fit_transform(x, y)\n", - "# 'SMOTE Tomek links'\n", - "STK = SMOTETomek(ratio=ratio, verbose=verbose)\n", - "stkx, stky = STK.fit_transform(x, y)\n", - "# 'SMOTE ENN'\n", - "SENN = SMOTEENN(ratio=ratio, verbose=verbose)\n", - "ennx, enny = SENN.fit_transform(x, y)\n", - "\n", - "# 'EasyEnsemble'\n", - "EE = EasyEnsemble(verbose=verbose)\n", - "eex, eey = EE.fit_transform(x, y)\n", - "# 'BalanceCascade'\n", - "BS = BalanceCascade(verbose=verbose)\n", - "bsx, bsy = BS.fit_transform(x, y)\n", - "\n", - "# Apply PCA to be able to visualise the results\n", - "osx_vis = pca.transform(osx)\n", - "smox_vis = pca.transform(smox)\n", - "bs1x_vis = pca.transform(bs1x)\n", - "bs2x_vis = pca.transform(bs2x)\n", - "svsx_vis = pca.transform(svsx)\n", - "stkx_vis = pca.transform(stkx)\n", - "ennx_vis = pca.transform(ennx)\n", - "\n", - "# Project each subset of the ensemble\n", - "eex_vis = []\n", - "for e in eex:\n", - " eex_vis.append(pca.transform(e))\n", - "bsx_vis = []\n", - "for e in bsx:\n", - " bsx_vis.append(pca.transform(e))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAANvCAYAAACoE/mFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XmcXHWd7//XOadOrV3V3dXp7vQGWUgIBEKCgCgzKiCI\n8Jt73Xd56B25wzDOcGHuVRYHrzwERGa8c72jMA6iggoMXkGv4simow5gAmSBhJCQtdP7Ul171Vl/\nf1SqUt3pfa3u/jz/olJddb5V3efNd/8qruu6CCGEEEIIIYRYcOpCF0AIIYQQQgghRIE00IQQQggh\nhBCiQkgDTQghhBBCCCEqhDTQhBBCCCGEEKJCSANNCCGEEEIIISqENNCEEEIIIYQQokJ4FroAArZu\n3cp/+2//jdNOOw2AVCrFKaecwt///d/j8Uz/V3TjjTfy8Y9/nPPPP3+2iroodXR0cOONN/Loo4/y\nt3/7t9x9990z+l6FEAvjO9/5Di+88AKWZaGqKl/4whd46KGHePbZZ3n++efRdR2A3bt388EPfpCH\nHnqI888/n/b2du655x6GhoawLIsNGzbw3//7fycYDPKZz3wG27Y5dOgQ0WiUmpoaLrroIhoaGvjm\nN79JW1sbruuiKArr16/nS1/60gJ/C0KIiYyWFRs3buSmm25asLwor4vMxO9//3uefPJJ7rrrrgl/\ndi7qP3fddRdr1qzhox/96IzeR4xPaqkV4m1vexv/8A//UHr8t3/7tzz33HNcfvnlC1iqpUNRFIBh\n37EQYvE4cOAAzz33HI888ggAe/fu5aabbuKMM86goaGB3/3ud1x66aUA/OIXv+CUU04BIJ/Pc911\n13HnnXdy9tlnA/DEE09w4403ct999/H9738fgJtvvpmrrrqKP/mTPwHg8ccf58/+7M+48cYb5/mT\nCiFmYqyseOKJJ1AUZUHzolgXmU+zVf8ZHBzki1/8IkeOHGHNmjWzUTQxDmmgVYjy88INw6Cvr49I\nJILjONx22210d3fT19fHJZdcwvXXX8/NN9+Mrut0dHTQ39/P1772Nc444wx+9KMf8ZOf/IT6+noG\nBwcBsCyLm2++mfb2dlzX5TOf+Qzvfe97+fSnP82GDRvYv38/wWCQ8847jz/84Q8kk0keeOABwuFw\nqUwdHR3ccsst2LaNoijceuutdHZ28vTTT5d6cT7wgQ9w//3388c//pEf/OAHaJrGW97yFm688Ub+\n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\nGl6vl7vuuovq6upJXUsIMTmlmG0Av/vd73jwwQdxXZd0Os3VV1/Nxz72MT784Q/z4IMPsmDBgtxz\nb7zxRq655hruvfde+vr6ePrpp3M/e+655/jrv/5rXnrpJZqammbmQxVCAKWZL0899RSPPfYYhmGw\na9culi9fDsA///M/U19fX7T3/oMf/IDm5mauuOKKUX/+uc99jjvvvJPXX3+duro6PvShD436vL/9\n27/lU5/6FO9///uLVjYxAa4oWbt27XKvvPLK3OMdO3a4f/qnf+q6ruveeuut7mWXXea+8MILuZ//\n0z/9k3vxxRe769evd1OplPsnf/In7tatW3M/f+KJJ9wbbrhh2D1uvfVW95VXXsk9fvzxx91/+Zd/\nGbdcbW1tw8o1WS+//LJ76623FvTcYt3TdV13zZo1bktLi+u6rvvzn//cveOOO4pyXSFEYUo121zX\ndS+88EI3Fou5ruu68Xjc/fCHP+z29fW59913n/tv//Zvuef19va6l156qeu6mUy57LLL3B07duR+\nftNNN7mrVq1yDx48WNBnIoQojlLOF9ctbn1mNHfffbf76KOPjvnzz33uc+6BAweOep2bb77ZXbdu\nXTGLJiZApjiWsLKyMjo7O3nsscfo6upi2bJlPProo7mfX3755fzqV78CwHVdtm/fzmmnnQbA//7v\n//K+970v9xjgE5/4BAMDAxw8eHDc+7que9Sy9fX1ceONN3LllVdy7733AplRrj/7sz/jmmuu4Zpr\nruGdd94B4I//+I/5whe+wD/90z+xe/durrrqKv7iL/6CRx55JHe93/zmN1x11VVcffXVfP/73wfg\n3//937nuuuv47Gc/SyqVyj131apVGIbBbbfdxre+9S2uu+46/vRP/5QdO3aMea18d999N0uXLgXA\nsix8Pt9R368QonhKOdvC4TA//vGP2bVrF8FgkKeffprq6mo++clP5soE8OSTT/LJT35y1DLHYjHS\n6TR1dXUFfBpCiGIq5XwZy5NPPskVV1zB1VdfzTe+8Q1s2+bRRx/lpptu4otf/CKf+tSneOKJJ/jS\nl77ERz/6UX73u98B8Otf/zpX3/nBD34w7Jr79u1j9erV7Nq1a9R7/uAHP+Cxxx7j1Vdf5YYbbuDG\nG2/k4x//OP/5n/857HmbN2/mqquuoquri9/85jd85jOf4XOf+xxf/epXJ/1+xdFJA62ENTQ0cN99\n9/Hmm29y1VVXcdlll/Hb3/429/PTTjuNvXv3kkqleO211zjvvPNyP2ttbR02FSdr/vz5tLe3j3vf\nX/3qV3z+85/nmmuu4fOf/zy//OUvj3hOMpnke9/7Ho888givvPIKLS0t3HnnnVx77bU89NBD3H77\n7Xz9618HoLOzk+9///vceuutfO973+Omm27igQce4MwzzwRgcHCQf//3f+fHP/4xDz/8MJ2dnaxb\ntw6Ak046iUceeQS/35+7t6IouT83Nzfzox/9iDVr1vCLX/xi1Gu9+uqrw8peW1sLwJtvvsnPfvYz\nrr322nE/DyFEcZVytj3wwAMkk0m+8pWv8IEPfIC1a9fmyrx48WI2bdoEwP/8z//w6U9/Gshk0qpV\nq3j55ZcBeOaZZ7jkkksm+KkIIYqhlPNlNJFIhPvuu4+HH36Yhx9+GL/fn2tQplIp7r//fq699loe\nffRR7rnnHr797W/z+OOPE4lE+I//+A9+8pOf8PDDD9Pa2srrr78OwO7du/nbv/1b7r77bk4++eSj\nlqGjo4N7772XRx55hPvvvz/392+88QZ33XUXa9eupaGhgaeffpobbriBn/3sZ3zwgx9kaGiooPco\nJk7WoJWwAwcOEAqF+O53vwvAtm3buP7663NhoigKF110ES+88ALr1q3jxhtvzI0YNTQ0sHXr1iOu\nuX//fhobG8e978c+9jG+8pWvjPucpUuXEgqFgEzY7du3j71793L22WcDsGzZMrq6ugCoqqoiHA4D\nsHfv3lzP1Hvf+1727NnD/v37iUQiXH/99biuSyKRoLW1FYBFixaNW473vOc9AMybN48333xz1Gsd\nOHDgiDnUTz/9NGvXruX++++nqqpq3HsIIYqrVLMtGo1y8OBBbr75Zm6++Wa6u7v5v//3/7JixQou\nvPBCVq9ezRNPPIGqqixcuHDY2lWfz8epp57Kpk2bePHFF7n77rv52c9+NuHPRggxNaWaL+OVd+nS\npbnZPGeffTZvvPEGS5cuzdVxwuEwJ510Uu7P6XSa/fv309fXxxe+8AVc1yUej+fqTi+//DKqqqJp\nWkFlyM4qCoVCw2YVrVu3jqGhodx1brvtNu6//37+67/+iyVLlvDRj350wu9XFEZG0ErYO++8w9//\n/d9jmiYACxcuJBwOo6qH/9kuv/xynnzySXp7e2lubs79/UUXXcSrr77KW2+9lfu7Rx99lOrq6mHP\n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\nsizjxhtvhBACsizjnnvuQWlpKV588UW8+eabUKlUuOCCC7B8+XLs378fd9xxB0wmEwwGAzIzM0Pe\n1+bNm/HMM89AkiTU1NTg/PPPx7XXXouGhgasXr0abrcbBoMBv/71r1FYWIhHHnkEO3fuRFtbG0pL\nS3H//ffjsccew/bt2+F0OnHfffdh06ZNPfrx/vvvY82aNZAkCQUFBXjkkUdQXl6OPXv24J///CcW\nL14c7FO495yeno5HHnkE27Ztg9frxZVXXonzzjsPZWVluPfee5GVlYVf/vKXkGUZ48aNwxdffIH3\n338fQgjcc889OHLkCFQqFR5//HEAwPbt2/G///u/cDgcuO6663D22Wdj48aN+NOf/gS9Xo/s7Gzc\nf//92LVrF15++eXgnfMzzzwTGzZswKpVq9DW1oaOjg48/fTTMJvNcf8bJEp2QogeX9uyZQsee+wx\nCCHgdDrx+9//HkVFRbj++utht9vhcrmC8ezVV1/Fn/70JwDAsmXL8Oc//xn5+fn9XgMAzjvvPJxy\nyimorq5GXl4eHn30URw6dAirVq2CVquFEAK///3vg3EsXCwpLS3Fvn37YDKZMGvWLGzYsAE2mw3P\nPvssgPBxI9Cf3mImEQ29rnGio6MDubm5YWORVntsiPzee+/h73//O7xeL1QqFR577DHs3bs37Bjp\n0KFDuPPOO6EoCoxGIx555BG43e5+Y8DLL7+M22+/HWq1f3HbmDFj8J///AeZmZnYt28fHnzwQfh8\nPrS1teGee+7BzJkzsWrVKhw5cgQulwsrVqzARRddhI8//jg4npkyZQruvffesP3PyMjA6tWrsX//\nfowZMwaKogBgvEoaggatvLxcPP/882G/9/HHH4tf/OIXQgghFEURl156qdizZ49YuXKlKC8vF0II\n8eqrr4q7775bWCwWsXDhQqEoilAURVx00UVi8+bN4qWXXhK/+93vhBBCtLW1iQsuuEAIIcT8+fNF\nRUWFEEKIm2++Wbz11lvik08+Eddff71wu93im2++EV999ZX49ttvxbJly4TP5xNer1esWLFCHDhw\nQFxzzTVi06ZNQgghnn76abFy5cqQvn/55ZfiggsuED6fTzidTnHqqacKIYS44YYbxKeffiqEEGLT\npk3i5ptvFna7XaxZs0YIIYTP5xOLFi0SjY2N4tFHHxX33XefEEL02o/rr79evPfee0IIIf7zn/8I\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Initialise the figure\n", - "palette = sns.color_palette()\n", - "fs = 10 # fontsize\n", - "fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15,15))\n", - "\n", - "# Random over-sampling\n", - "axes[0, 0].scatter(osx_vis[osy == 0, 0], osx_vis[osy == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[0, 0].scatter(osx_vis[osy == 1, 0], osx_vis[osy == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[0, 0].set_title('Random over-sampling', fontsize=fs)\n", - "# SMOTE\n", - "axes[0, 1].scatter(smox_vis[smoy == 0, 0], smox_vis[smoy == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[0, 1].scatter(smox_vis[smoy == 1, 0], smox_vis[smoy == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[0, 1].set_title('SMOTE', fontsize=fs)\n", - "# SMOTE borderline 1\n", - "axes[0, 2].scatter(bs1x_vis[bs1y == 0, 0], bs1x_vis[bs1y == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[0, 2].scatter(bs1x_vis[bs1y == 1, 0], bs1x_vis[bs1y == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[0, 2].set_title('SMOTE borderline 1', fontsize=fs)\n", - "\n", - "# SMOTE borderline 2\n", - "axes[1, 0].scatter(bs2x_vis[bs2y == 0, 0], bs2x_vis[bs2y == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[1, 0].scatter(bs2x_vis[bs2y == 1, 0], bs2x_vis[bs2y == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[1, 0].set_title('SMOTE borderline 2', fontsize=fs)\n", - "# SMOTE SVM\n", - "axes[1, 1].scatter(svsx_vis[svsy == 0, 0], svsx_vis[svsy == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[1, 1].scatter(svsx_vis[svsy == 1, 0], svsx_vis[svsy == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[1, 1].set_title('SMOTE SVM', fontsize=fs)\n", - "# SMOTE Tomek links\n", - "axes[1, 2].scatter(stkx_vis[stky == 0, 0], stkx_vis[stky == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[1, 2].scatter(stkx_vis[stky == 1, 0], stkx_vis[stky == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[1, 2].set_title('SMOTE Tomek links', fontsize=fs)\n", - "\n", - "# SMOTE ENN\n", - "axes[2, 0].scatter(ennx_vis[enny == 0, 0], ennx_vis[enny == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "axes[2, 0].scatter(ennx_vis[enny == 1, 0], ennx_vis[enny == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", - "axes[2, 0].set_title('Condensed nearest neighbour', fontsize=fs)\n", - "\n", - "# Easy-Ensemble\n", - "axes[2, 1].scatter(eex_vis[0][eey[0] == 0, 0], eex_vis[0][eey[0] == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "for iy, e in enumerate(eex_vis):\n", - " axes[2, 1].scatter(e[eey[iy] == 1, 0], e[eey[iy] == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=np.random.rand(3,), linewidth=0.15)\n", - "axes[2, 1].set_title('Easy-Ensemble', fontsize=fs)\n", - "# Balance-Cascade\n", - "axes[2, 2].scatter(bsx_vis[0][bsy[0] == 0, 0], bsx_vis[0][bsy[0] == 0, 1], label=\"Class #0\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", - "for iy, e in enumerate(bsx_vis):\n", - " axes[2, 2].scatter(e[bsy[iy] == 1, 0], e[bsy[iy] == 1, 1], label=\"Class #1\", alpha=0.5, \n", - " edgecolor=almost_black, facecolor=np.random.rand(3,), linewidth=0.15)\n", - "axes[2, 2].set_title('Balance-Cascade', fontsize=fs)\n", - "\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.11" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/example/under-sampling/plot_instance_hardness_threshold.py b/example/under-sampling/plot_instance_hardness_threshold.py deleted file mode 100644 index c1bd6ac10..000000000 --- a/example/under-sampling/plot_instance_hardness_threshold.py +++ /dev/null @@ -1,62 +0,0 @@ -""" -=========================== -Instance Hardness Threshold -=========================== - -An illustration of the instance hardness threshold method. - -""" - -print(__doc__) - -import matplotlib.pyplot as plt -import seaborn as sns -sns.set() - -# Define some color for the plotting -almost_black = '#262626' -palette = sns.color_palette() - -from sklearn.datasets import make_classification -from sklearn.decomposition import PCA -from sklearn.tree import DecisionTreeClassifier - -from unbalanced_dataset.under_sampling import InstanceHardnessThreshold - -# Generate the dataset -X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], - n_informative=3, n_redundant=1, flip_y=0, - n_features=20, n_clusters_per_class=1, - n_samples=5000, random_state=10) - -# Instanciate a PCA object for the sake of easy visualisation -pca = PCA(n_components=2) -# Fit and transform x to visualise inside a 2D feature space -X_vis = pca.fit_transform(X) - -# Two subplots, unpack the axes array immediately -f, axs = plt.subplots(2, 2) - -axs = [a for ax in axs for a in ax] -for ax, threshold in zip(axs, [0.0,0.25,0.5,0.75]): - if threshold == 0.0: - ax.scatter(X_vis[y == 0, 0], X_vis[y == 0, 1], label="Class #0", alpha=0.5, - edgecolor=almost_black, facecolor=palette[0], linewidth=0.15) - ax.scatter(X_vis[y == 1, 0], X_vis[y == 1, 1], label="Class #1", alpha=0.5, - edgecolor=almost_black, facecolor=palette[2], linewidth=0.15) - ax.set_title('Original set') - else: - estimator = DecisionTreeClassifier(max_depth=2) - iht = InstanceHardnessThreshold(estimator, threshold=threshold) - X_resampled, y_resampled = iht.fit_transform(X, y) - X_res_vis = pca.transform(X_resampled) - - ax.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], - label="Class #0", alpha=.5, edgecolor=almost_black, - facecolor=palette[0], linewidth=0.15) - ax.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], - label="Class #1", alpha=.5, edgecolor=almost_black, - facecolor=palette[2], linewidth=0.15) - ax.set_title('Instance Hardness Threshold ({})'.format(threshold)) - -plt.show() diff --git a/examples/README.txt b/examples/README.txt new file mode 100644 index 000000000..c455cc88f --- /dev/null +++ b/examples/README.txt @@ -0,0 +1,6 @@ +.. _general_examples: + +General examples +---------------- + +General-purpose and introductory examples for the `imbalanced-learn` toolbox. diff --git a/examples/combine/README.txt b/examples/combine/README.txt new file mode 100644 index 000000000..61a382279 --- /dev/null +++ b/examples/combine/README.txt @@ -0,0 +1,6 @@ +.. _combine_examples: + +Examples using combine class methods +==================================== + +Combine methods mixed over- and under-sampling methods. Generally SMOTE is used for over-sampling while some cleaning methods (i.e., ENN and Tomek links) are used to under-sample. diff --git a/example/combine/plot_smote_enn.py b/examples/combine/plot_smote_enn.py similarity index 90% rename from example/combine/plot_smote_enn.py rename to examples/combine/plot_smote_enn.py index 400410d7c..14b69649e 100644 --- a/example/combine/plot_smote_enn.py +++ b/examples/combine/plot_smote_enn.py @@ -3,7 +3,7 @@ SMOTE + ENN =========== -An illustration of the random SMOTE + ENN method. +An illustration of the SMOTE + ENN method. """ @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.combine import SMOTEENN +from imblearn.combine import SMOTEENN # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply SMOTE + ENN sm = SMOTEENN() -X_resampled, y_resampled = sm.fit_transform(X, y) +X_resampled, y_resampled = sm.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/combine/plot_smote_tomek.py b/examples/combine/plot_smote_tomek.py similarity index 90% rename from example/combine/plot_smote_tomek.py rename to examples/combine/plot_smote_tomek.py index 221d2f648..69438d81c 100644 --- a/example/combine/plot_smote_tomek.py +++ b/examples/combine/plot_smote_tomek.py @@ -3,7 +3,7 @@ SMOTE + Tomek ============= -An illustration of the random SMOTE + Tomek method. +An illustration of the SMOTE + Tomek method. """ @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.combine import SMOTETomek +from imblearn.combine import SMOTETomek # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply SMOTE + Tomek links sm = SMOTETomek() -X_resampled, y_resampled = sm.fit_transform(X, y) +X_resampled, y_resampled = sm.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/examples/datasets/plot_make_imbalance.py b/examples/datasets/plot_make_imbalance.py new file mode 100644 index 000000000..12271fa27 --- /dev/null +++ b/examples/datasets/plot_make_imbalance.py @@ -0,0 +1,54 @@ +""" +=========================== +make_imbalance function +=========================== + +An illustration of the make_imbalance function + +""" + +print(__doc__) + +import matplotlib.pyplot as plt +import seaborn as sns +sns.set() + +# Define some color for the plotting +almost_black = '#262626' +palette = sns.color_palette() + +from sklearn.datasets import make_moons +from imblearn.datasets import make_imbalance + + +# Generate the dataset +X, y = make_moons(n_samples=200, shuffle=True, noise=0.5, random_state=10) + +# Two subplots, unpack the axes array immediately +f, axs = plt.subplots(2, 3) + +axs = [a for ax in axs for a in ax] + +axs[0].scatter(X[y == 0, 0], X[y == 0, 1], label="Class #0", + alpha=0.5, edgecolor=almost_black, facecolor=palette[0], + linewidth=0.15) +axs[0].scatter(X[y == 1, 0], X[y == 1, 1], label="Class #1", + alpha=0.5, edgecolor=almost_black, facecolor=palette[2], + linewidth=0.15) +axs[0].set_title('Original set') + +ratios = [0.9, 0.75, 0.5, 0.25, 0.1] +for i, ratio in enumerate(ratios, start=1): + ax = axs[i] + + X_, y_ = make_imbalance(X, y, ratio=ratio, min_c_=1) + + ax.scatter(X_[y_ == 0, 0], X_[y_ == 0, 1], label="Class #0", + alpha=0.5, edgecolor=almost_black, facecolor=palette[0], + linewidth=0.15) + ax.scatter(X_[y_ == 1, 0], X_[y_ == 1, 1], label="Class #1", + alpha=0.5, edgecolor=almost_black, facecolor=palette[2], + linewidth=0.15) + ax.set_title('make_imbalance ratio ({})'.format(ratio)) + +plt.show() diff --git a/examples/ensemble/README.txt b/examples/ensemble/README.txt new file mode 100644 index 000000000..1de9b7f51 --- /dev/null +++ b/examples/ensemble/README.txt @@ -0,0 +1,8 @@ +.. _ensemble_examples: + +Example using ensemble class methods +==================================== + +Under-sampling methods implies that samples of the majority class are lost during the balancing procedure. +Ensemble methods offer an alternative to use most of the samples. +In fact, an ensemble of balanced sets is created and used to later train any classifier. diff --git a/example/ensemble/plot_balance_cascade.py b/examples/ensemble/plot_balance_cascade.py similarity index 90% rename from example/ensemble/plot_balance_cascade.py rename to examples/ensemble/plot_balance_cascade.py index 000ee6ac6..756f4460f 100644 --- a/example/ensemble/plot_balance_cascade.py +++ b/examples/ensemble/plot_balance_cascade.py @@ -3,7 +3,7 @@ Balance cascade =============== -An illustration of the balance cascade method. +An illustration of the balance cascade ensemble method. """ @@ -21,7 +21,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.ensemble import BalanceCascade +from imblearn.ensemble import BalanceCascade # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -34,9 +34,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Balance Cascade method bc = BalanceCascade() -X_resampled, y_resampled = bc.fit_transform(X, y) +X_resampled, y_resampled = bc.fit_sample(X, y) X_res_vis = [] for X_res in X_resampled: X_res_vis.append(pca.transform(X_res)) diff --git a/example/ensemble/plot_easy_ensemble.py b/examples/ensemble/plot_easy_ensemble.py similarity index 92% rename from example/ensemble/plot_easy_ensemble.py rename to examples/ensemble/plot_easy_ensemble.py index ba2b907e8..f2d36b507 100644 --- a/example/ensemble/plot_easy_ensemble.py +++ b/examples/ensemble/plot_easy_ensemble.py @@ -21,7 +21,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.ensemble import EasyEnsemble +from imblearn.ensemble import EasyEnsemble # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -34,9 +34,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Easy Ensemble ee = EasyEnsemble() -X_resampled, y_resampled = ee.fit_transform(X, y) +X_resampled, y_resampled = ee.fit_sample(X, y) X_res_vis = [] for X_res in X_resampled: X_res_vis.append(pca.transform(X_res)) diff --git a/examples/over-sampling/README.txt b/examples/over-sampling/README.txt new file mode 100644 index 000000000..9cf6fedb6 --- /dev/null +++ b/examples/over-sampling/README.txt @@ -0,0 +1,6 @@ +.. _over_sampling_examples: + +Example using over-sampling class methods +========================================= + +Data balancing can be performed by over-sampling such that new samples are generated in the minority class to reach a given balancing ratio. diff --git a/examples/over-sampling/plot_adasyn.py b/examples/over-sampling/plot_adasyn.py new file mode 100644 index 000000000..70360222d --- /dev/null +++ b/examples/over-sampling/plot_adasyn.py @@ -0,0 +1,59 @@ +""" +====== +ADASYN +====== + +An illustration of the Adaptive Synthetic Sampling Approach for Imbalanced +Learning ADASYN method. + +""" + +print(__doc__) + +import matplotlib.pyplot as plt +import seaborn as sns +sns.set() + +# Define some color for the plotting +almost_black = '#262626' +palette = sns.color_palette() + +from sklearn.datasets import make_classification +from sklearn.decomposition import PCA + +from imblearn.over_sampling import ADASYN + +# Generate the dataset +X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=10) + +# Instanciate a PCA object for the sake of easy visualisation +pca = PCA(n_components=2) +# Fit and transform x to visualise inside a 2D feature space +X_vis = pca.fit_transform(X) + +# Apply the random over-sampling +ada = ADASYN() +X_resampled, y_resampled = ada.fit_sample(X, y) +X_res_vis = pca.transform(X_resampled) + +# Two subplots, unpack the axes array immediately +f, (ax1, ax2) = plt.subplots(1, 2) + +ax1.scatter(X_vis[y == 0, 0], X_vis[y == 0, 1], label="Class #0", alpha=0.5, + edgecolor=almost_black, facecolor=palette[0], linewidth=0.15) +ax1.scatter(X_vis[y == 1, 0], X_vis[y == 1, 1], label="Class #1", alpha=0.5, + edgecolor=almost_black, facecolor=palette[2], linewidth=0.15) +ax1.set_title('Original set') + +ax2.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) +ax2.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) +ax2.set_title('ADASYN') + +plt.show() diff --git a/example/over-sampling/plot_random_over_sampling.py b/examples/over-sampling/plot_random_over_sampling.py similarity index 92% rename from example/over-sampling/plot_random_over_sampling.py rename to examples/over-sampling/plot_random_over_sampling.py index 59ea2a84e..eed901358 100644 --- a/example/over-sampling/plot_random_over_sampling.py +++ b/examples/over-sampling/plot_random_over_sampling.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.over_sampling import RandomOverSampler +from imblearn.over_sampling import RandomOverSampler # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply the random over-sampling ros = RandomOverSampler() -X_resampled, y_resampled = ros.fit_transform(X, y) +X_resampled, y_resampled = ros.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/over-sampling/plot_smote.py b/examples/over-sampling/plot_smote.py similarity index 92% rename from example/over-sampling/plot_smote.py rename to examples/over-sampling/plot_smote.py index 7a5dca8d6..5737c6df6 100644 --- a/example/over-sampling/plot_smote.py +++ b/examples/over-sampling/plot_smote.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.over_sampling import SMOTE +from imblearn.over_sampling import SMOTE # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply regular SMOTE sm = SMOTE(kind='regular') -X_resampled, y_resampled = sm.fit_transform(X, y) +X_resampled, y_resampled = sm.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/over-sampling/plot_smote_bordeline_1.py b/examples/over-sampling/plot_smote_bordeline_1.py similarity index 92% rename from example/over-sampling/plot_smote_bordeline_1.py rename to examples/over-sampling/plot_smote_bordeline_1.py index bcb059371..cfeae700b 100644 --- a/example/over-sampling/plot_smote_bordeline_1.py +++ b/examples/over-sampling/plot_smote_bordeline_1.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.over_sampling import SMOTE +from imblearn.over_sampling import SMOTE # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Borderline SMOTE 1 sm = SMOTE(kind='borderline1') -X_resampled, y_resampled = sm.fit_transform(X, y) +X_resampled, y_resampled = sm.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/over-sampling/plot_smote_bordeline_2.py b/examples/over-sampling/plot_smote_bordeline_2.py similarity index 92% rename from example/over-sampling/plot_smote_bordeline_2.py rename to examples/over-sampling/plot_smote_bordeline_2.py index b4ea7f235..c797dc0d3 100644 --- a/example/over-sampling/plot_smote_bordeline_2.py +++ b/examples/over-sampling/plot_smote_bordeline_2.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.over_sampling import SMOTE +from imblearn.over_sampling import SMOTE # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Borderline SMOTE 2 sm = SMOTE(kind='borderline2') -X_resampled, y_resampled = sm.fit_transform(X, y) +X_resampled, y_resampled = sm.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/over-sampling/plot_smote_svm.py b/examples/over-sampling/plot_smote_svm.py similarity index 92% rename from example/over-sampling/plot_smote_svm.py rename to examples/over-sampling/plot_smote_svm.py index 04db2a04a..2e4ed93a3 100644 --- a/example/over-sampling/plot_smote_svm.py +++ b/examples/over-sampling/plot_smote_svm.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.over_sampling import SMOTE +from imblearn.over_sampling import SMOTE # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply SMOTE SVM sm = SMOTE(kind='svm') -X_resampled, y_resampled = sm.fit_transform(X, y) +X_resampled, y_resampled = sm.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/examples/pipeline/README.txt b/examples/pipeline/README.txt new file mode 100644 index 000000000..a433e93d2 --- /dev/null +++ b/examples/pipeline/README.txt @@ -0,0 +1,6 @@ +.. _pipeline_examples: + +Pipeline examples +================= + +Example of how to use the a pipeline to include under-sampling with `scikit-learn` estimators. \ No newline at end of file diff --git a/examples/pipeline/plot_pipeline_classification.py b/examples/pipeline/plot_pipeline_classification.py new file mode 100644 index 000000000..eabbea77e --- /dev/null +++ b/examples/pipeline/plot_pipeline_classification.py @@ -0,0 +1,50 @@ +""" + +========================= +Pipeline Object +========================= + +An example of the Pipeline object working with transformers and resamplers. + +""" + +print(__doc__) + +from sklearn.cross_validation import train_test_split as tts +from sklearn.datasets import make_classification +from sklearn.decomposition import PCA +from sklearn.neighbors import KNeighborsClassifier as KNN +from sklearn.metrics import classification_report + + +from imblearn.pipeline import make_pipeline +from imblearn.under_sampling import EditedNearestNeighbours +from imblearn.under_sampling import RepeatedEditedNearestNeighbours + +# Generate the dataset +X, y = make_classification(n_classes=2, class_sep=1.25, weights=[0.3, 0.7], + n_informative=3, n_redundant=1, flip_y=0, + n_features=5, n_clusters_per_class=1, + n_samples=5000, random_state=10) + +# Instanciate a PCA object for the sake of easy visualisation +pca = PCA(n_components=2) + +# Create the samplers +enn = EditedNearestNeighbours() +renn = RepeatedEditedNearestNeighbours() + +# Create teh classifier +knn = KNN(1) + + +# Make the splits +X_train, X_test, y_train, y_test = tts(X, y, random_state=42) + +# Add one transformers and two samplers in the pipeline object +pipeline = make_pipeline(pca, enn, renn, knn) + +pipeline.fit(X_train, y_train) +y_hat = pipeline.predict(X_test) + +print(classification_report(y_test, y_hat)) diff --git a/examples/plot_unbalanced_dataset.ipynb b/examples/plot_unbalanced_dataset.ipynb new file mode 100644 index 000000000..578b93e37 --- /dev/null +++ b/examples/plot_unbalanced_dataset.ipynb @@ -0,0 +1,551 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# UnbalancedDataset\n", + "\n", + "### A python toolbox to tackle the problem of imbalanced dataset\n", + "\n", + "F. Nogueira - G. Lemaitre - D. Oliveira\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/lemaitre/anaconda/lib/python2.7/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", + " warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n" + ] + } + ], + "source": [ + "%matplotlib inline\n", + "\n", + "import matplotlib as mpl\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "sns.set()\n", + "\n", + "import numpy as np\n", + "import itertools\n", + "\n", + "from sklearn.datasets import make_classification\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.svm import SVC\n", + "\n", + "from imblearn.under_sampling import RandomUnderSampler\n", + "from imblearn.under_sampling import NearMiss\n", + "from imblearn.under_sampling import CondensedNearestNeighbour\n", + "from imblearn.under_sampling import OneSidedSelection\n", + "from imblearn.under_sampling import NeighbourhoodCleaningRule\n", + "from imblearn.under_sampling import TomekLinks\n", + "from imblearn.under_sampling import ClusterCentroids\n", + "from imblearn.under_sampling import EditedNearestNeighbours\n", + "from imblearn.under_sampling import InstanceHardnessThreshold\n", + "from imblearn.under_sampling import RepeatedEditedNearestNeighbours\n", + "from imblearn.under_sampling import AllKNN\n", + "\n", + "from imblearn.over_sampling import RandomOverSampler\n", + "from imblearn.over_sampling import SMOTE\n", + "\n", + "from imblearn.combine import SMOTETomek\n", + "from imblearn.combine import SMOTEENN\n", + "\n", + "from imblearn.ensemble import EasyEnsemble\n", + "from imblearn.ensemble import BalanceCascade\n", + "\n", + "# Save a nice dark grey as a variable\n", + "almost_black = '#262626'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Background\n", + "\n", + "UnbalancedDataset is a python module offering a number of resampling techniques commonly used in datasets showing strong between-class imbalance.\n", + "\n", + "Most classification algorithms will only perform optimally when the number of samples of each class is roughly the same. Highly skewed datasets, where the minority heavily outnumbered by one or more classes, haven proven to be a challenge while at the same time becoming more and more common.\n", + "\n", + "One way of addresing this issue is by resampling the dataset as to offset this imbalance with the hope of arriving and a more robust and fair decision boundary than you would otherwise.\n", + "\n", + "Resampling techniques are divided in three categories: (i) Under-sampling the majority class(es), (ii) Over-sampling the minority class and (ii) Ensemble sampling.\n", + "\n", + "Bellow is a list of the methods currently implemented in this module.\n", + "\n", + "* Under-sampling\n", + " 1. Random majority under-sampling with replacement\n", + " 2. Extraction of majority-minority Tomek links\n", + " 3. Under-sampling with Cluster Centroids\n", + " 4. NearMiss-(1 & 2 & 3)\n", + " 5. Condensend Nearest Neighbour\n", + " 6. One-Sided Selection\n", + " 7. Neighboorhood Cleaning Rule\n", + " 8. Edited Nearest Neighbours\n", + " 9. Instance Hardness Threshold\n", + " 10. Repeated Edited Nearest Neighbors\n", + " 11. AllKNN\n", + "\n", + "* Over-sampling\n", + " 1. Random minority over-sampling with replacement\n", + " 2. SMOTE - Synthetic Minority Over-sampling Technique\n", + " 3. bSMOTE(1&2) - Borderline SMOTE of types 1 and 2\n", + " 4. SVM_SMOTE - Support Vectors SMOTE\n", + "\n", + "* Over-sampling follow by under-sampling\n", + " 1. SMOTE + Tomek links\n", + " 2. SMOTE + ENN\n", + "\n", + "* Ensemble sampling\n", + " 1. EasyEnsemble\n", + " 2. BalanceCascade\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Data generation" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Generate some data\n", + "x, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9],\n", + " n_informative=3, n_redundant=1, flip_y=0,\n", + " n_features=20, n_clusters_per_class=1,\n", + " n_samples=1000, random_state=10)\n", + "\n", + "# Instanciate a PCA object for the sake of easy visualisation\n", + "pca = PCA(n_components=2)\n", + "\n", + "# Fit and transform x to visualise inside a 2D feature space\n", + "x_vis = pca.fit_transform(x)\n", + "\n", + "# Plot the original data\n", + "# Plot the two classes\n", + "palette = sns.color_palette()\n", + "plt.scatter(x_vis[y == 0, 0], x_vis[y == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "plt.scatter(x_vis[y == 1, 0], x_vis[y == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Under-sampling:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The different under-sampling methods will be applied and a new dataset will be generated for each of them." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/lemaitre/anaconda/lib/python2.7/site-packages/imbalanced_learn-0.2.0.dev0-py2.7.egg/imblearn/under_sampling/nearmiss.py:178: UserWarning: The number of the samples to be selected is larger than the number of samples available. The balancing ratio cannot be ensure and all samples will be returned.\n", + " warnings.warn('The number of the samples to be selected is larger than'\n" + ] + } + ], + "source": [ + "# Generate the new dataset using under-sampling method\n", + "verbose = False\n", + "# 'Random under-sampling'\n", + "US = RandomUnderSampler()\n", + "usx, usy = US.fit_sample(x, y)\n", + "# 'Tomek links'\n", + "TL = TomekLinks()\n", + "tlx, tly = TL.fit_sample(x, y)\n", + "# 'Clustering centroids'\n", + "CC = ClusterCentroids()\n", + "ccx, ccy = CC.fit_sample(x, y)\n", + "# 'NearMiss-1'\n", + "NM1 = NearMiss(version=1)\n", + "nm1x, nm1y = NM1.fit_sample(x, y)\n", + "# 'NearMiss-2'\n", + "NM2 = NearMiss(version=2)\n", + "nm2x, nm2y = NM2.fit_sample(x, y)\n", + "# 'NearMiss-3'\n", + "NM3 = NearMiss(version=3)\n", + "nm3x, nm3y = NM3.fit_sample(x, y)\n", + "# 'Condensed Nearest Neighbour'\n", + "CNN = CondensedNearestNeighbour(size_ngh=51, n_seeds_S=51)\n", + "cnnx, cnny = CNN.fit_sample(x, y)\n", + "# 'One-Sided Selection'\n", + "OSS = OneSidedSelection(size_ngh=51, n_seeds_S=51)\n", + "ossx, ossy = OSS.fit_sample(x, y)\n", + "# 'Neighboorhood Cleaning Rule'\n", + "NCR = NeighbourhoodCleaningRule(size_ngh=51)\n", + "ncrx, ncry = NCR.fit_sample(x, y) \n", + "# 'Edited Neareast Neighbour'\n", + "ENN = EditedNearestNeighbours(size_ngh=51)\n", + "ennx, enny = ENN.fit_sample(x, y)\n", + "# 'Instance Hardness Threshold'\n", + "IHT = InstanceHardnessThreshold()\n", + "ihtx, ihty = IHT.fit_sample(x, y)\n", + "# 'Repeated Edited Nearest Neighbour'\n", + "RENN = RepeatedEditedNearestNeighbours(size_ngh=51)\n", + "rennx, renny = RENN.fit_sample(x, y)\n", + "# 'AllKNN'\n", + "ALLK = AllKNN(size_ngh=51)\n", + "allkx, allky = ALLK.fit_sample(x, y)\n", + "\n", + "# Apply PCA to be able to visualise the results\n", + "usx_vis = pca.transform(usx)\n", + "tlx_vis = pca.transform(tlx)\n", + "ccx_vis = pca.transform(ccx)\n", + "nm1x_vis = pca.transform(nm1x)\n", + "nm2x_vis = pca.transform(nm2x)\n", + "nm3x_vis = pca.transform(nm3x)\n", + "cnnx_vis = pca.transform(cnnx)\n", + "ossx_vis = pca.transform(ossx)\n", + "ncrx_vis = pca.transform(ncrx)\n", + "ennx_vis = pca.transform(ennx)\n", + "ihtx_vis = pca.transform(ihtx)\n", + "rennx_vis = pca.transform(rennx)\n", + "allkx_vis = pca.transform(allkx)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nW7fCarXi4YcfxqJFi4p2vVLFtG3btiFZEH1wcBAul6uo1yt1LPzYxz6GDRs24Mc//nFRXr/U8fO8\n887Drl27SnLvljLuXnvttanB4MDAQN7/DlVv2b59+/DSSy9N+VldXR04jsOePXvQ1dWFRx55BK+8\n8oral1ZVtvfR1taGG2+8EcuWLYMeTkPI9h6efPJJrFy5EqOjo3jwwQeLmmVSWygUgsPhSD02Go2Q\nZRksq5+tmFarFUDivezYsQP33ntvmVuUv/3796O+vh7r16/Hv/3bv5W7OXnRQ3zSQ+zRW2zRQ+zQ\nQ2zQw70/MTGBwcFB7NmzB319ffjKV76CX//61+Vu1pxKHZuyXe/xxx/H3XffjU9+8pM4dOgQvva1\nr2Hfvn1FuVaxYtpssWnbtm04ceKEqrOupYyFM13r+uuvx8GDB1W5Rjaljp8bNmzAwMBAUV47U6nj\nLsuyePjhh/Hmm2/iO9/5Tn5PVkrg3nvvVX7zm9+kHq9fv74Ul1Xdddddp2zZskXZvHmzctFFFymb\nN28ud5MK0tPTo3z6059Wfv/735e7KXl58sknlV/96lepx3/7t39bvsbMw+DgoPK5z31O2b9/f7mb\nUpDbb79d2bx5s7J582Zl9erVyi233KJ4vd5yN6tgeohPeok9Wo0teokdWo8Nerj3n3nmGeXFF19M\nPf7MZz6jjI2Nla9B81Dq2BSNRhWe51OPr7jiiqJdq1wx7dSpU8q1115b9OuUOhb+6U9/Uu67776i\nvHY54md/f7/yhS98oejXUZTyxF2v16tcddVVSjQazfk5JVlzcemll+J3v/sdNmzYgJ6eHrS1tZXi\nsqpLXz9+9dVX63Jt/MmTJ/HVr34Vzz33HJYtW1bu5uTlYx/7GP77v/8bn/rUp9Dd3Y2lS5eWu0l5\n83q9uPPOO/HYY49h3bp15W5OQdIzvFu2bME3v/lN1NfXl7FF86OH+KSH2KPl2KKH2KGH2KCHe//S\nSy/Fyy+/jH/4h3+Ax+NBLBaD2+0ud7MKUurY9L3vfQ+1tbX40pe+hJ6eHrS2thbtWqWMac8//zya\nm5vx2c9+FjabDQaDoWjXArQdCwtRrviplGA1SSnj7oEDB+DxeHDXXXeB4ziwLJvXLGVJBmy33HIL\n/s//+T/4whe+AAD4xje+UYrLFhXDMJpYmpSvZ599FjzP44knnoCiKHA6ndi1a1e5m5WTDRs24O23\n38amTZsAJJYC6M2ePXsQCASwe/du7Nq1CwzDYO/evan17nrDMEy5mzBveotPWo09Wo4teogdeosN\nWr33r7zySvz5z3/Gxo0bU9XttNrWuZQ6Nt1111342te+ht/97ncwGo0lu0+KHdM+//nP46GHHsK+\nffugKErR35eWY2EhyhU/S3HfljLuXnfddXjkkUewefNmiKKInTt35nUdRtHiNz8hhBBCCCGEEDo4\nmxBCCCGEEEK0igZshBBCCCGEEKJRNGAjhBBCCCGEEI2iARshhBBCCCGEaBQN2AghhBBCCCFEo2jA\nRgghhBBCCCEaRQM2QgghhBBCCNEoGrARQgghhBBCiEbRgK3KHDx4EKtXr4bH40n97F//9V/xs5/9\nrODX/O53v4sLL7wQo6OjqZ+Nj49j5cqV+NnPfoaenh7s3r17Xu0GgCNHjmDLli3zfh1CiPboMTaJ\noogHH3wQt99+O2699Va89dZbBb8WIUS79BifZFnGo48+ittuuw233347Tp48WfBrkfKjAVsVMpvN\neOSRR1R7PYZhsGjRIvzqV79K/ewXv/gF2traAADLly/H9u3b53WNvXv34utf/zoEQZjX6xBCtEtv\nsen111+H2+3GD3/4Q7zwwgv453/+53m3mRCiTXqLT2+99RYYhsGrr76KHTt24Nlnn513m0n50ICt\nCq1btw4ulws//OEPp/z8lVdewaZNm3DbbbfhlVdeAQCcOHECd955J+644w7cfPPN6O7uBgBcddVV\n+NKXvoSnnnoKAHD99ddPCTr/8z//g6uuugpAIjN13333AQAeeeQRbN68GRs3bsTrr78OAPj2t7+N\nTZs24dZbb8XevXuztvm8887Drl27VPwUCCFao7fYdP3112PHjh0AEtlso9Go5sdBCNEQvcWna6+9\nNpVEGhgYgMvlUvPjICVG3y5ViGEYPP7447jllltw+eWXAwAikQh++ctf4tVXX4WiKLjjjjvwN3/z\nNzhx4gQefvhhXHDBBfj5z3+O/fv3o7OzE8PDwzhw4ACcTie+973voaGhATabDf39/ZBlGa2treA4\nbso1w+EwDh06hB//+McAgHfeeQcA8POf/xwvv/wyGhoaZlxesGHDBgwMDBT5kyGElJPeYpPVagUA\nhEIh7NixA/fee2+xPyJCSJnoLT4BAMuyePjhh/Hmm2/iO9/5TpE/IVJMNGCrUi6XC4888ggeeugh\n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\nip0kbiqNxE7ltZRjp3kf6z8Xe/fuJZ1O88Mf/pCBgQF+/etfL8RlSxKNRrnvvvuw2WzVbsqUvv/9\n73PJJZdw0003ceLECW699Vb27NlT7Wbx9NNPo+s6P/7xjzl48CC7du3ioYceqnazxnnyySepr6/n\nvvvuIxQK8d73vpcrrrii2s2aJJVK8eUvfxm73V7tpkxp3759vPjii/z4xz9mdHSU733ve9Vu0rws\nZP906tQpNm7cyL/+679W7BoTLVSf9sQTT7Bp0yZuueUW/uM//oNHHnmEu+++uyLXqkY/eO+99/Lc\nc8/xxje+sSKvv9B96KOPPsrevXtxuVwVuwYsfL/7zDPPoCgKP/rRj9i3bx/3339/zf1bNFeLJXaS\nuKl0EjuVz1KPnRYkYfvDH/7A2WefzSc+8QkAvvjFLy7EZUvypS99ic997nPccsst1W7KlD784Q9j\ntVqB7B9nrXSQL7zwAm95y1sAOP/88zl8+HCVWzTZO97xDq6++mogO3JpNi/In3/Rvv71r3PDDTfw\n8MMPV7spU/rDH/7AOeecwy233EIsFuP222+vdpPmZSH7p8OHDzMwMMBNN92Ew+HgzjvvZO3atRW7\nHixcn3bzzTfn60r19vbi8/kqdq1q9IMXXngh27dv5yc/+UlFXn+h+9DVq1fz4IMPVvz7u9D97tvf\n/vZ8MNnT01PRv8NKWyyxk8RNpZPYqXyWeuxU9k999+7dPPbYY+N+1tDQgM1m4+GHH2b//v3cdddd\n/OAHPyj3pYsyVTs7Ojp45zvfyfr162uioOVUbdy1axebNm1iaGiI22+/vWIj2MWKRqN4PJ78bbPZ\nTCaTQVVrZ5ukw+EAsm399Kc/zWc/+9kqt2iyPXv20NjYyKWXXsq3v/3tajdnSsFgkN7eXh5++GG6\nu7v51Kc+xa9+9atqN2tOFrJ/mupaX/7yl/nEJz7BVVddxQsvvMDnP/95du/ePe9rTXe9SvVpM/VN\nN998M6+++mrZZl4Xuh+c7nrveMc72LdvX9muM9FC96Hbt2+np6enIq9dqBr9rqqq3HnnnTz99NN8\n85vfrPj1ymExxE4SN5WfxE7lsSxiJ2MBfPaznzX+53/+J3/70ksvXYjLFu3KK680brzxRmPnzp3G\nm970JmPnzp3VbtKUurq6jHe9613G//7v/1a7KXm7du0yfvnLX+Zv/+3f/m31GjOD3t5e433ve5+x\nZ8+eajdlSh/84AeNnTt3Gjt37jS2bt1qXHvttcbw8HC1mzXON77xDeP73/9+/vbf//3fG36/v3oN\nmqeF7J/i8bih63r+9mWXXVaxaxlG9fq01157zXj7299e0WtUox/885//bHzuc5+ryGtXow89ffq0\ncd1111X8OtXqd4eHh423vvWtRjweX9DrlstiiJ0kbpofiZ3KYznETgsyr7llyxaeffZZtm/fTldX\nFx0dHQtx2aIVrg+/4ooranJvzrFjx/jMZz7DAw88wPr166vdnLwLL7yQ3/72t1x99dUcOHCAc845\np9pNmmR4eJiPfvSjfOlLX+Liiy+udnOmVDh6euONN/LVr36VxsbGKrZosi1btvD444/zoQ99iIGB\nARKJBPX19dVuVskWsn/61re+RV1dHR/72Mfo6uqivb29YteChe3TvvOd79Da2sp73vMenE4nJpOp\nYteq1X5wPqrVhxoVnhVZ6H537969DAwM8PGPfxybzYaqqjU1W1GMxRA7Sdw0PxI7lcdyiJ0WJGG7\n9tprueeee7juuusA+MpXvrIQl50XRVFqYnp/ovvvvx9d17n33nsxDAOv18uDDz5Y7Waxfft2nnvu\nOa6//noguwSh1jz88MOEw2EeeughHnzwQRRF4dFHH82vba81iqJUuwlTuvzyy3n++efZsWNH/oSr\nWm3rXCxk//Txj3+cz3/+8zz77LOYzeYF/Z5Uuk+75ppruOOOO9i9ezeGYVT0vdVqPzgf1epDK/3d\nXeh+98orr+Suu+5i586dpFIp7r777prt42ez2GIniZuKJ7FT+dVqPDLf2EkxavHbJYQQQgghhBBC\nCmcLIYQQQgghRK2ShE0IIYQQQgghapQkbEIIIYQQQghRoyRhE0IIIYQQQogaJQmbEEIIIYQQQtQo\nSdiEEEIIIYQQokZJwiaEEEIIIYQQNUoSNjGjRx55hL/5m79B13UgW0H+xIkTfOtb3+InP/kJPT09\n+aKeAM8//zxXXXUVR48e5Vvf+hbXXnstmUwmf/91111Hb28v+/btY+vWrQwMDOTv++d//md+/vOf\nL9ybE0IIIYQQosZJwiZm9J//+Z+8613v4r/+67+AqSvI53725z//mXvuuYdHHnmE9evXA9Db28u3\nv/3tSY8FsFqt3HXXXZVsvhBCCCGEEIuaJGxiWvv27WP16tVcf/31/PCHPwTAMIxJjzMMgz/96U98\n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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Initialise the figure\n", + "palette = sns.color_palette()\n", + "fs = 10 # fontsize\n", + "fig, axes = plt.subplots(nrows=5, ncols=3, figsize=(15,18))\n", + "\n", + "# Random under-sampling\n", + "axes[0, 0].scatter(usx_vis[usy == 0, 0], usx_vis[usy == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[0, 0].scatter(usx_vis[usy == 1, 0], usx_vis[usy == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[0, 0].set_title('Random under-sampling', fontsize=fs)\n", + "# Tomek links\n", + "axes[0, 1].scatter(tlx_vis[tly == 0, 0], tlx_vis[tly == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[0, 1].scatter(tlx_vis[tly == 1, 0], tlx_vis[tly == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[0, 1].set_title('Tomek links', fontsize=fs)\n", + "# Cluster centroids\n", + "axes[0, 2].scatter(ccx_vis[ccy == 0, 0], ccx_vis[ccy == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[0, 2].scatter(ccx_vis[ccy == 1, 0], ccx_vis[ccy == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[0, 2].set_title('Cluster centroids', fontsize=fs)\n", + "\n", + "# NearMiss-1\n", + "axes[1, 0].scatter(nm1x_vis[nm1y == 0, 0], nm1x_vis[nm1y == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[1, 0].scatter(nm1x_vis[nm1y == 1, 0], nm1x_vis[nm1y == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[1, 0].set_title('NearMiss-1', fontsize=fs)\n", + "# NearMiss-2\n", + "axes[1, 1].scatter(nm2x_vis[nm2y == 0, 0], nm2x_vis[nm2y == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[1, 1].scatter(nm2x_vis[nm2y == 1, 0], nm2x_vis[nm2y == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[1, 1].set_title('NearMiss-2', fontsize=fs)\n", + "# NearMiss-3\n", + "axes[1, 2].scatter(nm3x_vis[nm3y == 0, 0], nm3x_vis[nm3y == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[1, 2].scatter(nm3x_vis[nm3y == 1, 0], nm3x_vis[nm3y == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[1, 2].set_title('NearMiss-3', fontsize=fs)\n", + "\n", + "# Condensed nearest neighbour\n", + "axes[2, 0].scatter(cnnx_vis[cnny == 0, 0], cnnx_vis[cnny == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[2, 0].scatter(cnnx_vis[cnny == 1, 0], cnnx_vis[cnny == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[2, 0].set_title('Condensed nearest neighbour', fontsize=fs)\n", + "# One-sided selection\n", + "axes[2, 1].scatter(ossx_vis[ossy == 0, 0], ossx_vis[ossy == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[2, 1].scatter(ossx_vis[ossy == 1, 0], ossx_vis[ossy == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[2, 1].set_title('One-sided selection', fontsize=fs)\n", + "# Neighboorhood cleaning rule\n", + "axes[2, 2].scatter(ncrx_vis[ncry == 0, 0], ncrx_vis[ncry == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[2, 2].scatter(ncrx_vis[ncry == 1, 0], ncrx_vis[ncry == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[2, 2].set_title('Neighboorhood cleaning rule', fontsize=fs)\n", + "\n", + "# Edited nearest neighbours\n", + "axes[3, 0].scatter(ennx_vis[enny == 0, 0], ennx_vis[enny == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[3, 0].scatter(ennx_vis[enny == 1, 0], ennx_vis[enny == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[3, 0].set_title('Edited nearest neighbours', fontsize=fs)\n", + "\n", + "# Instance Nearest Neighbours\n", + "axes[3, 1].scatter(ihtx_vis[ihty == 0, 0], ihtx_vis[ihty == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[3, 1].scatter(ihtx_vis[ihty == 1, 0], ihtx_vis[ihty == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[3, 1].set_title('Instance Nearest Neighbours', fontsize=fs)\n", + "\n", + "# Repeated Edited Nearest Neighbours\n", + "axes[3, 2].scatter(rennx_vis[renny == 0, 0], rennx_vis[renny == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[3, 2].scatter(rennx_vis[renny == 1, 0], rennx_vis[renny == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[3, 2].set_title('Repeated Edited Nearest Neighbours', fontsize=fs)\n", + "\n", + "# AllKNN\n", + "axes[4, 0].scatter(allkx_vis[allky == 0, 0], allkx_vis[allky == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[4, 0].scatter(allkx_vis[allky == 1, 0], allkx_vis[allky == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[4, 0].set_title('AllKNN', fontsize=fs)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Over-sampling" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/lemaitre/anaconda/lib/python2.7/site-packages/sklearn/utils/class_weight.py:62: DeprecationWarning: The class_weight='auto' heuristic is deprecated in 0.17 in favor of a new heuristic class_weight='balanced'. 'auto' will be removed in 0.19\n", + " \" 0.19\", DeprecationWarning)\n" + ] + } + ], + "source": [ + "# Generate the new dataset using under-sampling method\n", + "verbose = False\n", + "ratio = 'auto'\n", + "# 'Random over-sampling'\n", + "OS = RandomOverSampler(ratio=ratio)\n", + "osx, osy = OS.fit_sample(x, y)\n", + "# 'SMOTE'\n", + "smote = SMOTE(ratio=ratio, kind='regular')\n", + "smox, smoy = smote.fit_sample(x, y)\n", + "# 'SMOTE bordeline 1'\n", + "bsmote1 = SMOTE(ratio=ratio, kind='borderline1')\n", + "bs1x, bs1y = bsmote1.fit_sample(x, y)\n", + "# 'SMOTE bordeline 2'\n", + "bsmote2 = SMOTE(ratio=ratio, kind='borderline2')\n", + "bs2x, bs2y = bsmote2.fit_sample(x, y)\n", + "# 'SMOTE SVM'\n", + "svm_args={'class_weight': 'auto'}\n", + "svmsmote = SMOTE(ratio=ratio, kind='svm', **svm_args)\n", + "svsx, svsy = svmsmote.fit_sample(x, y)\n", + "# 'SMOTE Tomek links'\n", + "STK = SMOTETomek(ratio=ratio)\n", + "stkx, stky = STK.fit_sample(x, y)\n", + "# 'SMOTE ENN'\n", + "SENN = SMOTEENN(ratio=ratio)\n", + "ennx, enny = SENN.fit_sample(x, y)\n", + "\n", + "# 'EasyEnsemble'\n", + "EE = EasyEnsemble()\n", + "eex, eey = EE.fit_sample(x, y)\n", + "# 'BalanceCascade'\n", + "BS = BalanceCascade()\n", + "bsx, bsy = BS.fit_sample(x, y)\n", + "\n", + "# Apply PCA to be able to visualise the results\n", + "osx_vis = pca.transform(osx)\n", + "smox_vis = pca.transform(smox)\n", + "bs1x_vis = pca.transform(bs1x)\n", + "bs2x_vis = pca.transform(bs2x)\n", + "svsx_vis = pca.transform(svsx)\n", + "stkx_vis = pca.transform(stkx)\n", + "ennx_vis = pca.transform(ennx)\n", + "\n", + "# Project each subset of the ensemble\n", + "eex_vis = []\n", + "for e in eex:\n", + " eex_vis.append(pca.transform(e))\n", + "bsx_vis = []\n", + "for e in bsx:\n", + " bsx_vis.append(pca.transform(e))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2gAAANvCAYAAACoE/mFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl85HWd7/vXb6mq1Jqk0tmTpncaGppuBAVxBWFGuTPH\ncV+Qq3NkDofRw4E5DwVBPHBkk+NyfLiNMqC2DiCO23X0KMsoKks30As03U3Tazp7Uknt22+5f1Sq\nulLZl0oqyef5F79OVf2+VUm9+e5fxbZtGyGEEEIIIYQQi05d7AIIIYQQQgghhMiRBpoQQgghhBBC\nVAhpoAkhhBBCCCFEhZAGmhBCCCGEEEJUCGmgCSGEEEIIIUSFkAaaEEIIIYQQQlQIfbELIGDnzp38\n9//+39mwYQMAsViM1atX87//9/9G12f/K7rxxhv58Ic/zIUXXjhfRV2SOjs7ufHGG3nkkUf4p3/6\nJ+699945fa5CiMXx3e9+l2eeeQbDMFBVlc985jPs2LGDJ554gqeffhqHwwHA/v37ee9738uOHTu4\n8MIL6ejo4L777mN4eBjDMNi8eTP/43/8DzweDx//+McxTZNjx44RDAapqanhkksuoaGhga9//eu0\nt7dj2zaKorBp0yZuvfXWRf4UhBBTGS8rtmzZwk033bRoeVFcF5mLP/3pT/zmN7/h7rvvnvKx5aj/\n3H333axbt44PfvCDc3odMTmppVaIiy++mC9/+cuF63/6p3/iySef5IorrljEUi0fiqIAjPqMhRBL\nx5EjR3jyySd5+OGHATh48CA33XQTZ511Fg0NDTz11FNcdtllAPz6179m9erVAKTTaa677jruuusu\nzj33XAB+8YtfcOONN/Kd73yH73//+wDcfPPNXHnllbzpTW8C4Oc//zl/8zd/w4033rjA71QIMRcT\nZcUvfvELFEVZ1LzI10UW0nzVf0KhEJ/97Gc5ceIE69atm4+iiUlIA61CFJ8Xnslk6O/vJxAIYFkW\nt912Gz09PfT393PppZdy/fXXc/PNN+NwOOjs7GRgYIB77rmHs846ix//+Mf89Kc/pb6+nlAoBIBh\nGNx88810dHRg2zYf//jHeec738nHPvYxNm/ezOHDh/F4PFxwwQX8+c9/JhqN8sADD+D3+wtl6uzs\n5HOf+xymaaIoCrfccgtdXV089thjhV6c97znPdx///0899xz/OAHP0DTNF73utdx44038o1vfIPd\nu3eTSCS48847R325f/zjH/PLX/4SVVU599xzueWWWzh8+DD33HMPlmUxNDTE//yf/5Nt27ZxxRVX\ncP7553P8+HHe8IY3EIvF2LdvH+vWrePee+/l5ptvxrZturu7SSaT3HvvvTidzsK9Lr30Uv7v//2/\nfOELXxj383v00Uf513/9V2pqatB1nSuvvJJ3v/vd5f71CyGm4PP56Onp4ac//SlvfvOb2bx5M48+\n+ii33XYbV155Jb/+9a+57LLLsG2b/fv3FypXf/jDH3jDG95QuAZ497vfzcMPP0xnZyetra0T3rM4\nl4UQS8NEWZG3mHkxODjIddddx+DgIG9961u57rrrCvUry7IAuPXWWznzzDN5+9vfzvr169mwYQPv\nf//7ueWWW/B4PFRVVVFdXQ3Ab3/720nrW1/84hcL956q/jPeaxVLJBJ8+tOf5qmnnprGb0HMlaxB\nqxDPPvssV199NVdeeSXvfe97ueKKK7jooovo7u5m27Zt3H///Tz66KM89NBDhee0tbXxL//yL1x1\n1VU88sgjDA4O8sMf/pBHH32Ub33rW2SzWQAeeeQR6urqePjhh3nggQf42te+xtDQEADbtm3j+9//\nPplMBrfbzQMPPMD69evZuXPnqPLde++9fPzjH+dHP/oRt9xyC7fccgtvf/vb2bt3L6lUipdeeon2\n9nY0TeMb3/gGP/jBD/jxj39MT08PTz/9NADr16/noYceGtPz8otf/ILbbruNhx9+mPXr12NZFocP\nH+amm27iwQcf5JOf/CQ/+9nPgFxD8YYbbuBHP/oRO3bs4KMf/SiPPvooL7zwArFYDIDVq1fzgx/8\ngH/8x3/kS1/60qh7FfdelX5+Q0ND3H///TzyyCP8y7/8C8lkcj5+tUKIedDY2Mi3v/1tXnzxRT70\noQ/xrne9i//4j/8A4Nxzz+XYsWOkUimeffZZLrroosLzOjo6aG9vH/N6ra2tdHV1TXrPX//611x9\n9dV87GMf4+qrr+ZXv/rV/L4pIcS8mywrYHHzIplMct999/HQQw/xpz/9iYMHDxbqVzt27OCWW27h\nc5/7HAA9PT185Stf4aabbuK+++7j+uuv54EHHmD79u0AhMPhKetbVVVVhXtPVv8Z77WeeeaZUWVv\na2tj69atk34GYv7ICFqFyE9xHB4e5u///u9pa2sDoLq6mn379vHcc8/h9XoLjS6As846C4CmpiZe\n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\nY0w4hlwT1oQcMOyEJAwETIbdTJJdkjTyB/0AACAASURBVB1mMjnIMedjH5lJsptksxPYMBOYCUsY\nfmQ4Mgm5gEzIBoLN4RMLbCzbOltSt/q+qrrq90er2y1ZR+tuWZ/nX8hqVVUL99vf8/MVQgghRI2Q\nDpoQQgghhBBC1AjpoAkhhBBCCCFEjZAOmhBCCCGEEELUCOmgCSGEEEIIIUSNkA6aEEIIIYQQQtQI\n6aAJIYQQQgghRI2QDpoQQgghhBBC1AjpoAkhhBBCCCFEjZAOmhBCCCGEEELUCOmgCSGEEEIIIUSN\nkA6aEEIIIYQQQtQI6aAJIYQQQgghRI2QDpoQQgghhBBC1AjpoAkhhBBCCCFEjZAOmhBCCCGEEELU\nCOmgCSGEEEIIIUSNkA6aEEIIIYQQQtQIx0o/gJjZvffey/PPP49pmqiqymc/+1m2bt3KXXfdxdNP\nP81zzz2HrusAHDp0iA984AM88MADXH755fT29vK1r32NaDSKaZps2bKFT3/603i9Xm6//XYKhQI9\nPT0Eg0EaGhp461vfSmtrK9/61rdYv349tm2jKArnnXceX/rSl8rP1N/fz6c+9SkefvjhBb23X//6\n1zz55JP87d/+7ayvrbznn/3Zn/GVr3wFh2N+f30PHz7Mf//v/x1N03A6nXz1q18lGAzO61pCiPmp\nxWwD+NWvfsX999+PbdvkcjluvfVWrr/+et75zndy//33s379+vJr77jjDm677TbuvvtuwuEwTz75\nZPl7P//5z/njP/5jnnnmGTo7O5fnlyqEAGozX5544gl+8IMfkM/nOXr0KFu3bgXgf/yP/0Fra+ui\nvfdvfvObdHV18cEPfnDK799yyy185Stf4YUXXqClpYV3vOMdU77uM5/5DO9///t585vfvGjPJubA\nFjXr6NGj9k033VT++vDhw/bv//7v27Zt23fddZd97bXX2k899VT5+3/3d39nX3PNNfbu3bvtbDZr\n/97v/Z69f//+8vcfe+wx++Mf//iEe9x11132r3/96/LXjz76qP0//+f/nPG5+vr6JjzXfD377LP2\nXXfdVdVrF+uetm3bu3btsru7u23btu1/+Zd/sf/2b/92Ua4rhKhOrWabbdv2VVddZScSCdu2bTuV\nStnvfOc77XA4bN9zzz32//7f/7v8utHRUfu9732vbdvFTLn22mvtw4cPl79/55132jt37rT7+/ur\n+p0IIRZHLeeLbS9ue2Yq3/jGN+xHHnlk2u/fcsst9smTJ2e9zqc//Wn7ueeeW8xHE3MgSxxrWF1d\nHUNDQ/zgBz8gFAqxZcsWHnnkkfL3r7vuOn70ox8BYNs2hw4d4qKLLgLg3//93/md3/md8tcA73vf\n+4hGo/T39894X9u2Z322cDjMHXfcwU033cTdd98NFGe5/vAP/5DbbruN2267jddeew2A//Af/gN/\n9Ed/xN/93d/xxhtvcPPNN/Of//N/5qGHHipf7yc/+Qk333wzt956K1//+tcB+Pu//3s+8pGP8KEP\nfYhsNlt+7c6dO8nn83z+85/nL/7iL/jIRz7C7//+73P48OFpr1XpG9/4Bueffz4Apmnicrlmfb9C\niMVTy9kWCAT453/+Z44ePYrX6+XJJ58kGAxyww03lJ8J4PHHH+eGG26Y8pkTiQS5XI6WlpYqfhtC\niMVUy/kynccff5wPfvCD3HrrrXzpS1+iUCjwyCOPcOedd/Kxj32M97///Tz22GN84hOf4N3vfje/\n+tWvAPjxj39cbu9885vfnHDN48ePc+ONN3L06NEp7/nNb36TH/zgBzz//PN8/OMf54477uA//sf/\nyD/8wz9MeN3evXu5+eabCYVC/OQnP+EP/uAPuOWWW/izP/uzeb9fMTvpoNWwtrY27rnnHl5++WVu\nvvlmrr32Wn75y1+Wv3/RRRfR09NDNpvlt7/9LVdeeWX5e729vROW4pSsW7eOgYGBGe/7ox/9iA9/\n+MPcdtttfPjDH+aHP/zhaa/JZDJ87Wtf46GHHuLXv/413d3dfOUrX+H222/ngQce4Itf/CJf+MIX\nABgaGuLrX/86d911F1/72te48847ue+++7jkkksAiMVi/P3f/z3//M//zIMPPsjQ0BDPPfccAOec\ncw4PPfQQbre7fG9FUcr/3dXVxXe/+1127drFww8/POW1nn/++QnP3tzcDMDLL7/M97//fW6//fYZ\nfx9CiMVVy9l23333kclk+NSnPsXb3vY2vvOd75SfedOmTbzyyisA/Nu//Rsf+MAHgGIm7dy5k2ef\nfRaAn/70p7znPe+Z429FCLEYajlfphKJRLjnnnt48MEHefDBB3G73eUOZTab5d577+X222/nkUce\n4dvf/jZ/+Zd/yaOPPkokEuH//J//w/e+9z0efPBBent7eeGFFwB44403+MxnPsM3vvENNm/ePOsz\nDA4Ocvfdd/PQQw9x7733lv/8xRdf5Ktf/Srf+c53aGtr48knn+TjH/843//+93n7299OMpms6j2K\nuZM9aDXs5MmT+Hw+vvzlLwNw8OBBPvrRj5bDRFEUrr76ap566imee+457rjjjvKMUVtbG/v37z/t\nmidOnKCjo2PG+15//fV86lOfmvE1559/Pj6fDyiG3fHjx+np6eGyyy4DYMuWLYRCIQAaGxsJBAIA\n9PT0lEem3vSmN3Hs2DFOnDhBJBLhox/9KLZtk06n6e3tBWDjxo0zPscFF1wAQHt7Oy+//PKU1zp5\n8uRpa6iffPJJvvOd73DvvffS2Ng44z2EEIurVrMtHo/T39/Ppz/9aT796U8zPDzMf/tv/41t27Zx\n1VVXceONN/LYY4+hqiobNmyYsHfV5XJx4YUX8sorr/D000/zjW98g+9///tz/t0IIRamVvNlpuc9\n//zzy6t5LrvsMl588UXOP//8chsnEAhwzjnnlP87l8tx4sQJwuEwf/RHf4Rt26RSqXLb6dlnn0VV\nVTRNq+oZSquKfD7fhFVFzz33HMlksnydz3/+89x777380z/9E+eeey7vfve75/x+RXVkBq2Gvfba\na/zN3/wNhmEAsGHDBgKBAKp66n/bddddx+OPP87o6ChdXV3lP7/66qt5/vnnOXDgQPnPHnnkEYLB\n4ITXTaWaafo33niDTCaDaZrs37+fc889l02bNrFnzx6gWIijNFNV+bznnntueQS69GxdXV10dHRw\n//3388ADD7Br1y4uvvji0352quernE2b7VolTzzxBA8++CAPPPAA69atm/W9CiEWV61mWz6f50/+\n5E8Ih8NAcba9ubkZp9MJwDve8Q727t3LY489xk033XTada+77jruv/9+6uvr8Xg81fwqhBCLrFbz\nZbrXnnXWWRw5coRcLgfAnj17yoPTk9s4lc4++2w6OzvL7Z1bb72V7du3A/Cf/tN/4nOf+xyf/exn\nq3rO6e7zx3/8x+zatYu//uu/BuDhhx/mT/7kT3jggQfI5XI8/fTTVb5jMVcyg1bDrrnmGo4dO8YH\nP/hBfD4flmXxuc99jrq6uvJrNm3axNjYGDfeeCNw6kPm9Xq55557+PKXv0wsFqNQKHD++edPuSdr\nsh//+Mfs27cPKH6QA4EA3/72tye8pqGhgT/90z8lEolw7bXXcs455/DZz36WP//zP+e+++7DNM3y\n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\nwLZt23DKKafglVdeGYj2ERHFjNlERKmK+UREsYqrQOto1qxZ+OijjyBJUqLaRETUb8wmIkpVzCci\n6km/l9lXqVTsqieilMNsIqJUxXwiop70uweNiIiIiIiIEoMbVRMREREREaUIFmhEREREREQpggUa\nERERERFRimCBRkRERERElCIGpUALBoN48MEHcfXVV+OKK67AqlWrBuOycdu/fz+mTp0KWZaT3ZQu\nnE4nbrzxRixcuBDz5s3D1q1bk90kAIAQAvfddx/mzZuHRYsWobq6OtlN6sLv9+OOO+7ANddcg6uu\nugqff/55spvUrebmZpx77rmoqqpKdlOieu655zBv3jxcfvnl+Mc//pHs5vTLUMonZlN8mE+JxXwa\nHMymxGA29Q+zKXH6kk3awWjQv/71LwQCAbz22mtoaGjARx99NBiXjYvT6cRjjz0GvV6f7KZE9Ze/\n/AVnnnkmFi1ahKqqKtx222146623kt0sfPrpp5BlGa+//jq2bduGhx9+GE8//XSymxXh3//+N3Jz\nc/HYY4+hra0NP/zhDzFr1qxkN6sLv9+P++67DxkZGcluSlQbNmzAli1b8Prrr8PtduPFF19MdpP6\nZajkE7MpfsynxGE+DR5mU2Iwm/qH2ZQYfc2mQSnQVq9ejRNOOAE33HADAOCee+4ZjMvG5d5778WS\nJUvw85//PNlNieonP/kJdDodgNAfY6oE4qZNm3D22WcDAE455RTs3LkzyS3q6qKLLsKFF14IIPTJ\npFY7KH/+ffboo49i/vz5WLFiRbKbEtXq1atx4okn4uc//zlcLhfuuOOOZDepX4ZKPjGb4sd8Shzm\n0+BhNiUGs6l/mE2J0ddsSvhP+c0338TLL78c8TWLxQK9Xo8VK1Zg48aNWLZsGV599dVEX7pPorWz\ntLQUl1xyCU466aSU2EAyWhsffvhhjB8/Hk1NTbjjjjtw9913J6l1kZxOJ7KyssLHWq0WwWAQanXq\nTHM0GAwAQm1dvHgxbr311iS3qKu33noLeXl5mD59Op599tlkNycqm82Guro6rFixAtXV1bjpppvw\n4YcfJrtZMRkK+cRsSjzmU2IwnwYOsykxmE2Jx2xKjD5nkxgEt956q/j444/Dx9OnTx+My/bZ7Nmz\nxcKFC8WCBQvEhAkTxIIFC5LdpKj27NkjLr30UvHVV18luylhDz/8sPjggw/CxzNmzEheY3pQV1cn\n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\nrVu3CiGEuO2228R7770n/vOf/4jFixcLn88ndu7cKTZv3iy+/fZbMX/+fBEMBkUgEBCLFi0SBw4c\nEDfccINYu3atEEKI5557TixdujSi7evXrxeXXHKJCAaDwu12iylTpgghhLjlllvEl19+KYQQYu3a\nteK2224TTqdTvPDCC0IIIYLBoLjoootEQ0ODeOKJJ8SDDz4ohBDdtmPx4sXio48+EkII8c9//lM4\nHA6xfv16sWTJki4/z2ivedWqVeLWW28VQgjh8/nED37wA2G328XChQvFgQMHxEMPPSRee+01IYQQ\na9asEbNmzQqfa/PmzUIIIZYuXSo++OAD8dZbb4nrr79eCCFEc3Oz+N73vicCgYCYNWuWaGxsFEII\nsXLlSvHII490aeP06dPD53rppZei/j0QpaP169eLadOmiYULF4oFCxaIhQsXij//+c/itddeC7+v\nnn32WfHss8+KyspKMW/ePOF0OsWhQ4fEqlWrhBBCXHTRRcJut4vKykrx85//vMs1nnjiCTF79uyI\na7Tn29ixY0V9fb0QQoj58+eLbdu2iVdffVU8/PDDwu/3i6+//lpUVlaKVatWhd/THbNkwYIF4t13\n3xVCCHHdddeF82Tp0qXi008/jZobwWBQzJo1S/h8vqiZSUSDr2MWzZ07V0yaNEmsWbMmahbV1NSI\nuXPnhr/m9XqFEEIsX75cvPPOO93eI910001i9erVQgghPv/8c7F69eqYMuCCCy4QDocjarvfe+89\nsW/fPiGEEO+8845Yvny5cDqd4vzzzxctLS2ipaVFvPvuu8Lv94uZM2eKlpYWIYQQL7zwgjhy5IhY\nsWJFl/Z/+OGH4n//93+FEELU1dWJCRMmCCGi3+PR4GMPWgKUlpZi165dEV+rqalBfX099u/fjylT\npgAAtFotJk6ciG+//RYAMHbsWABAcXExNm/ejMOHD+PEE08Mf2ozYcIEAMC+ffuwadMmbNu2DUII\nBAIB2Gy2iHOUlJRAlmVcdNFFOHjwIG666SZIkoQbb7wR+/btQ11dHa699loIIeBwOHDo0CEcPHgw\nfI3JkyfjwIEDXV7biSeeCJVKBYPBgIyMjHB7VqxYgeeffx5CCEiSBL1eD6vVittuuw1GoxEejwd+\nvx8AMHLkyPDzOrfj8OHDWLp0KVasWIFXXnkFz9YvcAAAIABJREFUo0ePxnnnndftz1qlUnV5zfv2\n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\nHA4H69ev58c//nGpp5OT2+2mo6ODp556ivb2dv7qr/6K//zP/yz1tAoyEeKTxKbik/hUHBKfxo7E\npuKQ2FR8EpuKY9ixSRsH3/jGN7Q//OEP6fH69evH47LDdtttt2n333+/tnnzZm3p0qXa5s2bSz2l\nnI4dO6Z95CMf0d58881STyVty5Yt2ksvvZQeb9iwoXSTGURHR4f2sY99TNu+fXupp5LTpz/9aW3z\n5s3a5s2btVWrVmn33Xef1t3dXeppZfn7v/977bnnnkuP77rrLq2np6d0ExqliRCfJDaNjsSn4pD4\nNL4kNhWPxKbRkdg0esONTeOSoD3//PPaI488ommaph09elS77777xuOyo3LLLbdoqqqWehoDnDx5\nUrv99tu1Y8eOlXoqWV5++WXtO9/5jqZpmrZv3z7ti1/8YolnNJDT6dTuuOMO7e233y71VAqyefNm\n7cyZM6WexgB/+tOftM997nOapmna5cuXtdtuu01LJBIlntXITbT4JLFp+CQ+FZ/Ep7Ensak4JDaN\njsSm4hhubBqXjaT33Xcff/u3f8snPvEJAL7//e+Px2VHRafTlcVyfX8/+tGPUFWVxx57DE3TqKqq\n4oknnij1tLj11lt566232LRpE5DcUlBunnrqKbxeL08++SRPPPEEOp2OZ555Jr03vdzodLpSTyGn\nm2++mXfffZd77703XYGqXOdaiIkWnyQ2DZ/Ep+Ir1//nJ1N8kthUHBKbRkdiU3EMNzbptHL8v0kI\nIYQQQgghpqDyOYUohBBCCCGEEFOcJGhCCCGEEEIIUSYkQRNCCCGEEEKIMiEJmhBCCCGEEEKUCUnQ\nhBBCCCGEEKJMSIImhBBCCCGEEGVCEjQhhBBCCCGEKBOSoAkhhBBCCCFEmfj/JCHjOZH2tzsAAAAA\nSUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Initialise the figure\n", + "palette = sns.color_palette()\n", + "fs = 10 # fontsize\n", + "fig, axes = plt.subplots(nrows=3, ncols=3, figsize=(15,15))\n", + "\n", + "# Random over-sampling\n", + "axes[0, 0].scatter(osx_vis[osy == 0, 0], osx_vis[osy == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[0, 0].scatter(osx_vis[osy == 1, 0], osx_vis[osy == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[0, 0].set_title('Random over-sampling', fontsize=fs)\n", + "# SMOTE\n", + "axes[0, 1].scatter(smox_vis[smoy == 0, 0], smox_vis[smoy == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[0, 1].scatter(smox_vis[smoy == 1, 0], smox_vis[smoy == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[0, 1].set_title('SMOTE', fontsize=fs)\n", + "# SMOTE borderline 1\n", + "axes[0, 2].scatter(bs1x_vis[bs1y == 0, 0], bs1x_vis[bs1y == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[0, 2].scatter(bs1x_vis[bs1y == 1, 0], bs1x_vis[bs1y == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[0, 2].set_title('SMOTE borderline 1', fontsize=fs)\n", + "\n", + "# SMOTE borderline 2\n", + "axes[1, 0].scatter(bs2x_vis[bs2y == 0, 0], bs2x_vis[bs2y == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[1, 0].scatter(bs2x_vis[bs2y == 1, 0], bs2x_vis[bs2y == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[1, 0].set_title('SMOTE borderline 2', fontsize=fs)\n", + "# SMOTE SVM\n", + "axes[1, 1].scatter(svsx_vis[svsy == 0, 0], svsx_vis[svsy == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[1, 1].scatter(svsx_vis[svsy == 1, 0], svsx_vis[svsy == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[1, 1].set_title('SMOTE SVM', fontsize=fs)\n", + "# SMOTE Tomek links\n", + "axes[1, 2].scatter(stkx_vis[stky == 0, 0], stkx_vis[stky == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[1, 2].scatter(stkx_vis[stky == 1, 0], stkx_vis[stky == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[1, 2].set_title('SMOTE Tomek links', fontsize=fs)\n", + "\n", + "# SMOTE ENN\n", + "axes[2, 0].scatter(ennx_vis[enny == 0, 0], ennx_vis[enny == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "axes[2, 0].scatter(ennx_vis[enny == 1, 0], ennx_vis[enny == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[2], linewidth=0.15)\n", + "axes[2, 0].set_title('Condensed nearest neighbour', fontsize=fs)\n", + "\n", + "# Easy-Ensemble\n", + "axes[2, 1].scatter(eex_vis[0][eey[0] == 0, 0], eex_vis[0][eey[0] == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "for iy, e in enumerate(eex_vis):\n", + " axes[2, 1].scatter(e[eey[iy] == 1, 0], e[eey[iy] == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=np.random.rand(3,), linewidth=0.15)\n", + "axes[2, 1].set_title('Easy-Ensemble', fontsize=fs)\n", + "# Balance-Cascade\n", + "axes[2, 2].scatter(bsx_vis[0][bsy[0] == 0, 0], bsx_vis[0][bsy[0] == 0, 1], label=\"Class #0\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=palette[0], linewidth=0.15)\n", + "for iy, e in enumerate(bsx_vis):\n", + " axes[2, 2].scatter(e[bsy[iy] == 1, 0], e[bsy[iy] == 1, 1], label=\"Class #1\", alpha=0.5, \n", + " edgecolor=almost_black, facecolor=np.random.rand(3,), linewidth=0.15)\n", + "axes[2, 2].set_title('Balance-Cascade', fontsize=fs)\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.11" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/under-sampling/README.txt b/examples/under-sampling/README.txt new file mode 100644 index 000000000..048ffa14c --- /dev/null +++ b/examples/under-sampling/README.txt @@ -0,0 +1,7 @@ +.. _under_sampling_examples: + +Example using under-sampling class methods +========================================== + +Under-sampling refers to the process of reducing the number of samples in the majority classes. +The implemented methods can be categorized into 2 groups: (i) fixed under-sampling and (ii) cleaning under-sampling. diff --git a/examples/under-sampling/plot_allknn.py b/examples/under-sampling/plot_allknn.py new file mode 100644 index 000000000..8e7a0208e --- /dev/null +++ b/examples/under-sampling/plot_allknn.py @@ -0,0 +1,92 @@ +""" +================================== +AllKNN +================================== + +An illustration of the AllKNN method. + +""" + +print(__doc__) + +import matplotlib.pyplot as plt +import seaborn as sns +sns.set() + +# Define some color for the plotting +almost_black = '#262626' +palette = sns.color_palette() + +from sklearn.datasets import make_classification +from sklearn.decomposition import PCA + +from imblearn.under_sampling import EditedNearestNeighbours +from imblearn.under_sampling import RepeatedEditedNearestNeighbours +from imblearn.under_sampling import AllKNN + +# Generate the dataset +X, y = make_classification(n_classes=2, class_sep=1.25, weights=[0.3, 0.7], + n_informative=3, n_redundant=1, flip_y=0, + n_features=5, n_clusters_per_class=1, + n_samples=5000, random_state=10) + +# Instanciate a PCA object for the sake of easy visualisation +pca = PCA(n_components=2) +# Fit and transform x to visualise inside a 2D feature space +X_vis = pca.fit_transform(X) + +# Three subplots, unpack the axes array immediately +f, (ax1, ax2, ax3, ax4) = plt.subplots(1, 4) + +ax1.scatter(X_vis[y == 0, 0], X_vis[y == 0, 1], label="Class #0", alpha=.5, + edgecolor=almost_black, facecolor=palette[0], linewidth=0.15) +ax1.scatter(X_vis[y == 1, 0], X_vis[y == 1, 1], label="Class #1", alpha=.5, + edgecolor=almost_black, facecolor=palette[2], linewidth=0.15) +ax1.set_title('Original set') + +# Apply the ENN +print('ENN') +enn = EditedNearestNeighbours() +X_resampled, y_resampled = enn.fit_sample(X, y) +X_res_vis = pca.transform(X_resampled) +print('Reduced {:.2f}\%'.format(100 * (1 - float(len(X_resampled))/ len(X)))) + +ax2.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) +ax2.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) +ax2.set_title('Edited nearest neighbours') + +# Apply the RENN +print('RENN') +renn = RepeatedEditedNearestNeighbours() +X_resampled, y_resampled = renn.fit_sample(X, y) +X_res_vis = pca.transform(X_resampled) +print('Reduced {:.2f}\%'.format(100 * (1 - float(len(X_resampled))/ len(X)))) + +ax3.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) +ax3.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) +ax3.set_title('Repeated Edited nearest neighbours') + +# Apply the AllKNN +print('AllKNN') +allknn = AllKNN() +X_resampled, y_resampled = allknn.fit_sample(X, y) +X_res_vis = pca.transform(X_resampled) +print('Reduced {:.2f}\%'.format(100 * (1 - float(len(X_resampled))/ len(X)))) + +ax4.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) +ax4.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) +ax4.set_title('AllKNN') + +plt.show() diff --git a/example/under-sampling/plot_cluster_centroids.py b/examples/under-sampling/plot_cluster_centroids.py similarity index 92% rename from example/under-sampling/plot_cluster_centroids.py rename to examples/under-sampling/plot_cluster_centroids.py index cefeed057..caf654b91 100644 --- a/example/under-sampling/plot_cluster_centroids.py +++ b/examples/under-sampling/plot_cluster_centroids.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import ClusterCentroids +from imblearn.under_sampling import ClusterCentroids # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Cluster Centroids cc = ClusterCentroids() -X_resampled, y_resampled = cc.fit_transform(X, y) +X_resampled, y_resampled = cc.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_condensed_nearest_neighbour.py b/examples/under-sampling/plot_condensed_nearest_neighbour.py similarity index 92% rename from example/under-sampling/plot_condensed_nearest_neighbour.py rename to examples/under-sampling/plot_condensed_nearest_neighbour.py index 2769eeed3..d8afd5b7e 100644 --- a/example/under-sampling/plot_condensed_nearest_neighbour.py +++ b/examples/under-sampling/plot_condensed_nearest_neighbour.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import CondensedNearestNeighbour +from imblearn.under_sampling import CondensedNearestNeighbour # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Condensed Nearest Neighbours cnn = CondensedNearestNeighbour() -X_resampled, y_resampled = cnn.fit_transform(X, y) +X_resampled, y_resampled = cnn.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_edited_nearest_neighbours.py b/examples/under-sampling/plot_edited_nearest_neighbours.py similarity index 92% rename from example/under-sampling/plot_edited_nearest_neighbours.py rename to examples/under-sampling/plot_edited_nearest_neighbours.py index c77a7cadb..bbfea90ca 100644 --- a/example/under-sampling/plot_edited_nearest_neighbours.py +++ b/examples/under-sampling/plot_edited_nearest_neighbours.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import EditedNearestNeighbours +from imblearn.under_sampling import EditedNearestNeighbours # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Edited Nearest Neighbours enn = EditedNearestNeighbours() -X_resampled, y_resampled = enn.fit_transform(X, y) +X_resampled, y_resampled = enn.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/examples/under-sampling/plot_instance_hardness_threshold.py b/examples/under-sampling/plot_instance_hardness_threshold.py new file mode 100644 index 000000000..00189abee --- /dev/null +++ b/examples/under-sampling/plot_instance_hardness_threshold.py @@ -0,0 +1,60 @@ +""" +=========================== +Instance Hardness Threshold +=========================== + +An illustration of the instance hardness threshold method. + +""" + +print(__doc__) + +import matplotlib.pyplot as plt +import seaborn as sns +sns.set() + +# Define some color for the plotting +almost_black = '#262626' +palette = sns.color_palette() + +from sklearn.datasets import make_classification +from sklearn.decomposition import PCA + +from imblearn.under_sampling import InstanceHardnessThreshold + +# Generate the dataset +X, y = make_classification(n_classes=2, class_sep=1., weights=[0.05, 0.95], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=10) + +pca = PCA(n_components=2) +X_vis = pca.fit_transform(X) + +# Two subplots, unpack the axes array immediately +f, axs = plt.subplots(2, 2) + +axs = [a for ax in axs for a in ax] +for ax, ratio in zip(axs, [0.0, 0.1, 0.3, 0.5]): + if ratio == 0.0: + ax.scatter(X_vis[y == 0, 0], X_vis[y == 0, 1], label="Class #0", + alpha=0.5, edgecolor=almost_black, facecolor=palette[0], + linewidth=0.15) + ax.scatter(X_vis[y == 1, 0], X_vis[y == 1, 1], label="Class #1", + alpha=0.5, edgecolor=almost_black, facecolor=palette[2], + linewidth=0.15) + ax.set_title('Original set') + else: + iht = InstanceHardnessThreshold(ratio=ratio) + X_res, y_res = iht.fit_sample(X, y) + X_res_vis = pca.transform(X_res) + + ax.scatter(X_res_vis[y_res == 0, 0], X_res_vis[y_res == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) + ax.scatter(X_res_vis[y_res == 1, 0], X_res_vis[y_res == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) + ax.set_title('Instance Hardness Threshold ({})'.format(ratio)) + +plt.show() diff --git a/example/under-sampling/plot_nearmiss_1.py b/examples/under-sampling/plot_nearmiss_1.py similarity index 92% rename from example/under-sampling/plot_nearmiss_1.py rename to examples/under-sampling/plot_nearmiss_1.py index 619f3233a..58b292aff 100644 --- a/example/under-sampling/plot_nearmiss_1.py +++ b/examples/under-sampling/plot_nearmiss_1.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import NearMiss +from imblearn.under_sampling import NearMiss # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Nearmiss 1 nm1 = NearMiss(version=1) -X_resampled, y_resampled = nm1.fit_transform(X, y) +X_resampled, y_resampled = nm1.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_nearmiss_2.py b/examples/under-sampling/plot_nearmiss_2.py similarity index 90% rename from example/under-sampling/plot_nearmiss_2.py rename to examples/under-sampling/plot_nearmiss_2.py index c0982c65d..3125f501c 100644 --- a/example/under-sampling/plot_nearmiss_2.py +++ b/examples/under-sampling/plot_nearmiss_2.py @@ -3,7 +3,7 @@ Nearmiss 2 ========== -An illustration of the nearmiss 1 method. +An illustration of the nearmiss 2 method. """ @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import NearMiss +from imblearn.under_sampling import NearMiss # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Nearmiss 2 nm2 = NearMiss(version=2) -X_resampled, y_resampled = nm2.fit_transform(X, y) +X_resampled, y_resampled = nm2.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_nearmiss_3.py b/examples/under-sampling/plot_nearmiss_3.py similarity index 88% rename from example/under-sampling/plot_nearmiss_3.py rename to examples/under-sampling/plot_nearmiss_3.py index 8b875c67e..2c81832c9 100644 --- a/example/under-sampling/plot_nearmiss_3.py +++ b/examples/under-sampling/plot_nearmiss_3.py @@ -3,7 +3,7 @@ Nearmiss 3 ========== -An illustration of the nearmiss 1 method. +An illustration of the nearmiss 3 method. """ @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import NearMiss +from imblearn.under_sampling import NearMiss # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling -nm3 = NearMiss(version=1) -X_resampled, y_resampled = nm3.fit_transform(X, y) +# Apply Nearmiss 3 +nm3 = NearMiss(version=3) +X_resampled, y_resampled = nm3.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_neighbourhood_cleaning_rule.py b/examples/under-sampling/plot_neighbourhood_cleaning_rule.py similarity index 92% rename from example/under-sampling/plot_neighbourhood_cleaning_rule.py rename to examples/under-sampling/plot_neighbourhood_cleaning_rule.py index 760ae7419..e41d37ff3 100644 --- a/example/under-sampling/plot_neighbourhood_cleaning_rule.py +++ b/examples/under-sampling/plot_neighbourhood_cleaning_rule.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import NeighbourhoodCleaningRule +from imblearn.under_sampling import NeighbourhoodCleaningRule # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply neighbourhood cleaning rule ncl = NeighbourhoodCleaningRule() -X_resampled, y_resampled = ncl.fit_transform(X, y) +X_resampled, y_resampled = ncl.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_one_sided_selection.py b/examples/under-sampling/plot_one_sided_selection.py similarity index 92% rename from example/under-sampling/plot_one_sided_selection.py rename to examples/under-sampling/plot_one_sided_selection.py index 39cf433a1..8e5b08e7c 100644 --- a/example/under-sampling/plot_one_sided_selection.py +++ b/examples/under-sampling/plot_one_sided_selection.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import OneSidedSelection +from imblearn.under_sampling import OneSidedSelection # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply One-Sided Selection oss = OneSidedSelection() -X_resampled, y_resampled = oss.fit_transform(X, y) +X_resampled, y_resampled = oss.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/example/under-sampling/plot_random_under_sampler.py b/examples/under-sampling/plot_random_under_sampler.py similarity index 93% rename from example/under-sampling/plot_random_under_sampler.py rename to examples/under-sampling/plot_random_under_sampler.py index 0c63fa46c..275a0d366 100644 --- a/example/under-sampling/plot_random_under_sampler.py +++ b/examples/under-sampling/plot_random_under_sampler.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import RandomUnderSampler +from imblearn.under_sampling import RandomUnderSampler # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -35,7 +35,7 @@ # Apply the random under-sampling rus = RandomUnderSampler() -X_resampled, y_resampled = rus.fit_transform(X, y) +X_resampled, y_resampled = rus.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/examples/under-sampling/plot_repeated_edited_nearest_neighbours.py b/examples/under-sampling/plot_repeated_edited_nearest_neighbours.py new file mode 100644 index 000000000..deb5ed847 --- /dev/null +++ b/examples/under-sampling/plot_repeated_edited_nearest_neighbours.py @@ -0,0 +1,74 @@ +""" +================================== +Repeated Edited nearest-neighbours +================================== + +An illustration of the repeated edited nearest-neighbours method. + +""" + +print(__doc__) + +import matplotlib.pyplot as plt +import seaborn as sns +sns.set() + +# Define some color for the plotting +almost_black = '#262626' +palette = sns.color_palette() + +from sklearn.datasets import make_classification +from sklearn.decomposition import PCA + +from imblearn.under_sampling import EditedNearestNeighbours +from imblearn.under_sampling import RepeatedEditedNearestNeighbours + +# Generate the dataset +X, y = make_classification(n_classes=2, class_sep=1.25, weights=[0.3, 0.7], + n_informative=3, n_redundant=1, flip_y=0, + n_features=5, n_clusters_per_class=1, + n_samples=5000, random_state=10) + +# Instanciate a PCA object for the sake of easy visualisation +pca = PCA(n_components=2) +# Fit and transform x to visualise inside a 2D feature space +X_vis = pca.fit_transform(X) + +# Three subplots, unpack the axes array immediately +f, (ax1, ax2, ax3) = plt.subplots(1, 3) + +ax1.scatter(X_vis[y == 0, 0], X_vis[y == 0, 1], label="Class #0", alpha=.5, + edgecolor=almost_black, facecolor=palette[0], linewidth=0.15) +ax1.scatter(X_vis[y == 1, 0], X_vis[y == 1, 1], label="Class #1", alpha=.5, + edgecolor=almost_black, facecolor=palette[2], linewidth=0.15) +ax1.set_title('Original set') + +# Apply the ENN +print('ENN') +enn = EditedNearestNeighbours() +X_resampled, y_resampled = enn.fit_sample(X, y) +X_res_vis = pca.transform(X_resampled) + +ax2.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) +ax2.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) +ax2.set_title('Edited nearest neighbours') + +# Apply the RENN +print('RENN') +renn = RepeatedEditedNearestNeighbours() +X_resampled, y_resampled = renn.fit_sample(X, y) +X_res_vis = pca.transform(X_resampled) + +ax3.scatter(X_res_vis[y_resampled == 0, 0], X_res_vis[y_resampled == 0, 1], + label="Class #0", alpha=.5, edgecolor=almost_black, + facecolor=palette[0], linewidth=0.15) +ax3.scatter(X_res_vis[y_resampled == 1, 0], X_res_vis[y_resampled == 1, 1], + label="Class #1", alpha=.5, edgecolor=almost_black, + facecolor=palette[2], linewidth=0.15) +ax3.set_title('Repeated Edited nearest neighbours') + +plt.show() diff --git a/example/under-sampling/plot_tomek_links.py b/examples/under-sampling/plot_tomek_links.py similarity index 92% rename from example/under-sampling/plot_tomek_links.py rename to examples/under-sampling/plot_tomek_links.py index b3cac95a1..85d469124 100644 --- a/example/under-sampling/plot_tomek_links.py +++ b/examples/under-sampling/plot_tomek_links.py @@ -20,7 +20,7 @@ from sklearn.datasets import make_classification from sklearn.decomposition import PCA -from unbalanced_dataset.under_sampling import TomekLinks +from imblearn.under_sampling import TomekLinks # Generate the dataset X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], @@ -33,9 +33,9 @@ # Fit and transform x to visualise inside a 2D feature space X_vis = pca.fit_transform(X) -# Apply the random under-sampling +# Apply Tomek Links cleaning tl = TomekLinks() -X_resampled, y_resampled = tl.fit_transform(X, y) +X_resampled, y_resampled = tl.fit_sample(X, y) X_res_vis = pca.transform(X_resampled) # Two subplots, unpack the axes array immediately diff --git a/imblearn/__init__.py b/imblearn/__init__.py new file mode 100644 index 000000000..3a326fd15 --- /dev/null +++ b/imblearn/__init__.py @@ -0,0 +1,38 @@ +"""Toolbox for imbalanced dataset in machine learning. + +``imbalanced-learn`` is a set of python methods to deal with imbalanced +datset in machine learning and pattern recognition. + +Subpackages +----------- +combine + Module which provides methods based on over-sampling and under-sampling. +ensemble + Module which provides methods generating an ensemble of + under-sampled subsets. +over_sampling + Module which provides methods to under-sample a dataset. +under-sampling + Module which provides methods to over-sample a dataset. +pipeline + Module which allowing to create pipeline with scikit-learn estimators. +""" + +from .version import _check_module_dependencies, __version__ + +_check_module_dependencies() + +# Boolean controlling whether the joblib caches should be +# flushed if the version of certain modules changes (eg nibabel, as it +# does not respect the backward compatibility in some of its internal +# structures +# This is used in nilearn._utils.cache_mixin +CHECK_CACHE_VERSION = True + +# list all submodules available in imblearn and version +__all__ = ['combine', + 'ensemble', + 'over_sampling', + 'under_sampling', + 'pipeline', + '__version__'] diff --git a/imblearn/base.py b/imblearn/base.py new file mode 100644 index 000000000..4ec8fe11d --- /dev/null +++ b/imblearn/base.py @@ -0,0 +1,300 @@ +"""Base class for sampling""" + +from __future__ import division +from __future__ import print_function + +import warnings +import logging + +import numpy as np + +from abc import ABCMeta, abstractmethod + +from collections import Counter + +from sklearn.base import BaseEstimator +from sklearn.utils import check_X_y +from sklearn.utils.multiclass import type_of_target +from sklearn.externals import six + +from six import string_types + + +class SamplerMixin(six.with_metaclass(ABCMeta, BaseEstimator)): + + """Mixin class for samplers with abstact method. + + Warning: This class should not be used directly. Use the derive classes + instead. + """ + + _estimator_type = 'sampler' + + def __init__(self, ratio='auto'): + """Initialize this object and its instance variables. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balanced + the dataset. Otherwise, the ratio will corresponds to the number + of samples in the minority class over the the number of samples + in the majority class. + + Returns + ------- + None + + """ + + self.ratio = ratio + self.logger = logging.getLogger(__name__) + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + + # Check the consistency of X and y + X, y = check_X_y(X, y) + + self.min_c_ = None + self.maj_c_ = None + self.stats_c_ = {} + self.X_shape_ = None + + if hasattr(self, 'ratio'): + self._validate_ratio() + + self.logger.info('Compute classes statistics ...') + + # Get all the unique elements in the target array + uniques = np.unique(y) + + # # Raise an error if there is only one class + # if uniques.size == 1: + # raise RuntimeError("Only one class detected, aborting...") + # Raise a warning for the moment to be compatible with BaseEstimator + if uniques.size == 1: + warnings.warn('Only one class detected, something will get wrong', + RuntimeWarning) + + # Store the size of X to check at sampling time if we have the + # same data + self.X_shape_ = X.shape + + # Create a dictionary containing the class statistics + self.stats_c_ = Counter(y) + + # Find the minority and majority classes + self.min_c_ = min(self.stats_c_, key=self.stats_c_.get) + self.maj_c_ = max(self.stats_c_, key=self.stats_c_.get) + + self.logger.info('%s classes detected: %s', uniques.size, + self.stats_c_) + + # Check if the ratio provided at initialisation make sense + if isinstance(self.ratio, float): + if self.ratio < (self.stats_c_[self.min_c_] / + self.stats_c_[self.maj_c_]): + raise RuntimeError('The ratio requested at initialisation' + ' should be greater or equal than the' + ' balancing ratio of the current data.') + + return self + + def sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + + # Check the consistency of X and y + X, y = check_X_y(X, y) + + # Check that the data have been fitted + if not hasattr(self, 'stats_c_'): + raise RuntimeError('You need to fit the data, first!!!') + + # Check if the size of the data is identical than at fitting + if X.shape != self.X_shape_: + raise RuntimeError('The data that you attempt to resample do not' + ' seem to be the one earlier fitted. Use the' + ' fitted data.') + + if hasattr(self, 'ratio'): + self._validate_ratio() + + return self._sample(X, y) + + def fit_sample(self, X, y): + """Fit the statistics and resample the data directly. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + + return self.fit(X, y).sample(X, y) + + def _validate_ratio(self): + # The ratio correspond to the number of samples in the minority class + # over the number of samples in the majority class. Thus, the ratio + # cannot be greater than 1.0 + if isinstance(self.ratio, float): + if self.ratio > 1: + raise ValueError('Ration cannot be greater than one.') + elif self.ratio <= 0: + raise ValueError('Ratio cannot be negative.') + + elif isinstance(self.ratio, string_types): + if self.ratio != 'auto': + raise ValueError('Unknown string for the parameter ratio.') + else: + raise ValueError('Unknown parameter type for ratio.') + + @abstractmethod + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + """ + pass + + def __getstate__(self): + """Prevent logger from being pickled.""" + object_dictionary = self.__dict__.copy() + del object_dictionary['logger'] + return object_dictionary + + def __setstate__(self, dict): + """Re-open the logger.""" + logger = logging.getLogger(__name__) + self.__dict__.update(dict) + self.logger = logger + + +class BaseBinarySampler(six.with_metaclass(ABCMeta, SamplerMixin)): + """Base class for all binary class sampler. + + Warning: This class should not be used directly. Use derived classes + instead. + + """ + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + + super(BaseBinarySampler, self).fit(X, y) + + # Check that the target type is binary + if not type_of_target(y) == 'binary': + warnings.warn('The target type should be binary.') + + return self + + +class BaseMulticlassSampler(six.with_metaclass(ABCMeta, SamplerMixin)): + """Base class for all multiclass sampler. + + Warning: This class should not be used directly. Use derived classes + instead. + + """ + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + + super(BaseMulticlassSampler, self).fit(X, y) + + # Check that the target type is either binary or multiclass + if not (type_of_target(y) == 'binary' or + type_of_target(y) == 'multiclass'): + warnings.warn('The target type should be binary or multiclass.') + + return self diff --git a/unbalanced_dataset/combine/__init__.py b/imblearn/combine/__init__.py similarity index 68% rename from unbalanced_dataset/combine/__init__.py rename to imblearn/combine/__init__.py index 090de8038..75617c3f6 100644 --- a/unbalanced_dataset/combine/__init__.py +++ b/imblearn/combine/__init__.py @@ -1,4 +1,4 @@ -"""The :mod:`unbalanced_dataset.combine` provides methods which combine +"""The :mod:`imblearn.combine` provides methods which combine over-sampling and under-sampling. """ diff --git a/imblearn/combine/smote_enn.py b/imblearn/combine/smote_enn.py new file mode 100644 index 000000000..baa2ceed9 --- /dev/null +++ b/imblearn/combine/smote_enn.py @@ -0,0 +1,178 @@ +"""Class to perform over-sampling using SMOTE and cleaning using ENN.""" +from __future__ import print_function +from __future__ import division + +from ..over_sampling import SMOTE +from ..under_sampling import EditedNearestNeighbours +from ..base import BaseBinarySampler + + +class SMOTEENN(BaseBinarySampler): + """Class to perform over-sampling using SMOTE and cleaning using ENN. + + Combine over- and under-sampling using SMOTE and Edited Nearest Neighbours. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the + number of samples in the minority class over the the number of + samples in the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + k : int, optional (default=5) + Number of nearest neighbours to used to construct synthetic + samples. + + m : int, optional (default=10) + Number of nearest neighbours to use to determine if a minority + sample is in danger. + + out_step : float, optional (default=0.5) + Step size when extrapolating. + + kind_smote : str, optional (default='regular') + The type of SMOTE algorithm to use one of the following + options: 'regular', 'borderline1', 'borderline2', 'svm'. + + size_ngh : int, optional (default=3) + Size of the neighbourhood to consider to compute the average + distance to the minority point samples. + + kind_sel : str, optional (default='all') + Strategy to use in order to exclude samples. + + - If 'all', all neighbours will have to agree with the samples of + interest to not be excluded. + - If 'mode', the majority vote of the neighbours will be used in + order to exclude a sample. + + n_jobs : int, optional (default=-1) + The number of threads to open if possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The method is presented in [1]_. + + This class does not support mutli-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.combine import SMOTEENN + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> sme = SMOTEENN(random_state=42) + >>> X_res, y_res = sme.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 900, 1: 865}) + + References + ---------- + .. [1] G. Batista, R. C. Prati, M. C. Monard. "A study of the behavior of + several methods for balancing machine learning training data," ACM + Sigkdd Explorations Newsletter 6 (1), 20-29, 2004. + + """ + + def __init__(self, ratio='auto', random_state=None, + k=5, m=10, out_step=0.5, kind_smote='regular', + size_ngh=3, kind_enn='all', n_jobs=-1, **kwargs): + + super(SMOTEENN, self).__init__(ratio=ratio) + self.random_state = random_state + self.k = k + self.m = m + self.out_step = out_step + self.kind_smote = kind_smote + self.size_ngh = size_ngh + self.kind_enn = kind_enn + self.n_jobs = n_jobs + self.kwargs = kwargs + self.sm = SMOTE(ratio=self.ratio, random_state=self.random_state, + k=self.k, m=self.m, out_step=self.out_step, + kind=self.kind_smote, n_jobs=self.n_jobs, + **self.kwargs) + self.enn = EditedNearestNeighbours(random_state=self.random_state, + size_ngh=self.size_ngh, + kind_sel=self.kind_enn, + n_jobs=self.n_jobs) + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + + super(SMOTEENN, self).fit(X, y) + + # Fit using SMOTE + self.sm.fit(X, y) + + return self + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + + # Transform using SMOTE + X, y = self.sm.sample(X, y) + + # Fit and transform using ENN + return self.enn.fit_sample(X, y) diff --git a/imblearn/combine/smote_tomek.py b/imblearn/combine/smote_tomek.py new file mode 100644 index 000000000..96615d3bf --- /dev/null +++ b/imblearn/combine/smote_tomek.py @@ -0,0 +1,173 @@ +"""Class to perform over-sampling using SMOTE and cleaning using Tomek +links.""" +from __future__ import print_function +from __future__ import division + +from ..over_sampling import SMOTE +from ..under_sampling import TomekLinks +from ..base import BaseBinarySampler + + +class SMOTETomek(BaseBinarySampler): + """Class to perform over-sampling using SMOTE and cleaning using + Tomek links. + + Combine over- and under-sampling using SMOTE and Tomek links. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the + number of samples in the minority class over the the number of + samples in the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + k : int, optional (default=5) + Number of nearest neighbours to used to construct synthetic + samples. + + m : int, optional (default=10) + Number of nearest neighbours to use to determine if a minority + sample is in danger. + + out_step : float, optional (default=0.5) + Step size when extrapolating. + + kind_smote : str, optional (default='regular') + The type of SMOTE algorithm to use one of the following + options: 'regular', 'borderline1', 'borderline2', 'svm' + + size_ngh : int, optional (default=3) + Size of the neighbourhood to consider to compute the average + distance to the minority point samples. + + kind_sel : str, optional (default='all') + Strategy to use in order to exclude samples. + + - If 'all', all neighbours will have to agree with the samples of + interest to not be excluded. + - If 'mode', the majority vote of the neighbours will be used in + order to exclude a sample. + + n_jobs : int, optional (default=-1) + The number of threads to open if possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The methos is presented in [1]_. + + This class does not support mutli-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.combine import SMOTETomek + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> smt = SMOTETomek(random_state=42) + >>> X_res, y_res = smt.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 900, 1: 900}) + + References + ---------- + .. [1] G. Batista, B. Bazzan, M. Monard, "Balancing Training Data for + Automated Annotation of Keywords: a Case Study," In WOB, 10-18, 2003. + + """ + + def __init__(self, ratio='auto', random_state=None, + k=5, m=10, out_step=0.5, kind_smote='regular', + n_jobs=-1, **kwargs): + super(SMOTETomek, self).__init__(ratio=ratio) + self.random_state = random_state + self.k = k + self.m = m + self.out_step = out_step + self.kind_smote = kind_smote + self.n_jobs = n_jobs + self.kwargs = kwargs + self.sm = SMOTE(ratio=self.ratio, random_state=self.random_state, + k=self.k, m=self.m, out_step=self.out_step, + kind=self.kind_smote, n_jobs=self.n_jobs, + **self.kwargs) + self.tomek = TomekLinks(random_state=self.random_state) + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + + super(SMOTETomek, self).fit(X, y) + + # Fit using SMOTE + self.sm.fit(X, y) + + return self + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + + # Transform using SMOTE + X, y = self.sm.sample(X, y) + + # Fit and transform using ENN + return self.tomek.fit_sample(X, y) diff --git a/unbalanced_dataset/combine/tests/__init__.py b/imblearn/combine/tests/__init__.py similarity index 100% rename from unbalanced_dataset/combine/tests/__init__.py rename to imblearn/combine/tests/__init__.py diff --git a/imblearn/combine/tests/test_smote_enn.py b/imblearn/combine/tests/test_smote_enn.py new file mode 100644 index 000000000..a09bd78ce --- /dev/null +++ b/imblearn/combine/tests/test_smote_enn.py @@ -0,0 +1,189 @@ +"""Test the module SMOTE ENN.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.combine import SMOTEENN + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234]]) +Y = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]) + + +def test_senn_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(SMOTEENN) + + +def test_senn_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + smote = SMOTEENN(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + smote = SMOTEENN(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + smote = SMOTEENN(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + smote = SMOTEENN(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + +def test_smote_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + smote = SMOTEENN(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, smote.fit, X, y_single_class) + + +def test_smote_fit(): + """Test the fitting method""" + + # Create the object + smote = SMOTEENN(random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + # Check if the data information have been computed + assert_equal(smote.min_c_, 0) + assert_equal(smote.maj_c_, 1) + assert_equal(smote.stats_c_[0], 8) + assert_equal(smote.stats_c_[1], 12) + + +def test_smote_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + smote = SMOTEENN(random_state=RND_SEED) + assert_raises(RuntimeError, smote.sample, X, Y) + + +def test_sample_regular(): + """Test sample function with regular SMOTE.""" + + # Create the object + smote = SMOTEENN(random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [0.29307743, -0.14670439], + [0.84976473, -0.15570176], + [0.61319159, -0.11571668], + [0.66052536, -0.28246517], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.08711622, 0.93259929]]) + y_gt = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_regular_half(): + """Test sample function with regular SMOTE and a ratio of 0.5.""" + + # Create the object + ratio = 0.8 + smote = SMOTEENN(ratio=ratio, random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [0.36784496, -0.1953161], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.08711622, 0.93259929]]) + y_gt = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + sm = SMOTEENN(random_state=RND_SEED) + sm.fit(X, Y) + assert_raises(RuntimeError, sm.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_senn_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 20) + sm = SMOTEENN(random_state=RND_SEED) + assert_warns(UserWarning, sm.fit, X, y) + + # multiclass case + y = np.array([0] * 3 + [1] * 2 + [2] * 15) + sm = SMOTEENN(random_state=RND_SEED) + assert_warns(UserWarning, sm.fit, X, y) diff --git a/imblearn/combine/tests/test_smote_tomek.py b/imblearn/combine/tests/test_smote_tomek.py new file mode 100644 index 000000000..17c040e4d --- /dev/null +++ b/imblearn/combine/tests/test_smote_tomek.py @@ -0,0 +1,200 @@ +"""Test the module SMOTE ENN.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.combine import SMOTETomek + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.20622591, 0.0582794], + [0.68481731, 0.51935141], + [1.34192108, -0.13367336], + [0.62366841, -0.21312976], + [1.61091956, -0.40283504], + [-0.37162401, -2.19400981], + [0.74680821, 1.63827342], + [0.2184254, 0.24299982], + [0.61472253, -0.82309052], + [0.19893132, -0.47761769], + [1.06514042, -0.0770537], + [0.97407872, 0.44454207], + [1.40301027, -0.83648734], + [-1.20515198, -1.02689695], + [-0.27410027, -0.54194484], + [0.8381014, 0.44085498], + [-0.23374509, 0.18370049], + [-0.32635887, -0.29299653], + [-0.00288378, 0.84259929], + [1.79580611, -0.02219234]]) +Y = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]) + + +def test_smote_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(SMOTETomek) + + +def test_smote_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + smote = SMOTETomek(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + smote = SMOTETomek(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + smote = SMOTETomek(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + smote = SMOTETomek(ratio=ratio) + assert_raises(ValueError, smote.fit, X, Y) + + +def test_smote_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + smote = SMOTETomek(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, smote.fit, X, y_single_class) + + +def test_smote_fit(): + """Test the fitting method""" + + # Create the object + smote = SMOTETomek(random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + # Check if the data information have been computed + assert_equal(smote.min_c_, 0) + assert_equal(smote.maj_c_, 1) + assert_equal(smote.stats_c_[0], 8) + assert_equal(smote.stats_c_[1], 12) + + +def test_smote_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + smote = SMOTETomek(random_state=RND_SEED) + assert_raises(RuntimeError, smote.sample, X, Y) + + +def test_sample_regular(): + """Test sample function with regular SMOTE.""" + + # Create the object + smote = SMOTETomek(random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.20622591, 0.0582794], + [0.68481731, 0.51935141], + [1.34192108, -0.13367336], + [0.62366841, -0.21312976], + [1.61091956, -0.40283504], + [-0.37162401, -2.19400981], + [0.74680821, 1.63827342], + [0.61472253, -0.82309052], + [0.19893132, -0.47761769], + [0.97407872, 0.44454207], + [1.40301027, -0.83648734], + [-1.20515198, -1.02689695], + [-0.23374509, 0.18370049], + [-0.32635887, -0.29299653], + [-0.00288378, 0.84259929], + [1.79580611, -0.02219234], + [0.38307743, -0.05670439], + [0.93976473, -0.06570176], + [0.70319159, -0.02571668], + [0.75052536, -0.19246517]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, + 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_regular_half(): + """Test sample function with regular SMOTE and a ratio of 0.5.""" + + # Create the object + ratio = 0.8 + smote = SMOTETomek(ratio=ratio, random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.20622591, 0.0582794], + [0.68481731, 0.51935141], + [1.34192108, -0.13367336], + [0.62366841, -0.21312976], + [1.61091956, -0.40283504], + [-0.37162401, -2.19400981], + [0.74680821, 1.63827342], + [0.61472253, -0.82309052], + [0.19893132, -0.47761769], + [0.97407872, 0.44454207], + [1.40301027, -0.83648734], + [-1.20515198, -1.02689695], + [-0.23374509, 0.18370049], + [-0.32635887, -0.29299653], + [-0.00288378, 0.84259929], + [1.79580611, -0.02219234], + [0.45784496, -0.1053161]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + sm = SMOTETomek(random_state=RND_SEED) + sm.fit(X, Y) + assert_raises(RuntimeError, sm.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 20) + sm = SMOTETomek(random_state=RND_SEED) + assert_warns(UserWarning, sm.fit, X, y) + + # multiclass case + y = np.array([0] * 3 + [1] * 2 + [2] * 15) + sm = SMOTETomek(random_state=RND_SEED) + assert_warns(UserWarning, sm.fit, X, y) diff --git a/imblearn/datasets/__init__.py b/imblearn/datasets/__init__.py new file mode 100644 index 000000000..8dd3c46f0 --- /dev/null +++ b/imblearn/datasets/__init__.py @@ -0,0 +1,10 @@ +""" +The :mod:`imblearn.datasets` provides methods to generate +imbalanced data. +""" + +from .benchmark import fetch_benchmark +from .imbalance import make_imbalance + +__all__ = ['fetch_benchmark', + 'make_imbalance'] diff --git a/imblearn/datasets/benchmark.py b/imblearn/datasets/benchmark.py new file mode 100644 index 000000000..7aa9a2294 --- /dev/null +++ b/imblearn/datasets/benchmark.py @@ -0,0 +1,106 @@ +"""Imbalanced dataset for benchmarking. + +The datasets composing the benchmark are available at: +https://zenodo.org/record/61452/files/benchmark-imbalanced-learn.tar.gz + +It is a compilation of UCI, LIBSVM, and KDD datasets. +""" + +import tarfile +import logging + +from os import makedirs +from os.path import join +from os.path import exists + +try: + # Python 2 + import urllib2 + urlopen = urllib2.urlopen +except ImportError: + # Python 3 + import urllib.request + urlopen = urllib.request.urlopen + +import numpy as np + +from sklearn.datasets.base import get_data_home + + +DATA_URL = 'https://zenodo.org/record/61452/files/benchmark-imbalanced-learn.tar.gz' +ARCHIVE_NAME = "benchmark-imbalanced-learn.tar.gz" +TARGET_FILENAME = ['x{}data.npz'.format(idx+1) for idx in range(27)] + +logger = logging.getLogger(__name__) + +# Grab the module-level docstring to use as a description of the +# dataset +MODULE_DOCS = __doc__ + + +def fetch_benchmark(data_home=None, download_if_missing=True): + """Loader for the imbalanced dataset used as benchmark. + + Parameters + ---------- + data_home : optional, default: None + Specify another download and cache folder for the datasets. By default + all scikit learn data is stored in '~/scikit_learn_data' subfolders. + + download_if_missing: optional, True by default + If False, raise an IOError if the data is not locally available + instead of trying to download the data from the source site. + + Returns + ------- + + data : list of npz object + List of object containing the information about each dataset. + Each object in the list is composed of 2 numpy arrays: + - `data` : ndarray, shape (n_samples, n_features) containing the data, + - `label` : ndarray, shape (n_samples, ) containing the label + associated to data. + + """ + + # Check that the data folder is existing + data_home = get_data_home(data_home=data_home) + if not exists(data_home): + makedirs(data_home) + + # Create the filename to work with + filepath = [join(data_home, f) for f in TARGET_FILENAME] + archive_path = join(data_home, ARCHIVE_NAME) + # Check that these files are all existing, otherwise we will download them + b_download = False + b_extract = False + for f in filepath: + if not exists(f): + b_download = True + b_extract = True + if exists(archive_path): + b_download = False + b_extract = True + + # Check if we need to download the data + if b_download: + if download_if_missing: + logger.info('Download the benchmark dataset') + opener = urlopen(DATA_URL) + with open(archive_path, 'wb') as f: + f.write(opener.read()) + else: + raise IOError('Benchmark dataset not found') + else: + logger.info('The dataset was already downloaded') + + # Check if we need to extract the data + if b_extract: + logger.info("Decompressing %s", archive_path) + tarfile.open(archive_path, "r:gz").extractall(path=data_home) + else: + logger.info('No need to extract the data, they are already' + ' available') + + # Finally load the data + return [np.load(f) for f in filepath] diff --git a/imblearn/datasets/imbalance.py b/imblearn/datasets/imbalance.py new file mode 100644 index 000000000..3fb2467eb --- /dev/null +++ b/imblearn/datasets/imbalance.py @@ -0,0 +1,90 @@ +"""Transform a dataset into an imbalanced dataset.""" + +import logging + +import numpy as np + +from collections import Counter + +from sklearn.utils import check_X_y +from sklearn.utils import check_random_state + +LOGGER = logging.getLogger(__name__) + + +def make_imbalance(X, y, ratio, min_c_=None, random_state=None): + """Turns a dataset into an imbalanced dataset at specific ratio. + A simple toy dataset to visualize clustering and classification + algorithms. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data to be imbalanced. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + ratio : float, + The desired ratio given by the number of samples in + the minority class over the the number of samples in + the majority class. Thus the ratio should be in the interval [0., 1.] + + min_c_ : str or int, optional (default=None) + The identifier of the class to be the minority class. + If None, min_c_ is set to be the current minority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the imbalanced data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + if isinstance(ratio, float): + if ratio > 1: + raise ValueError('Ration cannot be greater than one.') + elif ratio <= 0: + raise ValueError('Ratio cannot be negative.') + else: + raise ValueError('Ratio must be a float between 0.0 < ratio < 1.0') + + X, y = check_X_y(X, y) + + random_state = check_random_state(random_state) + + stats_c_ = Counter(y) + + LOGGER.info('The original target distribution in the dataset is: %s', + stats_c_) + + if min_c_ is None: + min_c_ = min(stats_c_, key=stats_c_.get) + + n_min_samples = int(np.count_nonzero(y != min_c_) * ratio) + if n_min_samples > stats_c_[min_c_]: + raise ValueError('Current imbalance ratio of data is lower than' + ' desired ratio!') + if n_min_samples == 0: + raise ValueError('Not enough samples for desired ratio!') + + mask = y == min_c_ + + idx_maj = np.where(~mask)[0] + idx_min = np.where(mask)[0] + idx_min = random_state.choice(idx_min, size=n_min_samples, replace=False) + idx = np.concatenate((idx_min, idx_maj), axis=0) + + X_resampled, y_resampled = X[idx, :], y[idx] + + LOGGER.info('Make the dataset imbalanced: %s', Counter(y_resampled)) + + return X_resampled, y_resampled diff --git a/unbalanced_dataset/ensemble/tests/__init__.py b/imblearn/datasets/tests/__init__.py similarity index 100% rename from unbalanced_dataset/ensemble/tests/__init__.py rename to imblearn/datasets/tests/__init__.py diff --git a/imblearn/datasets/tests/test_benchmark.py b/imblearn/datasets/tests/test_benchmark.py new file mode 100644 index 000000000..e710c9709 --- /dev/null +++ b/imblearn/datasets/tests/test_benchmark.py @@ -0,0 +1,28 @@ +"""Test the module easy ensemble.""" +from __future__ import print_function + +from os import remove +from os.path import join + +from numpy.testing import assert_equal +from nose import SkipTest + +from imblearn.datasets import fetch_benchmark + + +def test_fetch_data(): + """Testing that fetching the data is working.""" + + # Download and extract the data + try: + data = fetch_benchmark(download_if_missing=False) + except IOError: + raise SkipTest("Download 20 newsgroups to run this test") + + # Check that we have the 27 dataset + assert_equal(len(data), 27) + + # Check that each object has a 'data' and 'label' ndarray + obj_name = ('data', 'label') + for dataset in data: + assert_equal(tuple([key for key in dataset.keys()]), obj_name) diff --git a/imblearn/datasets/tests/test_make_imbalance.py b/imblearn/datasets/tests/test_make_imbalance.py new file mode 100644 index 000000000..113ff1d40 --- /dev/null +++ b/imblearn/datasets/tests/test_make_imbalance.py @@ -0,0 +1,117 @@ +"""Test the module easy ensemble.""" +from __future__ import print_function + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from nose.tools import assert_true + +from collections import Counter + +from imblearn.datasets import make_imbalance + +# Generate a global dataset to use +X = np.random.random((1000, 2)) +Y = np.zeros(1000) +Y[500:] = 1 + + +def test_make_imbalance_bad_ratio(): + """Test either if an error is raised with bad ratio + argument""" + min_c_ = 1 + + # Define a zero ratio + ratio = 0.0 + assert_raises(ValueError, make_imbalance, X, Y, ratio, min_c_) + + # Define a negative ratio + ratio = -2.0 + assert_raises(ValueError, make_imbalance, X, Y, ratio, min_c_) + + # Define a ratio greater than 1 + ratio = 2.0 + assert_raises(ValueError, make_imbalance, X, Y, ratio, min_c_) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + assert_raises(ValueError, make_imbalance, X, Y, ratio, min_c_) + + +def test_make_imbalance_invalid_ratio(): + """Test either if error is raised with higher ratio + than current ratio.""" + + y_ = np.zeros((X.shape[0], )) + y_[0] = 1 + + ratio = 0.5 + assert_raises(ValueError, make_imbalance, X, y_, ratio) + + +def test_make_imbalance_single_class(): + """Test either if an error when there is a single class""" + y_ = np.zeros((X.shape[0], )) + ratio = 0.5 + assert_raises(ValueError, make_imbalance, X, y_, ratio) + + +def test_make_imbalance_1(): + """Test make_imbalance""" + X_, y_ = make_imbalance(X, Y, ratio=0.5, min_c_=1) + counter = Counter(y_) + assert_equal(counter[0], 500) + assert_equal(counter[1], 250) + assert_true(np.all([X_i in X for X_i in X_])) + + +def test_make_imbalance_2(): + """Test make_imbalance""" + X_, y_ = make_imbalance(X, Y, ratio=0.25, min_c_=1) + counter = Counter(y_) + assert_equal(counter[0], 500) + assert_equal(counter[1], 125) + assert_true(np.all([X_i in X for X_i in X_])) + + +def test_make_imbalance_3(): + """Test make_imbalance""" + X_, y_ = make_imbalance(X, Y, ratio=0.1, min_c_=1) + counter = Counter(y_) + assert_equal(counter[0], 500) + assert_equal(counter[1], 50) + assert_true(np.all([X_i in X for X_i in X_])) + + +def test_make_imbalance_4(): + """Test make_imbalance""" + X_, y_ = make_imbalance(X, Y, ratio=0.01, min_c_=1) + counter = Counter(y_) + assert_equal(counter[0], 500) + assert_equal(counter[1], 5) + assert_true(np.all([X_i in X for X_i in X_])) + + +def test_make_imbalance_5(): + """Test make_imbalance""" + X_, y_ = make_imbalance(X, Y, ratio=0.01, min_c_=0) + counter = Counter(y_) + assert_equal(counter[1], 500) + assert_equal(counter[0], 5) + assert_true(np.all([X_i in X for X_i in X_])) + + +def test_make_imbalance_multiclass(): + """Test make_imbalance with multiclass data""" + # Make y to be multiclass + y_ = np.zeros(1000) + y_[100:500] = 1 + y_[500:] = 2 + + # Resample the data + X_, y_ = make_imbalance(X, y_, ratio=0.1, min_c_=0) + counter = Counter(y_) + assert_equal(counter[0], 90) + assert_equal(counter[1], 400) + assert_equal(counter[2], 500) + assert_true(np.all([X_i in X for X_i in X_])) diff --git a/unbalanced_dataset/ensemble/__init__.py b/imblearn/ensemble/__init__.py similarity index 73% rename from unbalanced_dataset/ensemble/__init__.py rename to imblearn/ensemble/__init__.py index 1cb0bc67f..b9d083c0f 100644 --- a/unbalanced_dataset/ensemble/__init__.py +++ b/imblearn/ensemble/__init__.py @@ -1,5 +1,5 @@ """ -The :mod:`unbalanced_dataset.ensemble` module include methods generating +The :mod:`imblearn.ensemble` module include methods generating under-sampled subsets combined inside an ensemble. """ diff --git a/unbalanced_dataset/ensemble/balance_cascade.py b/imblearn/ensemble/balance_cascade.py similarity index 57% rename from unbalanced_dataset/ensemble/balance_cascade.py rename to imblearn/ensemble/balance_cascade.py index 3136b9423..d0ca37bec 100644 --- a/unbalanced_dataset/ensemble/balance_cascade.py +++ b/imblearn/ensemble/balance_cascade.py @@ -3,40 +3,44 @@ import numpy as np -from sklearn.utils import check_X_y +from sklearn.utils import check_random_state -from .ensemble_sampler import EnsembleSampler +from ..base import BaseBinarySampler -class BalanceCascade(EnsembleSampler): - """Perform under-sampling using an ensemble of subset selected using - some classifiers. +ESTIMATOR_KIND = ('knn', 'decision-tree', 'random-forest', 'adaboost', + 'gradient-boosting', 'linear-svm') + + +class BalanceCascade(BaseBinarySampler): + """Create an ensemble of balanced sets by iteratively under-sampling the + imbalanced dataset using an estimator. This method iteratively select subset and make an ensemble of the - different sets. The selection is performed using classifier. + different sets. The selection is performed using a specific classifier. Parameters ---------- ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number of samples in the minority class over the the number of samples in the majority class. return_indices : bool, optional (default=True) - Either to return or not the indices which will be selected from - the majority class. + Whether or not to return the indices of the samples randomly + selected from the majority class. - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. n_max_subset : int or None, optional (default=None) Maximum number of subsets to generate. By default, all data from the training will be selected that could lead to a large number of - subsets. We can probably reduced this number empirically. + subsets. We can probably deduce this number empirically. classifier : str, optional (default='knn') The classifier that will be selected to confront the prediction @@ -44,20 +48,14 @@ class BalanceCascade(EnsembleSampler): 'decision-tree', 'random-forest', 'adaboost', 'gradient-boosting' and 'linear-svm'. + bootstrap : bool, optional (default=True) + Whether to bootstrap the data before each iteration. + **kwargs : keywords The parameters associated with the classifier provided. Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -68,12 +66,32 @@ class BalanceCascade(EnsembleSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + Notes ----- The method is described in [1]_. This class does not support multi-class. + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.ensemble import BalanceCascade + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> bc = BalanceCascade(random_state=42) + >>> X_res, y_res = bc.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res[0]))) + Resampled dataset shape Counter({0: 100, 1: 100}) + References ---------- .. [1] X. Y. Liu, J. Wu and Z. H. Zhou, "Exploratory Undersampling for @@ -82,105 +100,19 @@ class BalanceCascade(EnsembleSampler): April 2009. """ - def __init__(self, ratio='auto', return_indices=False, random_state=None, - verbose=True, n_max_subset=None, classifier='knn', - bootstrap=True, **kwargs): - """Initialise the balance cascade object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=True) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_max_subset : int or None, optional (default=None) - Maximum number of subsets to generate. By default, all data from - the training will be selected that could lead to a large number of - subsets. We can probably reduced this number empirically. - - classifier : str, optional (default='knn') - The classifier that will be selected to confront the prediction - with the real labels. The choices are the following: 'knn', - 'decision-tree', 'random-forest', 'adaboost', 'gradient-boosting' - and 'linear-svm'. - - **kwargs : keywords - The parameters associated with the classifier provided. - - Returns - ------- - None - - """ - super(BalanceCascade, self).__init__(ratio=ratio, - return_indices=return_indices, - verbose=verbose, - random_state=random_state) - # Define the classifier to use - if classifier == 'knn': - from sklearn.neighbors import KNeighborsClassifier - self.classifier = KNeighborsClassifier(**kwargs) - elif classifier == 'decision-tree': - from sklearn.tree import DecisionTreeClassifier - self.classifier = DecisionTreeClassifier(**kwargs) - elif classifier == 'random-forest': - from sklearn.ensemble import RandomForestClassifier - self.classifier = RandomForestClassifier(**kwargs) - elif classifier == 'adaboost': - from sklearn.ensemble import AdaBoostClassifier - self.classifier = AdaBoostClassifier(**kwargs) - elif classifier == 'gradient-boosting': - from sklearn.ensemble import GradientBoostingClassifier - self.classifier = GradientBoostingClassifier(**kwargs) - elif classifier == 'linear-svm': - from sklearn.svm import LinearSVC - self.classifier = LinearSVC(**kwargs) - else: - raise ValueError('UnbalancedData.BalanceCascade: classifier ' - 'not yet supported.') + def __init__(self, ratio='auto', return_indices=False, random_state=None, + n_max_subset=None, classifier='knn', bootstrap=True, + **kwargs): + super(BalanceCascade, self).__init__(ratio=ratio) + self.return_indices = return_indices + self.random_state = random_state + self.classifier = classifier self.n_max_subset = n_max_subset - self.classifier_name = classifier self.bootstrap = bootstrap + self.kwargs = kwargs - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - # Call the parent function - super(BalanceCascade, self).fit(X, y) - - return self - - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -204,10 +136,43 @@ def transform(self, X, y): containing the which samples have been selected. """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - super(BalanceCascade, self).transform(X, y) + if self.classifier not in ESTIMATOR_KIND: + raise NotImplementedError + + random_state = check_random_state(self.random_state) + + # Define the classifier to use + if self.classifier == 'knn': + from sklearn.neighbors import KNeighborsClassifier + classifier = KNeighborsClassifier( + **self.kwargs) + elif self.classifier == 'decision-tree': + from sklearn.tree import DecisionTreeClassifier + classifier = DecisionTreeClassifier( + random_state=random_state, + **self.kwargs) + elif self.classifier == 'random-forest': + from sklearn.ensemble import RandomForestClassifier + classifier = RandomForestClassifier( + random_state=random_state, + **self.kwargs) + elif self.classifier == 'adaboost': + from sklearn.ensemble import AdaBoostClassifier + classifier = AdaBoostClassifier( + random_state=random_state, + **self.kwargs) + elif self.classifier == 'gradient-boosting': + from sklearn.ensemble import GradientBoostingClassifier + classifier = GradientBoostingClassifier( + random_state=random_state, + **self.kwargs) + elif self.classifier == 'linear-svm': + from sklearn.svm import LinearSVC + classifier = LinearSVC(random_state=random_state, + **self.kwargs) + else: + raise NotImplementedError X_resampled = [] y_resampled = [] @@ -221,16 +186,16 @@ def transform(self, X, y): # Keep the indices of the minority class somewhere if we need to # return them later if self.return_indices: - idx_min = np.nonzero(y == self.min_c_)[0] + idx_min = np.flatnonzero(y == self.min_c_) # Condition to initiliase before the search b_subset_search = True n_subsets = 0 # Get the initial number of samples to select in the majority class - if self.ratio_ == 'auto': + if self.ratio == 'auto': num_samples = self.stats_c_[self.min_c_] else: - num_samples = int(self.stats_c_[self.min_c_] / self.ratio_) + num_samples = int(self.stats_c_[self.min_c_] / self.ratio) # Create the array characterising the array containing the majority # class N_x = X[y != self.min_c_] @@ -240,13 +205,13 @@ def transform(self, X, y): # Loop to create the different subsets while b_subset_search: + self.logger.debug('Search boolean: %s', b_subset_search) # Generate an appropriate number of index to extract # from the majority class depending of the false classification # rate of the previous iteration - np.random.seed(self.rs_) - idx_sel_from_maj = np.random.choice(np.nonzero(b_sel_N)[0], - size=num_samples, - replace=False) + idx_sel_from_maj = random_state.choice(np.flatnonzero(b_sel_N), + size=num_samples, + replace=False) idx_sel_from_maj = np.concatenate((idx_mis_class, idx_sel_from_maj), axis=0).astype(int) @@ -267,52 +232,52 @@ def transform(self, X, y): idx_under.append(np.concatenate((idx_min, idx_sel_from_maj), axis=0)) - if (not (self.classifier_name == 'knn' or - self.classifier_name == 'linear-svm') and + if (not (self.classifier == 'knn' or + self.classifier == 'linear-svm') and self.bootstrap): # Apply a bootstrap on x_data curr_sample_weight = np.ones((y_data.size,), dtype=np.float64) - indices = np.random.randint(0, y_data.size, y_data.size) + indices = random_state.randint(0, y_data.size, y_data.size) sample_counts = np.bincount(indices, minlength=y_data.size) curr_sample_weight *= sample_counts # Train the classifier using the current data - self.classifier.fit(x_data, y_data, curr_sample_weight) + classifier.fit(x_data, y_data, curr_sample_weight) else: # Train the classifier using the current data - self.classifier.fit(x_data, y_data) + classifier.fit(x_data, y_data) # Predict using only the majority class - pred_label = self.classifier.predict(N_x[idx_sel_from_maj, :]) + pred_label = classifier.predict(N_x[idx_sel_from_maj, :]) # Basically let's find which sample have to be retained for the # next round # Find the misclassified index to keep them for the next round - idx_mis_class = idx_sel_from_maj[np.nonzero(pred_label != - N_y[idx_sel_from_maj])] - if self.verbose: - print("Elements misclassified: {}".format(idx_mis_class)) + idx_mis_class = idx_sel_from_maj[np.flatnonzero( + pred_label != N_y[idx_sel_from_maj])] + self.logger.debug('Elements misclassified: %s', idx_mis_class) + # Count how many random element will be selected - if self.ratio_ == 'auto': + if self.ratio == 'auto': num_samples = self.stats_c_[self.min_c_] else: - num_samples = int(self.stats_c_[self.min_c_] / self.ratio_) + num_samples = int(self.stats_c_[self.min_c_] / self.ratio) num_samples -= idx_mis_class.size - if self.verbose: - print("Creation of the subset #{}".format(n_subsets)) + self.logger.debug('Creation of the subset #%s', n_subsets) # We found a new subset, increase the counter n_subsets += 1 # Check if we have to make an early stopping if self.n_max_subset is not None: + self.logger.debug('Current number of subset %s', n_subsets) if n_subsets == (self.n_max_subset - 1): b_subset_search = False # Select the remaining data - idx_sel_from_maj = np.nonzero(b_sel_N)[0] + idx_sel_from_maj = np.flatnonzero(b_sel_N) idx_sel_from_maj = np.concatenate((idx_mis_class, idx_sel_from_maj), axis=0).astype(int) @@ -329,20 +294,24 @@ def transform(self, X, y): idx_sel_from_maj), axis=0)) - if self.verbose: - print("Creation of the subset #" + str(n_subsets)) + self.logger.debug('Creation of the subset #%s', n_subsets) + + # We found a new subset, increase the counter + n_subsets += 1 - # We found a new subset, increase the counter - n_subsets += 1 - if self.verbose: - print('The number of subset achieved their maximum') + self.logger.debug('The number of subset reached is' + ' maximum.') + break + # Specific case with n_max_subset = 1 + elif n_subsets > (self.n_max_subset - 1): + break # Also check that we will have enough sample to extract at the # next round if num_samples > np.count_nonzero(b_sel_N): b_subset_search = False # Select the remaining data - idx_sel_from_maj = np.nonzero(b_sel_N)[0] + idx_sel_from_maj = np.flatnonzero(b_sel_N) idx_sel_from_maj = np.concatenate((idx_mis_class, idx_sel_from_maj), axis=0).astype(int) @@ -357,14 +326,13 @@ def transform(self, X, y): idx_under.append(np.concatenate((idx_min, idx_sel_from_maj), axis=0)) - if self.verbose: - print("Creation of the subset #" + str(n_subsets)) + self.logger.debug('Creation of the subset #%s', n_subsets) # We found a new subset, increase the counter n_subsets += 1 - if self.verbose: - print('Not enough samples to continue creating subsets') + self.logger.debug('Not enough samples to continue creating' + ' subsets.') if self.return_indices: return (np.array(X_resampled), np.array(y_resampled), diff --git a/imblearn/ensemble/easy_ensemble.py b/imblearn/ensemble/easy_ensemble.py new file mode 100644 index 000000000..0db68697b --- /dev/null +++ b/imblearn/ensemble/easy_ensemble.py @@ -0,0 +1,160 @@ +"""Class to perform under-sampling using easy ensemble.""" +from __future__ import print_function + +import numpy as np + +from sklearn.utils import check_random_state + +from ..base import BaseMulticlassSampler +from ..under_sampling import RandomUnderSampler + + +MAX_INT = np.iinfo(np.int32).max + + +class EasyEnsemble(BaseMulticlassSampler): + + """Create an ensemble sets by iteratively applying random under-sampling. + + This method iteratively select a random subset and make an ensemble of the + different sets. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number + of samples in the minority class over the the number of samples + in the majority class. + + return_indices : bool, optional (default=True) + Whether or not to return the indices of the samples randomly + selected from the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + replacement : bool, optional (default=False) + Whether or not to sample randomly with replacement or not. + + n_subsets : int, optional (default=10) + Number of subsets to generate. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The method is described in [1]_. + + This method supports multiclass target type. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.ensemble import EasyEnsemble + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> ee = EasyEnsemble(random_state=42) + >>> X_res, y_res = ee.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res[0]))) + Resampled dataset shape Counter({0: 100, 1: 100}) + + References + ---------- + .. [1] X. Y. Liu, J. Wu and Z. H. Zhou, "Exploratory Undersampling for + Class-Imbalance Learning," in IEEE Transactions on Systems, Man, and + Cybernetics, Part B (Cybernetics), vol. 39, no. 2, pp. 539-550, + April 2009. + + """ + + def __init__(self, ratio='auto', return_indices=False, + random_state=None, replacement=False, n_subsets=10): + super(EasyEnsemble, self).__init__(ratio=ratio) + self.return_indices = return_indices + self.random_state = random_state + self.replacement = replacement + self.n_subsets = n_subsets + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_subset, n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_subset, n_samples_new) + The corresponding label of `X_resampled` + + idx_under : ndarray, shape (n_subset, n_samples, ) + If `return_indices` is `True`, a boolean array will be returned + containing the which samples have been selected. + + """ + + # Check the random state + random_state = check_random_state(self.random_state) + + X_resampled = [] + y_resampled = [] + if self.return_indices: + idx_under = [] + + self.samplers_ = [] + + for _ in range(self.n_subsets): + rus = RandomUnderSampler(ratio=self.ratio, + return_indices=self.return_indices, + random_state=random_state.randint( + MAX_INT), + replacement=self.replacement) + self.samplers_.append(rus) + + for rus in self.samplers_: + + if self.return_indices: + sel_x, sel_y, sel_idx = rus.fit_sample(X, y) + else: + sel_x, sel_y = rus.fit_sample(X, y) + + X_resampled.append(sel_x) + y_resampled.append(sel_y) + if self.return_indices: + idx_under.append(sel_idx) + + if self.return_indices: + return (np.array(X_resampled), np.array(y_resampled), + np.array(idx_under)) + else: + return np.array(X_resampled), np.array(y_resampled) diff --git a/unbalanced_dataset/over_sampling/tests/__init__.py b/imblearn/ensemble/tests/__init__.py similarity index 100% rename from unbalanced_dataset/over_sampling/tests/__init__.py rename to imblearn/ensemble/tests/__init__.py diff --git a/imblearn/ensemble/tests/test_balance_cascade.py b/imblearn/ensemble/tests/test_balance_cascade.py new file mode 100644 index 000000000..dd8680c69 --- /dev/null +++ b/imblearn/ensemble/tests/test_balance_cascade.py @@ -0,0 +1,684 @@ +"""Test the module balance cascade.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.ensemble import BalanceCascade + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234]]) +Y = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]) + + +def test_bc_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(BalanceCascade) + + +def test_bc_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + bc = BalanceCascade(ratio=ratio) + assert_raises(ValueError, bc.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + bc = BalanceCascade(ratio=ratio) + assert_raises(ValueError, bc.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + bc = BalanceCascade(ratio=ratio) + assert_raises(ValueError, bc.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + bc = BalanceCascade(ratio=ratio) + assert_raises(ValueError, bc.fit, X, Y) + + +def test_bc_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 1. + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED) + + assert_equal(bc.ratio, ratio) + assert_equal(bc.bootstrap, True) + assert_equal(bc.n_max_subset, None) + assert_equal(bc.random_state, RND_SEED) + + +def test_bc_fit_single_class(): + """Test either if an error when there is a single class""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, bc.fit, X, y_single_class) + + +def test_bc_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, bc.fit_sample, X, Y) + + +def test_bc_fit(): + """Test the fitting method""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED) + # Fit the data + bc.fit(X, Y) + + # Check if the data information have been computed + assert_equal(bc.min_c_, 0) + assert_equal(bc.maj_c_, 1) + assert_equal(bc.stats_c_[0], 8) + assert_equal(bc.stats_c_[1], 12) + + +def test_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED) + assert_raises(RuntimeError, bc.sample, X, Y) + + +def test_fit_sample_auto(): + """Test the fit and sample routine with auto ratio.""" + + # Define the ratio parameter + ratio = 'auto' + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + currdir = os.path.dirname(os.path.abspath(__file__)) + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.70472253, -0.73309052], + [-0.18410027, -0.45194484], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, + 1, 1, 1, 1, 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, 2, + 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 4, 8, 0, 3, 5, + 9])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_fit_sample_half(): + """Test the fit and sample routine with 0.5 ratio.""" + + # Define the ratio parameter + ratio = 0.8 + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED) + + # Get the different subset + X_resampled, y_resampled = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695], + [0.9281014, 0.53085498], + [0.3084254, 0.33299982]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.70472253, -0.73309052], + [-0.18410027, -0.45194484], + [0.77481731, 0.60935141], + [0.28893132, -0.38761769]])], dtype=object) + + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + + +def test_fit_sample_auto_decision_tree(): + """Test the fit and sample routine with auto ratio with a decision + tree.""" + + # Define the ratio parameter + ratio = 'auto' + classifier = 'decision-tree' + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, classifier=classifier) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [-1.11515198, -0.93689695], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, + 10, 2, 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 7, 0, 3, 5, + 9])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_fit_sample_auto_random_forest(): + """Test the fit and sample routine with auto ratio with a random + forest.""" + + # Define the ratio parameter + ratio = 'auto' + classifier = 'random-forest' + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, classifier=classifier) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [-0.14374509, 0.27370049], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1, 1, 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, + 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, + 2, 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 10, 0, 3, 5, + 9])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_fit_sample_auto_adaboost(): + """Test the fit and sample routine with auto ratio with a adaboost.""" + + # Define the ratio parameter + ratio = 'auto' + classifier = 'adaboost' + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, classifier=classifier) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [-0.14374509, 0.27370049], + [-1.11515198, -0.93689695], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, 2, + 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 10, 7, 0, 3, 5, + 9])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_fit_sample_auto_gradient_boosting(): + """Test the fit and sample routine with auto ratio with a gradient + boosting.""" + + # Define the ratio parameter + ratio = 'auto' + classifier = 'gradient-boosting' + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, classifier=classifier) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [-0.14374509, 0.27370049], + [-1.11515198, -0.93689695], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, + 2, 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 10, 7, 0, 3, + 5, 9])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_fit_sample_auto_linear_svm(): + """Test the fit and sample routine with auto ratio with a linear + svm.""" + + # Define the ratio parameter + ratio = 'auto' + classifier = 'linear-svm' + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, classifier=classifier) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.70472253, -0.73309052], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, + 2, 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 4, 0, 3, + 5, 9])], dtype=object) + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_init_wrong_classifier(): + """Test either if an error is raised the classifier provided is unknown.""" + + # Define the ratio parameter + classifier = 'rnd' + + bc = BalanceCascade(classifier=classifier) + assert_raises(NotImplementedError, bc.fit_sample, X, Y) + + +def test_fit_sample_auto_early_stop(): + """Test the fit and sample routine with auto ratio with 1 subset.""" + + # Define the ratio parameter + ratio = 'auto' + n_subset = 1 + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, n_max_subset=n_subset) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([[[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]]) + + y_gt = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]]) + idx_gt = np.array([[0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, 2, 8, 1, 7]]) + # Check each array + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_fit_sample_auto_early_stop_2(): + """Test the fit and sample routine with auto ratio with a 2 subsets.""" + + # Define the ratio parameter + ratio = 'auto' + n_subset = 2 + + # Create the sampling object + bc = BalanceCascade(ratio=ratio, random_state=RND_SEED, + return_indices=True, n_max_subset=n_subset) + + # Get the different subset + X_resampled, y_resampled, idx_under = bc.fit_sample(X, Y) + + X_gt = np.array([np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.08711622, 0.93259929], + [0.70472253, -0.73309052], + [-0.14374509, 0.27370049], + [0.83680821, 1.72827342], + [-0.18410027, -0.45194484], + [-0.28162401, -2.10400981], + [-1.11515198, -0.93689695]]), + np.array([[0.11622591, -0.0317206], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-0.41635887, -0.38299653], + [1.70580611, -0.11219234], + [1.15514042, 0.0129463], + [0.70472253, -0.73309052], + [-0.18410027, -0.45194484], + [0.77481731, 0.60935141], + [0.3084254, 0.33299982], + [0.28893132, -0.38761769], + [0.9281014, 0.53085498]])], dtype=object) + y_gt = np.array([np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1, 1]), + np.array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 1, 1])], dtype=object) + idx_gt = np.array([np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 11, 4, 10, + 2, 8, 1, 7]), + np.array([0, 2, 3, 4, 11, 12, 17, 19, 6, 4, 8, 0, 3, + 5, 9])], dtype=object) + + # Check each array + for idx in range(X_gt.size): + assert_array_equal(X_resampled[idx], X_gt[idx]) + assert_array_equal(y_resampled[idx], y_gt[idx]) + assert_array_equal(idx_under[idx], idx_gt[idx]) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + bc = BalanceCascade(random_state=RND_SEED) + bc.fit(X, Y) + assert_raises(RuntimeError, bc.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 20) + bc = BalanceCascade(random_state=RND_SEED) + assert_warns(UserWarning, bc.fit, X, y) + + # multiclass case + y = np.array([0] * 3 + [1] * 2 + [2] * 15) + bc = BalanceCascade(random_state=RND_SEED) + assert_warns(UserWarning, bc.fit, X, y) diff --git a/imblearn/ensemble/tests/test_easy_ensemble.py b/imblearn/ensemble/tests/test_easy_ensemble.py new file mode 100644 index 000000000..a831c8827 --- /dev/null +++ b/imblearn/ensemble/tests/test_easy_ensemble.py @@ -0,0 +1,249 @@ +"""Test the module easy ensemble.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.ensemble import EasyEnsemble + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.5220963, 0.11349303], + [0.59091459, 0.40692742], + [1.10915364, 0.05718352], + [0.22039505, 0.26469445], + [1.35269503, 0.44812421], + [0.85117925, 1.0185556], + [-2.10724436, 0.70263997], + [-0.23627356, 0.30254174], + [-1.23195149, 0.15427291], + [-0.58539673, 0.62515052]]) +Y = np.array([1, 2, 2, 2, 1, 0, 1, 1, 1, 0]) + + +def test_ee_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(EasyEnsemble) + + +def test_ee_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + ee = EasyEnsemble(ratio=ratio) + assert_raises(ValueError, ee.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + ee = EasyEnsemble(ratio=ratio) + assert_raises(ValueError, ee.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + ee = EasyEnsemble(ratio=ratio) + assert_raises(ValueError, ee.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + ee = EasyEnsemble(ratio=ratio) + assert_raises(ValueError, ee.fit, X, Y) + + +def test_ee_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 1. + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED) + + assert_equal(ee.ratio, ratio) + assert_equal(ee.replacement, False) + assert_equal(ee.n_subsets, 10) + assert_equal(ee.random_state, RND_SEED) + + +def test_ee_fit_single_class(): + """Test either if an error when there is a single class""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, ee.fit, X, y_single_class) + + +def test_ee_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, ee.fit, X, Y) + + +def test_ee_fit(): + """Test the fitting method""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED) + # Fit the data + ee.fit(X, Y) + + # Check if the data information have been computed + assert_equal(ee.min_c_, 0) + assert_equal(ee.maj_c_, 1) + assert_equal(ee.stats_c_[0], 2) + assert_equal(ee.stats_c_[2], 3) + assert_equal(ee.stats_c_[1], 5) + + +def test_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED) + assert_raises(RuntimeError, ee.sample, X, Y) + + +def test_fit_sample_auto(): + """Test the fit and sample routine with auto ratio.""" + + # Define the ratio parameter + ratio = 'auto' + + # Create the sampling object + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED, + return_indices=True, n_subsets=3) + + # Get the different subset + X_resampled, y_resampled, idx_under = ee.fit_sample(X, Y) + + X_gt = np.array([[[0.85117925, 1.0185556], + [-0.58539673, 0.62515052], + [1.35269503, 0.44812421], + [0.5220963, 0.11349303], + [1.10915364, 0.05718352], + [0.22039505, 0.26469445]], + [[0.85117925, 1.0185556], + [-0.58539673, 0.62515052], + [-1.23195149, 0.15427291], + [-2.10724436, 0.70263997], + [0.22039505, 0.26469445], + [1.10915364, 0.05718352]], + [[0.85117925, 1.0185556], + [-0.58539673, 0.62515052], + [-1.23195149, 0.15427291], + [0.5220963, 0.11349303], + [1.10915364, 0.05718352], + [0.59091459, 0.40692742]]]) + y_gt = np.array([[0, 0, 1, 1, 2, 2], + [0, 0, 1, 1, 2, 2], + [0, 0, 1, 1, 2, 2]]) + idx_gt = np.array([[5, 9, 4, 0, 2, 3], + [5, 9, 8, 6, 3, 2], + [5, 9, 8, 0, 2, 1]]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_fit_sample_half(): + """Test the fit and sample routine with 0.5 ratio.""" + + # Define the ratio parameter + ratio = 0.6 + + # Create the sampling object + ee = EasyEnsemble(ratio=ratio, random_state=RND_SEED, n_subsets=3) + + # Get the different subset + X_resampled, y_resampled = ee.fit_sample(X, Y) + + X_gt = np.array([[[0.85117925, 1.0185556], + [-0.58539673, 0.62515052], + [1.35269503, 0.44812421], + [0.5220963, 0.11349303], + [-2.10724436, 0.70263997], + [1.10915364, 0.05718352], + [0.22039505, 0.26469445], + [0.59091459, 0.40692742]], + [[0.85117925, 1.0185556], + [-0.58539673, 0.62515052], + [-1.23195149, 0.15427291], + [-2.10724436, 0.70263997], + [0.5220963, 0.11349303], + [0.22039505, 0.26469445], + [1.10915364, 0.05718352], + [0.59091459, 0.40692742]], + [[0.85117925, 1.0185556], + [-0.58539673, 0.62515052], + [-1.23195149, 0.15427291], + [0.5220963, 0.11349303], + [1.35269503, 0.44812421], + [1.10915364, 0.05718352], + [0.59091459, 0.40692742], + [0.22039505, 0.26469445]]]) + y_gt = np.array([[0, 0, 1, 1, 1, 2, 2, 2], + [0, 0, 1, 1, 1, 2, 2, 2], + [0, 0, 1, 1, 1, 2, 2, 2]]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_random_state_none(): + """Test that the processing is going throw with random state being None.""" + + # Define the ratio parameter + ratio = 'auto' + + # Create the sampling object + ee = EasyEnsemble(ratio=ratio, random_state=None) + + # Get the different subset + X_resampled, y_resampled = ee.fit_sample(X, Y) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + ee = EasyEnsemble(random_state=RND_SEED) + ee.fit(X, Y) + assert_raises(RuntimeError, ee.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 10) + ee = EasyEnsemble(random_state=RND_SEED) + assert_warns(UserWarning, ee.fit, X, y) diff --git a/imblearn/over_sampling/__init__.py b/imblearn/over_sampling/__init__.py new file mode 100644 index 000000000..bba3ca2a3 --- /dev/null +++ b/imblearn/over_sampling/__init__.py @@ -0,0 +1,12 @@ +""" +The :mod:`imblearn.over_sampling` provides a set of method to +perform over-sampling. +""" + +from .random_over_sampler import RandomOverSampler +from .smote import SMOTE +from .adasyn import ADASYN + +__all__ = ['RandomOverSampler', + 'SMOTE', + 'ADASYN'] diff --git a/imblearn/over_sampling/adasyn.py b/imblearn/over_sampling/adasyn.py new file mode 100644 index 000000000..d55c22e7e --- /dev/null +++ b/imblearn/over_sampling/adasyn.py @@ -0,0 +1,180 @@ +"""Class to perform random over-sampling.""" +from __future__ import print_function +from __future__ import division + +import numpy as np + +from collections import Counter + +from sklearn.neighbors import NearestNeighbors +from sklearn.utils import check_random_state + +from ..base import BaseBinarySampler + + +class ADASYN(BaseBinarySampler): + + """Perform over-sampling using ADASYN. + + Perform over-sampling using Adaptive Synthetic Sampling Approach for + Imbalanced Learning. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number + of samples in the minority class over the the number of samples + in the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + k : int, optional (default=5) + Number of nearest neighbours to used to construct synthetic samples. + + n_jobs : int, optional (default=1) + Number of threads to run the algorithm when it is possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + Does not support multi-class. + + The implementation is based on [1]_. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.over_sampling import ADASYN + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> ada = ADASYN(random_state=42) + >>> X_res, y_res = ada.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 909, 1: 900}) + + References + ---------- + .. [1] He, Haibo, Yang Bai, Edwardo A. Garcia, and Shutao Li. "ADASYN: + Adaptive synthetic sampling approach for imbalanced learning," In IEEE + International Joint Conference on Neural Networks (IEEE World Congress + on Computational Intelligence), pp. 1322-1328, 2008. + + """ + + def __init__(self, + ratio='auto', + random_state=None, + k=5, + n_jobs=1): + super(ADASYN, self).__init__(ratio=ratio) + self.random_state = random_state + self.k = k + self.n_jobs = n_jobs + self.nearest_neighbour = NearestNeighbors(n_neighbors=self.k + 1, + n_jobs=self.n_jobs) + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + random_state = check_random_state(self.random_state) + + # Keep the samples from the majority class + X_resampled = X.copy() + y_resampled = y.copy() + + # Define the number of sample to create + # We handle only two classes problem for the moment. + if self.ratio == 'auto': + num_samples = (self.stats_c_[self.maj_c_] - + self.stats_c_[self.min_c_]) + else: + num_samples = int((self.ratio * self.stats_c_[self.maj_c_]) - + self.stats_c_[self.min_c_]) + + # Start by separating minority class features and target values. + X_min = X[y == self.min_c_] + + # Print if verbose is true + self.logger.debug('Finding the %s nearest neighbours ...', self.k) + + # Look for k-th nearest neighbours, excluding, of course, the + # point itself. + self.nearest_neighbour.fit(X) + + # Get the distance to the NN + _, ind_nn = self.nearest_neighbour.kneighbors(X_min) + + # Compute the ratio of majority samples next to minority samples + ratio_nn = np.sum(y[ind_nn[:, 1:]] == self.maj_c_, axis=1) / self.k + # Check that we found at least some neighbours belonging to the + # majority class + if not np.sum(ratio_nn): + raise RuntimeError('Not any neigbours belong to the majority' + ' class. This case will induce a NaN case with' + ' a division by zero. ADASYN is not suited for' + ' this specific dataset. Use SMOTE.') + # Normalize the ratio + ratio_nn /= np.sum(ratio_nn) + + # Compute the number of sample to be generated + num_samples_nn = np.round(ratio_nn * num_samples).astype(int) + + # For each minority samples + for x_i, x_i_nn, num_sample_i in zip(X_min, ind_nn, num_samples_nn): + + # Pick-up the neighbors wanted + nn_zs = random_state.randint(1, high=self.k + 1, size=num_sample_i) + + # Create a new sample + for nn_z in nn_zs: + step = random_state.uniform() + x_gen = x_i + step * (x_i - X[x_i_nn[nn_z], :]) + X_resampled = np.vstack((X_resampled, x_gen)) + y_resampled = np.hstack((y_resampled, self.min_c_)) + + self.logger.info('Over-sampling performed: %s', Counter( + y_resampled)) + + return X_resampled, y_resampled diff --git a/imblearn/over_sampling/random_over_sampler.py b/imblearn/over_sampling/random_over_sampler.py new file mode 100644 index 000000000..e40490495 --- /dev/null +++ b/imblearn/over_sampling/random_over_sampler.py @@ -0,0 +1,138 @@ +"""Class to perform random over-sampling.""" +from __future__ import print_function +from __future__ import division + +import numpy as np + +from collections import Counter + +from sklearn.utils import check_random_state + +from ..base import BaseMulticlassSampler + + +class RandomOverSampler(BaseMulticlassSampler): + + """Class to perform random over-sampling. + + Object to over-sample the minority class(es) by picking samples at random + with replacement. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number + of samples in the minority class over the the number of samples + in the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + Supports multiple classes. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.over_sampling import RandomOverSampler + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> ros = RandomOverSampler(random_state=42) + >>> X_res, y_res = ros.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 900, 1: 900}) + + """ + + def __init__(self, + ratio='auto', + random_state=None): + + super(RandomOverSampler, self).__init__(ratio=ratio) + self.random_state = random_state + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + + # Keep the samples from the majority class + X_resampled = X[y == self.maj_c_] + y_resampled = y[y == self.maj_c_] + + # Loop over the other classes over picking at random + for key in self.stats_c_.keys(): + + # If this is the majority class, skip it + if key == self.maj_c_: + continue + + # Define the number of sample to create + if self.ratio == 'auto': + num_samples = int(self.stats_c_[self.maj_c_] - + self.stats_c_[key]) + else: + num_samples = int((self.ratio * self.stats_c_[self.maj_c_]) - + self.stats_c_[key]) + + # Pick some elements at random + random_state = check_random_state(self.random_state) + indx = random_state.randint(low=0, high=self.stats_c_[key], + size=num_samples) + + # Concatenate to the majority class + X_resampled = np.concatenate((X_resampled, + X[y == key], + X[y == key][indx]), + axis=0) + + y_resampled = np.concatenate((y_resampled, + y[y == key], + y[y == key][indx]), axis=0) + + self.logger.info('Over-sampling performed: %s', Counter( + y_resampled)) + + return X_resampled, y_resampled diff --git a/unbalanced_dataset/over_sampling/smote.py b/imblearn/over_sampling/smote.py similarity index 56% rename from unbalanced_dataset/over_sampling/smote.py rename to imblearn/over_sampling/smote.py index 231ef0ac5..533670075 100644 --- a/unbalanced_dataset/over_sampling/smote.py +++ b/imblearn/over_sampling/smote.py @@ -1,40 +1,41 @@ -"""Class to perform over-sampling using SMOTE.""" +"""Class to perform over-sampling using SMOTE.""" from __future__ import print_function from __future__ import division import numpy as np -from random import betavariate - -from sklearn.utils import check_X_y from sklearn.utils import check_array -from sklearn.neighbors import LSHForest +from sklearn.utils import check_random_state from sklearn.neighbors import NearestNeighbors from sklearn.svm import SVC -from .over_sampler import OverSampler +from ..base import BaseBinarySampler + + +SMOTE_KIND = ('regular', 'borderline1', 'borderline2', 'svm') + +class SMOTE(BaseBinarySampler): -class SMOTE(OverSampler): """Class to perform over-sampling using SMOTE. This object is an implementation of SMOTE - Synthetic Minority - Over-sampling Technique, and the variations Borderline SMOTE 1, 2 and + Over-sampling Technique, and the variants Borderline SMOTE 1, 2 and SVM-SMOTE. Parameters ---------- ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number of samples in the minority class over the the number of samples in the majority class. - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing. + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. k : int, optional (default=5) Number of nearest neighbours to used to construct synthetic samples. @@ -48,24 +49,10 @@ class SMOTE(OverSampler): kind : str, optional (default='regular') The type of SMOTE algorithm to use one of the following options: - 'regular', 'borderline1', 'borderline2', 'svm' - - nn_method : str, optional (default='exact') - The nearest neighbors method to use which can be either: 'approximate' - or 'exact'. 'approximate' will use LSH Forest while 'exact' will be an - exact search. + 'regular', 'borderline1', 'borderline2', 'svm'. Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -76,6 +63,9 @@ class SMOTE(OverSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + Notes ----- See the original papers: [1]_, [2]_, [3]_ for more details. @@ -83,6 +73,23 @@ class SMOTE(OverSampler): It does not support multiple classes automatically, but can be called multiple times. + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.over_sampling import SMOTE + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> sm = SMOTE(random_state=42) + >>> X_res, y_res = sm.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 900, 1: 900}) + References ---------- .. [1] N. V. Chawla, K. W. Bowyer, L. O.Hall, W. P. Kegelmeyer, "SMOTE: @@ -99,152 +106,26 @@ class SMOTE(OverSampler): """ - def __init__(self, ratio='auto', random_state=None, verbose=True, - k=5, m=10, out_step=0.5, kind='regular', nn_method='exact', - n_jobs=-1, **kwargs): - """Initialisation of SMOTE object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the - number of samples in the minority class over the the number of - samples in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the - processing. - - k : int, optional (default=5) - Number of nearest neighbours to used to construct synthetic - samples. - - m : int, optional (default=10) - Number of nearest neighbours to use to determine if a minority - sample is in danger. - - out_step : float, optional (default=0.5) - Step size when extrapolating. - - kind : str, optional (default='regular') - The type of SMOTE algorithm to use one of the following - options: 'regular', 'borderline1', 'borderline2', 'svm' - - nn_method : str, optional (default='exact') - The nearest neighbors method to use which can be either: - 'approximate' or 'exact'. 'approximate' will use LSH Forest while - 'exact' will be an exact search. - - n_jobs : int, optional (default=-1) - Number of threads to run the algorithm when it is possible. - - """ - super(SMOTE, self).__init__(ratio=ratio, - random_state=random_state, - verbose=verbose) - - # Check the number of thread to use - self.n_jobs = n_jobs - - # --- The type of smote - # This object can perform regular smote over-sampling, borderline 1, - # borderline 2 and svm smote. Since the algorithms are fairly simple - # they share most methods. - possible_kind = ('regular', 'borderline1', 'borderline2', 'svm') - if kind in possible_kind: - self.kind = kind - else: - raise ValueError('Unknown kind for SMOTE algorithm.') - - # --- Verbose - # Control whether or not status and progress information should be - self.verbose = verbose - - # --- Nearest Neighbours for synthetic samples - # The smote algorithm uses the k-th nearest neighbours of a minority - # sample to generate new synthetic samples. + def __init__(self, + ratio='auto', + random_state=None, + k=5, + m=10, + out_step=0.5, + kind='regular', + n_jobs=-1, + **kwargs): + super(SMOTE, self).__init__(ratio=ratio) + self.random_state = random_state + self.kind = kind self.k = k - - # --- NN object - # Import the NN object from scikit-learn library. Since in the smote - # variations we must first find samples that are in danger, we - # initialize the NN object differently depending on the method chosen - if kind == 'regular': - # Regular smote does not look for samples in danger, instead it - # creates synthetic samples directly from the k-th nearest - # neighbours with not filtering - if nn_method == 'exact': - self.nearest_neighbour_ = NearestNeighbors(n_neighbors=k + 1, - n_jobs=self.n_jobs) - elif nn_method == 'approximate': - self.nearest_neighbour_ = LSHForest(n_estimators=50, - n_candidates=500, - n_neighbors=k+1) - else: - # Borderline1, 2 and SVM variations of smote must first look for - # samples that could be considered noise and samples that live - # near the boundary between the classes. Therefore, before - # creating synthetic samples from the k-th nns, it first look - # for m nearest neighbors to decide whether or not a sample is - # noise or near the boundary. - if nn_method == 'exact': - self.nearest_neighbour_ = NearestNeighbors(n_neighbors=m + 1, - n_jobs=self.n_jobs) - elif nn_method == 'approximate': - self.nearest_neighbour_ = LSHForest(n_estimators=50, - n_candidates=500, - n_neighbors=m+1) - - # --- Nearest Neighbours for noise and boundary (in danger) - # Before creating synthetic samples we must first decide if - # a given entry is noise or in danger. We use m nns in this step - self.m = m - - # --- SVM smote - # Unlike the borderline variations, the SVM variation uses the support - # vectors to decide which samples are in danger (near the boundary). - # Additionally it also introduces extrapolation for samples that are - # considered safe (far from boundary) and interpolation for samples - # in danger (near the boundary). The level of extrapolation is - # controled by the out_step. - if kind == 'svm': - # Store extrapolation size - self.out_step = out_step - - # Store SVM object with any parameters - self.svm_ = SVC(**kwargs) - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - # Call the parent function - super(SMOTE, self).fit(X, y) - - return self + self.m = m + self.out_step = out_step + self.n_jobs = n_jobs + self.kwargs = kwargs def _in_danger_noise(self, samples, y, kind='danger'): - """Estimate if a set of sample are in danger or not. + """Estimate if a set of sample are in danger or noise. Parameters ---------- @@ -269,8 +150,8 @@ def _in_danger_noise(self, samples, y, kind='danger'): # Find the NN for each samples # Exclude the sample itself - x = self.nearest_neighbour_.kneighbors(samples, - return_distance=False)[:, 1:] + x = self.nearest_neighbour.kneighbors(samples, + return_distance=False)[:, 1:] # Count how many NN belong to the minority class # Find the class corresponding to the label in x @@ -286,10 +167,10 @@ def _in_danger_noise(self, samples, y, kind='danger'): # Samples are noise for m = m' return n_maj == self.m else: - raise ValueError('Unknown string for parameter kind.') + raise NotImplementedError def _make_samples(self, X, y_type, nn_data, nn_num, n_samples, - step_size=1.): + step_size=1.): """A support function that returns artificial samples constructed along the line connecting nearest neighbours. @@ -327,21 +208,21 @@ def _make_samples(self, X, y_type, nn_data, nn_num, n_samples, # Check the consistency of X X = check_array(X) + # Check the random state + random_state = check_random_state(self.random_state) # A matrix to store the synthetic samples X_new = np.zeros((n_samples, X.shape[1])) - # Set seeds - np.random.seed(self.rs_) - seeds = np.random.randint(low=0, - high=100*len(nn_num.flatten()), - size=n_samples) + # # Set seeds + # seeds = random_state.randint(low=0, + # high=100 * len(nn_num.flatten()), + # size=n_samples) # Randomly pick samples to construct neighbours from - np.random.seed(self.rs_) - samples = np.random.randint(low=0, - high=len(nn_num.flatten()), - size=n_samples) + samples = random_state.randint(low=0, + high=len(nn_num.flatten()), + size=n_samples) # Loop over the NN matrix and create new samples for i, n in enumerate(samples): @@ -351,8 +232,11 @@ def _make_samples(self, X, y_type, nn_data, nn_num, n_samples, # Take a step of random size (0,1) in the direction of the # n nearest neighbours - np.random.seed(seeds[i]) - step = step_size * np.random.uniform() + # if self.random_state is None: + # np.random.seed(seeds[i]) + # else: + # np.random.seed(self.random_state) + step = step_size * random_state.uniform() # Construct synthetic sample X_new[i] = X[row] - step * (X[row] - @@ -362,12 +246,11 @@ def _make_samples(self, X, y_type, nn_data, nn_num, n_samples, # minority label y_new = np.array([y_type] * len(X_new)) - if self.verbose: - print("Generated {} new samples ...".format(len(X_new))) + self.logger.info('Generated %s new samples ...', len(X_new)) return X_new, y_new - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -387,20 +270,22 @@ def transform(self, X, y): The corresponding label of `X_resampled` """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - # Call the parent function - super(SMOTE, self).transform(X, y) + if self.kind not in SMOTE_KIND: + raise ValueError('Unknown kind for SMOTE algorithm.') + + random_state = check_random_state(self.random_state) + + self._get_smote_kind() # Define the number of sample to create # We handle only two classes problem for the moment. - if self.ratio_ == 'auto': + if self.ratio == 'auto': num_samples = (self.stats_c_[self.maj_c_] - self.stats_c_[self.min_c_]) else: - num_samples = ((self.ratio_ * self.stats_c_[self.maj_c_]) - - self.stats_c_[self.min_c_]) + num_samples = int((self.ratio * self.stats_c_[self.maj_c_]) - + self.stats_c_[self.min_c_]) # Start by separating minority class features and target values. X_min = X[y == self.min_c_] @@ -408,36 +293,28 @@ def transform(self, X, y): # If regular SMOTE is to be performed if self.kind == 'regular': - # Print if verbose is true# - if self.verbose: - print('Finding the {} nearest neighbours...'.format(self.k)) + self.logger.debug('Finding the %s nearest neighbours ...', self.k) # Look for k-th nearest neighbours, excluding, of course, the # point itself. - self.nearest_neighbour_.fit(X_min) + self.nearest_neighbour.fit(X_min) # Matrix with k-th nearest neighbours indexes for each minority # element. - nns = self.nearest_neighbour_.kneighbors( + nns = self.nearest_neighbour.kneighbors( X_min, return_distance=False)[:, 1:] - # Print status if verbose is true - if self.verbose: - print("done!") - print("Creating synthetic samples...", end="") + self.logger.debug('Create synthetic samples ...') # --- Generating synthetic samples # Use static method make_samples to generate minority samples X_new, y_new = self._make_samples(X_min, - self.min_c_, - X_min, - nns, - num_samples, - 1.0) - - if self.verbose: - print("done!") + self.min_c_, + X_min, + nns, + num_samples, + 1.0) # Concatenate the newly generated samples to the original data set X_resampled = np.concatenate((X, X_new), axis=0) @@ -447,23 +324,18 @@ def transform(self, X, y): if self.kind == 'borderline1' or self.kind == 'borderline2': - if self.verbose: - print("Finding the {} nearest neighbours...".format(self.m)) + self.logger.debug('Finding the %s nearest neighbours ...', self.m) # Find the NNs for all samples in the data set. - self.nearest_neighbour_.fit(X) - - if self.verbose: - print("done!") + self.nearest_neighbour.fit(X) # Boolean array with True for minority samples in danger danger_index = self._in_danger_noise(X_min, y, kind='danger') # If all minority samples are safe, return the original data set. if not any(danger_index): - if self.verbose: - print('There are no samples in danger. No borderline ' - 'synthetic samples created.') + self.logger.debug('There are no samples in danger. No' + ' borderline synthetic samples created.') # All are safe, nothing to be done here. return X, y @@ -474,11 +346,11 @@ def transform(self, X, y): # # We start by changing the number of NNs to consider from m + 1 # to k + 1 - self.nearest_neighbour_.set_params(**{'n_neighbors': self.k + 1}) - self.nearest_neighbour_.fit(X_min) + self.nearest_neighbour.set_params(**{'n_neighbors': self.k + 1}) + self.nearest_neighbour.fit(X_min) # nns...# - nns = self.nearest_neighbour_.kneighbors( + nns = self.nearest_neighbour.kneighbors( X_min[danger_index], return_distance=False)[:, 1:] @@ -486,10 +358,10 @@ def transform(self, X, y): if self.kind == 'borderline1': # Create synthetic samples for borderline points. X_new, y_new = self._make_samples(X_min[danger_index], - self.min_c_, - X_min, - nns, - num_samples) + self.min_c_, + X_min, + nns, + num_samples) # Concatenate the newly generated samples to the original # dataset @@ -497,7 +369,8 @@ def transform(self, X, y): y_resampled = np.concatenate((y, y_new), axis=0) # Reset the k-neighbours to m+1 neighbours - self.nearest_neighbour_.set_params(**{'n_neighbors': self.m+1}) + self.nearest_neighbour.set_params( + **{'n_neighbors': self.m + 1}) return X_resampled, y_resampled @@ -505,29 +378,27 @@ def transform(self, X, y): # Split the number of synthetic samples between only minority # (type 1), or minority and majority (with reduced step size) # (type 2). - np.random.seed(self.rs_) - # The fraction is sampled from a beta distribution centered # around 0.5 with variance ~0.01 - fractions = betavariate(alpha=10, beta=10) + fractions = random_state.beta(10, 10) # Only minority X_new_1, y_new_1 = self._make_samples(X_min[danger_index], - self.min_c_, - X_min, - nns, - int(fractions * - (num_samples + 1)), - step_size=1.) + self.min_c_, + X_min, + nns, + int(fractions * + (num_samples + 1)), + step_size=1.) # Only majority with smaller step size X_new_2, y_new_2 = self._make_samples(X_min[danger_index], - self.min_c_, - X[y != self.min_c_], - nns, - int((1 - fractions) * - num_samples), - step_size=0.5) + self.min_c_, + X[y != self.min_c_], + nns, + int((1 - fractions) * + num_samples), + step_size=0.5) # Concatenate the newly generated samples to the original # data set @@ -535,7 +406,8 @@ def transform(self, X, y): y_resampled = np.concatenate((y, y_new_1, y_new_2), axis=0) # Reset the k-neighbours to m+1 neighbours - self.nearest_neighbour_.set_params(**{'n_neighbors': self.m+1}) + self.nearest_neighbour.set_params( + **{'n_neighbors': self.m + 1}) return X_resampled, y_resampled @@ -547,64 +419,55 @@ def transform(self, X, y): # belonging to each class. # Fit SVM to the full data# - self.svm_.fit(X, y) + self.svm.fit(X, y) # Find the support vectors and their corresponding indexes - support_index = self.svm_.support_[y[self.svm_.support_] == - self.min_c_] + support_index = self.svm.support_[y[self.svm.support_] == + self.min_c_] support_vector = X[support_index] # First, find the nn of all the samples to identify samples # in danger and noisy ones - if self.verbose: - print("Finding the {} nearest neighbours...".format(self.m)) + self.logger.debug('Finding the %s nearest neighbours ...', self.m) # As usual, fit a nearest neighbour model to the data - self.nearest_neighbour_.fit(X) - - if self.verbose: - print("done!") + self.nearest_neighbour.fit(X) # Now, get rid of noisy support vectors - noise_bool = self._in_danger_noise(support_vector, y, kind='noise') # Remove noisy support vectors support_vector = support_vector[np.logical_not(noise_bool)] danger_bool = self._in_danger_noise(support_vector, y, - kind='danger') + kind='danger') safety_bool = np.logical_not(danger_bool) - if self.verbose: - print("Out of {0} support vectors, {1} are noisy, " - "{2} are in danger " - "and {3} are safe.".format(support_vector.shape[0], - noise_bool.sum().astype(int), - danger_bool.sum().astype(int), - safety_bool.sum().astype(int) - )) + self.logger.debug('Out of %s support vectors, %s are noisy, ' + '%s are in danger ' + 'and %s are safe.', + support_vector.shape[0], + noise_bool.sum().astype(int), + danger_bool.sum().astype(int), + safety_bool.sum().astype(int)) - # Proceed to find support vectors NNs among the minority class - print("Finding the {} nearest neighbours...".format(self.k)) + # Proceed to find support vectors NNs among the minority class + self.logger.debug('Finding the %s nearest neighbours ...', self.k) - self.nearest_neighbour_.set_params(**{'n_neighbors': self.k + 1}) - self.nearest_neighbour_.fit(X_min) + self.nearest_neighbour.set_params(**{'n_neighbors': self.k + 1}) + self.nearest_neighbour.fit(X_min) - if self.verbose: - print("done!") - print("Creating synthetic samples...", end="") + self.logger.debug('Create synthetic samples ...') # Split the number of synthetic samples between interpolation and # extrapolation # The fraction are sampled from a beta distribution with mean # 0.5 and variance 0.01# - np.random.seed(self.rs_) - fractions = betavariate(alpha=10, beta=10) + fractions = random_state.beta(10, 10) # Interpolate samples in danger if np.count_nonzero(danger_bool) > 0: - nns = self.nearest_neighbour_.kneighbors( + nns = self.nearest_neighbour.kneighbors( support_vector[danger_bool], return_distance=False)[:, 1:] @@ -618,7 +481,7 @@ def transform(self, X, y): # Extrapolate safe samples if np.count_nonzero(safety_bool) > 0: - nns = self.nearest_neighbour_.kneighbors( + nns = self.nearest_neighbour.kneighbors( support_vector[safety_bool], return_distance=False)[:, 1:] @@ -630,9 +493,6 @@ def transform(self, X, y): int((1 - fractions) * num_samples), step_size=-self.out_step) - if self.verbose: - print("done!") - # Concatenate the newly generated samples to the original data set if (np.count_nonzero(danger_bool) > 0 and np.count_nonzero(safety_bool) > 0): @@ -648,6 +508,38 @@ def transform(self, X, y): y_resampled = np.concatenate((y, y_new_1), axis=0) # Reset the k-neighbours to m+1 neighbours - self.nearest_neighbour_.set_params(**{'n_neighbors': self.m+1}) + self.nearest_neighbour.set_params(**{'n_neighbors': self.m + 1}) return X_resampled, y_resampled + + def _get_smote_kind(self): + # --- NN object + # Import the NN object from scikit-learn library. Since in the smote + # variations we must first find samples that are in danger, we + # initialize the NN object differently depending on the method chosen + if self.kind == 'regular': + # Regular smote does not look for samples in danger, instead it + # creates synthetic samples directly from the k-th nearest + # neighbours with not filtering + self.nearest_neighbour = NearestNeighbors(n_neighbors=self.k + 1, + n_jobs=self.n_jobs) + else: + # Borderline1, 2 and SVM variations of smote must first look for + # samples that could be considered noise and samples that live + # near the boundary between the classes. Therefore, before + # creating synthetic samples from the k-th nns, it first look + # for m nearest neighbors to decide whether or not a sample is + # noise or near the boundary. + self.nearest_neighbour = NearestNeighbors(n_neighbors=self.m + 1, + n_jobs=self.n_jobs) + + # --- SVM smote + # Unlike the borderline variations, the SVM variation uses the support + # vectors to decide which samples are in danger (near the boundary). + # Additionally it also introduces extrapolation for samples that are + # considered safe (far from boundary) and interpolation for samples + # in danger (near the boundary). The level of extrapolation is + # controled by the out_step. + if self.kind == 'svm': + # Store SVM object with any parameters + self.svm = SVC(random_state=self.random_state, **self.kwargs) diff --git a/unbalanced_dataset/under_sampling/tests/__init__.py b/imblearn/over_sampling/tests/__init__.py similarity index 100% rename from unbalanced_dataset/under_sampling/tests/__init__.py rename to imblearn/over_sampling/tests/__init__.py diff --git a/imblearn/over_sampling/tests/test_adasyn.py b/imblearn/over_sampling/tests/test_adasyn.py new file mode 100644 index 000000000..c80d1cb99 --- /dev/null +++ b/imblearn/over_sampling/tests/test_adasyn.py @@ -0,0 +1,223 @@ +"""Test the module under sampler.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.over_sampling import ADASYN + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234]]) +Y = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]) + + +def test_ada_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(ADASYN) + + +def test_ada_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ada.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ada.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ada.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ada.fit, X, Y) + + +def test_ada_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 'auto' + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + + assert_equal(ada.random_state, RND_SEED) + + +def test_ada_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + ada = ADASYN(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, ada.fit, X, y_single_class) + + +def test_ada_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, ada.fit, X, Y) + + +def test_ada_fit(): + """Test the fitting method""" + + # Create the object + ada = ADASYN(random_state=RND_SEED) + # Fit the data + ada.fit(X, Y) + + # Check if the data information have been computed + assert_equal(ada.min_c_, 0) + assert_equal(ada.maj_c_, 1) + assert_equal(ada.stats_c_[0], 8) + assert_equal(ada.stats_c_[1], 12) + + +def test_ada_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + ada = ADASYN(random_state=RND_SEED) + assert_raises(RuntimeError, ada.sample, X, Y) + + +def test_ada_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + ada = ADASYN(random_state=RND_SEED) + X_resampled, y_resampled = ada.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234], + [0.29427267, 0.21740707], + [0.68118697, -0.25220353], + [1.37180201, 0.37279378], + [-0.59243851, -0.80715327]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0, 0, 0, 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_ada_fit_sample_half(): + """Test the fit sample routine with a 0.5 ratio""" + + # Resample the data + ratio = 0.8 + ada = ADASYN(ratio=ratio, random_state=RND_SEED) + X_resampled, y_resampled = ada.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + ada = ADASYN(random_state=RND_SEED) + ada.fit(X, Y) + assert_raises(RuntimeError, ada.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 20) + ada = ADASYN(random_state=RND_SEED) + assert_warns(UserWarning, ada.fit, X, y) + + # multiclass case + y = np.array([0] * 3 + [1] * 2 + [2] * 15) + ada = ADASYN(random_state=RND_SEED) + assert_warns(UserWarning, ada.fit, X, y) diff --git a/imblearn/over_sampling/tests/test_random_over_sampler.py b/imblearn/over_sampling/tests/test_random_over_sampler.py new file mode 100644 index 000000000..acecab3c5 --- /dev/null +++ b/imblearn/over_sampling/tests/test_random_over_sampler.py @@ -0,0 +1,205 @@ +"""Test the module under sampler.""" +from __future__ import print_function + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.over_sampling import RandomOverSampler + +# Generate a global dataset to use +RND_SEED = 0 +# Data generated for the toy example +X = np.array([[0.04352327, -0.20515826], + [0.92923648, 0.76103773], + [0.20792588, 1.49407907], + [0.47104475, 0.44386323], + [0.22950086, 0.33367433], + [0.15490546, 0.3130677], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.13347175, 0.12167502], + [0.094035, -2.55298982]]) +Y = np.array([1, 0, 1, 0, 1, 1, 1, 1, 0, 1]) + + +def test_ros_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(RandomOverSampler) + + +def test_ros_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ros.fit_sample, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ros.fit_sample, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ros.fit_sample, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, ros.fit_sample, X, Y) + + +def test_ros_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 'auto' + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + + assert_equal(ros.random_state, RND_SEED) + + +def test_ros_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + ros = RandomOverSampler(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, ros.fit, X, y_single_class) + + +def test_ros_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, ros.fit, X, Y) + + +def test_ros_fit(): + """Test the fitting method""" + + # Create the object + ros = RandomOverSampler(random_state=RND_SEED) + # Fit the data + ros.fit(X, Y) + + # Check if the data information have been computed + assert_equal(ros.min_c_, 0) + assert_equal(ros.maj_c_, 1) + assert_equal(ros.stats_c_[0], 3) + assert_equal(ros.stats_c_[1], 7) + + +def test_ros_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + ros = RandomOverSampler(random_state=RND_SEED) + assert_raises(RuntimeError, ros.sample, X, Y) + + +def test_ros_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + ros = RandomOverSampler(random_state=RND_SEED) + X_resampled, y_resampled = ros.fit_sample(X, Y) + + X_gt = np.array([[0.04352327, -0.20515826], + [0.20792588, 1.49407907], + [0.22950086, 0.33367433], + [0.15490546, 0.3130677], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.094035, -2.55298982], + [0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502], + [0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.92923648, 0.76103773], + [0.47104475, 0.44386323]]) + y_gt = np.array([1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_ros_fit_sample_half(): + """Test the fit sample routine with a 0.5 ratio""" + + # Resample the data + ratio = 0.5 + ros = RandomOverSampler(ratio=ratio, random_state=RND_SEED) + X_resampled, y_resampled = ros.fit_sample(X, Y) + + X_gt = np.array([[0.04352327, -0.20515826], + [0.20792588, 1.49407907], + [0.22950086, 0.33367433], + [0.15490546, 0.3130677], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.094035, -2.55298982], + [0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502]]) + y_gt = np.array([1, 1, 1, 1, 1, 1, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + ros = RandomOverSampler(random_state=RND_SEED) + ros.fit(X, Y) + assert_raises(RuntimeError, ros.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 10) + ros = RandomOverSampler(random_state=RND_SEED) + assert_warns(UserWarning, ros.fit, X, y) + + +def test_multiclass_fit_sample(): + """Test fit sample method with multiclass target""" + + # Make y to be multiclass + y = Y.copy() + y[5] = 2 + y[6] = 2 + + # Resample the data + ros = RandomOverSampler(random_state=RND_SEED) + X_resampled, y_resampled = ros.fit_sample(X, y) + + # Check the size of y + count_y_res = Counter(y_resampled) + assert_equal(count_y_res[0], 5) + assert_equal(count_y_res[1], 5) + assert_equal(count_y_res[2], 5) diff --git a/imblearn/over_sampling/tests/test_smote.py b/imblearn/over_sampling/tests/test_smote.py new file mode 100644 index 000000000..20351e393 --- /dev/null +++ b/imblearn/over_sampling/tests/test_smote.py @@ -0,0 +1,341 @@ +"""Test the module SMOTE.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.over_sampling import SMOTE + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234]]) +Y = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]) + + +def test_smote_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(SMOTE) + + +def test_smote_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + smote = SMOTE(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, smote.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + smote = SMOTE(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, smote.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + smote = SMOTE(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, smote.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + smote = SMOTE(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, smote.fit, X, Y) + + +def test_smote_wrong_kind(): + """Test either if an error is raised when the wrong kind of SMOTE is + given.""" + + kind = 'rnd' + smote = SMOTE(kind=kind, random_state=RND_SEED) + assert_raises(ValueError, smote.fit_sample, X, Y) + + +def test_smote_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + smote = SMOTE(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, smote.fit, X, y_single_class) + + +def test_smote_fit(): + """Test the fitting method""" + + # Create the object + smote = SMOTE(random_state=RND_SEED) + # Fit the data + smote.fit(X, Y) + + # Check if the data information have been computed + assert_equal(smote.min_c_, 0) + assert_equal(smote.maj_c_, 1) + assert_equal(smote.stats_c_[0], 8) + assert_equal(smote.stats_c_[1], 12) + + +def test_smote_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + smote = SMOTE(random_state=RND_SEED) + assert_raises(RuntimeError, smote.sample, X, Y) + + +def test_sample_regular(): + """Test sample function with regular SMOTE.""" + + # Create the object + kind = 'regular' + smote = SMOTE(random_state=RND_SEED, kind=kind) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234], + [0.29307743, -0.14670439], + [0.84976473, -0.15570176], + [0.61319159, -0.11571668], + [0.66052536, -0.28246517]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0, 0, 0, 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_regular_half(): + """Test sample function with regular SMOTE and a ratio of 0.5.""" + + # Create the object + ratio = 0.8 + kind = 'regular' + smote = SMOTE(ratio=ratio, random_state=RND_SEED, kind=kind) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234], + [0.36784496, -0.1953161]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_borderline1(): + """Test sample function with borderline 1 SMOTE.""" + + # Create the object + kind = 'borderline1' + smote = SMOTE(random_state=RND_SEED, kind=kind) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234], + [0.3765279, -0.2009615], + [0.55276636, -0.10550373], + [0.45413452, -0.08883319], + [1.21118683, -0.22817957]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0, 0, 0, 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_borderline2(): + """Test sample function with borderline 2 SMOTE.""" + + # Create the object + kind = 'borderline2' + smote = SMOTE(random_state=RND_SEED, kind=kind) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234], + [0.47436888, -0.2645749], + [1.07844561, -0.19435291], + [0.33339622, 0.49870937]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0, 0, 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_svm(): + """Test sample function with SVM SMOTE.""" + + # Create the object + kind = 'svm' + smote = SMOTE(random_state=RND_SEED, kind=kind) + # Fit the data + smote.fit(X, Y) + + X_resampled, y_resampled = smote.fit_sample(X, Y) + + X_gt = np.array([[0.11622591, -0.0317206], + [0.77481731, 0.60935141], + [1.25192108, -0.22367336], + [0.53366841, -0.30312976], + [1.52091956, -0.49283504], + [-0.28162401, -2.10400981], + [0.83680821, 1.72827342], + [0.3084254, 0.33299982], + [0.70472253, -0.73309052], + [0.28893132, -0.38761769], + [1.15514042, 0.0129463], + [0.88407872, 0.35454207], + [1.31301027, -0.92648734], + [-1.11515198, -0.93689695], + [-0.18410027, -0.45194484], + [0.9281014, 0.53085498], + [-0.14374509, 0.27370049], + [-0.41635887, -0.38299653], + [0.08711622, 0.93259929], + [1.70580611, -0.11219234], + [0.47436888, -0.2645749], + [1.07844561, -0.19435291], + [1.44015515, -1.30621303]]) + y_gt = np.array([0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, + 0, 0, 0, 0]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + sm = SMOTE(random_state=RND_SEED) + sm.fit(X, Y) + assert_raises(RuntimeError, sm.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 20) + sm = SMOTE(random_state=RND_SEED) + assert_warns(UserWarning, sm.fit, X, y) + + # multiclass case + y = np.array([0] * 3 + [1] * 2 + [2] * 15) + sm = SMOTE(random_state=RND_SEED) + assert_warns(UserWarning, sm.fit, X, y) diff --git a/imblearn/pipeline.py b/imblearn/pipeline.py new file mode 100644 index 000000000..a0851b161 --- /dev/null +++ b/imblearn/pipeline.py @@ -0,0 +1,398 @@ +""" +The :mod:`imblearn.pipeline` module implements utilities to build a +composite estimator, as a chain of transforms, samples and estimators. +""" +# Adapted from scikit-learn + +# Author: Edouard Duchesnay +# Gael Varoquaux +# Virgile Fritsch +# Alexandre Gramfort +# Lars Buitinck +# chkoar +# License: BSD + +from __future__ import print_function +from __future__ import division + +from warnings import warn + +from sklearn.externals import six +from sklearn import pipeline +from sklearn.utils import tosequence +from sklearn.utils.metaestimators import if_delegate_has_method + +__all__ = ['Pipeline'] + + +class Pipeline(pipeline.Pipeline): + + """Pipeline of transforms and resamples with a final estimator. + + Sequentially apply a list of transforms, samples and a final estimator. + Intermediate steps of the pipeline must be transformers or resamplers, + that is, they must implement fit, transform and sample methods. + The final estimator only needs to implement fit. + + The purpose of the pipeline is to assemble several steps that can be + cross-validated together while setting different parameters. + For this, it enables setting parameters of the various steps using their + names and the parameter name separated by a '__', as in the example below. + + Parameters + ---------- + steps : list + List of (name, transform) tuples (implementing + fit/transform/fit_sample) that are chained, in the order in which they + are chained, with the last object an estimator. + + Attributes + ---------- + named_steps : dict + Read-only attribute to access any step parameter by user given name. + Keys are step names and values are steps parameters. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from sklearn.cross_validation import train_test_split as tts + >>> from sklearn.decomposition import PCA + >>> from sklearn.neighbors import KNeighborsClassifier as KNN + >>> from sklearn.metrics import classification_report + >>> from imblearn.over_sampling import SMOTE + >>> from imblearn.pipeline import Pipeline + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> pca = PCA() + >>> smt = SMOTE(random_state=42) + >>> knn = KNN() + >>> pipeline = Pipeline([('smt', smt), ('pca', pca), ('knn', knn)]) + >>> X_train, X_test, y_train, y_test = tts(X, y, random_state=42) + >>> pipeline.fit(X_train, y_train) + Pipeline(steps=[('smt', SMOTE(k=5, kind='regular', m=10, n_jobs=-1, out_step=0.5, random_state=42, + ratio='auto')), ('pca', PCA(copy=True, n_components=None, whiten=False)), ('knn', KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', + metric_params=None, n_jobs=1, n_neighbors=5, p=2, + weights='uniform'))]) + >>> y_hat = pipeline.predict(X_test) + >>> print(classification_report(y_test, y_hat)) + precision recall f1-score support + + 0 0.71 1.00 0.83 24 + 1 1.00 0.96 0.98 226 + + avg / total 0.97 0.96 0.96 250 + + + """ + + # BaseEstimator interface + + def __init__(self, steps): + names, estimators = zip(*steps) + if len(dict(steps)) != len(steps): + raise ValueError("Provided step names are not unique: %s" + % (names,)) + + # shallow copy of steps + self.steps = tosequence(steps) + transforms = estimators[:-1] + estimator = estimators[-1] + + for t in transforms: + if (not (hasattr(t, "fit") or hasattr(t, "fit_transform") or + hasattr(t, "fit_sample")) or + not (hasattr(t, "transform") or hasattr(t, "sample"))): + raise TypeError("All intermediate steps of the chain should " + "be transforms and implement fit and transform" + " '%s' (type %s) doesn't)" % (t, type(t))) + + if not hasattr(estimator, "fit"): + raise TypeError("Last step of chain should implement fit " + "'%s' (type %s) doesn't)" + % (estimator, type(estimator))) + + # Estimator interface + + def _pre_transform(self, X, y=None, **fit_params): + fit_params_steps = dict((step, {}) for step, _ in self.steps) + for pname, pval in six.iteritems(fit_params): + step, param = pname.split('__', 1) + fit_params_steps[step][param] = pval + Xt = X + yt = y + for name, transform in self.steps[:-1]: + if hasattr(transform, "fit_transform"): + Xt = transform.fit_transform(Xt, yt, **fit_params_steps[name]) + elif hasattr(transform, "fit_sample"): + Xt, yt = transform.fit_sample(Xt, yt, **fit_params_steps[name]) + else: + Xt = transform.fit(Xt, yt, **fit_params_steps[name]) \ + .transform(Xt) + return Xt, yt, fit_params_steps[self.steps[-1][0]] + + def fit(self, X, y=None, **fit_params): + """Fit all the transforms and samples one after the other and transform + the data, then fit the transformed data using the final estimator. + + Parameters + ---------- + X : iterable + Training data. Must fulfill input requirements of first step of the + pipeline. + y : iterable, default=None + Training targets. Must fulfill label requirements for all steps of + the pipeline. + """ + Xt, yt, fit_params = self._pre_transform(X, y, **fit_params) + self.steps[-1][-1].fit(Xt, yt, **fit_params) + return self + + def fit_transform(self, X, y=None, **fit_params): + """Fit all the transforms and samples one after the other and + transform or sample the data, then use fit_transform on + transformed data using the final estimator. + + Parameters + ---------- + X : iterable + Training data. Must fulfill input requirements of first step of the + pipeline. + + y : iterable, default=None + Training targets. Must fulfill label requirements for all steps of + the pipeline. + """ + Xt, yt, fit_params = self._pre_transform(X, y, **fit_params) + if hasattr(self.steps[-1][-1], 'fit_transform'): + return self.steps[-1][-1].fit_transform(Xt, yt, **fit_params) + else: + return self.steps[-1][-1].fit(Xt, yt, **fit_params).transform(Xt) + + @if_delegate_has_method(delegate='_final_estimator') + def fit_sample(self, X, y=None, **fit_params): + """Fit all the transforms and samples one after the other and + transform or sample the data, then use fit_sample on + transformed data using the final estimator. + + Parameters + ---------- + X : iterable + Training data. Must fulfill input requirements of first step of the + pipeline. + + y : iterable, default=None + Training targets. Must fulfill label requirements for all steps of + the pipeline. + """ + Xt, yt, fit_params = self._pre_transform(X, y, **fit_params) + return self.steps[-1][-1].fit_sample(Xt, yt, **fit_params) + + @if_delegate_has_method(delegate='_final_estimator') + def sample(self, X, y): + """Applies transforms to the data, and the sample method of + the final estimator. Valid only if the final estimator + implements sample. + + Parameters + ---------- + X : iterable + Data to predict on. Must fulfill input requirements of first step + of the pipeline. + """ + Xt = X + for _, transform in self.steps[:-1]: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return self.steps[-1][-1].sample(Xt, y) + + @if_delegate_has_method(delegate='_final_estimator') + def predict(self, X): + """Applies transforms to the data, and the predict method of + the final estimator. Valid only if the final estimator + implements predict. + + Parameters + ---------- + X : iterable + Data to predict on. Must fulfill input requirements of first step + of the pipeline. + """ + Xt = X + for _, transform in self.steps[:-1]: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return self.steps[-1][-1].predict(Xt) + + @if_delegate_has_method(delegate='_final_estimator') + def fit_predict(self, X, y=None, **fit_params): + """Applies fit_predict of last step in pipeline after transforms + and samples. + + Applies fit_transforms or fit_samples of a pipeline to the data, + followed by the fit_predict method of the final estimator in the + pipeline. Valid only if the final estimator implements fit_predict. + + Parameters + ---------- + X : iterable + Training data. Must fulfill input requirements of first step of + the pipeline. + y : iterable, default=None + Training targets. Must fulfill label requirements for all steps + of the pipeline. + """ + Xt, yt, fit_params = self._pre_transform(X, y, **fit_params) + return self.steps[-1][-1].fit_predict(Xt, yt, **fit_params) + + @if_delegate_has_method(delegate='_final_estimator') + def predict_proba(self, X): + """Applies transforms to the data, and the predict_proba method of the + final estimator. Valid only if the final estimator implements + predict_proba. + + Parameters + ---------- + X : iterable + Data to predict on. Must fulfill input requirements of first step + of the pipeline. + """ + Xt = X + for _, transform in self.steps[:-1]: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return self.steps[-1][-1].predict_proba(Xt) + + @if_delegate_has_method(delegate='_final_estimator') + def decision_function(self, X): + """Applies transforms to the data, and the decision_function method of + the final estimator. Valid only if the final estimator implements + decision_function. + + Parameters + ---------- + X : iterable + Data to predict on. Must fulfill input requirements of first step + of the pipeline. + """ + Xt = X + for _, transform in self.steps[:-1]: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return self.steps[-1][-1].decision_function(Xt) + + @if_delegate_has_method(delegate='_final_estimator') + def predict_log_proba(self, X): + """Applies transforms to the data, and the predict_log_proba method of + the final estimator. Valid only if the final estimator implements + predict_log_proba. + + Parameters + ---------- + X : iterable + Data to predict on. Must fulfill input requirements of first step + of the pipeline. + """ + Xt = X + for _, transform in self.steps[:-1]: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return self.steps[-1][-1].predict_log_proba(Xt) + + @if_delegate_has_method(delegate='_final_estimator') + def transform(self, X): + """Applies transforms to the data, and the transform method of the + final estimator. Valid only if the final estimator implements + transform. + + Parameters + ---------- + X : iterable + Data to predict on. Must fulfill input requirements of first step + of the pipeline. + """ + Xt = X + for _, transform in self.steps: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return Xt + + @if_delegate_has_method(delegate='_final_estimator') + def inverse_transform(self, X): + """Applies inverse transform to the data. + Starts with the last step of the pipeline and applies + ``inverse_transform`` in inverse order of the pipeline steps. + Valid only if all steps of the pipeline implement inverse_transform. + + Parameters + ---------- + X : iterable + Data to inverse transform. Must fulfill output requirements of the + last step of the pipeline. + """ + if X.ndim == 1: + warn("From version 0.19, a 1d X will not be reshaped in" + " pipeline.inverse_transform any more.", FutureWarning) + X = X[None, :] + Xt = X + for _, step in self.steps[::-1]: + if hasattr(step, "fit_sample"): + pass + else: + Xt = step.inverse_transform(Xt) + return Xt + + @if_delegate_has_method(delegate='_final_estimator') + def score(self, X, y=None): + """Applies transforms to the data, and the score method of the + final estimator. Valid only if the final estimator implements + score. + + Parameters + ---------- + X : iterable + Data to score. Must fulfill input requirements of first step of the + pipeline. + + y : iterable, default=None + Targets used for scoring. Must fulfill label requirements for all + steps of the pipeline. + """ + Xt = X + for _, transform in self.steps[:-1]: + if hasattr(transform, "fit_sample"): + pass + else: + Xt = transform.transform(Xt) + return self.steps[-1][-1].score(Xt, y) + + +def make_pipeline(*steps): + """Construct a Pipeline from the given estimators. + + This is a shorthand for the Pipeline constructor; it does not require, and + does not permit, naming the estimators. Instead, their names will be set + to the lowercase of their types automatically. + + Returns + ------- + p : Pipeline + """ + return Pipeline(pipeline._name_estimators(steps)) diff --git a/unbalanced_dataset/setup.py b/imblearn/setup.py similarity index 80% rename from unbalanced_dataset/setup.py rename to imblearn/setup.py index 4d9243659..70f919303 100644 --- a/unbalanced_dataset/setup.py +++ b/imblearn/setup.py @@ -1,7 +1,7 @@ def configuration(parent_package='', top_path=None): from numpy.distutils.misc_util import Configuration - config = Configuration('unbalanced_dataset', parent_package, top_path) + config = Configuration('imblearn', parent_package, top_path) config.add_subpackage('combine') config.add_subpackage('combine/tests') @@ -11,8 +11,8 @@ def configuration(parent_package='', top_path=None): config.add_subpackage('over_sampling/tests') config.add_subpackage('under_sampling') config.add_subpackage('under_sampling/tests') - config.add_subpackage('utils') - config.add_subpackage('utils/tests') + + config.add_subpackage('tests') return config diff --git a/unbalanced_dataset/utils/tests/__init__.py b/imblearn/tests/__init__.py similarity index 100% rename from unbalanced_dataset/utils/tests/__init__.py rename to imblearn/tests/__init__.py diff --git a/imblearn/tests/test_pipeline.py b/imblearn/tests/test_pipeline.py new file mode 100644 index 000000000..8f67d6d13 --- /dev/null +++ b/imblearn/tests/test_pipeline.py @@ -0,0 +1,443 @@ +""" +Test the pipeline module. +""" +import numpy as np + +from sklearn.utils.testing import assert_raises +from sklearn.utils.testing import assert_raises_regex +from sklearn.utils.testing import assert_raise_message +from sklearn.utils.testing import assert_equal +from sklearn.utils.testing import assert_false +from sklearn.utils.testing import assert_true +from sklearn.utils.testing import assert_array_equal +from sklearn.utils.testing import assert_array_almost_equal +from sklearn.utils.testing import assert_warns_message + +from sklearn.base import clone +from sklearn.svm import SVC +from sklearn.linear_model import LogisticRegression +from sklearn.linear_model import LinearRegression +from sklearn.cluster import KMeans +from sklearn.feature_selection import SelectKBest, f_classif +from sklearn.decomposition import PCA +from sklearn.datasets import load_iris +from sklearn.preprocessing import StandardScaler +from sklearn.datasets import make_classification + +from imblearn.pipeline import Pipeline +from imblearn.pipeline import make_pipeline +from imblearn.under_sampling import RandomUnderSampler + + +JUNK_FOOD_DOCS = ( + "the pizza pizza beer copyright", + "the pizza burger beer copyright", + "the the pizza beer beer copyright", + "the burger beer beer copyright", + "the coke burger coke copyright", + "the coke burger burger", +) + + +class IncorrectT(object): + """Small class to test parameter dispatching. + """ + + def __init__(self, a=None, b=None): + self.a = a + self.b = b + + +class T(IncorrectT): + + def fit(self, X, y): + return self + + def get_params(self, deep=False): + return {'a': self.a, 'b': self.b} + + def set_params(self, **params): + self.a = params['a'] + return self + + +class TransfT(T): + + def transform(self, X, y=None): + return X + + def inverse_transform(self, X): + return X + + +class FitParamT(object): + """Mock classifier + """ + + def __init__(self): + self.successful = False + + def fit(self, X, y, should_succeed=False): + self.successful = should_succeed + + def predict(self, X): + return self.successful + + +def test_pipeline_init(): + # Test the various init parameters of the pipeline. + assert_raises(TypeError, Pipeline) + # Check that we can't instantiate pipelines with objects without fit + # method + pipe = assert_raises(TypeError, Pipeline, [('svc', IncorrectT)]) + # Smoke test with only an estimator + clf = T() + pipe = Pipeline([('svc', clf)]) + assert_equal(pipe.get_params(deep=True), + dict(svc__a=None, svc__b=None, svc=clf, + **pipe.get_params(deep=False))) + + # Check that params are set + pipe.set_params(svc__a=0.1) + assert_equal(clf.a, 0.1) + assert_equal(clf.b, None) + # Smoke test the repr: + repr(pipe) + + # Test with two objects + clf = SVC() + filter1 = SelectKBest(f_classif) + pipe = Pipeline([('anova', filter1), ('svc', clf)]) + + # Check that we can't use the same stage name twice + assert_raises(ValueError, Pipeline, [('svc', SVC()), ('svc', SVC())]) + + # Check that params are set + pipe.set_params(svc__C=0.1) + assert_equal(clf.C, 0.1) + # Smoke test the repr: + repr(pipe) + + # Check that params are not set when naming them wrong + assert_raises(ValueError, pipe.set_params, anova__C=0.1) + + # Test clone + pipe2 = clone(pipe) + assert_false(pipe.named_steps['svc'] is pipe2.named_steps['svc']) + + # Check that apart from estimators, the parameters are the same + params = pipe.get_params(deep=True) + params2 = pipe2.get_params(deep=True) + + for x in pipe.get_params(deep=False): + params.pop(x) + + for x in pipe2.get_params(deep=False): + params2.pop(x) + + # Remove estimators that where copied + params.pop('svc') + params.pop('anova') + params2.pop('svc') + params2.pop('anova') + assert_equal(params, params2) + + +def test_pipeline_methods_anova(): + # Test the various methods of the pipeline (anova). + iris = load_iris() + X = iris.data + y = iris.target + # Test with Anova + LogisticRegression + clf = LogisticRegression() + filter1 = SelectKBest(f_classif, k=2) + pipe = Pipeline([('anova', filter1), ('logistic', clf)]) + pipe.fit(X, y) + pipe.predict(X) + pipe.predict_proba(X) + pipe.predict_log_proba(X) + pipe.score(X, y) + + +def test_pipeline_fit_params(): + # Test that the pipeline can take fit parameters + pipe = Pipeline([('transf', TransfT()), ('clf', FitParamT())]) + pipe.fit(X=None, y=None, clf__should_succeed=True) + # classifier should return True + assert_true(pipe.predict(None)) + # and transformer params should not be changed + assert_true(pipe.named_steps['transf'].a is None) + assert_true(pipe.named_steps['transf'].b is None) + + +def test_pipeline_raise_set_params_error(): + # Test pipeline raises set params error message for nested models. + pipe = Pipeline([('cls', LinearRegression())]) + + # expected error message + error_msg = ('Invalid parameter %s for estimator %s. ' + 'Check the list of available parameters ' + 'with `estimator.get_params().keys()`.') + + assert_raise_message(ValueError, + error_msg % ('fake', 'Pipeline'), + pipe.set_params, + fake='nope') + + # nested model check + assert_raise_message(ValueError, + error_msg % ("fake", pipe), + pipe.set_params, + fake__estimator='nope') + + +def test_pipeline_methods_pca_svm(): + # Test the various methods of the pipeline (pca + svm). + iris = load_iris() + X = iris.data + y = iris.target + # Test with PCA + SVC + clf = SVC(probability=True, random_state=0) + pca = PCA() + pipe = Pipeline([('pca', pca), ('svc', clf)]) + pipe.fit(X, y) + pipe.predict(X) + pipe.predict_proba(X) + pipe.predict_log_proba(X) + pipe.score(X, y) + + +def test_pipeline_methods_preprocessing_svm(): + # Test the various methods of the pipeline (preprocessing + svm). + iris = load_iris() + X = iris.data + y = iris.target + n_samples = X.shape[0] + n_classes = len(np.unique(y)) + scaler = StandardScaler() + pca = PCA(n_components=2) + clf = SVC(probability=True, random_state=0, decision_function_shape='ovr') + + for preprocessing in [scaler, pca]: + pipe = Pipeline([('preprocess', preprocessing), ('svc', clf)]) + pipe.fit(X, y) + + # check shapes of various prediction functions + predict = pipe.predict(X) + assert_equal(predict.shape, (n_samples,)) + + proba = pipe.predict_proba(X) + assert_equal(proba.shape, (n_samples, n_classes)) + + log_proba = pipe.predict_log_proba(X) + assert_equal(log_proba.shape, (n_samples, n_classes)) + + decision_function = pipe.decision_function(X) + assert_equal(decision_function.shape, (n_samples, n_classes)) + + pipe.score(X, y) + + +def test_fit_predict_on_pipeline(): + # test that the fit_predict method is implemented on a pipeline + # test that the fit_predict on pipeline yields same results as applying + # transform and clustering steps separately + iris = load_iris() + scaler = StandardScaler() + km = KMeans(random_state=0) + + # first compute the transform and clustering step separately + scaled = scaler.fit_transform(iris.data) + separate_pred = km.fit_predict(scaled) + + # use a pipeline to do the transform and clustering in one step + pipe = Pipeline([('scaler', scaler), ('Kmeans', km)]) + pipeline_pred = pipe.fit_predict(iris.data) + + assert_array_almost_equal(pipeline_pred, separate_pred) + + +def test_fit_predict_on_pipeline_without_fit_predict(): + # tests that a pipeline does not have fit_predict method when final + # step of pipeline does not have fit_predict defined + scaler = StandardScaler() + pca = PCA() + pipe = Pipeline([('scaler', scaler), ('pca', pca)]) + assert_raises_regex(AttributeError, + "'PCA' object has no attribute 'fit_predict'", + getattr, pipe, 'fit_predict') + + +def test_pipeline_transform(): + # Test whether pipeline works with a transformer at the end. + # Also test pipeline.transform and pipeline.inverse_transform + iris = load_iris() + X = iris.data + pca = PCA(n_components=2) + pipeline = Pipeline([('pca', pca)]) + + # test transform and fit_transform: + X_trans = pipeline.fit(X).transform(X) + X_trans2 = pipeline.fit_transform(X) + X_trans3 = pca.fit_transform(X) + assert_array_almost_equal(X_trans, X_trans2) + assert_array_almost_equal(X_trans, X_trans3) + + X_back = pipeline.inverse_transform(X_trans) + X_back2 = pca.inverse_transform(X_trans) + assert_array_almost_equal(X_back, X_back2) + + +def test_pipeline_fit_transform(): + # Test whether pipeline works with a transformer missing fit_transform + iris = load_iris() + X = iris.data + y = iris.target + transft = TransfT() + pipeline = Pipeline([('mock', transft)]) + + # test fit_transform: + X_trans = pipeline.fit_transform(X, y) + X_trans2 = transft.fit(X, y).transform(X) + assert_array_almost_equal(X_trans, X_trans2) + + +def test_make_pipeline(): + t1 = TransfT() + t2 = TransfT() + + pipe = make_pipeline(t1, t2) + assert_true(isinstance(pipe, Pipeline)) + assert_equal(pipe.steps[0][0], "transft-1") + assert_equal(pipe.steps[1][0], "transft-2") + + pipe = make_pipeline(t1, t2, FitParamT()) + assert_true(isinstance(pipe, Pipeline)) + assert_equal(pipe.steps[0][0], "transft-1") + assert_equal(pipe.steps[1][0], "transft-2") + assert_equal(pipe.steps[2][0], "fitparamt") + + +def test_classes_property(): + iris = load_iris() + X = iris.data + y = iris.target + + reg = make_pipeline(SelectKBest(k=1), LinearRegression()) + reg.fit(X, y) + assert_raises(AttributeError, getattr, reg, "classes_") + + clf = make_pipeline(SelectKBest(k=1), LogisticRegression(random_state=0)) + assert_raises(AttributeError, getattr, clf, "classes_") + clf.fit(X, y) + assert_array_equal(clf.classes_, np.unique(y)) + + +def test_X1d_inverse_transform(): + transformer = TransfT() + pipeline = make_pipeline(transformer) + X = np.ones(10) + msg = "1d X will not be reshaped in pipeline.inverse_transform" + assert_warns_message(FutureWarning, msg, pipeline.inverse_transform, X) + + +def test_pipeline_methods_pca_rus_svm(): + # Test the various methods of the pipeline (pca + svm). + X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=0) + + # Test with PCA + SVC + clf = SVC(probability=True, random_state=0) + pca = PCA() + rus = RandomUnderSampler(random_state=0) + pipe = Pipeline([('pca', pca), ('rus', rus), ('svc', clf)]) + pipe.fit(X, y) + pipe.predict(X) + pipe.predict_proba(X) + pipe.predict_log_proba(X) + pipe.score(X, y) + + +def test_pipeline_methods_rus_pca_svm(): + # Test the various methods of the pipeline (pca + svm). + X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=0) + + # Test with PCA + SVC + clf = SVC(probability=True, random_state=0) + pca = PCA() + rus = RandomUnderSampler(random_state=0) + pipe = Pipeline([('rus', rus), ('pca', pca), ('svc', clf)]) + pipe.fit(X, y) + pipe.predict(X) + pipe.predict_proba(X) + pipe.predict_log_proba(X) + pipe.score(X, y) + + +def test_pipeline_sample(): + # Test whether pipeline works with a sampler at the end. + # Also test pipeline.sampler + X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=0) + + rus = RandomUnderSampler(random_state=0) + pipeline = Pipeline([('rus', rus)]) + + # test transform and fit_transform: + X_trans, y_trans = pipeline.fit(X, y).sample(X, y) + X_trans2, y_trans2 = pipeline.fit_sample(X, y) + X_trans3, y_trans3 = rus.fit_sample(X, y) + assert_array_almost_equal(X_trans, X_trans2) + assert_array_almost_equal(X_trans, X_trans3) + assert_array_almost_equal(y_trans, y_trans2) + assert_array_almost_equal(y_trans, y_trans3) + + pca = PCA() + pipeline = Pipeline([('pca', pca), ('rus', rus)]) + + X_trans, y_trans = pipeline.fit(X, y).sample(X, y) + X_pca = pca.fit_transform(X) + X_trans2, y_trans2 = rus.fit_sample(X_pca, y) + assert_array_almost_equal(X_trans, X_trans2) + assert_array_almost_equal(y_trans, y_trans2) + + +def test_pipeline_sample_transform(): + # Test whether pipeline works with a sampler at the end. + # Also test pipeline.sampler + X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=0) + + rus = RandomUnderSampler(random_state=0) + pca = PCA() + pca2 = PCA() + pipeline = Pipeline([('pca', pca), ('rus', rus), ('pca2', pca2)]) + + pipeline.fit(X, y).transform(X) + + +def test_pipeline_methods_anova_rus(): + # Test the various methods of the pipeline (anova). + X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + n_informative=3, n_redundant=1, flip_y=0, + n_features=20, n_clusters_per_class=1, + n_samples=5000, random_state=0) + # Test with RandomUnderSampling + Anova + LogisticRegression + clf = LogisticRegression() + rus = RandomUnderSampler(random_state=0) + filter1 = SelectKBest(f_classif, k=2) + pipe = Pipeline([('rus', rus), ('anova', filter1), ('logistic', clf)]) + pipe.fit(X, y) + pipe.predict(X) + pipe.predict_proba(X) + pipe.predict_log_proba(X) + pipe.score(X, y) diff --git a/unbalanced_dataset/under_sampling/__init__.py b/imblearn/under_sampling/__init__.py similarity index 73% rename from unbalanced_dataset/under_sampling/__init__.py rename to imblearn/under_sampling/__init__.py index 5e410628f..7fe922ddb 100644 --- a/unbalanced_dataset/under_sampling/__init__.py +++ b/imblearn/under_sampling/__init__.py @@ -1,9 +1,8 @@ """ -The :mod:`unbalanced_dataset.under_sampling` provides methods to under-sample +The :mod:`imblearn.under_sampling` provides methods to under-sample a dataset. """ -from .under_sampler import UnderSampler from .random_under_sampler import RandomUnderSampler from .tomek_links import TomekLinks from .cluster_centroids import ClusterCentroids @@ -12,10 +11,11 @@ from .one_sided_selection import OneSidedSelection from .neighbourhood_cleaning_rule import NeighbourhoodCleaningRule from .edited_nearest_neighbours import EditedNearestNeighbours +from .edited_nearest_neighbours import RepeatedEditedNearestNeighbours +from .edited_nearest_neighbours import AllKNN from .instance_hardness_threshold import InstanceHardnessThreshold -__all__ = ['UnderSampler', - 'RandomUnderSampler', +__all__ = ['RandomUnderSampler', 'TomekLinks', 'ClusterCentroids', 'NearMiss', @@ -23,4 +23,6 @@ 'OneSidedSelection', 'NeighbourhoodCleaningRule', 'EditedNearestNeighbours', + 'RepeatedEditedNearestNeighbours', + 'AllKNN', 'InstanceHardnessThreshold'] diff --git a/imblearn/under_sampling/cluster_centroids.py b/imblearn/under_sampling/cluster_centroids.py new file mode 100644 index 000000000..da973c925 --- /dev/null +++ b/imblearn/under_sampling/cluster_centroids.py @@ -0,0 +1,150 @@ +"""Class to perform under-sampling by generating centroids based on +clustering.""" +from __future__ import print_function +from __future__ import division + +import numpy as np + +from collections import Counter + +from sklearn.cluster import KMeans +from sklearn.utils import check_random_state + +from ..base import BaseMulticlassSampler + + +class ClusterCentroids(BaseMulticlassSampler): + """Perform under-sampling by generating centroids based on + clustering methods. + + Experimental method that under samples the majority class by replacing a + cluster of majority samples by the cluster centroid of a KMeans algorithm. + This algorithm keeps N majority samples by fitting the KMeans algorithm + with N cluster to the majority class and using the coordinates of the N + cluster centroids as the new majority samples. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number + of samples in the minority class over the the number of samples + in the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + n_jobs : int, optional (default=-1) + The number of threads to open if possible. + + **kwargs : keywords + Parameter to use for the KMeans object. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + This class support multi-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import ClusterCentroids + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> cc = ClusterCentroids(random_state=42) + >>> X_res, y_res = cc.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 100, 1: 100}) + + """ + + def __init__(self, ratio='auto', random_state=None, n_jobs=-1, **kwargs): + super(ClusterCentroids, self).__init__(ratio=ratio) + self.random_state = random_state + self.n_jobs = n_jobs + self.kwargs = kwargs + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + """ + random_state = check_random_state(self.random_state) + + # Compute the number of cluster needed + if self.ratio == 'auto': + num_samples = self.stats_c_[self.min_c_] + else: + num_samples = int(self.stats_c_[self.min_c_] / self.ratio) + + # Create the clustering object + kmeans = KMeans(n_clusters=num_samples, random_state=random_state) + kmeans.set_params(**self.kwargs) + + # Start with the minority class + X_min = X[y == self.min_c_] + y_min = y[y == self.min_c_] + + # All the minority class samples will be preserved + X_resampled = X_min.copy() + y_resampled = y_min.copy() + + # Loop over the other classes under picking at random + for key in self.stats_c_.keys(): + + # If the minority class is up, skip it. + if key == self.min_c_: + continue + + # Find the centroids via k-means + kmeans.fit(X[y == key]) + centroids = kmeans.cluster_centers_ + + # Concatenate to the minority class + X_resampled = np.concatenate((X_resampled, centroids), axis=0) + y_resampled = np.concatenate((y_resampled, np.array([key] * + num_samples)), + axis=0) + + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled)) + + return X_resampled, y_resampled diff --git a/unbalanced_dataset/under_sampling/condensed_nearest_neighbour.py b/imblearn/under_sampling/condensed_nearest_neighbour.py similarity index 61% rename from unbalanced_dataset/under_sampling/condensed_nearest_neighbour.py rename to imblearn/under_sampling/condensed_nearest_neighbour.py index 38ce07cdd..10ab37999 100644 --- a/unbalanced_dataset/under_sampling/condensed_nearest_neighbour.py +++ b/imblearn/under_sampling/condensed_nearest_neighbour.py @@ -7,27 +7,27 @@ from collections import Counter -from sklearn.utils import check_X_y +from sklearn.utils import check_random_state from sklearn.neighbors import KNeighborsClassifier -from .under_sampler import UnderSampler +from ..base import BaseMulticlassSampler -class CondensedNearestNeighbour(UnderSampler): +class CondensedNearestNeighbour(BaseMulticlassSampler): """Class to perform under-sampling based on the condensed nearest neighbour method. Parameters ---------- return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. + Whether or not to return the indices of the samples randomly + selected from the majority class. - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. size_ngh : int, optional (default=1) Size of the neighbourhood to consider to compute the average @@ -37,7 +37,7 @@ class CondensedNearestNeighbour(UnderSampler): Number of samples to extract in order to build the set S. n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. + The number of threads to open if possible. **kwargs : keywords Parameter to use for the Neareast Neighbours object. @@ -45,15 +45,6 @@ class CondensedNearestNeighbour(UnderSampler): Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -64,88 +55,50 @@ class CondensedNearestNeighbour(UnderSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + Notes ----- The method is based on [1]_. This class supports multi-class. + Examples + -------- + + >>> from collections import Counter #doctest: +SKIP + >>> from sklearn.datasets import fetch_mldata #doctest: +SKIP + >>> from imblearn.under_sampling import CondensedNearestNeighbour #doctest: +SKIP + >>> pima = fetch_mldata('diabetes_scale') #doctest: +SKIP + >>> X, y = pima['data'], pima['target'] #doctest: +SKIP + >>> print('Original dataset shape {}'.format(Counter(y))) #doctest: +SKIP + Original dataset shape Counter({1: 500, -1: 268}) #doctest: +SKIP + >>> cnn = CondensedNearestNeighbour(random_state=42) #doctest: +SKIP + >>> X_res, y_res = cnn.fit_sample(X, y) #doctest: +SKIP + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) #doctest: +SKIP + Resampled dataset shape Counter({-1: 268, 1: 227}) #doctest: +SKIP + References ---------- - .. [1] M. Kubat, S. Matwin, "Addressing the curse of imbalanced training - sets: one-sided selection," In ICML, vol. 97, pp. 179-186, 1997. + .. [1] P. Hart, "The condensed nearest neighbor rule," + In Information Theory, IEEE Transactions on, vol. 14(3), + pp. 515-516, 1968. """ - def __init__(self, return_indices=False, random_state=None, verbose=True, + def __init__(self, return_indices=False, random_state=None, size_ngh=1, n_seeds_S=1, n_jobs=-1, **kwargs): - """Initialisation of CNN object. - - Parameters - ---------- - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - size_ngh : int, optional (default=1) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - n_seeds_S : int, optional (default=1) - Number of samples to extract in order to build the set S. - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - **kwargs : keywords - Parameter to use for the Neareast Neighbours object. - - Returns - ------- - None - - """ - super(CondensedNearestNeighbour, self).__init__( - return_indices=return_indices, - random_state=random_state, - verbose=verbose) + super(CondensedNearestNeighbour, self).__init__() + self.return_indices = return_indices + self.random_state = random_state self.size_ngh = size_ngh self.n_seeds_S = n_seeds_S self.n_jobs = n_jobs self.kwargs = kwargs - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(CondensedNearestNeighbour, self).fit(X, y) - - return self - - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -169,10 +122,8 @@ def transform(self, X, y): containing the which samples have been selected. """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - super(CondensedNearestNeighbour, self).transform(X, y) + random_state = check_random_state(self.random_state) # Start with the minority class X_min = X[y == self.min_c_] @@ -184,7 +135,7 @@ def transform(self, X, y): # If we need to offer support for the indices if self.return_indices: - idx_under = np.nonzero(y == self.min_c_)[0] + idx_under = np.flatnonzero(y == self.min_c_) # Loop over the other classes under picking at random for key in self.stats_c_.keys(): @@ -194,10 +145,10 @@ def transform(self, X, y): continue # Randomly get one sample from the majority class - np.random.seed(self.rs_) # Generate the index to select - idx_maj_sample = np.random.randint(low=0, high=self.stats_c_[key], - size=self.n_seeds_S) + idx_maj_sample = random_state.randint(low=0, + high=self.stats_c_[key], + size=self.n_seeds_S) maj_sample = X[y == key][idx_maj_sample] # Create the set C - One majority samples and all minority @@ -247,12 +198,18 @@ def transform(self, X, y): pred_S_y = knn.predict(S_x) good_classif_label = np.unique( np.append(idx_maj_sample, - np.nonzero(pred_S_y == S_y)[0])) + np.flatnonzero(pred_S_y == S_y))) # Find the misclassified S_y sel_x = np.squeeze(S_x[idx_maj_sample, :]) sel_y = S_y[idx_maj_sample] + # The indexes found are relative to the current class, we need to + # find the absolute value + # Build the array with the absolute position + abs_pos = np.flatnonzero(y == key) + idx_maj_sample = abs_pos[idx_maj_sample] + # If we need to offer support for the indices selected if self.return_indices: idx_under = np.concatenate((idx_under, idx_maj_sample), axis=0) @@ -260,8 +217,8 @@ def transform(self, X, y): X_resampled = np.concatenate((X_resampled, sel_x), axis=0) y_resampled = np.concatenate((y_resampled, sel_y), axis=0) - if self.verbose: - print("Under-sampling performed: {}".format(Counter(y_resampled))) + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled)) # Check if the indices of the samples selected should be returned too if self.return_indices: diff --git a/imblearn/under_sampling/edited_nearest_neighbours.py b/imblearn/under_sampling/edited_nearest_neighbours.py new file mode 100644 index 000000000..d887e61ab --- /dev/null +++ b/imblearn/under_sampling/edited_nearest_neighbours.py @@ -0,0 +1,630 @@ +"""Class to perform under-sampling based on the edited nearest neighbour +method.""" +from __future__ import print_function +from __future__ import division + +import numpy as np + +from collections import Counter + +from scipy.stats import mode + +from sklearn.neighbors import NearestNeighbors + +from ..base import BaseMulticlassSampler + + +SEL_KIND = ('all', 'mode') + + +class EditedNearestNeighbours(BaseMulticlassSampler): + """Class to perform under-sampling based on the edited nearest neighbour + method. + + Parameters + ---------- + return_indices : bool, optional (default=False) + Whether or not to return the indices of the samples randomly + selected from the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + size_ngh : int, optional (default=3) + Size of the neighbourhood to consider to compute the average + distance to the minority point samples. + + kind_sel : str, optional (default='all') + Strategy to use in order to exclude samples. + + - If 'all', all neighbours will have to agree with the samples of + interest to not be excluded. + - If 'mode', the majority vote of the neighbours will be used in + order to exclude a sample. + + n_jobs : int, optional (default=-1) + The number of threads to open if possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The method is based on [1]_. + + This class supports multi-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import EditedNearestNeighbours + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> enn = EditedNearestNeighbours(random_state=42) + >>> X_res, y_res = enn.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 883, 0: 100}) + + References + ---------- + .. [1] D. Wilson, "Asymptotic Properties of Nearest Neighbor Rules Using + Edited Data," In IEEE Transactions on Systems, Man, and Cybernetrics, + vol. 2 (3), pp. 408-421, 1972. + + """ + + def __init__(self, return_indices=False, random_state=None, + size_ngh=3, kind_sel='all', n_jobs=-1): + super(EditedNearestNeighbours, self).__init__() + self.return_indices = return_indices + self.random_state = random_state + self.size_ngh = size_ngh + self.kind_sel = kind_sel + self.n_jobs = n_jobs + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + idx_under : ndarray, shape (n_samples, ) + If `return_indices` is `True`, a boolean array will be returned + containing the which samples have been selected. + + """ + + if self.kind_sel not in SEL_KIND: + raise NotImplementedError + + # Start with the minority class + X_min = X[y == self.min_c_] + y_min = y[y == self.min_c_] + + # All the minority class samples will be preserved + X_resampled = X_min.copy() + y_resampled = y_min.copy() + + # If we need to offer support for the indices + if self.return_indices: + idx_under = np.flatnonzero(y == self.min_c_) + + # Create a k-NN to fit the whole data + nn_obj = NearestNeighbors(n_neighbors=self.size_ngh + 1, + n_jobs=self.n_jobs) + # Fit the data + nn_obj.fit(X) + + # Loop over the other classes under picking at random + for key in self.stats_c_.keys(): + + # If the minority class is up, skip it + if key == self.min_c_: + continue + + # Get the sample of the current class + sub_samples_x = X[y == key] + sub_samples_y = y[y == key] + + # Find the NN for the current class + nnhood_idx = nn_obj.kneighbors(sub_samples_x, + return_distance=False)[:, 1:] + + # Get the label of the corresponding to the index + nnhood_label = y[nnhood_idx] + + # Check which one are the same label than the current class + # Make the majority vote + if self.kind_sel == 'mode': + nnhood_label, _ = mode(nnhood_label, axis=1) + nnhood_bool = (np.ravel(nnhood_label) == sub_samples_y) + elif self.kind_sel == 'all': + nnhood_label = (nnhood_label == key) + nnhood_bool = np.all(nnhood_label, axis=1) + else: + raise NotImplementedError + + # Get the samples which agree all together + sel_x = sub_samples_x[np.flatnonzero(nnhood_bool), :] + sel_y = sub_samples_y[np.flatnonzero(nnhood_bool)] + + # If we need to offer support for the indices selected + if self.return_indices: + idx_tmp = np.flatnonzero(y == key)[np.flatnonzero(nnhood_bool)] + idx_under = np.concatenate((idx_under, idx_tmp), axis=0) + + self.logger.debug('Shape of the selected feature: %s', sel_x.shape) + self.logger.debug('Shape of current features: %s', + X_resampled.shape) + + X_resampled = np.concatenate((X_resampled, sel_x), axis=0) + y_resampled = np.concatenate((y_resampled, sel_y), axis=0) + + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled)) + + # Check if the indices of the samples selected should be returned too + if self.return_indices: + # Return the indices of interest + return X_resampled, y_resampled, idx_under + else: + return X_resampled, y_resampled + + +class RepeatedEditedNearestNeighbours(BaseMulticlassSampler): + """Class to perform under-sampling based on the repeated edited nearest + neighbour method. + + Parameters + ---------- + return_indices : bool, optional (default=False) + Whether or not to return the indices of the samples randomly + selected from the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + size_ngh : int, optional (default=3) + Size of the neighbourhood to consider to compute the average + distance to the minority point samples. + + kind_sel : str, optional (default='all') + Strategy to use in order to exclude samples. + + - If 'all', all neighbours will have to agree with the samples of + interest to not be excluded. + - If 'mode', the majority vote of the neighbours will be used in + order to exclude a sample. + + n_jobs : int, optional (default=-1) + The number of thread to open when it is possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + max_iter : int, optional (default=100) + Maximum number of iterations of the edited nearest neighbours + algorithm for a single run. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The method is based on [1]_. + + This class supports multi-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import RepeatedEditedNearestNeighbours + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> renn = RepeatedEditedNearestNeighbours(random_state=42) + >>> X_res, y_res = renn.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 883, 0: 100}) + + References + ---------- + .. [1] I. Tomek, "An Experiment with the Edited Nearest-Neighbor + Rule," IEEE Transactions on Systems, Man, and Cybernetics, vol. 6(6), + pp. 448-452, June 1976. + + """ + + def __init__(self, return_indices=False, random_state=None, + size_ngh=3, max_iter=100, kind_sel='all', n_jobs=-1): + super(RepeatedEditedNearestNeighbours, self).__init__() + self.return_indices = return_indices + self.random_state = random_state + self.size_ngh = size_ngh + self.kind_sel = kind_sel + self.n_jobs = n_jobs + self.max_iter = max_iter + self.enn_ = EditedNearestNeighbours( + return_indices=self.return_indices, + random_state=self.random_state, + size_ngh=self.size_ngh, + kind_sel=self.kind_sel, + n_jobs=self.n_jobs) + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + super(RepeatedEditedNearestNeighbours, self).fit(X, y) + self.enn_.fit(X, y) + + return self + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + idx_under : ndarray, shape (n_samples, ) + If `return_indices` is `True`, a boolean array will be returned + containing the which samples have been selected. + + """ + + if self.kind_sel not in SEL_KIND: + raise NotImplementedError + + if self.max_iter < 2: + raise ValueError('max_iter must be greater than 1.') + + X_, y_ = X, y + + if self.return_indices: + idx_under = np.arange(X.shape[0], dtype=int) + + prev_len = y.shape[0] + + for n_iter in range(self.max_iter): + + self.logger.debug('Apply ENN iteration #%s', n_iter + 1) + + prev_len = y_.shape[0] + if self.return_indices: + X_enn, y_enn, idx_enn = self.enn_.fit_sample(X_, y_) + else: + X_enn, y_enn = self.enn_.fit_sample(X_, y_) + + # Check the stopping criterion + # 1. If there is no changes for the vector y + # 2. If the number of samples in the other class become inferior to + # the number of samples in the majority class + # 3. If one of the class is disappearing + + # Case 1 + b_conv = (prev_len == y_enn.shape[0]) + + # Case 2 + stats_enn = Counter(y_enn) + self.logger.debug('Current ENN stats: %s', stats_enn) + # Get the number of samples in the non-minority classes + count_non_min = np.array([val for val, key + in zip(stats_enn.values(), + stats_enn.keys()) + if key != self.min_c_]) + self.logger.debug('Number of samples in the non-majority' + ' classes: %s', count_non_min) + # Check the minority stop to be the minority + b_min_bec_maj = np.any(count_non_min < self.stats_c_[self.min_c_]) + + # Case 3 + b_remove_maj_class = (len(stats_enn) < len(self.stats_c_)) + + if b_conv or b_min_bec_maj or b_remove_maj_class: + # If this is a normal convergence, get the last data + if b_conv: + if self.return_indices: + X_, y_, = X_enn, y_enn + idx_under = idx_under[idx_enn] + else: + X_, y_, = X_enn, y_enn + # Log the variables to explain the stop of the algorithm + self.logger.debug('RENN converged: %s', b_conv) + self.logger.debug('RENN minority become majority: %s', + b_min_bec_maj) + self.logger.debug('RENN remove one class: %s', + b_remove_maj_class) + break + + # Update the data for the next iteration + X_, y_, = X_enn, y_enn + if self.return_indices: + idx_under = idx_under[idx_enn] + + self.logger.info('Under-sampling performed: %s', Counter(y_)) + + X_resampled, y_resampled = X_, y_ + + # Check if the indices of the samples selected should be returned too + if self.return_indices: + # Return the indices of interest + return X_resampled, y_resampled, idx_under + else: + return X_resampled, y_resampled + + +class AllKNN(BaseMulticlassSampler): + """Class to perform under-sampling based on the AllKNN method. + + Parameters + ---------- + return_indices : bool, optional (default=False) + Whether or not to return the indices of the samples randomly + selected from the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + size_ngh : int, optional (default=3) + Size of the neighbourhood to consider to compute the average + distance to the minority point samples. + + kind_sel : str, optional (default='all') + Strategy to use in order to exclude samples. + + - If 'all', all neighbours will have to agree with the samples of + interest to not be excluded. + - If 'mode', the majority vote of the neighbours will be used in + order to exclude a sample. + + n_jobs : int, optional (default=-1) + The number of thread to open when it is possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The method is based on [1]_. + + This class supports multi-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import AllKNN + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> allknn = AllKNN(random_state=42) + >>> X_res, y_res = allknn.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 883, 0: 100}) + + References + ---------- + .. [1] I. Tomek, "An Experiment with the Edited Nearest-Neighbor + Rule," IEEE Transactions on Systems, Man, and Cybernetics, vol. 6(6), + pp. 448-452, June 1976. + + """ + + def __init__(self, return_indices=False, random_state=None, + size_ngh=3, kind_sel='all', n_jobs=-1): + super(AllKNN, self).__init__() + self.return_indices = return_indices + self.random_state = random_state + self.size_ngh = size_ngh + self.kind_sel = kind_sel + self.n_jobs = n_jobs + self.enn_ = EditedNearestNeighbours( + return_indices=self.return_indices, + random_state=self.random_state, + size_ngh=self.size_ngh, + kind_sel=self.kind_sel, + n_jobs=self.n_jobs) + + def fit(self, X, y): + """Find the classes statistics before to perform sampling. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + self : object, + Return self. + + """ + super(AllKNN, self).fit(X, y) + self.enn_.fit(X, y) + + return self + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + idx_under : ndarray, shape (n_samples, ) + If `return_indices` is `True`, a boolean array will be returned + containing the which samples have been selected. + + """ + + if self.kind_sel not in SEL_KIND: + raise NotImplementedError + + X_, y_ = X, y + + if self.return_indices: + idx_under = np.arange(X.shape[0], dtype=int) + + for curr_size_ngh in range(1, self.size_ngh + 1): + self.logger.debug('Apply ENN size_ngh #%s', curr_size_ngh) + # updating ENN size_ngh + self.enn_.size_ngh = curr_size_ngh + if self.return_indices: + X_enn, y_enn, idx_enn = self.enn_.fit_sample(X_, y_) + else: + X_enn, y_enn = self.enn_.fit_sample(X_, y_) + + # Check the stopping criterion + # 1. If the number of samples in the other class become inferior to + # the number of samples in the majority class + # 2. If one of the class is disappearing + # Case 1 + stats_enn = Counter(y_enn) + self.logger.debug('Current ENN stats: %s', stats_enn) + # Get the number of samples in the non-minority classes + count_non_min = np.array([val for val, key + in zip(stats_enn.values(), + stats_enn.keys()) + if key != self.min_c_]) + self.logger.debug('Number of samples in the non-majority' + ' classes: %s', count_non_min) + # Check the minority stop to be the minority + b_min_bec_maj = np.any(count_non_min < self.stats_c_[self.min_c_]) + + # Case 2 + b_remove_maj_class = (len(stats_enn) < len(self.stats_c_)) + + if b_min_bec_maj or b_remove_maj_class: + # Log the variables to explain the stop of the algorithm + self.logger.debug('AllKNN minority become majority: %s', + b_min_bec_maj) + self.logger.debug('AllKNN remove one class: %s', + b_remove_maj_class) + break + + # Update the data for the next iteration + X_, y_, = X_enn, y_enn + if self.return_indices: + idx_under = idx_under[idx_enn] + + self.logger.info('Under-sampling performed: %s', Counter(y_)) + + X_resampled, y_resampled = X_, y_ + + # Check if the indices of the samples selected should be returned too + if self.return_indices: + # Return the indices of interest + return X_resampled, y_resampled, idx_under + else: + return X_resampled, y_resampled diff --git a/imblearn/under_sampling/instance_hardness_threshold.py b/imblearn/under_sampling/instance_hardness_threshold.py new file mode 100644 index 000000000..5951c0773 --- /dev/null +++ b/imblearn/under_sampling/instance_hardness_threshold.py @@ -0,0 +1,218 @@ +"""Class to perform under-sampling based on the instance hardness +threshold.""" +from __future__ import print_function +from __future__ import division + +import numpy as np + +from collections import Counter + +from sklearn.cross_validation import StratifiedKFold + +from ..base import BaseBinarySampler + + +ESTIMATOR_KIND = ('knn', 'decision-tree', 'random-forest', 'adaboost', + 'gradient-boosting', 'linear-svm') + + +class InstanceHardnessThreshold(BaseBinarySampler): + """Class to perform under-sampling based on the instance hardness + threshold. + + Parameters + ---------- + estimator : str, optional (default='linear-svm') + Classifier to be used in to estimate instance hardness of the samples. + The choices are the following: 'knn', + 'decision-tree', 'random-forest', 'adaboost', 'gradient-boosting' + and 'linear-svm'. + + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number + of samples in the minority class over the the number of samples + in the majority class. + + return_indices : bool, optional (default=False) + Whether or not to return the indices of the samples randomly + selected from the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + cv : int, optional (default=5) + Number of folds to be used when estimating samples' instance hardness. + + n_jobs : int, optional (default=-1) + The number of threads to open if possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary in which the number of occurences of each class is + reported. + + cv : int, optional (default=5) + Number of folds used when estimating samples' instance hardness. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + The method is based on [1]_. + + This class does not support multi-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import RepeatedEditedNearestNeighbours + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> renn = RepeatedEditedNearestNeighbours(random_state=42) + >>> X_res, y_res = renn.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 883, 0: 100}) + + References + ---------- + .. [1] D. Smith, Michael R., Tony Martinez, and Christophe Giraud-Carrier. + "An instance level analysis of data complexity." Machine learning + 95.2 (2014): 225-256. + + """ + + def __init__(self, estimator='linear-svm', ratio='auto', + return_indices=False, random_state=None, cv=5, n_jobs=-1, + **kwargs): + super(InstanceHardnessThreshold, self).__init__(ratio=ratio) + self.estimator = estimator + self.return_indices = return_indices + self.random_state = random_state + self.kwargs = kwargs + self.cv = cv + self.n_jobs = n_jobs + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data which have to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + idx_under : ndarray, shape (n_samples, ) + If `return_indices` is `True`, a boolean array will be returned + containing the which samples have been selected. + + """ + + if self.estimator not in ESTIMATOR_KIND: + raise NotImplementedError + + # Select the appropriate classifier + if self.estimator == 'knn': + from sklearn.neighbors import KNeighborsClassifier + estimator = KNeighborsClassifier( + **self.kwargs) + elif self.estimator == 'decision-tree': + from sklearn.tree import DecisionTreeClassifier + estimator = DecisionTreeClassifier( + random_state=self.random_state, + **self.kwargs) + elif self.estimator == 'random-forest': + from sklearn.ensemble import RandomForestClassifier + estimator = RandomForestClassifier( + random_state=self.random_state, + **self.kwargs) + elif self.estimator == 'adaboost': + from sklearn.ensemble import AdaBoostClassifier + estimator = AdaBoostClassifier( + random_state=self.random_state, + **self.kwargs) + elif self.estimator == 'gradient-boosting': + from sklearn.ensemble import GradientBoostingClassifier + estimator = GradientBoostingClassifier( + random_state=self.random_state, + **self.kwargs) + elif self.estimator == 'linear-svm': + from sklearn.svm import SVC + estimator = SVC(probability=True, + random_state=self.random_state, + kernel='linear', + **self.kwargs) + else: + raise NotImplementedError + + # Create the different folds + skf = StratifiedKFold(y, n_folds=self.cv, shuffle=False, + random_state=self.random_state) + + probabilities = np.zeros(y.shape[0], dtype=float) + + for train_index, test_index in skf: + X_train, X_test = X[train_index], X[test_index] + y_train, y_test = y[train_index], y[test_index] + + estimator.fit(X_train, y_train) + + probs = estimator.predict_proba(X_test) + classes = estimator.classes_ + probabilities[test_index] = [ + probs[l, np.where(classes == c)[0][0]] + for l, c in enumerate(y_test)] + + # Compute the number of cluster needed + if self.ratio == 'auto': + num_samples = self.stats_c_[self.min_c_] + else: + num_samples = int(self.stats_c_[self.min_c_] / self.ratio) + + # Find the percentile corresponding to the top num_samples + threshold = np.percentile( + probabilities[y != self.min_c_], + (1. - (num_samples / self.stats_c_[self.maj_c_])) * 100.) + + mask = np.logical_or(probabilities >= threshold, y == self.min_c_) + + # Sample the data + X_resampled = X[mask] + y_resampled = y[mask] + + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled)) + + # If we need to offer support for the indices + if self.return_indices: + idx_under = np.flatnonzero(mask) + return X_resampled, y_resampled, idx_under + else: + return X_resampled, y_resampled diff --git a/unbalanced_dataset/under_sampling/nearmiss.py b/imblearn/under_sampling/nearmiss.py similarity index 67% rename from unbalanced_dataset/under_sampling/nearmiss.py rename to imblearn/under_sampling/nearmiss.py index b3d6900f2..f6efda905 100644 --- a/unbalanced_dataset/under_sampling/nearmiss.py +++ b/imblearn/under_sampling/nearmiss.py @@ -2,36 +2,37 @@ from __future__ import print_function from __future__ import division +import warnings + import numpy as np from collections import Counter -from sklearn.utils import check_X_y from sklearn.neighbors import NearestNeighbors -from .under_sampler import UnderSampler +from ..base import BaseMulticlassSampler -class NearMiss(UnderSampler): +class NearMiss(BaseMulticlassSampler): """Class to perform under-sampling based on NearMiss methods. Parameters ---------- ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number of samples in the minority class over the the number of samples in the majority class. return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. + Whether or not to return the indices of the samples randomly + selected from the majority class. - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. version : int, optional (default=1) Version of the NearMiss to use. Possible values @@ -47,22 +48,13 @@ class NearMiss(UnderSampler): create the sub_set in which the selection will be performed. n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. + The number of threads to open if possible. **kwargs : keywords Parameter to use for the Nearest Neighbours object. Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -73,12 +65,32 @@ class NearMiss(UnderSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + Notes ----- The methods are based on [1]_. The class support multi-classes. + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import NearMiss + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> nm = NearMiss(random_state=42) + >>> X_res, y_res = nm.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 100, 1: 100}) + References ---------- .. [1] I. Mani, I. Zhang. "kNN approach to unbalanced data distributions: @@ -88,93 +100,16 @@ class NearMiss(UnderSampler): """ def __init__(self, ratio='auto', return_indices=False, random_state=None, - verbose=True, version=1, size_ngh=3, ver3_samp_ngh=3, - n_jobs=-1, **kwargs): - """Initialisation of clustering centroids object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - version : int, optional (default=1) - Version of the NearMiss to use. Possible values - are 1, 2 or 3. - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider to compute the - average distance to the minority point samples. - - ver3_samp_ngh : int, optional (default=3) - NearMiss-3 algorithm start by a phase of re-sampling. This - parameter correspond to the number of neighbours selected - create the sub_set in which the selection will be performed. - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - **kwargs : keywords - Parameter to use for the Nearest Neighbours object. - - Returns - ------- - None - - """ - super(NearMiss, self).__init__(ratio=ratio, - return_indices=return_indices, - random_state=random_state, - verbose=verbose) - - # Assign the parameter of the element of this class - # Check that the version asked is implemented - if not (version == 1 or version == 2 or version == 3): - raise ValueError('UnbalancedData.NearMiss: there is only 3 ' - 'versions available with parameter version=1/2/3') - + version=1, size_ngh=3, ver3_samp_ngh=3, n_jobs=-1, **kwargs): + super(NearMiss, self).__init__(ratio=ratio) + self.return_indices = return_indices + self.random_state = random_state self.version = version self.size_ngh = size_ngh self.ver3_samp_ngh = ver3_samp_ngh self.n_jobs = n_jobs self.kwargs = kwargs - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(NearMiss, self).fit(X, y) - - return self - def _selection_dist_based(self, X, y, dist_vec, num_samples, key, sel_strategy='nearest'): """Select the appropriate samples depending of the strategy selected. @@ -215,26 +150,44 @@ def _selection_dist_based(self, X, y, dist_vec, num_samples, key, # Compute the distance considering the farthest neighbour dist_avg_vec = np.sum(dist_vec[:, -self.size_ngh:], axis=1) + self.logger.debug('The size of the distance matrix is %s', + dist_vec.shape) + self.logger.debug('The size of the samples that can be selected is %s', + X[y == key].shape) + + if dist_vec.shape[0] != X[y == key].shape[0]: + raise RuntimeError('The samples to be selected do not correspond' + ' to the distance matrix given. Ensure that' + ' both `X[y == key]` and `dist_vec` are' + ' related.') + # Sort the list of distance and get the index if sel_strategy == 'nearest': sort_way = False elif sel_strategy == 'farthest': sort_way = True else: - raise ValueError('Unbalanced.NearMiss: the sorting can be done ' - 'only with nearest or farthest data points.') + raise NotImplementedError sorted_idx = sorted(range(len(dist_avg_vec)), key=dist_avg_vec.__getitem__, reverse=sort_way) + # Throw a warning to tell the user that we did not have enough samples + # to select and that we just select everything + if len(sorted_idx) < num_samples: + warnings.warn('The number of the samples to be selected is larger' + ' than the number of samples available. The' + ' balancing ratio cannot be ensure and all samples' + ' will be returned.') + # Select the desired number of samples sel_idx = sorted_idx[:num_samples] return (X[y == key][sel_idx], y[y == key][sel_idx], - np.nonzero(y == key)[0][sel_idx]) + np.flatnonzero(y == key)[sel_idx]) - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -258,10 +211,12 @@ def transform(self, X, y): containing the which samples have been selected. """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - super(NearMiss, self).transform(X, y) + # Assign the parameter of the element of this class + # Check that the version asked is implemented + if self.version not in [1, 2, 3]: + raise ValueError('Parameter `version` must be 1, 2 or 3, got' + ' {}'.format(self.version)) # Start with the minority class X_min = X[y == self.min_c_] @@ -272,14 +227,14 @@ def transform(self, X, y): y_resampled = y_min.copy() # Compute the number of cluster needed - if self.ratio_ == 'auto': + if self.ratio == 'auto': num_samples = self.stats_c_[self.min_c_] else: - num_samples = int(self.stats_c_[self.min_c_] / self.ratio_) + num_samples = int(self.stats_c_[self.min_c_] / self.ratio) # If we need to offer support for the indices if self.return_indices: - idx_under = np.nonzero(y == self.min_c_)[0] + idx_under = np.flatnonzero(y == self.min_c_) # For each element of the current class, find the set of NN # of the minority class @@ -357,12 +312,14 @@ def transform(self, X, y): n_neighbors=self.size_ngh) sel_x, sel_y, idx_tmp = self._selection_dist_based( - X, - y, + sub_samples_x, + sub_samples_y, dist_vec, num_samples, key, sel_strategy='farthest') + else: + raise NotImplementedError # If we need to offer support for the indices selected if self.return_indices: @@ -371,8 +328,8 @@ def transform(self, X, y): X_resampled = np.concatenate((X_resampled, sel_x), axis=0) y_resampled = np.concatenate((y_resampled, sel_y), axis=0) - if self.verbose: - print("Under-sampling performed: {}".format(Counter(y_resampled))) + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled)) # Check if the indices of the samples selected should be returned too if self.return_indices: diff --git a/unbalanced_dataset/under_sampling/neighbourhood_cleaning_rule.py b/imblearn/under_sampling/neighbourhood_cleaning_rule.py similarity index 59% rename from unbalanced_dataset/under_sampling/neighbourhood_cleaning_rule.py rename to imblearn/under_sampling/neighbourhood_cleaning_rule.py index 16aca3b3c..017b0388f 100644 --- a/unbalanced_dataset/under_sampling/neighbourhood_cleaning_rule.py +++ b/imblearn/under_sampling/neighbourhood_cleaning_rule.py @@ -7,48 +7,38 @@ from collections import Counter from sklearn.neighbors import NearestNeighbors -from sklearn.utils import check_X_y -from .under_sampler import UnderSampler +from ..base import BaseMulticlassSampler -class NeighbourhoodCleaningRule(UnderSampler): +class NeighbourhoodCleaningRule(BaseMulticlassSampler): """Class performing under-sampling based on the neighbourhood cleaning rule. Parameters ---------- return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. + Whether or not to return the indices of the samples randomly + selected from the majority class. - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. size_ngh : int, optional (default=3) Size of the neighbourhood to consider in order to make the comparison between each samples and their NN. n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. + The number of threads to open if possible. **kwargs : keywords Parameter to use for the Neareast Neighbours object. Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -59,10 +49,30 @@ class NeighbourhoodCleaningRule(UnderSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + Notes ----- This class support multi-class. + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import NeighbourhoodCleaningRule + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> ncr = NeighbourhoodCleaningRule(random_state=42) + >>> X_res, y_res = ncr.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 884, 0: 100}) + References ---------- .. [1] J. Laurikkala, "Improving identification of difficult small classes @@ -70,70 +80,15 @@ class NeighbourhoodCleaningRule(UnderSampler): """ - def __init__(self, return_indices=False, random_state=None, verbose=True, - size_ngh=3, n_jobs=-1): - """Initialisation of NCL object. - - Parameters - ---------- - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider in order to make - the comparison between each samples and their NN. - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - **kwargs : keywords - Parameter to use for the Neareast Neighbours object. - - Returns - ------- - None - - """ - super(NeighbourhoodCleaningRule, self).__init__( - return_indices=return_indices, - random_state=random_state, - verbose=verbose) - + def __init__(self, return_indices=False, random_state=None, size_ngh=3, + n_jobs=-1): + super(NeighbourhoodCleaningRule, self).__init__() + self.return_indices = return_indices + self.random_state = random_state self.size_ngh = size_ngh self.n_jobs = n_jobs - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(NeighbourhoodCleaningRule, self).fit(X, y) - - return self - - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -157,10 +112,6 @@ def transform(self, X, y): containing the which samples have been selected. """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(NeighbourhoodCleaningRule, self).transform(X, y) # Start with the minority class X_min = X[y == self.min_c_] @@ -172,7 +123,7 @@ def transform(self, X, y): # If we need to offer support for the indices if self.return_indices: - idx_under = np.nonzero(y == self.min_c_)[0] + idx_under = np.flatnonzero(y == self.min_c_) # Create a k-NN to fit the whole data nn_obj = NearestNeighbors(n_neighbors=self.size_ngh, @@ -189,7 +140,7 @@ def transform(self, X, y): sub_samples_x = X[y == key] # Get the samples associated - idx_sub_sample = np.nonzero(y == key)[0] + idx_sub_sample = np.flatnonzero(y == key) # Find the NN for the current class nnhood_idx = nn_obj.kneighbors(sub_samples_x, @@ -206,7 +157,7 @@ def transform(self, X, y): if key == self.min_c_: # Get the index to exclude idx_to_exclude += nnhood_idx[np.nonzero( - nnhood_label[np.nonzero(nnhood_bool)])].tolist() + nnhood_label[np.flatnonzero(nnhood_bool)])].tolist() else: # Get the index to exclude idx_to_exclude += idx_sub_sample[np.nonzero( @@ -222,19 +173,19 @@ def transform(self, X, y): sel_idx[y == self.min_c_] = 0 # Get the samples from the majority classes - sel_x = np.squeeze(X[np.nonzero(sel_idx), :]) - sel_y = y[np.nonzero(sel_idx)] + sel_x = X[np.flatnonzero(sel_idx), :] + sel_y = y[np.flatnonzero(sel_idx)] # If we need to offer support for the indices selected if self.return_indices: - idx_tmp = np.nonzero(sel_idx)[0] + idx_tmp = np.flatnonzero(sel_idx) idx_under = np.concatenate((idx_under, idx_tmp), axis=0) X_resampled = np.concatenate((X_resampled, sel_x), axis=0) y_resampled = np.concatenate((y_resampled, sel_y), axis=0) - if self.verbose: - print("Under-sampling performed: {}" + str(Counter(y_resampled))) + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled)) # Check if the indices of the samples selected should be returned too if self.return_indices: diff --git a/unbalanced_dataset/under_sampling/one_sided_selection.py b/imblearn/under_sampling/one_sided_selection.py similarity index 55% rename from unbalanced_dataset/under_sampling/one_sided_selection.py rename to imblearn/under_sampling/one_sided_selection.py index 0079e1ec8..5d6ffdc13 100644 --- a/unbalanced_dataset/under_sampling/one_sided_selection.py +++ b/imblearn/under_sampling/one_sided_selection.py @@ -8,26 +8,26 @@ from sklearn.neighbors import KNeighborsClassifier from sklearn.neighbors import NearestNeighbors -from sklearn.utils import check_X_y +from sklearn.utils import check_random_state -from .under_sampler import UnderSampler +from ..base import BaseBinarySampler from .tomek_links import TomekLinks -class OneSidedSelection(UnderSampler): +class OneSidedSelection(BaseBinarySampler): """Class to perform under-sampling based on one-sided selection method. Parameters ---------- return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. + Whether or not to return the indices of the samples randomly + selected from the majority class. - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. size_ngh : int, optional (default=1) Size of the neighbourhood to consider to compute the average @@ -37,22 +37,13 @@ class OneSidedSelection(UnderSampler): Number of samples to extract in order to build the set S. n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. + The number of threads to open if possible. **kwargs : keywords Parameter to use for the Neareast Neighbours object. Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -63,10 +54,32 @@ class OneSidedSelection(UnderSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + Notes ----- The method is based on [1]_. + This method support multiclass. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import OneSidedSelection + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> oss = OneSidedSelection(random_state=42) + >>> X_res, y_res = oss.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 595, 0: 100}) + References ---------- .. [1] M. Kubat, S. Matwin, "Addressing the curse of imbalanced training @@ -74,75 +87,17 @@ class OneSidedSelection(UnderSampler): """ - def __init__(self, return_indices=False, random_state=None, verbose=True, + def __init__(self, return_indices=False, random_state=None, size_ngh=1, n_seeds_S=1, n_jobs=-1, **kwargs): - """Initialisation of OSS object. - - Parameters - ---------- - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - size_ngh : int, optional (default=1) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - n_seeds_S : int, optional (default=1) - Number of samples to extract in order to build the set S. - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - **kwargs : keywords - Parameter to use for the Neareast Neighbours object. - - Returns - ------- - None - - """ - super(OneSidedSelection, self).__init__( - return_indices=return_indices, - random_state=random_state, - verbose=verbose) - + super(OneSidedSelection, self).__init__() + self.return_indices = return_indices + self.random_state = random_state self.size_ngh = size_ngh self.n_seeds_S = n_seeds_S self.n_jobs = n_jobs self.kwargs = kwargs - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(OneSidedSelection, self).fit(X, y) - - return self - - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -166,10 +121,8 @@ def transform(self, X, y): containing the which samples have been selected. """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - super(OneSidedSelection, self).transform(X, y) + random_state = check_random_state(self.random_state) # Start with the minority class X_min = X[y == self.min_c_] @@ -181,7 +134,7 @@ def transform(self, X, y): # If we need to offer support for the indices if self.return_indices: - idx_under = np.nonzero(y == self.min_c_)[0] + idx_under = np.flatnonzero(y == self.min_c_) # Loop over the other classes under picking at random for key in self.stats_c_.keys(): @@ -191,10 +144,10 @@ def transform(self, X, y): continue # Randomly get one sample from the majority class - np.random.seed(self.rs_) # Generate the index to select - idx_maj_sample = np.random.randint(low=0, high=self.stats_c_[key], - size=self.n_seeds_S) + idx_maj_sample = random_state.randint(low=0, + high=self.stats_c_[key], + size=self.n_seeds_S) maj_sample = X[y == key][idx_maj_sample] # Create the set C @@ -208,6 +161,10 @@ def transform(self, X, y): S_x = X[y == key] S_y = y[y == key] + # Remove the seed from S since that it will be added anyway + S_x = np.delete(S_x, idx_maj_sample, axis=0) + S_y = np.delete(S_y, idx_maj_sample, axis=0) + # Create a k-NN classifier knn = KNeighborsClassifier(n_neighbors=self.size_ngh, n_jobs=self.n_jobs, @@ -220,16 +177,28 @@ def transform(self, X, y): pred_S_y = knn.predict(S_x) # Find the misclassified S_y - sel_x = np.squeeze(S_x[np.nonzero(pred_S_y != S_y), :]) - sel_y = S_y[np.nonzero(pred_S_y != S_y)] + sel_x = S_x[np.flatnonzero(pred_S_y != S_y), :] + sel_y = S_y[np.flatnonzero(pred_S_y != S_y)] # If we need to offer support for the indices selected + # We concatenate the misclassified samples with the seed and the + # minority samples if self.return_indices: - idx_tmp = np.nonzero(y == key)[0][np.nonzero(pred_S_y != S_y)] - idx_under = np.concatenate((idx_under, idx_tmp), axis=0) - - X_resampled = np.concatenate((X_resampled, sel_x), axis=0) - y_resampled = np.concatenate((y_resampled, sel_y), axis=0) + idx_tmp = np.flatnonzero(y == key)[ + np.flatnonzero(pred_S_y != S_y)] + idx_under = np.concatenate((idx_under, + idx_maj_sample, + idx_tmp), + axis=0) + + X_resampled = np.concatenate((X_resampled, + maj_sample, + sel_x), + axis=0) + y_resampled = np.concatenate((y_resampled, + [key] * self.n_seeds_S, + sel_y), + axis=0) # Find the nearest neighbour of every point nn = NearestNeighbors(n_neighbors=2, n_jobs=self.n_jobs) @@ -237,14 +206,11 @@ def transform(self, X, y): nns = nn.kneighbors(X_resampled, return_distance=False)[:, 1] # Send the information to is_tomek function to get boolean vector back - if self.verbose: - print("Looking for majority Tomek links...") - links = TomekLinks.is_tomek(y_resampled, nns, self.min_c_, - self.verbose) - - if self.verbose: - print("Under-sampling performed: {}".format(Counter( - y_resampled[np.logical_not(links)]))) + self.logger.debug('Looking for majority Tomek links ...') + links = TomekLinks.is_tomek(y_resampled, nns, self.min_c_) + + self.logger.info('Under-sampling performed: %s', Counter( + y_resampled[np.logical_not(links)])) # Check if the indices of the samples selected should be returned too if self.return_indices: diff --git a/imblearn/under_sampling/random_under_sampler.py b/imblearn/under_sampling/random_under_sampler.py new file mode 100644 index 000000000..09ef5fca3 --- /dev/null +++ b/imblearn/under_sampling/random_under_sampler.py @@ -0,0 +1,158 @@ +"""Class to perform random under-sampling.""" +from __future__ import print_function +from __future__ import division + +import numpy as np + +from collections import Counter + +from sklearn.utils import check_random_state + +from ..base import BaseMulticlassSampler + + +class RandomUnderSampler(BaseMulticlassSampler): + """Class to perform random under-sampling. + + Under-sample the majority class(es) by randomly picking samples + with or without replacement. + + Parameters + ---------- + ratio : str or float, optional (default='auto') + If 'auto', the ratio will be defined automatically to balance + the dataset. Otherwise, the ratio is defined as the number + of samples in the minority class over the the number of samples + in the majority class. + + return_indices : bool, optional (default=False) + Whether or not to return the indices of the samples randomly selected + from the majority class. + + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. + + n_jobs : int, optional (default=-1) + The number of threads to open if possible. + + Attributes + ---------- + min_c_ : str or int + The identifier of the minority class. + + max_c_ : str or int + The identifier of the majority class. + + stats_c_ : dict of str/int : int + A dictionary containing the number of occurences of each class. + + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + This class supports multi-class. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import RandomUnderSampler + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> rus = RandomUnderSampler(random_state=42) + >>> X_res, y_res = rus.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({0: 100, 1: 100}) + + """ + + def __init__(self, ratio='auto', return_indices=False, random_state=None, + replacement=True): + super(RandomUnderSampler, self).__init__(ratio=ratio) + self.return_indices = return_indices + self.random_state = random_state + self.replacement = replacement + + def _sample(self, X, y): + """Resample the dataset. + + Parameters + ---------- + X : ndarray, shape (n_samples, n_features) + Matrix containing the data to be sampled. + + y : ndarray, shape (n_samples, ) + Corresponding label for each sample in X. + + Returns + ------- + X_resampled : ndarray, shape (n_samples_new, n_features) + The array containing the resampled data. + + y_resampled : ndarray, shape (n_samples_new) + The corresponding label of `X_resampled` + + idx_under : ndarray, shape (n_samples, ) + If `return_indices` is `True`, an array will be returned + containing a boolean for each sample to represent whether + that sample was selected or not. + + """ + + random_state = check_random_state(self.random_state) + + # Compute the number of clusters needed + if self.ratio == 'auto': + num_samples = self.stats_c_[self.min_c_] + else: + num_samples = int(self.stats_c_[self.min_c_] / self.ratio) + + # All the minority class samples will be preserved + X_resampled = X[y == self.min_c_] + y_resampled = y[y == self.min_c_] + + # If we need to offer support for the indices + if self.return_indices: + idx_under = np.nonzero(y == self.min_c_)[0] + + # Loop over the other classes under-picking at random + for key in self.stats_c_.keys(): + + # If the minority class is up, skip it + if key == self.min_c_: + continue + + # Pick some elements at random + indx = range(np.count_nonzero(y == key)) + indx = random_state.choice(indx, size=num_samples, + replace=self.replacement) + + # If we need to offer support for the indices selected + if self.return_indices: + idx_tmp = np.nonzero(y == key)[0][indx] + idx_under = np.concatenate((idx_under, idx_tmp), axis=0) + + # Concatenate to the minority class + X_resampled = np.concatenate((X_resampled, X[y == key][indx]), + axis=0) + y_resampled = np.concatenate((y_resampled, y[y == key][indx]), + axis=0) + + self.logger.info('Under-sampling performed: %s', Counter(y_resampled)) + + # Check if the indices of the samples selected should be returned as + # well + if self.return_indices: + # Return the indices of interest + return X_resampled, y_resampled, idx_under + else: + return X_resampled, y_resampled diff --git a/.nojekyll b/imblearn/under_sampling/tests/__init__.py similarity index 100% rename from .nojekyll rename to imblearn/under_sampling/tests/__init__.py diff --git a/imblearn/under_sampling/tests/test_allknn.py b/imblearn/under_sampling/tests/test_allknn.py new file mode 100644 index 000000000..4c8ab9190 --- /dev/null +++ b/imblearn/under_sampling/tests/test_allknn.py @@ -0,0 +1,264 @@ +"""Test the module repeated edited nearest neighbour.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import AllKNN + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[-0.12840393, 0.66446571], + [1.32319756, -0.13181616], + [0.04296502, -0.37981873], + [0.83631853, 0.18569783], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [-0.53171468, -0.53735182], + [1.3381556, 0.35956356], + [-0.35946678, 0.72510189], + [1.32326943, 0.28393874], + [2.94290565, -0.13986434], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [-0.88864036, -0.33782387], + [-1.10146139, 0.91782682], + [-0.7969716, -0.50493969], + [0.73489726, 0.43915195], + [0.2096964, -0.61814058], + [-0.28479268, 0.70459548], + [1.84864913, 0.14729596], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.57356906, 0.30390519], + [1.0304995, -0.16955962], + [1.67314371, 0.19231498], + [0.98382284, 0.37184502], + [0.48921682, -1.38504507], + [-0.46226554, -0.50481004], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172], + [0.69804044, 0.44810796], + [-0.5506368, -0.42072426], + [-0.34474418, 0.21969797]]) +Y = np.array([1, 2, 2, 2, 1, 1, 0, 2, 1, 1, 1, 2, 2, 0, 1, 2, 1, 2, 1, 1, 2, + 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 0, 2, 2, 2, 2, 1, 2, 0]) + + +def test_allknn_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(AllKNN) + + +def test_allknn_init(): + """Test the initialisation of the object""" + + # Define a ratio + allknn = AllKNN(random_state=RND_SEED) + + assert_equal(allknn.size_ngh, 3) + assert_equal(allknn.kind_sel, 'all') + assert_equal(allknn.n_jobs, -1) + assert_equal(allknn.random_state, RND_SEED) + + +def test_allknn_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + allknn = AllKNN(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, allknn.fit, X, y_single_class) + + +def test_allknn_fit(): + """Test the fitting method""" + + # Create the object + allknn = AllKNN(random_state=RND_SEED) + # Fit the data + allknn.fit(X, Y) + + # Check if the data information have been computed + assert_equal(allknn.min_c_, 0) + assert_equal(allknn.maj_c_, 2) + assert_equal(allknn.stats_c_[0], 4) + assert_equal(allknn.stats_c_[1], 16) + assert_equal(allknn.stats_c_[2], 20) + +def test_allknn_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + allknn = AllKNN(random_state=RND_SEED) + assert_raises(RuntimeError, allknn.sample, X, Y) + + +def test_allknn_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + allknn = AllKNN(random_state=RND_SEED) + X_resampled, y_resampled = allknn.fit_sample(X, Y) + + X_gt = np.array([[-0.53171468, -0.53735182], + [-0.88864036, -0.33782387], + [-0.46226554, -0.50481004], + [-0.34474418, 0.21969797], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [-1.10146139, 0.91782682], + [0.73489726, 0.43915195], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.98382284, 0.37184502], + [0.69804044, 0.44810796], + [0.04296502, -0.37981873], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [0.2096964, -0.61814058], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.0304995, -0.16955962], + [0.48921682, -1.38504507], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172]]) + y_gt = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_almost_equal(y_resampled, y_gt) + + +def test_allknn_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + allknn = AllKNN(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = allknn.fit_sample(X, Y) + + + X_gt = np.array([[-0.53171468, -0.53735182], + [-0.88864036, -0.33782387], + [-0.46226554, -0.50481004], + [-0.34474418, 0.21969797], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [-1.10146139, 0.91782682], + [0.73489726, 0.43915195], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.98382284, 0.37184502], + [0.69804044, 0.44810796], + [0.04296502, -0.37981873], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [0.2096964, -0.61814058], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.0304995, -0.16955962], + [0.48921682, -1.38504507], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172]]) + y_gt = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2]) + idx_gt = np.array([6, 13, 32, 39, 4, 5, 14, 16, 22, 23, 24, 30, 37, 2, + 11, 12, 17, 20, 21, 25, 26, 28, 31, 33, 34, 35, 36]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_almost_equal(y_resampled, y_gt) + assert_array_almost_equal(idx_under, idx_gt) + + +def test_allknn_fit_sample_mode(): + """Test the fit sample routine using the mode as selection""" + + # Resample the data + allknn = AllKNN(random_state=RND_SEED, kind_sel='mode') + X_resampled, y_resampled = allknn.fit_sample(X, Y) + + X_gt = np.array([[-0.53171468, -0.53735182], + [-0.88864036, -0.33782387], + [-0.46226554, -0.50481004], + [-0.34474418, 0.21969797], + [-0.12840393, 0.66446571], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [-0.35946678, 0.72510189], + [-1.10146139, 0.91782682], + [0.73489726, 0.43915195], + [-0.28479268, 0.70459548], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.98382284, 0.37184502], + [0.69804044, 0.44810796], + [1.32319756, -0.13181616], + [0.04296502, -0.37981873], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [0.2096964, -0.61814058], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.0304995, -0.16955962], + [0.48921682, -1.38504507], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172]]) + y_gt = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_allknn_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + allknn = AllKNN(random_state=RND_SEED) + allknn.fit(X, Y) + assert_raises(RuntimeError, allknn.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 40) + ann = AllKNN(random_state=RND_SEED) + assert_warns(UserWarning, ann.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_cluster_centroids.py b/imblearn/under_sampling/tests/test_cluster_centroids.py new file mode 100644 index 000000000..f5d4295b0 --- /dev/null +++ b/imblearn/under_sampling/tests/test_cluster_centroids.py @@ -0,0 +1,229 @@ +"""Test the module cluster centroids.""" +from __future__ import print_function + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_array_almost_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import ClusterCentroids + +# Generate a global dataset to use +RND_SEED = 0 +# Data generated for the toy example +X = np.array([[0.04352327, -0.20515826], + [0.92923648, 0.76103773], + [0.20792588, 1.49407907], + [0.47104475, 0.44386323], + [0.22950086, 0.33367433], + [0.15490546, 0.3130677], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.13347175, 0.12167502], + [0.094035, -2.55298982]]) +Y = np.array([1, 0, 1, 0, 1, 1, 1, 1, 0, 1]) + + +def test_cc_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(ClusterCentroids) + + +def test_cc_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, cc.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, cc.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, cc.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, cc.fit, X, Y) + + +def test_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 1. + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + + assert_equal(cc.ratio, ratio) + + +def test_cc_fit_single_class(): + """Test either if an error when there is a single class""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, cc.fit, X, y_single_class) + + +def test_cc_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, cc.fit, X, Y) + + +def test_cc_fit(): + """Test the fitting method""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + # Fit the data + cc.fit(X, Y) + + # Check if the data information have been computed + assert_equal(cc.min_c_, 0) + assert_equal(cc.maj_c_, 1) + assert_equal(cc.stats_c_[0], 3) + assert_equal(cc.stats_c_[1], 7) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + cc.fit(X, Y) + assert_raises(RuntimeError, cc.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + assert_raises(RuntimeError, cc.sample, X, Y) + + +def test_fit_sample_auto(): + """Test fit and sample routines with auto ratio""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + + # Fit and sample + X_resampled, y_resampled = cc.fit_sample(X, Y) + + X_gt = np.array([[0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502], + [0.06738818, -0.529627], + [0.17901516, 0.69860992], + [0.094035, -2.55298982]]) + y_gt = np.array([0, 0, 0, 1, 1, 1]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_fit_sample_half(): + """Test fit and sample routines with ratio of .5""" + + # Define the parameter for the under-sampling + ratio = .5 + + # Create the object + cc = ClusterCentroids(ratio=ratio, random_state=RND_SEED) + + # Fit and sample + X_resampled, y_resampled = cc.fit_sample(X, Y) + + X_gt = np.array([[0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502], + [0.09125309, -0.85409574], + [0.19220316, 0.32337101], + [0.094035, -2.55298982], + [0.20792588, 1.49407907], + [0.04352327, -0.20515826], + [0.12372842, 0.6536186]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 1, 1, 1]) + assert_array_almost_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + cc = ClusterCentroids(random_state=RND_SEED) + cc.fit(X, Y) + assert_raises(RuntimeError, cc.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 10) + cc = ClusterCentroids(random_state=RND_SEED) + assert_warns(UserWarning, cc.fit, X, y) + + +def test_multiclass_fit_sample(): + """Test fit sample method with multiclass target""" + + # Make y to be multiclass + y = Y.copy() + y[5] = 2 + y[6] = 2 + + # Resample the data + cc = ClusterCentroids(random_state=RND_SEED) + X_resampled, y_resampled = cc.fit_sample(X, y) + + # Check the size of y + count_y_res = Counter(y_resampled) + assert_equal(count_y_res[0], 2) + assert_equal(count_y_res[1], 2) + assert_equal(count_y_res[2], 2) diff --git a/imblearn/under_sampling/tests/test_condensed_nearest_neighbour.py b/imblearn/under_sampling/tests/test_condensed_nearest_neighbour.py new file mode 100644 index 000000000..14a5fdf96 --- /dev/null +++ b/imblearn/under_sampling/tests/test_condensed_nearest_neighbour.py @@ -0,0 +1,159 @@ +"""Test the module condensed nearest neighbour.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import CondensedNearestNeighbour + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[2.59928271, 0.93323465], + [0.25738379, 0.95564169], + [1.42772181, 0.526027], + [1.92365863, 0.82718767], + [-0.10903849, -0.12085181], + [-0.284881, -0.62730973], + [0.57062627, 1.19528323], + [0.03394306, 0.03986753], + [0.78318102, 2.59153329], + [0.35831463, 1.33483198], + [-0.14313184, -1.0412815], + [0.01936241, 0.17799828], + [-1.25020462, -0.40402054], + [-0.09816301, -0.74662486], + [-0.01252787, 0.34102657], + [0.52726792, -0.38735648], + [0.2821046, -0.07862747], + [0.05230552, 0.09043907], + [0.15198585, 0.12512646], + [0.70524765, 0.39816382]]) +Y = np.array([1, 2, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 1, 2, 2, 2, 2, 1, 2, 1]) + +def test_cnn_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(CondensedNearestNeighbour) + + +def test_cnn_init(): + """Test the initialisation of the object""" + + # Define a ratio + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + + assert_equal(cnn.size_ngh, 1) + assert_equal(cnn.n_seeds_S, 1) + assert_equal(cnn.n_jobs, -1) + + +def test_cnn_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, cnn.fit, X, y_single_class) + + +def test_cnn_fit(): + """Test the fitting method""" + + # Create the object + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + # Fit the data + cnn.fit(X, Y) + + # Check if the data information have been computed + assert_equal(cnn.min_c_, 0) + assert_equal(cnn.maj_c_, 2) + assert_equal(cnn.stats_c_[0], 2) + assert_equal(cnn.stats_c_[1], 6) + assert_equal(cnn.stats_c_[2], 12) + + +def test_cnn_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + assert_raises(RuntimeError, cnn.sample, X, Y) + + +def test_cnn_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + X_resampled, y_resampled = cnn.fit_sample(X, Y) + + X_gt = np.array([[-0.10903849, -0.12085181], + [0.01936241, 0.17799828], + [0.05230552, 0.09043907], + [-1.25020462, -0.40402054], + [0.70524765, 0.39816382], + [0.35831463, 1.33483198], + [-0.284881, -0.62730973], + [0.03394306, 0.03986753], + [-0.01252787, 0.34102657], + [0.15198585, 0.12512646]]) + y_gt = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_cnn_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + cnn = CondensedNearestNeighbour(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = cnn.fit_sample(X, Y) + + X_gt = np.array([[-0.10903849, -0.12085181], + [0.01936241, 0.17799828], + [0.05230552, 0.09043907], + [-1.25020462, -0.40402054], + [0.70524765, 0.39816382], + [0.35831463, 1.33483198], + [-0.284881, -0.62730973], + [0.03394306, 0.03986753], + [-0.01252787, 0.34102657], + [0.15198585, 0.12512646]]) + y_gt = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2]) + idx_gt = np.array([4, 11, 17, 12, 19, 9, 5, 7, 14, 18]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_cnn_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + cnn.fit(X, Y) + assert_raises(RuntimeError, cnn.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 20) + cnn = CondensedNearestNeighbour(random_state=RND_SEED) + assert_warns(UserWarning, cnn.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_edited_nearest_neighbours.py b/imblearn/under_sampling/tests/test_edited_nearest_neighbours.py new file mode 100644 index 000000000..5d8720294 --- /dev/null +++ b/imblearn/under_sampling/tests/test_edited_nearest_neighbours.py @@ -0,0 +1,180 @@ +"""Test the module edited nearest neighbour.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import EditedNearestNeighbours + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[2.59928271, 0.93323465], + [0.25738379, 0.95564169], + [1.42772181, 0.526027], + [1.92365863, 0.82718767], + [-0.10903849, -0.12085181], + [-0.284881, -0.62730973], + [0.57062627, 1.19528323], + [0.03394306, 0.03986753], + [0.78318102, 2.59153329], + [0.35831463, 1.33483198], + [-0.14313184, -1.0412815], + [0.01936241, 0.17799828], + [-1.25020462, -0.40402054], + [-0.09816301, -0.74662486], + [-0.01252787, 0.34102657], + [0.52726792, -0.38735648], + [0.2821046, -0.07862747], + [0.05230552, 0.09043907], + [0.15198585, 0.12512646], + [0.70524765, 0.39816382]]) +Y = np.array([1, 2, 1, 1, 0, 2, 2, 2, 2, 2, 2, 0, 1, 2, 2, 2, 2, 1, 2, 1]) + +def test_enn_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(EditedNearestNeighbours) + + +def test_enn_init(): + """Test the initialisation of the object""" + + # Define a ratio + enn = EditedNearestNeighbours(random_state=RND_SEED) + + assert_equal(enn.size_ngh, 3) + assert_equal(enn.kind_sel, 'all') + assert_equal(enn.n_jobs, -1) + assert_equal(enn.random_state, RND_SEED) + + +def test_enn_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + enn = EditedNearestNeighbours(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, enn.fit, X, y_single_class) + + +def test_enn_fit(): + """Test the fitting method""" + + # Create the object + enn = EditedNearestNeighbours(random_state=RND_SEED) + # Fit the data + enn.fit(X, Y) + + # Check if the data information have been computed + assert_equal(enn.min_c_, 0) + assert_equal(enn.maj_c_, 2) + assert_equal(enn.stats_c_[0], 2) + assert_equal(enn.stats_c_[1], 6) + assert_equal(enn.stats_c_[2], 12) + + +def test_enn_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + enn = EditedNearestNeighbours(random_state=RND_SEED) + assert_raises(RuntimeError, enn.sample, X, Y) + + +def test_enn_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + enn = EditedNearestNeighbours(random_state=RND_SEED) + X_resampled, y_resampled = enn.fit_sample(X, Y) + + X_gt = np.array([[-0.10903849, -0.12085181], + [0.01936241, 0.17799828], + [2.59928271, 0.93323465], + [1.92365863, 0.82718767], + [0.25738379, 0.95564169], + [0.78318102, 2.59153329], + [0.52726792, -0.38735648]]) + y_gt = np.array([0, 0, 1, 1, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_enn_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + enn = EditedNearestNeighbours(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = enn.fit_sample(X, Y) + + X_gt = np.array([[-0.10903849, -0.12085181], + [0.01936241, 0.17799828], + [2.59928271, 0.93323465], + [1.92365863, 0.82718767], + [0.25738379, 0.95564169], + [0.78318102, 2.59153329], + [0.52726792, -0.38735648]]) + y_gt = np.array([0, 0, 1, 1, 2, 2, 2]) + idx_gt = np.array([4, 11, 0, 3, 1, 8, 15]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_enn_fit_sample_mode(): + """Test the fit sample routine using the mode as selection""" + + # Resample the data + enn = EditedNearestNeighbours(random_state=RND_SEED, kind_sel='mode') + X_resampled, y_resampled = enn.fit_sample(X, Y) + + X_gt = np.array([[-0.10903849, -0.12085181], + [0.01936241, 0.17799828], + [2.59928271, 0.93323465], + [1.42772181, 0.526027], + [1.92365863, 0.82718767], + [0.25738379, 0.95564169], + [-0.284881, -0.62730973], + [0.57062627, 1.19528323], + [0.78318102, 2.59153329], + [0.35831463, 1.33483198], + [-0.14313184, -1.0412815], + [-0.09816301, -0.74662486], + [0.52726792, -0.38735648], + [0.2821046, -0.07862747]]) + y_gt = np.array([0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_enn_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + enn = EditedNearestNeighbours(random_state=RND_SEED) + enn.fit(X, Y) + assert_raises(RuntimeError, enn.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 20) + enn = EditedNearestNeighbours(random_state=RND_SEED) + assert_warns(UserWarning, enn.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_instance_hardness_threshold.py b/imblearn/under_sampling/tests/test_instance_hardness_threshold.py new file mode 100644 index 000000000..216b6f8a4 --- /dev/null +++ b/imblearn/under_sampling/tests/test_instance_hardness_threshold.py @@ -0,0 +1,392 @@ +"""Test the module .""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.under_sampling import InstanceHardnessThreshold + + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.03852113, 0.40910479], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.30126957, -0.66268378], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [0.20246714, -0.34727125], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) +Y = np.array([0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0]) +ESTIMATOR = 'gradient-boosting' + + +def test_iht_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(InstanceHardnessThreshold) + + +def test_iht_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + iht = InstanceHardnessThreshold(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, iht.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + iht = InstanceHardnessThreshold(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, iht.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + iht = InstanceHardnessThreshold(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, iht.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + iht = InstanceHardnessThreshold(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, iht.fit, X, Y) + + +def test_iht_wrong_estimator(): + """Test either if an error is raised when the estimator is unknown""" + + # Resample the data + ratio = 0.7 + est = 'rnd' + iht = InstanceHardnessThreshold(estimator=est, ratio=ratio, + random_state=RND_SEED) + assert_raises(NotImplementedError, iht.fit_sample, X, Y) + + +def test_iht_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 'auto' + iht = InstanceHardnessThreshold(ESTIMATOR, ratio=ratio, + random_state=RND_SEED) + + assert_equal(iht.ratio, ratio) + assert_equal(iht.random_state, RND_SEED) + + +def test_iht_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + iht = InstanceHardnessThreshold(ESTIMATOR, random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, iht.fit, X, y_single_class) + + +def test_iht_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + iht = InstanceHardnessThreshold(ESTIMATOR, ratio=ratio, + random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, iht.fit, X, Y) + + +def test_iht_fit(): + """Test the fitting method""" + + # Create the object + iht = InstanceHardnessThreshold(ESTIMATOR, random_state=RND_SEED) + # Fit the data + iht.fit(X, Y) + + # Check if the data information have been computed + assert_equal(iht.min_c_, 0) + assert_equal(iht.maj_c_, 1) + assert_equal(iht.stats_c_[0], 6) + assert_equal(iht.stats_c_[1], 9) + + +def test_iht_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + iht = InstanceHardnessThreshold(ESTIMATOR, random_state=RND_SEED) + assert_raises(RuntimeError, iht.sample, X, Y) + + +def test_iht_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + iht = InstanceHardnessThreshold(ESTIMATOR, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + iht = InstanceHardnessThreshold(ESTIMATOR, return_indices=True, + random_state=RND_SEED) + X_resampled, y_resampled, idx_under = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + idx_gt = np.array([0, 1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 14]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_iht_fit_sample_half(): + """Test the fit sample routine with a 0.5 ratio""" + + # Resample the data + ratio = 0.7 + iht = InstanceHardnessThreshold(ESTIMATOR, ratio=ratio, + random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.03852113, 0.40910479], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.30126957, -0.66268378], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_knn(): + """Test the fit sample routine with knn""" + + # Resample the data + est = 'knn' + iht = InstanceHardnessThreshold(est, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.30126957, -0.66268378], + [-0.65571327, 0.42412021], + [0.20246714, -0.34727125], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_decision_tree(): + """Test the fit sample routine with decision-tree""" + + # Resample the data + est = 'decision-tree' + iht = InstanceHardnessThreshold(est, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_random_forest(): + """Test the fit sample routine with random forest""" + + # Resample the data + est = 'random-forest' + iht = InstanceHardnessThreshold(est, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.03852113, 0.40910479], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_adaboost(): + """Test the fit sample routine with adaboost""" + + # Resample the data + est = 'adaboost' + iht = InstanceHardnessThreshold(est, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_gradient_boosting(): + """Test the fit sample routine with gradient boosting""" + + # Resample the data + est = 'gradient-boosting' + iht = InstanceHardnessThreshold(est, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_fit_sample_linear_svm(): + """Test the fit sample routine with linear SVM""" + + # Resample the data + est = 'linear-svm' + iht = InstanceHardnessThreshold(est, random_state=RND_SEED) + X_resampled, y_resampled = iht.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.03852113, 0.40910479], + [-0.43877303, 1.07366684], + [-0.18430329, 0.52328473], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) + y_gt = np.array([0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_iht_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + iht = InstanceHardnessThreshold(random_state=RND_SEED) + iht.fit(X, Y) + assert_raises(RuntimeError, iht.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 15) + iht = InstanceHardnessThreshold(random_state=RND_SEED) + assert_warns(UserWarning, iht.fit, X, y) + + # multiclass case + y = np.array([0] * 10 + [1] * 3 + [2] *2) + iht = InstanceHardnessThreshold(random_state=RND_SEED) + assert_warns(UserWarning, iht.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_nearmiss_1.py b/imblearn/under_sampling/tests/test_nearmiss_1.py new file mode 100644 index 000000000..a2c742fec --- /dev/null +++ b/imblearn/under_sampling/tests/test_nearmiss_1.py @@ -0,0 +1,254 @@ +"""Test the module nearmiss.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import NearMiss + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[1.17737838, -0.2002118], + [0.4960075, 0.86130762], + [-0.05903827, 0.10947647], + [0.91464286, 1.61369212], + [-0.54619583, 1.73009918], + [-0.60413357, 0.24628718], + [0.45713638, 1.31069295], + [-0.04032409, 3.01186964], + [0.03142011, 0.12323596], + [0.50701028, -0.17636928], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [0.99272351, -0.11631728], + [-1.95581933, 0.69609604], + [1.15157493, -1.2981518]]) +Y = np.array([1, 2, 1, 0, 2, 1, 2, 2, 1, 2, 0, 0, 2, 1, 2]) +VERSION_NEARMISS = 1 + + +def test_nearmiss_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(NearMiss) + + +def test_nearmiss_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + +def test_nearmiss_wrong_version(): + """Test either if an error is raised when the version is unknown.""" + + version = 1000 + nm1 = NearMiss(version=version, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit_sample, X, Y) + + +def test_nearmiss_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 1. + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + assert_equal(nm1.version, VERSION_NEARMISS) + assert_equal(nm1.size_ngh, 3) + assert_equal(nm1.ratio, ratio) + assert_equal(nm1.random_state, RND_SEED) + + +def test_nearmiss_fit_single_class(): + """Test either if an error when there is a single class""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, nm1.fit, X, y_single_class) + + +def test_nm_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + nm = NearMiss(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, nm.fit, X, Y) + + +def test_nm1_fit(): + """Test the fitting method""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + # Fit the data + nm1.fit(X, Y) + + # Check if the data information have been computed + assert_equal(nm1.min_c_, 0) + assert_equal(nm1.maj_c_, 2) + assert_equal(nm1.stats_c_[0], 3) + assert_equal(nm1.stats_c_[1], 5) + assert_equal(nm1.stats_c_[2], 7) + + +def test_nm1_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + assert_raises(RuntimeError, nm1.sample, X, Y) + + +def test_nm1_fit_sample_auto(): + """Test fit and sample routines with auto ratio""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + # Fit and sample + X_resampled, y_resampled = nm1.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [-0.05903827, 0.10947647], + [0.03142011, 0.12323596], + [-0.60413357, 0.24628718], + [0.50701028, -0.17636928], + [0.4960075, 0.86130762], + [0.45713638, 1.31069295]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_nm1_fit_sample_auto_indices(): + """Test fit and sample routines with auto ratio and indices support""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS, return_indices=True) + + # Fit and sample + X_resampled, y_resampled, idx_under = nm1.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [-0.05903827, 0.10947647], + [0.03142011, 0.12323596], + [-0.60413357, 0.24628718], + [0.50701028, -0.17636928], + [0.4960075, 0.86130762], + [0.45713638, 1.31069295]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + idx_gt = np.array([3, 10, 11, 2, 8, 5, 9, 1, 6]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_nm1_fit_sample_half(): + """Test fit and sample routines with .5 ratio""" + + # Define the parameter for the under-sampling + ratio = .7 + + # Create the object + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + # Fit and sample + X_resampled, y_resampled = nm1.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [-0.05903827, 0.10947647], + [0.03142011, 0.12323596], + [-0.60413357, 0.24628718], + [1.17737838, -0.2002118], + [0.50701028, -0.17636928], + [0.4960075, 0.86130762], + [0.45713638, 1.31069295], + [0.99272351, -0.11631728]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_nm1_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + nm1 = NearMiss(random_state=RND_SEED) + nm1.fit(X, Y) + assert_raises(RuntimeError, nm1.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 15) + nm1 = NearMiss(random_state=RND_SEED, version=VERSION_NEARMISS) + assert_warns(UserWarning, nm1.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_nearmiss_2.py b/imblearn/under_sampling/tests/test_nearmiss_2.py new file mode 100644 index 000000000..452735e0b --- /dev/null +++ b/imblearn/under_sampling/tests/test_nearmiss_2.py @@ -0,0 +1,254 @@ +"""Test the module nearmiss.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import NearMiss + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[1.17737838, -0.2002118], + [0.4960075, 0.86130762], + [-0.05903827, 0.10947647], + [0.91464286, 1.61369212], + [-0.54619583, 1.73009918], + [-0.60413357, 0.24628718], + [0.45713638, 1.31069295], + [-0.04032409, 3.01186964], + [0.03142011, 0.12323596], + [0.50701028, -0.17636928], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [0.99272351, -0.11631728], + [-1.95581933, 0.69609604], + [1.15157493, -1.2981518]]) +Y = np.array([1, 2, 1, 0, 2, 1, 2, 2, 1, 2, 0, 0, 2, 1, 2]) +VERSION_NEARMISS = 2 + + +def test_nearmiss_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(NearMiss) + + +def test_nearmiss_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + +def test_nearmiss_wrong_version(): + """Test either if an error is raised when the version is unknown.""" + + version = 1000 + nm2 = NearMiss(version=version, random_state=RND_SEED) + assert_raises(ValueError, nm2.fit_sample, X, Y) + + +def test_nearmiss_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 1. + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + assert_equal(nm2.version, VERSION_NEARMISS) + assert_equal(nm2.size_ngh, 3) + assert_equal(nm2.ratio, ratio) + assert_equal(nm2.random_state, RND_SEED) + + +def test_nearmiss_fit_single_class(): + """Test either if an error when there is a single class""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, nm2.fit, X, y_single_class) + + +def test_nm_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + nm = NearMiss(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, nm.fit, X, Y) + + +def test_nm2_fit(): + """Test the fitting method""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + # Fit the data + nm2.fit(X, Y) + + # Check if the data information have been computed + assert_equal(nm2.min_c_, 0) + assert_equal(nm2.maj_c_, 2) + assert_equal(nm2.stats_c_[0], 3) + assert_equal(nm2.stats_c_[1], 5) + assert_equal(nm2.stats_c_[2], 7) + + +def test_nm2_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + assert_raises(RuntimeError, nm2.sample, X, Y) + + +def test_nm2_fit_sample_auto(): + """Test fit and sample routines with auto ratio""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + # Fit and sample + X_resampled, y_resampled = nm2.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [-0.05903827, 0.10947647], + [0.03142011, 0.12323596], + [-0.60413357, 0.24628718], + [0.50701028, -0.17636928], + [0.4960075, 0.86130762], + [0.45713638, 1.31069295]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_nm2_fit_sample_auto_indices(): + """Test fit and sample routines with auto ratio and indices support""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS, return_indices=True) + + # Fit and sample + X_resampled, y_resampled, idx_under = nm2.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [-0.05903827, 0.10947647], + [0.03142011, 0.12323596], + [-0.60413357, 0.24628718], + [0.50701028, -0.17636928], + [0.4960075, 0.86130762], + [0.45713638, 1.31069295]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + idx_gt = np.array([3, 10, 11, 2, 8, 5, 9, 1, 6]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_nm2_fit_sample_half(): + """Test fit and sample routines with .5 ratio""" + + # Define the parameter for the under-sampling + ratio = .7 + + # Create the object + nm2 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + # Fit and sample + X_resampled, y_resampled = nm2.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [-0.05903827, 0.10947647], + [0.03142011, 0.12323596], + [-0.60413357, 0.24628718], + [1.17737838, -0.2002118], + [0.50701028, -0.17636928], + [0.4960075, 0.86130762], + [0.45713638, 1.31069295], + [0.99272351, -0.11631728]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_nm2_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + nm2 = NearMiss(random_state=RND_SEED, version=VERSION_NEARMISS) + nm2.fit(X, Y) + assert_raises(RuntimeError, nm2.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 15) + nm = NearMiss(random_state=RND_SEED, version=VERSION_NEARMISS) + assert_warns(UserWarning, nm.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_nearmiss_3.py b/imblearn/under_sampling/tests/test_nearmiss_3.py new file mode 100644 index 000000000..3a8509e6e --- /dev/null +++ b/imblearn/under_sampling/tests/test_nearmiss_3.py @@ -0,0 +1,253 @@ +"""Test the module nearmiss.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import NearMiss + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[1.17737838, -0.2002118], + [0.4960075, 0.86130762], + [-0.05903827, 0.10947647], + [0.91464286, 1.61369212], + [-0.54619583, 1.73009918], + [-0.60413357, 0.24628718], + [0.45713638, 1.31069295], + [-0.04032409, 3.01186964], + [0.03142011, 0.12323596], + [0.50701028, -0.17636928], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [0.99272351, -0.11631728], + [-1.95581933, 0.69609604], + [1.15157493, -1.2981518]]) +Y = np.array([1, 2, 1, 0, 2, 1, 2, 2, 1, 2, 0, 0, 2, 1, 2]) +VERSION_NEARMISS = 3 + + +def test_nearmiss_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(NearMiss) + + +def test_nearmiss_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + nm1 = NearMiss(ratio=ratio, random_state=RND_SEED) + assert_raises(ValueError, nm1.fit, X, Y) + + +def test_nearmiss_wrong_version(): + """Test either if an error is raised when the version is unknown.""" + + version = 1000 + nm3 = NearMiss(version=version, random_state=RND_SEED) + assert_raises(ValueError, nm3.fit_sample, X, Y) + + +def test_nearmiss_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 1. + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + assert_equal(nm3.version, VERSION_NEARMISS) + assert_equal(nm3.size_ngh, 3) + assert_equal(nm3.ratio, ratio) + assert_equal(nm3.random_state, RND_SEED) + + +def test_nearmiss_fit_single_class(): + """Test either if an error when there is a single class""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, nm3.fit, X, y_single_class) + + +def test_nm_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + nm = NearMiss(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, nm.fit, X, Y) + + +def test_nm3_fit(): + """Test the fitting method""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + # Fit the data + nm3.fit(X, Y) + + # Check if the data information have been computed + assert_equal(nm3.min_c_, 0) + assert_equal(nm3.maj_c_, 2) + assert_equal(nm3.stats_c_[0], 3) + assert_equal(nm3.stats_c_[1], 5) + assert_equal(nm3.stats_c_[2], 7) + +def test_nm3_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + assert_raises(RuntimeError, nm3.sample, X, Y) + + +def test_nm3_fit_sample_auto(): + """Test fit and sample routines with auto ratio""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + # Fit and sample + X_resampled, y_resampled = nm3.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [1.17737838, -0.2002118], + [-0.60413357, 0.24628718], + [0.03142011, 0.12323596], + [1.15157493, -1.2981518], + [-0.54619583, 1.73009918], + [0.99272351, -0.11631728]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_nm3_fit_sample_auto_indices(): + """Test fit and sample routines with auto ratio and indices support""" + + # Define the parameter for the under-sampling + ratio = 'auto' + + # Create the object + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS, return_indices=True) + + # Fit and sample + X_resampled, y_resampled, idx_under = nm3.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [1.17737838, -0.2002118], + [-0.60413357, 0.24628718], + [0.03142011, 0.12323596], + [1.15157493, -1.2981518], + [-0.54619583, 1.73009918], + [0.99272351, -0.11631728]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2]) + idx_gt = np.array([3, 10, 11, 0, 2, 3, 5, 1, 4]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_nm3_fit_sample_half(): + """Test fit and sample routines with .5 ratio""" + + # Define the parameter for the under-sampling + ratio = .7 + + # Create the object + nm3 = NearMiss(ratio=ratio, random_state=RND_SEED, + version=VERSION_NEARMISS) + + # Fit and sample + X_resampled, y_resampled = nm3.fit_sample(X, Y) + + X_gt = np.array([[0.91464286, 1.61369212], + [-0.80809175, -1.09917302], + [-0.20497017, -0.26630228], + [1.17737838, -0.2002118], + [-0.60413357, 0.24628718], + [0.03142011, 0.12323596], + [-0.05903827, 0.10947647], + [1.15157493, -1.2981518], + [-0.54619583, 1.73009918], + [0.99272351, -0.11631728], + [0.45713638, 1.31069295]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_nm3_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + nm3 = NearMiss(random_state=RND_SEED, version=VERSION_NEARMISS) + nm3.fit(X, Y) + assert_raises(RuntimeError, nm3.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 15) + nm = NearMiss(random_state=RND_SEED, version=VERSION_NEARMISS) + assert_warns(UserWarning, nm.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_neighbourhood_cleaning_rule.py b/imblearn/under_sampling/tests/test_neighbourhood_cleaning_rule.py new file mode 100644 index 000000000..b29a55b57 --- /dev/null +++ b/imblearn/under_sampling/tests/test_neighbourhood_cleaning_rule.py @@ -0,0 +1,149 @@ +"""Test the module neighbourhood cleaning rule.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import NeighbourhoodCleaningRule + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[1.57737838, 0.1997882], + [0.8960075, 0.46130762], + [0.34096173, 0.50947647], + [-0.91735824, 0.93110278], + [-0.14619583, 1.33009918], + [-0.20413357, 0.64628718], + [0.85713638, 0.91069295], + [0.35967591, 2.61186964], + [0.43142011, 0.52323596], + [0.90701028, -0.57636928], + [-1.20809175, -1.49917302], + [-0.60497017, -0.66630228], + [1.39272351, -0.51631728], + [-1.55581933, 1.09609604], + [1.55157493, -1.6981518]]) +Y = np.array([1, 2, 1, 1, 2, 1, 2, 2, 1, 2, 0, 0, 2, 1, 2]) + +def test_ncr_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(NeighbourhoodCleaningRule) + + +def test_ncr_init(): + """Test the initialisation of the object""" + + # Define a ratio + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + + assert_equal(ncr.size_ngh, 3) + assert_equal(ncr.n_jobs, -1) + assert_equal(ncr.random_state, RND_SEED) + + +def test_ncr_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, ncr.fit, X, y_single_class) + + +def test_ncr_fit(): + """Test the fitting method""" + + # Create the object + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + # Fit the data + ncr.fit(X, Y) + + # Check if the data information have been computed + assert_equal(ncr.min_c_, 0) + assert_equal(ncr.maj_c_, 2) + assert_equal(ncr.stats_c_[0], 2) + assert_equal(ncr.stats_c_[1], 6) + assert_equal(ncr.stats_c_[2], 7) + + +def test_ncr_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + assert_raises(RuntimeError, ncr.sample, X, Y) + + +def test_ncr_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + X_resampled, y_resampled = ncr.fit_sample(X, Y) + + X_gt = np.array([[-1.20809175, -1.49917302], + [-0.60497017, -0.66630228], + [-0.91735824, 0.93110278], + [-0.20413357, 0.64628718], + [0.35967591, 2.61186964], + [-1.55581933, 1.09609604], + [1.55157493, -1.6981518]]) + y_gt = np.array([0, 0, 1, 1, 2, 1, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_ncr_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + ncr = NeighbourhoodCleaningRule(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = ncr.fit_sample(X, Y) + + + X_gt = np.array([[-1.20809175, -1.49917302], + [-0.60497017, -0.66630228], + [-0.91735824, 0.93110278], + [-0.20413357, 0.64628718], + [0.35967591, 2.61186964], + [-1.55581933, 1.09609604], + [1.55157493, -1.6981518]]) + y_gt = np.array([0, 0, 1, 1, 2, 1, 2]) + idx_gt = np.array([10, 11, 3, 5, 7, 13, 14]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_ncr_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + ncr.fit(X, Y) + assert_raises(RuntimeError, ncr.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 15) + ncr = NeighbourhoodCleaningRule(random_state=RND_SEED) + assert_warns(UserWarning, ncr.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_one_sided_selection.py b/imblearn/under_sampling/tests/test_one_sided_selection.py new file mode 100644 index 000000000..307dd460b --- /dev/null +++ b/imblearn/under_sampling/tests/test_one_sided_selection.py @@ -0,0 +1,164 @@ +"""Test the module one-sided selection.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import OneSidedSelection + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[-0.3879569, 0.6894251], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [0.91542919, -0.65453327], + [-0.03852113, 0.40910479], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.18430329, 0.52328473], + [-0.30126957, -0.66268378], + [-0.65571327, 0.42412021], + [-0.28305528, 0.30284991], + [0.20246714, -0.34727125], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087]]) +Y = np.array([0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0]) + + +def test_oss_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(OneSidedSelection) + + +def test_oss_init(): + """Test the initialisation of the object""" + + # Define a ratio + oss = OneSidedSelection(random_state=RND_SEED) + + assert_equal(oss.size_ngh, 1) + assert_equal(oss.n_seeds_S, 1) + assert_equal(oss.n_jobs, -1) + assert_equal(oss.random_state, RND_SEED) + + +def test_oss_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + oss = OneSidedSelection(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, oss.fit, X, y_single_class) + + +def test_oss_fit(): + """Test the fitting method""" + + # Create the object + oss = OneSidedSelection(random_state=RND_SEED) + # Fit the data + oss.fit(X, Y) + + # Check if the data information have been computed + assert_equal(oss.min_c_, 0) + assert_equal(oss.maj_c_, 1) + assert_equal(oss.stats_c_[0], 6) + assert_equal(oss.stats_c_[1], 9) + + +def test_oss_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + oss = OneSidedSelection(random_state=RND_SEED) + assert_raises(RuntimeError, oss.sample, X, Y) + + +def test_oss_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + oss = OneSidedSelection(random_state=RND_SEED) + X_resampled, y_resampled = oss.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [0.91542919, -0.65453327], + [-0.65571327, 0.42412021], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.30126957, -0.66268378], + [0.20246714, -0.34727125]]) + y_gt = np.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_oss_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + oss = OneSidedSelection(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = oss.fit_sample(X, Y) + + X_gt = np.array([[-0.3879569, 0.6894251], + [0.91542919, -0.65453327], + [-0.65571327, 0.42412021], + [1.06446472, -1.09279772], + [0.30543283, -0.02589502], + [-0.00717161, 0.00318087], + [-0.09322739, 1.28177189], + [-0.77740357, 0.74097941], + [-0.43877303, 1.07366684], + [-0.85795321, 0.82980738], + [-0.30126957, -0.66268378], + [0.20246714, -0.34727125]]) + y_gt = np.array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]) + idx_gt = np.array([0, 3, 9, 12, 13, 14, 1, 2, 5, 6, 7, 10]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_oss_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + oss = OneSidedSelection(random_state=RND_SEED) + oss.fit(X, Y) + assert_raises(RuntimeError, oss.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 15) + oss = OneSidedSelection(random_state=RND_SEED) + assert_warns(UserWarning, oss.fit, X, y) + + # multiclass case + y = np.array([0] * 10 + [1] * 3 + [2] * 2) + oss = OneSidedSelection(random_state=RND_SEED) + assert_warns(UserWarning, oss.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_random_under_sampler.py b/imblearn/under_sampling/tests/test_random_under_sampler.py new file mode 100644 index 000000000..6af598edd --- /dev/null +++ b/imblearn/under_sampling/tests/test_random_under_sampler.py @@ -0,0 +1,216 @@ +"""Test the module random under sampler.""" +from __future__ import print_function + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import RandomUnderSampler + +# Generate a global dataset to use +RND_SEED = 0 +# Data generated for the toy example +X = np.array([[0.04352327, -0.20515826], + [0.92923648, 0.76103773], + [0.20792588, 1.49407907], + [0.47104475, 0.44386323], + [0.22950086, 0.33367433], + [0.15490546, 0.3130677], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.13347175, 0.12167502], + [0.094035, -2.55298982]]) +Y = np.array([1, 0, 1, 0, 1, 1, 1, 1, 0, 1]) + + +def test_rus_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(RandomUnderSampler) + + +def test_rus_bad_ratio(): + """Test either if an error is raised with a wrong decimal value for + the ratio""" + + # Define a negative ratio + ratio = -1.0 + rus = RandomUnderSampler(ratio=ratio) + assert_raises(ValueError, rus.fit, X, Y) + + # Define a ratio greater than 1 + ratio = 100.0 + rus = RandomUnderSampler(ratio=ratio) + assert_raises(ValueError, rus.fit, X, Y) + + # Define ratio as an unknown string + ratio = 'rnd' + rus = RandomUnderSampler(ratio=ratio) + assert_raises(ValueError, rus.fit, X, Y) + + # Define ratio as a list which is not supported + ratio = [.5, .5] + rus = RandomUnderSampler(ratio=ratio) + assert_raises(ValueError, rus.fit, X, Y) + + +def test_rus_init(): + """Test the initialisation of the object""" + + # Define a ratio + ratio = 'auto' + rus = RandomUnderSampler(ratio=ratio, random_state=RND_SEED) + + assert_equal(rus.random_state, RND_SEED) + + +def test_rus_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + rus = RandomUnderSampler(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, rus.fit, X, y_single_class) + + +def test_rus_fit_invalid_ratio(): + """Test either if an error is raised when the balancing ratio to fit is + smaller than the one of the data""" + + # Create the object + ratio = 1. / 10000. + rus = RandomUnderSampler(ratio=ratio, random_state=RND_SEED) + # Fit the data + assert_raises(RuntimeError, rus.fit, X, Y) + + +def test_rus_fit(): + """Test the fitting method""" + + # Create the object + rus = RandomUnderSampler(random_state=RND_SEED) + # Fit the data + rus.fit(X, Y) + + # Check if the data information have been computed + assert_equal(rus.min_c_, 0) + assert_equal(rus.maj_c_, 1) + assert_equal(rus.stats_c_[0], 3) + assert_equal(rus.stats_c_[1], 7) + + +def test_rus_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + rus = RandomUnderSampler(random_state=RND_SEED) + assert_raises(RuntimeError, rus.sample, X, Y) + + +def test_rus_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + rus = RandomUnderSampler(random_state=RND_SEED) + X_resampled, y_resampled = rus.fit_sample(X, Y) + + + X_gt = np.array([[0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.04352327, -0.20515826]]) + y_gt = np.array([0, 0, 0, 1, 1, 1]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_rus_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + rus = RandomUnderSampler(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = rus.fit_sample(X, Y) + + X_gt = np.array([[0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.04352327, -0.20515826]]) + y_gt = np.array([0, 0, 0, 1, 1, 1]) + idx_gt = np.array([1, 3, 8, 6, 7, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_rus_fit_sample_half(): + """Test the fit sample routine with a 0.5 ratio""" + + # Resample the data + ratio = 0.5 + rus = RandomUnderSampler(ratio=ratio, random_state=RND_SEED) + X_resampled, y_resampled = rus.fit_sample(X, Y) + + X_gt = np.array([[0.92923648, 0.76103773], + [0.47104475, 0.44386323], + [0.13347175, 0.12167502], + [0.09125309, -0.85409574], + [0.12372842, 0.6536186], + [0.04352327, -0.20515826], + [0.15490546, 0.3130677], + [0.15490546, 0.3130677], + [0.15490546, 0.3130677]]) + y_gt = np.array([0, 0, 0, 1, 1, 1, 1, 1, 1]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_rus_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + rus = RandomUnderSampler(random_state=RND_SEED) + rus.fit(X, Y) + assert_raises(RuntimeError, rus.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 10) + rus = RandomUnderSampler(random_state=RND_SEED) + assert_warns(UserWarning, rus.fit, X, y) + + +def test_multiclass_fit_sample(): + """Test fit sample method with multiclass target""" + + # Make y to be multiclass + y = Y.copy() + y[5] = 2 + y[6] = 2 + + # Resample the data + rus = RandomUnderSampler(random_state=RND_SEED) + X_resampled, y_resampled = rus.fit_sample(X, y) + + # Check the size of y + count_y_res = Counter(y_resampled) + assert_equal(count_y_res[0], 2) + assert_equal(count_y_res[1], 2) + assert_equal(count_y_res[2], 2) diff --git a/imblearn/under_sampling/tests/test_repeated_edited_nearest_neighbours.py b/imblearn/under_sampling/tests/test_repeated_edited_nearest_neighbours.py new file mode 100644 index 000000000..9b0078329 --- /dev/null +++ b/imblearn/under_sampling/tests/test_repeated_edited_nearest_neighbours.py @@ -0,0 +1,277 @@ +"""Test the module repeated edited nearest neighbour.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from collections import Counter + +from imblearn.under_sampling import RepeatedEditedNearestNeighbours + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[-0.12840393, 0.66446571], + [1.32319756, -0.13181616], + [0.04296502, -0.37981873], + [0.83631853, 0.18569783], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [-0.53171468, -0.53735182], + [1.3381556, 0.35956356], + [-0.35946678, 0.72510189], + [1.32326943, 0.28393874], + [2.94290565, -0.13986434], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [-0.88864036, -0.33782387], + [-1.10146139, 0.91782682], + [-0.7969716, -0.50493969], + [0.73489726, 0.43915195], + [0.2096964, -0.61814058], + [-0.28479268, 0.70459548], + [1.84864913, 0.14729596], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.57356906, 0.30390519], + [1.0304995, -0.16955962], + [1.67314371, 0.19231498], + [0.98382284, 0.37184502], + [0.48921682, -1.38504507], + [-0.46226554, -0.50481004], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172], + [0.69804044, 0.44810796], + [-0.5506368, -0.42072426], + [-0.34474418, 0.21969797]]) +Y = np.array([1, 2, 2, 2, 1, 1, 0, 2, 1, 1, 1, 2, 2, 0, 1, 2, 1, 2, 1, 1, 2, + 2, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 0, 2, 2, 2, 2, 1, 2, 0]) + + +def test_enn_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(RepeatedEditedNearestNeighbours) + + +def test_renn_init(): + """Test the initialisation of the object""" + + # Define a ratio + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + + assert_equal(renn.size_ngh, 3) + assert_equal(renn.kind_sel, 'all') + assert_equal(renn.n_jobs, -1) + assert_equal(renn.random_state, RND_SEED) + + +def test_renn_iter_wrong(): + """Test either if an error is raised when the numbr of iteration + is wrong""" + + # Create the object + max_iter = -1 + renn = RepeatedEditedNearestNeighbours(max_iter=max_iter, + random_state=RND_SEED) + assert_raises(ValueError, renn.fit_sample, X, Y) + + +def test_renn_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, renn.fit, X, y_single_class) + + +def test_renn_fit(): + """Test the fitting method""" + + # Create the object + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + # Fit the data + renn.fit(X, Y) + + # Check if the data information have been computed + assert_equal(renn.min_c_, 0) + assert_equal(renn.maj_c_, 2) + assert_equal(renn.stats_c_[0], 4) + assert_equal(renn.stats_c_[1], 16) + assert_equal(renn.stats_c_[2], 20) + + +def test_renn_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + assert_raises(RuntimeError, renn.sample, X, Y) + + +def test_renn_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + X_resampled, y_resampled = renn.fit_sample(X, Y) + + X_gt = np.array([[-0.53171468, -0.53735182], + [-0.88864036, -0.33782387], + [-0.46226554, -0.50481004], + [-0.34474418, 0.21969797], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [0.73489726, 0.43915195], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.98382284, 0.37184502], + [0.69804044, 0.44810796], + [0.04296502, -0.37981873], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [0.2096964, -0.61814058], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.0304995, -0.16955962], + [0.48921682, -1.38504507], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172]]) + y_gt = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_renn_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + renn = RepeatedEditedNearestNeighbours(return_indices=True, + random_state=RND_SEED) + X_resampled, y_resampled, idx_under = renn.fit_sample(X, Y) + + X_gt = np.array([[-0.53171468, -0.53735182], + [-0.88864036, -0.33782387], + [-0.46226554, -0.50481004], + [-0.34474418, 0.21969797], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [0.73489726, 0.43915195], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [0.98382284, 0.37184502], + [0.69804044, 0.44810796], + [0.04296502, -0.37981873], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [0.2096964, -0.61814058], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.0304995, -0.16955962], + [0.48921682, -1.38504507], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172]]) + y_gt = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2]) + idx_gt = np.array([6, 13, 32, 39, 4, 5, 16, 22, 23, 24, 30, 37, 2, 11, 12, + 17, 20, 21, 25, 26, 28, 31, 33, 34, 35, 36]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_renn_fit_sample_mode(): + """Test the fit sample routine using the mode as selection""" + + # Resample the data + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED, + kind_sel='mode') + X_resampled, y_resampled = renn.fit_sample(X, Y) + + X_gt = np.array([[-0.53171468, -0.53735182], + [-0.88864036, -0.33782387], + [-0.46226554, -0.50481004], + [-0.34474418, 0.21969797], + [-0.12840393, 0.66446571], + [1.02956816, 0.36061601], + [1.12202806, 0.33811558], + [-0.35946678, 0.72510189], + [2.94290565, -0.13986434], + [-1.10146139, 0.91782682], + [0.73489726, 0.43915195], + [-0.28479268, 0.70459548], + [1.84864913, 0.14729596], + [0.50307437, 0.498805], + [0.84929742, 0.41042894], + [0.62649535, 0.46600596], + [1.67314371, 0.19231498], + [0.98382284, 0.37184502], + [0.69804044, 0.44810796], + [1.32319756, -0.13181616], + [0.04296502, -0.37981873], + [0.28294738, -1.00125525], + [0.34218094, -0.58781961], + [0.2096964, -0.61814058], + [1.59068979, -0.96622933], + [0.73418199, -0.02222847], + [0.79270821, -0.41386668], + [1.16606871, -0.25641059], + [1.0304995, -0.16955962], + [0.48921682, -1.38504507], + [-0.03918551, -0.68540745], + [0.24991051, -1.00864997], + [0.80541964, -0.34465185], + [0.1732627, -1.61323172]]) + y_gt = np.array([0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_renn_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + renn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + renn.fit(X, Y) + assert_raises(RuntimeError, renn.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_continuous_error(): + """Test either if an error is raised when the target are continuous + type""" + + # continuous case + y = np.linspace(0, 1, 40) + enn = RepeatedEditedNearestNeighbours(random_state=RND_SEED) + assert_warns(UserWarning, enn.fit, X, y) diff --git a/imblearn/under_sampling/tests/test_tomek_links.py b/imblearn/under_sampling/tests/test_tomek_links.py new file mode 100644 index 000000000..5d89aea49 --- /dev/null +++ b/imblearn/under_sampling/tests/test_tomek_links.py @@ -0,0 +1,176 @@ +"""Test the module Tomek's links.""" +from __future__ import print_function + +import os + +import numpy as np +from numpy.testing import assert_raises +from numpy.testing import assert_equal +from numpy.testing import assert_array_equal +from numpy.testing import assert_warns + +from sklearn.datasets import make_classification +from sklearn.utils.estimator_checks import check_estimator + +from imblearn.under_sampling import TomekLinks + +# Generate a global dataset to use +RND_SEED = 0 +X = np.array([[0.31230513, 0.1216318 ], + [0.68481731, 0.51935141], + [1.34192108, -0.13367336], + [0.62366841, -0.21312976], + [1.61091956, -0.40283504], + [-0.37162401, -2.19400981], + [0.74680821, 1.63827342], + [0.2184254, 0.24299982], + [0.61472253, -0.82309052], + [0.19893132, -0.47761769], + [1.06514042, -0.0770537], + [0.97407872, 0.44454207], + [1.40301027, -0.83648734], + [-1.20515198, -1.02689695], + [-0.27410027, -0.54194484], + [0.8381014, 0.44085498], + [-0.23374509, 0.18370049], + [-0.32635887, -0.29299653], + [-0.00288378, 0.84259929], + [1.79580611, -0.02219234]]) +Y = np.array([1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0]) + + +def test_tl_sk_estimator(): + """Test the sklearn estimator compatibility""" + check_estimator(TomekLinks) + + +def test_tl_init(): + """Test the initialisation of the object""" + + # Define a ratio + tl = TomekLinks(random_state=RND_SEED) + + assert_equal(tl.n_jobs, -1) + assert_equal(tl.random_state, RND_SEED) + + +def test_tl_fit_single_class(): + """Test either if an error when there is a single class""" + + # Create the object + tl = TomekLinks(random_state=RND_SEED) + # Resample the data + # Create a wrong y + y_single_class = np.zeros((X.shape[0], )) + assert_warns(RuntimeWarning, tl.fit, X, y_single_class) + + +def test_tl_fit(): + """Test the fitting method""" + + # Create the object + tl = TomekLinks(random_state=RND_SEED) + # Fit the data + tl.fit(X, Y) + + # Check if the data information have been computed + assert_equal(tl.min_c_, 0) + assert_equal(tl.maj_c_, 1) + assert_equal(tl.stats_c_[0], 7) + assert_equal(tl.stats_c_[1], 13) + + +def test_tl_sample_wt_fit(): + """Test either if an error is raised when sample is called before + fitting""" + + # Create the object + tl = TomekLinks(random_state=RND_SEED) + assert_raises(RuntimeError, tl.sample, X, Y) + + +def test_tl_fit_sample(): + """Test the fit sample routine""" + + # Resample the data + tl = TomekLinks(random_state=RND_SEED) + X_resampled, y_resampled = tl.fit_sample(X, Y) + + X_gt = np.array([[0.31230513, 0.1216318], + [0.68481731, 0.51935141], + [1.34192108, -0.13367336], + [0.62366841, -0.21312976], + [1.61091956, -0.40283504], + [-0.37162401, -2.19400981], + [0.74680821, 1.63827342], + [0.2184254, 0.24299982], + [0.61472253, -0.82309052], + [0.19893132, -0.47761769], + [0.97407872, 0.44454207], + [1.40301027, -0.83648734], + [-1.20515198, -1.02689695], + [-0.23374509, 0.18370049], + [-0.32635887, -0.29299653], + [-0.00288378, 0.84259929], + [1.79580611, -0.02219234]]) + y_gt = np.array([1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + + +def test_tl_fit_sample_with_indices(): + """Test the fit sample routine with indices support""" + + # Resample the data + tl = TomekLinks(return_indices=True, random_state=RND_SEED) + X_resampled, y_resampled, idx_under = tl.fit_sample(X, Y) + + X_gt = np.array([[0.31230513, 0.1216318], + [0.68481731, 0.51935141], + [1.34192108, -0.13367336], + [0.62366841, -0.21312976], + [1.61091956, -0.40283504], + [-0.37162401, -2.19400981], + [0.74680821, 1.63827342], + [0.2184254, 0.24299982], + [0.61472253, -0.82309052], + [0.19893132, -0.47761769], + [0.97407872, 0.44454207], + [1.40301027, -0.83648734], + [-1.20515198, -1.02689695], + [-0.23374509, 0.18370049], + [-0.32635887, -0.29299653], + [-0.00288378, 0.84259929], + [1.79580611, -0.02219234]]) + y_gt = np.array([1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0]) + idx_gt = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 16, 17, + 18, 19]) + assert_array_equal(X_resampled, X_gt) + assert_array_equal(y_resampled, y_gt) + assert_array_equal(idx_under, idx_gt) + + +def test_tl_sample_wrong_X(): + """Test either if an error is raised when X is different at fitting + and sampling""" + + # Create the object + tl = TomekLinks(random_state=RND_SEED) + tl.fit(X, Y) + assert_raises(RuntimeError, tl.sample, np.random.random((100, 40)), + np.array([0] * 50 + [1] * 50)) + + +def test_multiclass_error(): + """ Test either if an error is raised when the target are not binary + type. """ + + # continuous case + y = np.linspace(0, 1, 20) + tl = TomekLinks(random_state=RND_SEED) + assert_warns(UserWarning, tl.fit, X, y) + + # multiclass case + y = np.array([0] * 3 + [1] * 7 + [2] * 10) + tl = TomekLinks(random_state=RND_SEED) + assert_warns(UserWarning, tl.fit, X, y) diff --git a/unbalanced_dataset/under_sampling/tomek_links.py b/imblearn/under_sampling/tomek_links.py similarity index 56% rename from unbalanced_dataset/under_sampling/tomek_links.py rename to imblearn/under_sampling/tomek_links.py index c42836bdd..7086d0184 100644 --- a/unbalanced_dataset/under_sampling/tomek_links.py +++ b/imblearn/under_sampling/tomek_links.py @@ -7,40 +7,30 @@ from collections import Counter from sklearn.neighbors import NearestNeighbors -from sklearn.utils import check_X_y -from .under_sampler import UnderSampler +from ..base import BaseBinarySampler -class TomekLinks(UnderSampler): +class TomekLinks(BaseBinarySampler): """Class to perform under-sampling by removing Tomek's links. Parameters ---------- return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. + Whether or not to return the indices of the samples randomly + selected from the majority class. - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing + random_state : int, RandomState instance or None, optional (default=None) + If int, random_state is the seed used by the random number generator; + If RandomState instance, random_state is the random number generator; + If None, the random number generator is the RandomState instance used + by np.random. n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. + The number of threads to open if possible. Attributes ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - min_c_ : str or int The identifier of the minority class. @@ -51,63 +41,48 @@ class TomekLinks(UnderSampler): A dictionary in which the number of occurences of each class is reported. + X_shape_ : tuple of int + Shape of the data `X` during fitting. + + Notes + ----- + This method is based on [1]_. + + It does not support multi-class sampling. + + Examples + -------- + + >>> from collections import Counter + >>> from sklearn.datasets import make_classification + >>> from imblearn.under_sampling import TomekLinks + >>> X, y = make_classification(n_classes=2, class_sep=2, weights=[0.1, 0.9], + ... n_informative=3, n_redundant=1, flip_y=0, + ... n_features=20, n_clusters_per_class=1, + ... n_samples=1000, random_state=10) + >>> print('Original dataset shape {}'.format(Counter(y))) + Original dataset shape Counter({1: 900, 0: 100}) + >>> tl = TomekLinks(random_state=42) + >>> X_res, y_res = tl.fit_sample(X, y) + >>> print('Resampled dataset shape {}'.format(Counter(y_res))) + Resampled dataset shape Counter({1: 897, 0: 100}) + + References + ---------- + .. [1] I. Tomek, "Two modifications of CNN," In Systems, Man, and + Cybernetics, IEEE Transactions on, vol. 6, pp 769-772, 2010. + """ - def __init__(self, return_indices=False, random_state=None, verbose=True, + def __init__(self, return_indices=False, random_state=None, n_jobs=-1): - """Initialisation of Tomek's links object. - - Parameters - ---------- - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Returns - ------- - None - - """ - super(TomekLinks, self).__init__(return_indices=return_indices, - random_state=random_state, - verbose=verbose) + super(TomekLinks, self).__init__() + self.return_indices = return_indices + self.random_state = random_state self.n_jobs = n_jobs - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(TomekLinks, self).fit(X, y) - - return self - @staticmethod - def is_tomek(y, nn_index, class_type, verbose=True): + def is_tomek(y, nn_index, class_type): """is_tomek uses the target vector and the first neighbour of every sample point and looks for Tomek pairs. Returning a boolean vector with True for majority Tomek links. @@ -154,12 +129,9 @@ def is_tomek(y, nn_index, class_type, verbose=True): links[ind] = True count += 1 - if verbose: - print("{} Tomek links found.".format(count)) - return links - def transform(self, X, y): + def _sample(self, X, y): """Resample the dataset. Parameters @@ -183,10 +155,6 @@ def transform(self, X, y): containing the which samples have been selected. """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(TomekLinks, self).transform(X, y) # Find the nearest neighbour of every point nn = NearestNeighbors(n_neighbors=2, n_jobs=self.n_jobs) @@ -194,19 +162,17 @@ def transform(self, X, y): nns = nn.kneighbors(X, return_distance=False)[:, 1] # Send the information to is_tomek function to get boolean vector back - if self.verbose: - print("Looking for majority Tomek links...") - links = self.is_tomek(y, nns, self.min_c_, self.verbose) + self.logger.debug('Looking for majority Tomek links ...') + links = self.is_tomek(y, nns, self.min_c_) - if self.verbose: - print("Under-sampling performed: {}".format(Counter( - y[np.logical_not(links)]))) + self.logger.info('Under-sampling performed: %s', Counter( + y[np.logical_not(links)])) # Check if the indices of the samples selected should be returned too if self.return_indices: # Return the indices of interest return (X[np.logical_not(links)], y[np.logical_not(links)], - np.nonzero(np.logical_not(links))[0]) + np.flatnonzero(np.logical_not(links))) else: # Return data set without majority Tomek links. return X[np.logical_not(links)], y[np.logical_not(links)] diff --git a/imblearn/version.py b/imblearn/version.py new file mode 100644 index 000000000..458cba02a --- /dev/null +++ b/imblearn/version.py @@ -0,0 +1,103 @@ +""" +``imbalanced-learn`` is a set of python methods to deal with imbalanced +datset in machine learning and pattern recognition. +""" +# Based on NiLearn package +# License: simplified BSD + +# PEP0440 compatible formatted version, see: +# https://www.python.org/dev/peps/pep-0440/ +# +# Generic release markers: +# X.Y +# X.Y.Z # For bugfix releases +# +# Admissible pre-release markers: +# X.YaN # Alpha release +# X.YbN # Beta release +# X.YrcN # Release Candidate +# X.Y # Final release +# +# Dev branch marker is: 'X.Y.dev' or 'X.Y.devN' where N is an integer. +# 'X.Y.dev0' is the canonical version of 'X.Y.dev' +# +__version__ = '0.2.0.dev0' + +_IMBALANCED_DATASET_INSTALL_MSG = 'See %s for installation information.' % ( + 'http://contrib.scikit-learn.org/imbalanced-learn/install.html') + +# This is a tuple to preserve order, so that dependencies are checked +# in some meaningful order (more => less 'core'). We avoid using +# collections.OrderedDict to preserve Python 2.6 compatibility. +REQUIRED_MODULE_METADATA = ( + ('numpy', { + 'min_version': '1.10.4', + 'required_at_installation': True, + 'install_info': _IMBALANCED_DATASET_INSTALL_MSG}), + ('scipy', { + 'min_version': '0.17.0', + 'required_at_installation': True, + 'install_info': _IMBALANCED_DATASET_INSTALL_MSG}), + ('sklearn', { + 'min_version': '0.17.1', + 'required_at_installation': True, + 'install_info': _IMBALANCED_DATASET_INSTALL_MSG})) + + +def _import_module_with_version_check(module_name, minimum_version, + install_info=None): + """Check that module is installed with a recent enough version + """ + from distutils.version import LooseVersion + + try: + module = __import__(module_name) + except ImportError as exc: + user_friendly_info = ('Module "{0}" could not be found. {1}').format( + module_name, + install_info or 'Please install it properly to use' + ' imbalanced-learn.') + exc.args += (user_friendly_info,) + raise + + # Avoid choking on modules with no __version__ attribute + module_version = getattr(module, '__version__', '0.0.0') + + version_too_old = (not LooseVersion(module_version) >= + LooseVersion(minimum_version)) + + if version_too_old: + message = ( + 'A {module_name} version of at least {minimum_version} ' + 'is required to use imbalanced-learn. {module_version} was ' + 'found. Please upgrade {module_name}').format( + module_name=module_name, + minimum_version=minimum_version, + module_version=module_version) + + raise ImportError(message) + + return module + + +def _check_module_dependencies(is_imbalanced_dataset_installing=False): + """Throw an exception if imbalanced-learn dependencies are not installed. + Parameters + ---------- + is_imbalanced_dataset_installing: boolean + if True, only error on missing packages that cannot be auto-installed. + if False, error on any missing package. + Throws + ------- + ImportError + """ + + for (module_name, module_metadata) in REQUIRED_MODULE_METADATA: + if not (is_imbalanced_dataset_installing and + not module_metadata['required_at_installation']): + # Skip check only when installing and it's a module that + # will be auto-installed. + _import_module_with_version_check( + module_name=module_name, + minimum_version=module_metadata['min_version'], + install_info=module_metadata.get('install_info')) diff --git a/requirements.txt b/requirements.txt index 9e309ae98..4ae925f37 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -scipy>=0.16.0 -numpy>=1.9.3 -six>=1.10.0 +scipy>=0.17.0 +numpy>=1.10.4 +scikit-learn>=0.17.1 diff --git a/setup.cfg b/setup.cfg index c071656f8..443f6d4c2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,21 +1,34 @@ +[bumpversion] +current_version = 0.2.0.dev0 +tag = False +parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\.(?P[a-z]+)(?P\d+))? +serialize = + {major}.{minor}.{patch}.{release}{dev} + {major}.{minor}.{patch} + +[bumpversion:part:release] +optional_value = gamma +values = + dev + gamma + +[bumpversion:part:dev] + +[bumpversion:file:imblearn/version.py] + +[bumpversion:file:doc/conf.py] + [aliases] -# python2.7 has upgraded unittest and it is no longer compatible with some -# of our tests, so we run all through nose test = nosetests [nosetests] -# nosetests skips test files with the executable bit by default -# which can silently hide failing tests. -# There are no executable scripts within the scikit-learn project -# so let's turn the --exe flag on to avoid skipping tests by -# mistake. exe = 1 cover-html = 1 cover-html-dir = coverage -cover-package = unbalanced_dataset - +cover-package = imblearn detailed-errors = 1 with-doctest = 1 doctest-tests = 1 doctest-extension = rst -doctest-fixtures = _fixtureA \ No newline at end of file +doctest-fixtures = _fixture + diff --git a/setup.py b/setup.py index c3374bd20..9aafdef89 100644 --- a/setup.py +++ b/setup.py @@ -1,133 +1,87 @@ #! /usr/bin/env python -"""Toolbox for unbalanced dataset in machine learning.""" +"""Toolbox for imbalanced dataset in machine learning.""" -from setuptools import setup, find_packages -import os import sys +import os +import codecs -import setuptools -from distutils.command.build_py import build_py - -if sys.version_info[0] < 3: - import __builtin__ as builtins -else: - import builtins - -descr = """Toolbox for unbalanced dataset in machine learning.""" - -DISTNAME = 'unbalanced_dataset' -DESCRIPTION = 'Toolbox for unbalanced dataset in machine learning.' -LONG_DESCRIPTION = descr -MAINTAINER = 'Fernando Nogueira, Guillaume Lemaitre' -MAINTAINER_EMAIL = 'fmfnogueira@gmail.com, g.lemaitre58@gmail.com' -URL = 'https://github.com/fmfn/UnbalancedDataset' -LICENSE = 'new BSD' -DOWNLOAD_URL = 'https://github.com/fmfn/UnbalancedDataset' +from setuptools import setup, find_packages -# This is a bit (!) hackish: we are setting a global variable so that the main -# skimage __init__ can detect if it is being loaded by the setup routine, to -# avoid attempting to load components that aren't built yet: -# the numpy distutils extensions that are used by UnbalancedDataset to -# recursively build the compiled extensions in sub-packages is based on -# the Python import machinery. -builtins.__UNBALANCED_DATASET_SETUP__ = True -with open('unbalanced_dataset/__init__.py') as fid: - for line in fid: - if line.startswith('__version__'): - VERSION = line.strip().split()[-1][1:-1] - break +def load_version(): + """Executes imblearn/version.py in a globals dictionary and + return it. + """ + # load all vars into globals, otherwise + # the later function call using global vars doesn't work. + globals_dict = {} + with codecs.open(os.path.join('imblearn', 'version.py'), + encoding='utf-8-sig') as fp: + exec(fp.read(), globals_dict) -with open('requirements.txt') as fid: - INSTALL_REQUIRES = [l.strip() for l in fid.readlines() if l] + return globals_dict -# requirements for those browsing PyPI -REQUIRES = [r.replace('>=', ' (>= ') + ')' for r in INSTALL_REQUIRES] -REQUIRES = [r.replace('==', ' (== ') for r in REQUIRES] -REQUIRES = [r.replace('[array]', '') for r in REQUIRES] +def is_installing(): + # Allow command-lines such as "python setup.py build install" + install_commands = set(['install', 'develop']) + return install_commands.intersection(set(sys.argv)) -def configuration(parent_package='', top_path=None): - if os.path.exists('MANIFEST'): - os.remove('MANIFEST') - from numpy.distutils.misc_util import Configuration - config = Configuration(None, parent_package, top_path) +# Make sources available using relative paths from this file's directory. +os.chdir(os.path.dirname(os.path.abspath(__file__))) - config.set_options( - ignore_setup_xxx_py=True, - assume_default_configuration=True, - delegate_options_to_subpackages=True, - quiet=True) +descr = """Toolbox for imbalanced dataset in machine learning.""" - config.add_subpackage('unbalanced_dataset') +_VERSION_GLOBALS = load_version() +DISTNAME = 'imbalanced-learn' +DESCRIPTION = 'Toolbox for imbalanced dataset in machine learning.' +with codecs.open('README.rst', encoding='utf-8-sig') as f: + LONG_DESCRIPTION = f.read() +MAINTAINER = 'G. Lemaitre, F. Nogueira, D. Oliveira, C. Aridas' +MAINTAINER_EMAIL = 'g.lemaitre58@gmail.com, fmfnogueira@gmail.com, dvro@cin.ufpe.br, char@upatras.gr' +URL = 'https://github.com/scikit-learn-contrib/imbalanced-learn' +LICENSE = 'new BSD' +DOWNLOAD_URL = 'https://github.com/scikit-learn-contrib/imbalanced-learn' +VERSION = _VERSION_GLOBALS['__version__'] - return config if __name__ == "__main__": - try: - from numpy.distutils.core import setup - extra = {'configuration': configuration} - # Do not try and upgrade larger dependencies - for lib in ['scipy', 'numpy', 'matplotlib']: - try: - __import__(lib) - INSTALL_REQUIRES = [i for i in INSTALL_REQUIRES - if lib not in i] - except ImportError: - pass - except ImportError: - if len(sys.argv) >= 2 and ('--help' in sys.argv[1:] or - sys.argv[1] in ('--help-commands', - '--version', - 'clean')): - # For these actions, NumPy is not required. - # - # They are required to succeed without Numpy for example when - # pip is used to install UnbalancedDataset when Numpy is not yet - # present in the system. - from setuptools import setup - extra = {} - else: - print('To install UnbalancedDataset from source, you need numpy.' + - 'Install numpy with pip:\n' + - 'pip install numpy\n' - 'Or use your operating system package manager.') - sys.exit(1) - - setup( - name=DISTNAME, - description=DESCRIPTION, - long_description=LONG_DESCRIPTION, - maintainer=MAINTAINER, - maintainer_email=MAINTAINER_EMAIL, - url=URL, - license=LICENSE, - download_url=DOWNLOAD_URL, - version=VERSION, - - classifiers=['Intended Audience :: Science/Research', - 'Intended Audience :: Developers', - 'License :: OSI Approved', - 'Programming Language :: Python', - 'Topic :: Software Development', - 'Topic :: Scientific/Engineering', - 'Operating System :: Microsoft :: Windows', - 'Operating System :: POSIX', - 'Operating System :: Unix', - 'Operating System :: MacOS', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.3', - 'Programming Language :: Python :: 3.4', - ], - install_requires=INSTALL_REQUIRES, - requires=REQUIRES, - packages=setuptools.find_packages(exclude=['doc']), - include_package_data=True, - zip_safe=False, # the package can run out of an .egg file - cmdclass={'build_py': build_py}, - **extra - ) + if is_installing(): + module_check_fn = _VERSION_GLOBALS['_check_module_dependencies'] + module_check_fn(is_imbalanced_dataset_installing=True) + + install_requires = \ + ['%s>=%s' % (mod, meta['min_version']) + for mod, meta in _VERSION_GLOBALS['REQUIRED_MODULE_METADATA'] + if not meta['required_at_installation']] + + setup(name=DISTNAME, + maintainer=MAINTAINER, + maintainer_email=MAINTAINER_EMAIL, + description=DESCRIPTION, + license=LICENSE, + url=URL, + version=VERSION, + download_url=DOWNLOAD_URL, + long_description=LONG_DESCRIPTION, + zip_safe=False, # the package can run out of an .egg file + classifiers=[ + 'Intended Audience :: Science/Research', + 'Intended Audience :: Developers', + 'License :: OSI Approved', + 'Programming Language :: C', + 'Programming Language :: Python', + 'Topic :: Software Development', + 'Topic :: Scientific/Engineering', + 'Operating System :: Microsoft :: Windows', + 'Operating System :: POSIX', + 'Operating System :: Unix', + 'Operating System :: MacOS', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.5', + ], + packages=find_packages(), + install_requires=['scipy>=0.17.0', + 'numpy>=1.10.4', + 'scikit-learn>=0.17.1']) diff --git a/unbalanced_dataset/__init__.py b/unbalanced_dataset/__init__.py deleted file mode 100644 index a43fb0df2..000000000 --- a/unbalanced_dataset/__init__.py +++ /dev/null @@ -1,76 +0,0 @@ -"""Toolbox for unbalanced dataset in machine learning. - -``UnbalancedDataset`` is a set of python methods to deal with unbalanced -datset in machine learning and pattern recognition. - -Subpackages ------------ -combine - Module which provides methods based on over-sampling and under-sampling. -ensemble - Module which provides methods generating an ensemble of - under-sampled subsets. -over_sampling - Module which provides methods to under-sample a dataset. -under-sampling - Module which provides methods to over-sample a dataset. -utils - Module which provides helper methods. -""" - -import os -import imp -import functools -import warnings -import sys - -__version__ = '0.1.dev0' - -pkg_dir = os.path.abspath(os.path.dirname(__file__)) - -# Logic for checking for improper install and importing while in the source -# tree when package has not been installed inplace. -# Code adapted from scikit-learn's __check_build module. -_INPLACE_MSG = """ -It appears that you are importing a local UnbalancedDataset source tree. For -this, you need to have an inplace install. Maybe you are in the source -directory and you need to try from another location.""" - -_STANDARD_MSG = """ -Your install of UnbalancedDataset package appears to be broken. """ - - -def _raise_build_error(e): - import os.path as osp - # Raise a comprehensible error - local_dir = osp.split(__file__)[0] - msg = _STANDARD_MSG - if local_dir == "unbalanced_dataset": - # Picking up the local install: this will work only if - # the install is an 'inplace build' - msg = _INPLACE_MSG - raise ImportError("""%s - It seems that UnbalncedDataset has not been built correctly. - %s""" % (e, msg)) - -try: - # This variable is injected in the __builtins__ by the build - # process. It used to enable importing subpackages of skimage when - # the binaries are not built - __UNBALANCED_DATASET_SETUP__ -except NameError: - __UNBALANCED_DATASET_SETUP__ = False - -if __UNBALANCED_DATASET_SETUP__: - sys.stderr.write('Partial import of UnbalancedDataset during the build' - ' process.\n') - # We are not importing the rest of the scikit during the build - # process, as it may not be compiled yet -else: - __all__ = ['combine', - 'ensemble', - 'over_sampling', - 'under_sampling', - 'utils'] - -del warnings, functools, os, imp, sys diff --git a/unbalanced_dataset/base_sampler.py b/unbalanced_dataset/base_sampler.py deleted file mode 100644 index 8046bb050..000000000 --- a/unbalanced_dataset/base_sampler.py +++ /dev/null @@ -1,166 +0,0 @@ -"""Base class for sampling""" - -from __future__ import division -from __future__ import print_function - -from abc import ABCMeta, abstractmethod - -from collections import Counter - -from sklearn.utils import check_X_y - -from six import string_types - - -class BaseSampler(object): - """Basic class with abstact method. - - Warning: This class should not be used directly. Use the derive classes - instead. - """ - - __metaclass__ = ABCMeta - - @abstractmethod - def __init__(self, ratio='auto', random_state=None, verbose=True): - """Initialize this object and its instance variables. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - Returns - ------- - None - - """ - # The ratio correspond to the number of samples in the minority class - # over the number of samples in the majority class. Thus, the ratio - # cannot be greater than 1.0 - if isinstance(ratio, float): - if ratio > 1.0 or ratio < 0.: - raise ValueError('Ratio cannot be greater than one or negative' - '. Otherwise the majority class become' - ' minority.') - else: - self.ratio_ = ratio - elif isinstance(ratio, string_types): - if ratio == 'auto': - self.ratio_ = ratio - else: - raise ValueError('Unknown string for the parameter ratio.') - - self.rs_ = random_state - self.verbose = verbose - - # Create the member variables regarding the classes statistics - self.min_c_ = None - self.maj_c_ = None - self.stats_c_ = {} - - @abstractmethod - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - - # Check the consistency of X and y - X, y = check_X_y(X, y) - - if self.verbose: - print("Determining classes statistics... ", end="") - - # Get all the unique elements in the target array - uniques = set(y) - - # Raise an error if there is only one class - if len(uniques) == 1: - raise RuntimeError("Only one class detected, aborting...") - - # Create a dictionary containing the class statistics - self.stats_c_ = Counter(y) - - # Find the minority and majority classes - self.min_c_ = min(self.stats_c_, key=self.stats_c_.get) - self.maj_c_ = max(self.stats_c_, key=self.stats_c_.get) - - if self.verbose: - print(str(len(uniques)) + - " classes detected: " + - str(self.stats_c_), end="\n") - - return self - - @abstractmethod - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - - # Check that the data have been fitted - if not self.stats_c_: - raise RuntimeError('You need to fit the data, first!!!') - - return self - - def fit_transform(self, X, y): - """Fit the statistics and resample the data directly. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - - return self.fit(X, y).transform(X, y) diff --git a/unbalanced_dataset/combine/smote_enn.py b/unbalanced_dataset/combine/smote_enn.py deleted file mode 100644 index 5d7eac8df..000000000 --- a/unbalanced_dataset/combine/smote_enn.py +++ /dev/null @@ -1,231 +0,0 @@ -"""Class to perform over-sampling using SMOTE and cleaning using ENN.""" -from __future__ import print_function -from __future__ import division - -from sklearn.utils import check_X_y - -from ..over_sampling import SMOTE -from ..under_sampling import EditedNearestNeighbours -from ..base_sampler import BaseSampler - - -class SMOTEENN(BaseSampler): - """Class to perform over-sampling using SMOTE and cleaning using ENN. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the - number of samples in the minority class over the the number of - samples in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the - processing. - - k : int, optional (default=5) - Number of nearest neighbours to used to construct synthetic - samples. - - m : int, optional (default=10) - Number of nearest neighbours to use to determine if a minority - sample is in danger. - - out_step : float, optional (default=0.5) - Step size when extrapolating. - - kind_smote : str, optional (default='regular') - The type of SMOTE algorithm to use one of the following - options: 'regular', 'borderline1', 'borderline2', 'svm' - - nn_method : str, optional (default='exact') - The nearest neighbors method to use which can be either: - 'approximate' or 'exact'. 'approximate' will use LSH Forest while - 'exact' will be an exact search. - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - kind_sel : str, optional (default='all') - Strategy to use in order to exclude samples. - - - If 'all', all neighbours will have to agree with the samples of - interest to not be excluded. - - If 'mode', the majority vote of the neighbours will be used in - order to exclude a sample. - - n_jobs : int, optional (default=-1) - Number of threads to run the algorithm when it is possible. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - The method is presented in [1]_. - - This class does not support mutli-class. - - References - ---------- - .. [1] G. Batista, R. C. Prati, M. C. Monard. "A study of the behavior of - several methods for balancing machine learning training data," ACM - Sigkdd Explorations Newsletter 6 (1), 20-29, 2004. - - """ - - def __init__(self, ratio='auto', random_state=None, verbose=True, - k=5, m=10, out_step=0.5, kind_smote='regular', - nn_method='exact', size_ngh=3, kind_enn='all', n_jobs=-1, - **kwargs): - - """Initialise the SMOTE ENN object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the - number of samples in the minority class over the the number of - samples in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the - processing. - - k : int, optional (default=5) - Number of nearest neighbours to used to construct synthetic - samples. - - m : int, optional (default=10) - Number of nearest neighbours to use to determine if a minority - sample is in danger. - - out_step : float, optional (default=0.5) - Step size when extrapolating. - - kind_smote : str, optional (default='regular') - The type of SMOTE algorithm to use one of the following - options: 'regular', 'borderline1', 'borderline2', 'svm' - - nn_method : str, optional (default='exact') - The nearest neighbors method to use which can be either: - 'approximate' or 'exact'. 'approximate' will use LSH Forest while - 'exact' will be an exact search. - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - kind_sel : str, optional (default='all') - Strategy to use in order to exclude samples. - - - If 'all', all neighbours will have to agree with the samples of - interest to not be excluded. - - If 'mode', the majority vote of the neighbours will be used in - order to exclude a sample. - - n_jobs : int, optional (default=-1) - Number of threads to run the algorithm when it is possible. - - Returns - ------- - None - - """ - super(SMOTEENN, self).__init__(ratio=ratio, random_state=random_state, - verbose=verbose) - - self.sm = SMOTE(ratio=ratio, random_state=random_state, - verbose=verbose, k=k, m=m, out_step=out_step, - kind=kind_smote, nn_method=nn_method, n_jobs=n_jobs, - **kwargs) - - self.enn = EditedNearestNeighbours(random_state=random_state, - verbose=verbose, - size_ngh=size_ngh, - kind_sel=kind_enn, n_jobs=n_jobs) - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(SMOTEENN, self).fit(X, y) - - # Fit using SMOTE - self.sm.fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(SMOTEENN, self).transform(X, y) - - # Transform using SMOTE - X, y = self.sm.transform(X, y) - - # Fit and transform using ENN - return self.enn.fit_transform(X, y) diff --git a/unbalanced_dataset/combine/smote_tomek.py b/unbalanced_dataset/combine/smote_tomek.py deleted file mode 100644 index cf598eec6..000000000 --- a/unbalanced_dataset/combine/smote_tomek.py +++ /dev/null @@ -1,217 +0,0 @@ -"""Class to perform over-sampling using SMOTE and cleaning using ENN.""" -from __future__ import print_function -from __future__ import division - -from sklearn.utils import check_X_y - -from ..over_sampling import SMOTE -from ..under_sampling import TomekLinks -from ..base_sampler import BaseSampler - - -class SMOTETomek(BaseSampler): - """Class to perform over-sampling using SMOTE and cleaning using - Tomek links. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the - number of samples in the minority class over the the number of - samples in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the - processing. - - k : int, optional (default=5) - Number of nearest neighbours to used to construct synthetic - samples. - - m : int, optional (default=10) - Number of nearest neighbours to use to determine if a minority - sample is in danger. - - out_step : float, optional (default=0.5) - Step size when extrapolating. - - kind_smote : str, optional (default='regular') - The type of SMOTE algorithm to use one of the following - options: 'regular', 'borderline1', 'borderline2', 'svm' - - nn_method : str, optional (default='exact') - The nearest neighbors method to use which can be either: - 'approximate' or 'exact'. 'approximate' will use LSH Forest while - 'exact' will be an exact search. - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - kind_sel : str, optional (default='all') - Strategy to use in order to exclude samples. - - - If 'all', all neighbours will have to agree with the samples of - interest to not be excluded. - - If 'mode', the majority vote of the neighbours will be used in - order to exclude a sample. - - n_jobs : int, optional (default=-1) - Number of threads to run the algorithm when it is possible. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - The methos is presented in [1]_. - - This class does not support mutli-class. - - References - ---------- - .. [1] G. Batista, B. Bazzan, M. Monard, "Balancing Training Data for - Automated Annotation of Keywords: a Case Study," In WOB, 10-18, 2003. - - """ - - def __init__(self, ratio='auto', random_state=None, verbose=True, - k=5, m=10, out_step=0.5, kind_smote='regular', - nn_method='exact', n_jobs=-1, **kwargs): - - """Initialise the SMOTE Tomek links object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the - number of samples in the minority class over the the number of - samples in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the - processing. - - k : int, optional (default=5) - Number of nearest neighbours to used to construct synthetic - samples. - - m : int, optional (default=10) - Number of nearest neighbours to use to determine if a minority - sample is in danger. - - out_step : float, optional (default=0.5) - Step size when extrapolating. - - kind_smote : str, optional (default='regular') - The type of SMOTE algorithm to use one of the following - options: 'regular', 'borderline1', 'borderline2', 'svm' - - nn_method : str, optional (default='exact') - The nearest neighbors method to use which can be either: - 'approximate' or 'exact'. 'approximate' will use LSH Forest while - 'exact' will be an exact search. - - n_jobs : int, optional (default=-1) - Number of threads to run the algorithm when it is possible. - - Returns - ------- - None - - """ - super(SMOTETomek, self).__init__(ratio=ratio, - random_state=random_state, - verbose=verbose) - - self.sm = SMOTE(ratio=ratio, random_state=random_state, - verbose=verbose, k=k, m=m, out_step=out_step, - kind=kind_smote, nn_method=nn_method, n_jobs=n_jobs, - **kwargs) - - self.tomek = TomekLinks(random_state=random_state, - verbose=verbose) - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(SMOTETomek, self).fit(X, y) - - # Fit using SMOTE - self.sm.fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(SMOTETomek, self).transform(X, y) - - # Transform using SMOTE - X, y = self.sm.transform(X, y) - - # Fit and transform using ENN - return self.tomek.fit_transform(X, y) diff --git a/unbalanced_dataset/combine/tests/test_smote_enn.py b/unbalanced_dataset/combine/tests/test_smote_enn.py deleted file mode 100644 index c48c95f45..000000000 --- a/unbalanced_dataset/combine/tests/test_smote_enn.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module SMOTE ENN.""" -from __future__ import print_function - -from unbalanced_dataset.combine import SMOTEENN - - -def test_smote_enn(): - """Test the SMOTE ENN function.""" - - print('Test SMOTE ENN') diff --git a/unbalanced_dataset/combine/tests/test_smote_tomek.py b/unbalanced_dataset/combine/tests/test_smote_tomek.py deleted file mode 100644 index cc9a3ff91..000000000 --- a/unbalanced_dataset/combine/tests/test_smote_tomek.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module SMOTE ENN.""" -from __future__ import print_function - -from unbalanced_dataset.combine import SMOTETomek - - -def test_smote_tomek(): - """Test the SMOTE TOMEK function.""" - - print('Test SMOTE TOMEK') diff --git a/unbalanced_dataset/ensemble/easy_ensemble.py b/unbalanced_dataset/ensemble/easy_ensemble.py deleted file mode 100644 index b92fc7b0c..000000000 --- a/unbalanced_dataset/ensemble/easy_ensemble.py +++ /dev/null @@ -1,199 +0,0 @@ -"""Class to perform under-sampling using easy ensemble.""" -from __future__ import print_function - -import numpy as np - -from sklearn.utils import check_X_y - -from .ensemble_sampler import EnsembleSampler -from ..under_sampling import RandomUnderSampler - - -class EasyEnsemble(EnsembleSampler): - """Perform under-sampling using an ensemble of random selection. - - This method iteratively select subset and make an ensemble of the - different sets. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=True) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - replacement : bool, optional (default=False) - Either or not to sample randomly with replacement or not. - - n_subsets : int, optional (default=10) - Number of subsets to generate. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - The method is described in [1]_. - - References - ---------- - .. [1] X. Y. Liu, J. Wu and Z. H. Zhou, "Exploratory Undersampling for - Class-Imbalance Learning," in IEEE Transactions on Systems, Man, and - Cybernetics, Part B (Cybernetics), vol. 39, no. 2, pp. 539-550, - April 2009. - - """ - - def __init__(self, ratio='auto', return_indices=False, verbose=True, - random_state=None, replacement=False, n_subsets=10): - """Initialise the easy ensenble object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=True) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - replacement : bool, optional (default=False) - Either or not to sample randomly with replacement or not. - - n_subsets : int, optional (default=10) - Number of subsets to generate. - - Returns - ------- - None - - """ - super(EasyEnsemble, self).__init__(ratio=ratio, - return_indices=return_indices, - verbose=verbose, - random_state=random_state) - self.replacement = replacement - self.n_subsets = n_subsets - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - # Call the parent function - super(EasyEnsemble, self).fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_subset, n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_subset, n_samples_new) - The corresponding label of `X_resampled` - - idx_under : ndarray, shape (n_subset, n_samples, ) - If `return_indices` is `True`, a boolean array will be returned - containing the which samples have been selected. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(EasyEnsemble, self).transform(X, y) - - X_resampled = [] - y_resampled = [] - if self.return_indices: - idx_under = [] - - for s in range(self.n_subsets): - if self.verbose: - print("Creation of the set #{}".format(s)) - - # Create the object for random under-sampling - rus = RandomUnderSampler(ratio=self.ratio_, - return_indices=self.return_indices, - random_state=self.rs_, - verbose=self.verbose, - replacement=self.replacement) - if self.return_indices: - sel_x, sel_y, sel_idx = rus.fit_transform(X, y) - else: - sel_x, sel_y = rus.fit_transform(X, y) - - X_resampled.append(sel_x) - y_resampled.append(sel_y) - if self.return_indices: - idx_under.append(sel_idx) - - if self.return_indices: - return (np.array(X_resampled), np.array(y_resampled), - np.array(idx_under)) - else: - return np.array(X_resampled), np.array(y_resampled) diff --git a/unbalanced_dataset/ensemble/ensemble_sampler.py b/unbalanced_dataset/ensemble/ensemble_sampler.py deleted file mode 100644 index 9f0f063bc..000000000 --- a/unbalanced_dataset/ensemble/ensemble_sampler.py +++ /dev/null @@ -1,98 +0,0 @@ -"""Base class for ensemble sampling.""" -from __future__ import print_function -from __future__ import division - -from abc import ABCMeta, abstractmethod - -from ..base_sampler import BaseSampler - - -class EnsembleSampler(BaseSampler): - """Base class for ensenble sampling. - - Warning: This class should not be used directly. Use the derive classes - instead. - - """ - - __metaclass__ = ABCMeta - - @abstractmethod - def __init__(self, ratio='auto', return_indices=False, random_state=None, - verbose=True): - """Initialize this object and its instance variables. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=True) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - Returns - ------- - None - - """ - super(EnsembleSampler, self).__init__(ratio=ratio, - random_state=random_state, - verbose=verbose) - self.return_indices = return_indices - - @abstractmethod - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - super(EnsembleSampler, self).fit(X, y) - - @abstractmethod - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_subset, n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_subset, n_samples_new) - The corresponding label of `X_resampled` - - idx_under : ndarray, shape (n_subset, n_samples, ) - If `return_indices` is `True`, a boolean array will be returned - containing the which samples have been selected. - - """ - super(EnsembleSampler, self).transform(X, y) diff --git a/unbalanced_dataset/ensemble/tests/test_balance_cascade.py b/unbalanced_dataset/ensemble/tests/test_balance_cascade.py deleted file mode 100644 index 4e6b07007..000000000 --- a/unbalanced_dataset/ensemble/tests/test_balance_cascade.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module balance cascade.""" -from __future__ import print_function - -from unbalanced_dataset.ensemble import BalanceCascade - - -def test_balance_cascade(): - """Test the balance cascade function.""" - - print('Test Balance Cascade') diff --git a/unbalanced_dataset/ensemble/tests/test_easy_ensemble.py b/unbalanced_dataset/ensemble/tests/test_easy_ensemble.py deleted file mode 100644 index 810740ed3..000000000 --- a/unbalanced_dataset/ensemble/tests/test_easy_ensemble.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module easy ensemble.""" -from __future__ import print_function - -from unbalanced_dataset.ensemble import EasyEnsemble - - -def test_easy_ensemble(): - """Test the easy ensemble function.""" - - print('Test Easy Ensemble') diff --git a/unbalanced_dataset/over_sampling/__init__.py b/unbalanced_dataset/over_sampling/__init__.py deleted file mode 100644 index 94260eb5b..000000000 --- a/unbalanced_dataset/over_sampling/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -The :mod:`unbalanced_dataset.over_sampling` provides a set of method to -perform over-sampling. -""" - -from .over_sampler import OverSampler -from .random_over_sampler import RandomOverSampler -from .smote import SMOTE - -__all__ = ['OverSampler', - 'RandomOverSampler', - 'SMOTE'] diff --git a/unbalanced_dataset/over_sampling/over_sampler.py b/unbalanced_dataset/over_sampling/over_sampler.py deleted file mode 100644 index 2d0fe4a83..000000000 --- a/unbalanced_dataset/over_sampling/over_sampler.py +++ /dev/null @@ -1,89 +0,0 @@ -"""Base class for over-sampling.""" -from __future__ import print_function -from __future__ import division - -from abc import ABCMeta, abstractmethod - -from ..base_sampler import BaseSampler - - -class OverSampler(BaseSampler): - """Base class for over-sampling. - - Warning: This class should not be used directly. Use the derive classes - instead. - - """ - - __metaclass__ = ABCMeta - - @abstractmethod - def __init__(self, ratio='auto', random_state=None, verbose=True): - """Initialize this object and its instance variables. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - Returns - ------- - None - - """ - - super(OverSampler, self).__init__(ratio=ratio, - random_state=random_state, - verbose=verbose) - - @abstractmethod - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - super(OverSampler, self).fit(X, y) - - @abstractmethod - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - super(OverSampler, self).transform(X, y) diff --git a/unbalanced_dataset/over_sampling/random_over_sampler.py b/unbalanced_dataset/over_sampling/random_over_sampler.py deleted file mode 100644 index d66a7719b..000000000 --- a/unbalanced_dataset/over_sampling/random_over_sampler.py +++ /dev/null @@ -1,173 +0,0 @@ -"""Class to perform random over-sampling.""" -from __future__ import print_function -from __future__ import division - -import numpy as np - -from collections import Counter - -from sklearn.utils import check_X_y - -from .over_sampler import OverSampler - - -class RandomOverSampler(OverSampler): - """Class to perform random over-sampling. - - Object to over-sample the minority class(es) by picking samples at random - with replacement. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - Supports multiple classes. - """ - - def __init__(self, ratio='auto', random_state=None, verbose=True): - """Initialize this object and its instance variables. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - Returns - ------- - None - - """ - super(RandomOverSampler, self).__init__(ratio=ratio, - random_state=random_state, - verbose=random_state) - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - # Call the parent function - super(RandomOverSampler, self).fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - # Call the parent function - super(RandomOverSampler, self).transform(X, y) - - # Keep the samples from the majority class - X_resampled = X[y == self.maj_c_] - y_resampled = y[y == self.maj_c_] - - # Loop over the other classes over picking at random - for key in self.stats_c_.keys(): - - # If this is the majority class, skip it - if key == self.maj_c_: - continue - - # Define the number of sample to create - if self.ratio_ == 'auto': - num_samples = self.stats_c_[self.maj_c_] - self.stats_c_[key] - else: - num_samples = ((self.ratio_ * self.stats_c_[self.maj_c_]) - - self.stats_c_[key]) - - # Pick some elements at random - np.random.seed(self.rs_) - indx = np.random.randint(low=0, high=self.stats_c_[key], - size=num_samples) - - # Concatenate to the majority class - X_resampled = np.concatenate((X_resampled, - X[y == key], - X[y == key][indx]), - axis=0) - - y_resampled = np.concatenate((y_resampled, - y[y == key], - y[y == key][indx]), axis=0) - - if self.verbose: - print("Over-sampling performed: {}".format(Counter(y_resampled))) - - return X_resampled, y_resampled diff --git a/unbalanced_dataset/over_sampling/tests/test_random_over_sampler.py b/unbalanced_dataset/over_sampling/tests/test_random_over_sampler.py deleted file mode 100644 index 98ae4f44b..000000000 --- a/unbalanced_dataset/over_sampling/tests/test_random_over_sampler.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module over sampler.""" -from __future__ import print_function - -from unbalanced_dataset.over_sampling import RandomOverSampler - - -def test_over_sampler(): - """Test the random over sampler function.""" - - print('Test Random Over Sampler') diff --git a/unbalanced_dataset/over_sampling/tests/test_smote.py b/unbalanced_dataset/over_sampling/tests/test_smote.py deleted file mode 100644 index 7fc8837fc..000000000 --- a/unbalanced_dataset/over_sampling/tests/test_smote.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module SMOTE.""" -from __future__ import print_function - -from unbalanced_dataset.over_sampling import SMOTE - - -def test_smote(): - """Test the SMOTE function.""" - - print('Test SMOTE') diff --git a/unbalanced_dataset/under_sampling/cluster_centroids.py b/unbalanced_dataset/under_sampling/cluster_centroids.py deleted file mode 100644 index 1d4346065..000000000 --- a/unbalanced_dataset/under_sampling/cluster_centroids.py +++ /dev/null @@ -1,196 +0,0 @@ -"""Class to perform under-sampling by generating centroids based on -clustering.""" -from __future__ import print_function -from __future__ import division - -import numpy as np - -from collections import Counter - -from sklearn.cluster import KMeans -from sklearn.utils import check_X_y - -from .under_sampler import UnderSampler - - -class ClusterCentroids(UnderSampler): - """Class to perform under-sampling by generating centroids base on - clustering. - - Experimental method that under samples the majority class by replacing a - cluster of majority samples by the cluster centroid of a KMeans algorithm. - This algorithm keeps N majority samples by fitting the KMeans algorithm - with N cluster to the majority class and using the coordinates of the N - cluster centroids as the new majority samples. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - **kwargs : keywords - Parameter to use for the KMeans object. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - This class support multi-class. - - """ - - def __init__(self, ratio='auto', random_state=None, verbose=True, - n_jobs=-1, **kwargs): - """Initialisation of clustering centroids object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - **kwargs : keywords - Parameter to use for the KMeans object. - - Returns - ------- - None - - """ - super(ClusterCentroids, self).__init__(ratio=ratio, - return_indices=False, - random_state=random_state, - verbose=verbose) - self.n_jobs = n_jobs - self.kwargs = kwargs - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(ClusterCentroids, self).fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(ClusterCentroids, self).transform(X, y) - - # Compute the number of cluster needed - if self.ratio_ == 'auto': - num_samples = self.stats_c_[self.min_c_] - else: - num_samples = int(self.stats_c_[self.min_c_] / self.ratio_) - - # Create the clustering object - kmeans = KMeans(n_clusters=num_samples, random_state=self.rs_) - kmeans.set_params(**self.kwargs) - - # Start with the minority class - X_min = X[y == self.min_c_] - y_min = y[y == self.min_c_] - - # All the minority class samples will be preserved - X_resampled = X_min.copy() - y_resampled = y_min.copy() - - # Loop over the other classes under picking at random - for key in self.stats_c_.keys(): - - # If the minority class is up, skip it. - if key == self.min_c_: - continue - - # Find the centroids via k-means - kmeans.fit(X[y == key]) - centroids = kmeans.cluster_centers_ - - # Concatenate to the minority class - X_resampled = np.concatenate((X_resampled, centroids), axis=0) - y_resampled = np.concatenate((y_resampled, np.array([key] * - num_samples)), - axis=0) - - if self.verbose: - print("Under-sampling performed: {}".format(Counter(y_resampled))) - - return X_resampled, y_resampled diff --git a/unbalanced_dataset/under_sampling/edited_nearest_neighbours.py b/unbalanced_dataset/under_sampling/edited_nearest_neighbours.py deleted file mode 100644 index 02a088085..000000000 --- a/unbalanced_dataset/under_sampling/edited_nearest_neighbours.py +++ /dev/null @@ -1,251 +0,0 @@ -"""Class to perform under-sampling based on the edited nearest neighbour -method.""" -from __future__ import print_function -from __future__ import division - -import numpy as np - -from collections import Counter - -from scipy.stats import mode - -from sklearn.utils import check_X_y -from sklearn.neighbors import NearestNeighbors - -from .under_sampler import UnderSampler - - -class EditedNearestNeighbours(UnderSampler): - """Class to perform under-sampling based on the edited nearest neighbour - method. - - Parameters - ---------- - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - kind_sel : str, optional (default='all') - Strategy to use in order to exclude samples. - - - If 'all', all neighbours will have to agree with the samples of - interest to not be excluded. - - If 'mode', the majority vote of the neighbours will be used in - order to exclude a sample. - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - The method is based on [1]_. - - This class supports multi-class. - - References - ---------- - .. [1] D. Wilson, "Asymptotic Properties of Nearest Neighbor Rules Using - Edited Data," In IEEE Transactions on Systems, Man, and Cybernetrics, - vol. 2 (3), pp. 408-421, 1972. - - """ - - def __init__(self, return_indices=False, random_state=None, verbose=True, - size_ngh=3, kind_sel='all', n_jobs=-1): - """Initialisation of ENN object. - - Parameters - ---------- - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - size_ngh : int, optional (default=3) - Size of the neighbourhood to consider to compute the average - distance to the minority point samples. - - kind_sel : str, optional (default='all') - Strategy to use in order to exclude samples. - - - If 'all', all neighbours will have to agree with the samples of - interest to not be excluded. - - If 'mode', the majority vote of the neighbours will be used in - order to exclude a sample. - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Returns - ------- - None - - """ - super(EditedNearestNeighbours, self).__init__( - return_indices=return_indices, - random_state=random_state, - verbose=verbose) - - self.size_ngh = size_ngh - possible_kind_sel = ('all', 'mode') - if kind_sel not in possible_kind_sel: - raise ValueError('Unknown kind_sel parameters.') - else: - self.kind_sel = kind_sel - self.n_jobs = n_jobs - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(EditedNearestNeighbours, self).fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - idx_under : ndarray, shape (n_samples, ) - If `return_indices` is `True`, a boolean array will be returned - containing the which samples have been selected. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(EditedNearestNeighbours, self).transform(X, y) - - # Start with the minority class - X_min = X[y == self.min_c_] - y_min = y[y == self.min_c_] - - # All the minority class samples will be preserved - X_resampled = X_min.copy() - y_resampled = y_min.copy() - - # If we need to offer support for the indices - if self.return_indices: - idx_under = np.nonzero(y == self.min_c_)[0] - - # Create a k-NN to fit the whole data - nn_obj = NearestNeighbors(n_neighbors=self.size_ngh + 1, - n_jobs=self.n_jobs) - # Fit the data - nn_obj.fit(X) - - # Loop over the other classes under picking at random - for key in self.stats_c_.keys(): - - # If the minority class is up, skip it - if key == self.min_c_: - continue - - # Get the sample of the current class - sub_samples_x = X[y == key] - sub_samples_y = y[y == key] - - # Find the NN for the current class - nnhood_idx = nn_obj.kneighbors(sub_samples_x, - return_distance=False)[:, 1:] - - # Get the label of the corresponding to the index - nnhood_label = y[nnhood_idx] - - # Check which one are the same label than the current class - # Make the majority vote - if self.kind_sel == 'mode': - nnhood_label, _ = mode(nnhood_label, axis=1) - nnhood_bool = (np.ravel(nnhood_label) == sub_samples_y) - elif self.kind_sel == 'all': - nnhood_label = (nnhood_label == key) - nnhood_bool = np.all(nnhood_label, axis=1) - - # Get the samples which agree all together - sel_x = np.squeeze(sub_samples_x[np.nonzero(nnhood_bool), :]) - sel_y = sub_samples_y[np.nonzero(nnhood_bool)] - - # If we need to offer support for the indices selected - if self.return_indices: - idx_tmp = np.nonzero(y == key)[0][np.nonzero(nnhood_bool)] - idx_under = np.concatenate((idx_under, idx_tmp), axis=0) - - X_resampled = np.concatenate((X_resampled, sel_x), axis=0) - y_resampled = np.concatenate((y_resampled, sel_y), axis=0) - - if self.verbose: - print("Under-sampling performed: {}".format(Counter(y_resampled))) - - # Check if the indices of the samples selected should be returned too - if self.return_indices: - # Return the indices of interest - return X_resampled, y_resampled, idx_under - else: - return X_resampled, y_resampled diff --git a/unbalanced_dataset/under_sampling/instance_hardness_threshold.py b/unbalanced_dataset/under_sampling/instance_hardness_threshold.py deleted file mode 100644 index 82ee129e4..000000000 --- a/unbalanced_dataset/under_sampling/instance_hardness_threshold.py +++ /dev/null @@ -1,256 +0,0 @@ -"""Class to perform under-sampling based on the instance hardness -threshold.""" -from __future__ import print_function -from __future__ import division - -import numpy as np - -from collections import Counter - -from scipy.stats import mode - -from sklearn.utils import check_X_y -from sklearn.neighbors import NearestNeighbors -from sklearn.cross_validation import StratifiedKFold - -from .under_sampler import UnderSampler - - -class InstanceHardnessThreshold(UnderSampler): - """Class to perform under-sampling based on the instance hardness - threshold. - - Parameters - ---------- - estimator : sklearn classifier - Classifier to be used in to estimate instance hardness of the samples. - - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - kind_sel : str, optional (default='maj') - - If 'maj', only samples of the majority class are excluded. - - If 'all', samples of all classes are excluded. - - cv : int, optional (default=5) - Number of folds to be used when estimating samples' instance hardness. - - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - estimator : sklearn classifier - Classifier used in to estimate instance hardness of the samples. - - threshold : float, optional (default=0.3) - Threshold to be used for selecting samples (0.01 to 0.99). - - kind_sel : str, optional (default='maj') - - If 'maj', only samples of the majority class are excluded. - - If 'all', samples of all classes are excluded. - - cv : int, optional (default=5) - Number of folds used when estimating samples' instance hardness. - - Notes - ----- - The method is based on [1]_. - - This class supports multi-class. - - References - ---------- - .. [1] D. Smith, Michael R., Tony Martinez, and Christophe Giraud-Carrier. - "An instance level analysis of data complexity." Machine learning - 95.2 (2014): 225-256. - - """ - - def __init__(self, estimator, ratio='auto', kind_sel='maj', cv=5, - return_indices=False, random_state=None, verbose=True, n_jobs=-1): - - """Initialisation of Instance Hardness Threshold object. - - Parameters - ---------- - estimator : sklearn classifier - Classifier to be used in to estimate instance hardness of the samples. - - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - kind_sel : str, optional (default='maj') - - If 'maj', only samples of the majority class are excluded. - - If 'all', samples of all classes are excluded. - - cv : int, optional (default=5) - Number of folds to be used when estimating samples' instance hardness. - - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Returns - ------- - None - - """ - super(InstanceHardnessThreshold, self).__init__( - ratio=ratio, - return_indices=return_indices, - random_state=random_state, - verbose=verbose) - - if not hasattr(estimator, 'predict_proba'): - raise ValueError('Estimator does not have predict_proba method.') - else: - self.estimator = estimator - - #self.threshold = threshold - - possible_kind_sel = ('maj', 'all') - if kind_sel not in possible_kind_sel: - raise ValueError('Unknown kind_sel parameter.') - else: - self.kind_sel = kind_sel - - self.cv = cv - self.n_jobs = n_jobs - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(InstanceHardnessThreshold, self).fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - idx_under : ndarray, shape (n_samples, ) - If `return_indices` is `True`, a boolean array will be returned - containing the which samples have been selected. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(InstanceHardnessThreshold, self).transform(X, y) - - skf = StratifiedKFold(y, n_folds=self.cv, shuffle=False, - random_state=self.rs_) - - probabilities = np.zeros(y.shape[0], dtype=float) - - for train_index, test_index in skf: - X_train, X_test = X[train_index], X[test_index] - y_train, y_test = y[train_index], y[test_index] - - self.estimator.fit(X_train, y_train) - - probs = self.estimator.predict_proba(X_test) - classes = self.estimator.classes_ - probabilities[test_index] = [ - probs[l,np.where(classes == c)[0][0]] - for l, c in enumerate(y_test)] - - if self.kind_sel == 'all': - mask = probabilities >= self.threshold - elif self.kind_sel == 'maj': - ratios = np.zeros(100, ) - probs = np.linspace(0., 1., 100) - - for i, p in enumerate(probs): - ratios[i] = self.stats_c_[self.min_c_] / np.count_nonzero(np.logical_or(probabilities >= p, y == self.min_c_)) - ratios = np.abs(ratios - self.ratio) - - threshold = probs[ratios.argmin()] - mask = np.logical_or(probabilities >= self.threshold, y == self.min_c_) - - X_resampled = X[mask] - y_resampled = y[mask] - - # If we need to offer support for the indices - if self.return_indices: - idx_under = np.nonzero(mask)[0] - return X_resampled, y_resampled, idx_under - else: - return X_resampled, y_resampled diff --git a/unbalanced_dataset/under_sampling/random_under_sampler.py b/unbalanced_dataset/under_sampling/random_under_sampler.py deleted file mode 100644 index da5e32fae..000000000 --- a/unbalanced_dataset/under_sampling/random_under_sampler.py +++ /dev/null @@ -1,204 +0,0 @@ -"""Class to perform random under-sampling.""" -from __future__ import print_function -from __future__ import division - -import numpy as np - -from collections import Counter - -from sklearn.utils import check_X_y - -from .under_sampler import UnderSampler - - -class RandomUnderSampler(UnderSampler): - """Class to perform random under-sampling. - - Object to under sample the majority class(es) by randomly picking samples - with or without replacement. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Attributes - ---------- - ratio_ : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - rs_ : int or None, optional (default=None) - Seed for random number generation. - - min_c_ : str or int - The identifier of the minority class. - - max_c_ : str or int - The identifier of the majority class. - - stats_c_ : dict of str/int : int - A dictionary in which the number of occurences of each class is - reported. - - Notes - ----- - This class supports multi-class. - - """ - - def __init__(self, ratio='auto', return_indices=False, random_state=None, - verbose=True, replacement=True): - """Initialse the random under sampler object. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - n_jobs : int, optional (default=-1) - The number of thread to open when it is possible. - - Returns - ------- - None - - """ - super(RandomUnderSampler, self).__init__(ratio=ratio, - return_indices=return_indices, - random_state=random_state, - verbose=verbose) - - self.replacement = replacement - - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(RandomUnderSampler, self).fit(X, y) - - return self - - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - idx_under : ndarray, shape (n_samples, ) - If `return_indices` is `True`, a boolean array will be returned - containing the which samples have been selected. - - """ - # Check the consistency of X and y - X, y = check_X_y(X, y) - - super(RandomUnderSampler, self).transform(X, y) - - # Compute the number of cluster needed - if self.ratio_ == 'auto': - num_samples = self.stats_c_[self.min_c_] - else: - num_samples = int(self.stats_c_[self.min_c_] / self.ratio_) - - # All the minority class samples will be preserved - X_resampled = X[y == self.min_c_] - y_resampled = y[y == self.min_c_] - - # If we need to offer support for the indices - if self.return_indices: - idx_under = np.nonzero(y == self.min_c_)[0] - - # Loop over the other classes under picking at random - for key in self.stats_c_.keys(): - - # If the minority class is up, skip it - if key == self.min_c_: - continue - - # Pick some elements at random - np.random.seed(self.rs_) - indx = range(np.count_nonzero(y == key)) - indx = np.random.choice(indx, size=num_samples, - replace=self.replacement) - - # If we need to offer support for the indices selected - if self.return_indices: - idx_tmp = np.nonzero(y == key)[0][indx] - idx_under = np.concatenate((idx_under, idx_tmp), axis=0) - - # Concatenate to the minority class - X_resampled = np.concatenate((X_resampled, X[y == key][indx]), - axis=0) - y_resampled = np.concatenate((y_resampled, y[y == key][indx]), - axis=0) - - if self.verbose: - print("Under-sampling performed: {}".format(Counter(y_resampled))) - - # Check if the indices of the samples selected should be returned too - if self.return_indices: - # Return the indices of interest - return X_resampled, y_resampled, idx_under - else: - return X_resampled, y_resampled diff --git a/unbalanced_dataset/under_sampling/tests/test_cluster_centroids.py b/unbalanced_dataset/under_sampling/tests/test_cluster_centroids.py deleted file mode 100644 index b2dfcaefd..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_cluster_centroids.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module cluster centroids.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import ClusterCentroids - - -def test_cluster_centroids(): - """Test the cluster centroids function.""" - - print('Test Cluster Centroids') diff --git a/unbalanced_dataset/under_sampling/tests/test_condensed_nearest_neighbour.py b/unbalanced_dataset/under_sampling/tests/test_condensed_nearest_neighbour.py deleted file mode 100644 index 9ebb9cd25..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_condensed_nearest_neighbour.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module condensed nearest neighbour.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import CondensedNearestNeighbour - - -def test_condensed_nearest_neighbour(): - """Test the condensed nearest neighbour function.""" - - print('Test Condensed Nearest Neighbour') diff --git a/unbalanced_dataset/under_sampling/tests/test_nearmiss.py b/unbalanced_dataset/under_sampling/tests/test_nearmiss.py deleted file mode 100644 index acd3c28ca..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_nearmiss.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module nearmiss.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import NearMiss - - -def test_nearmiss(): - """Test the nearmiss function.""" - - print('Test NearMiss') diff --git a/unbalanced_dataset/under_sampling/tests/test_neighbourhood_cleaning_rule.py b/unbalanced_dataset/under_sampling/tests/test_neighbourhood_cleaning_rule.py deleted file mode 100644 index 36208893d..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_neighbourhood_cleaning_rule.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module neighbourhood cleaning rule.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import NeighbourhoodCleaningRule - - -def test_neighbourhood_cleaning_rule(): - """Test the neighbourhood cleaning rule function.""" - - print('Test Neighbourhood Cleaning Rule') diff --git a/unbalanced_dataset/under_sampling/tests/test_one_sided_selection.py b/unbalanced_dataset/under_sampling/tests/test_one_sided_selection.py deleted file mode 100644 index 7e4c507af..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_one_sided_selection.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module one sided selection.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import OneSidedSelection - - -def test_one_sided_selection(): - """Test the one sided selection function.""" - - print('Test One Sided Selection') diff --git a/unbalanced_dataset/under_sampling/tests/test_random_under_sampler.py b/unbalanced_dataset/under_sampling/tests/test_random_under_sampler.py deleted file mode 100644 index e1e886b2c..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_random_under_sampler.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module under sampler.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import RandomUnderSampler - - -def test_random_under_sampler(): - """Test the random under sampler function.""" - - print('Test Random Under Sampler') diff --git a/unbalanced_dataset/under_sampling/tests/test_tomek_links.py b/unbalanced_dataset/under_sampling/tests/test_tomek_links.py deleted file mode 100644 index 101c1593b..000000000 --- a/unbalanced_dataset/under_sampling/tests/test_tomek_links.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module Tomek's links.""" -from __future__ import print_function - -from unbalanced_dataset.under_sampling import TomekLinks - - -def test_tomek_links(): - """Test the Tomek links function.""" - - print('Test Tomek Links') diff --git a/unbalanced_dataset/under_sampling/under_sampler.py b/unbalanced_dataset/under_sampling/under_sampler.py deleted file mode 100644 index 8de1c1ccb..000000000 --- a/unbalanced_dataset/under_sampling/under_sampler.py +++ /dev/null @@ -1,96 +0,0 @@ -"""Base class for under-sampling.""" -from __future__ import print_function -from __future__ import division - -from abc import ABCMeta, abstractmethod - -from ..base_sampler import BaseSampler - - -class UnderSampler(BaseSampler): - """Base class for under-sampling. - - Warning: This class should not be used directly. Use the derive classes - instead. - - """ - - __metaclass__ = ABCMeta - - @abstractmethod - def __init__(self, ratio='auto', return_indices=False, random_state=None, - verbose=True): - """Initialize this object and its instance variables. - - Parameters - ---------- - ratio : str or float, optional (default='auto') - If 'auto', the ratio will be defined automatically to balanced - the dataset. Otherwise, the ratio will corresponds to the number - of samples in the minority class over the the number of samples - in the majority class. - - return_indices : bool, optional (default=False) - Either to return or not the indices which will be selected from - the majority class. - - random_state : int or None, optional (default=None) - Seed for random number generation. - - verbose : bool, optional (default=True) - Boolean to either or not print information about the processing - - Returns - ------- - None - - """ - - super(UnderSampler, self).__init__(ratio=ratio, - random_state=random_state, - verbose=verbose) - - self.return_indices = return_indices - - @abstractmethod - def fit(self, X, y): - """Find the classes statistics before to perform sampling. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - self : object, - Return self. - - """ - super(UnderSampler, self).fit(X, y) - - @abstractmethod - def transform(self, X, y): - """Resample the dataset. - - Parameters - ---------- - X : ndarray, shape (n_samples, n_features) - Matrix containing the data which have to be sampled. - - y : ndarray, shape (n_samples, ) - Corresponding label for each sample in X. - - Returns - ------- - X_resampled : ndarray, shape (n_samples_new, n_features) - The array containing the resampled data. - - y_resampled : ndarray, shape (n_samples_new) - The corresponding label of `X_resampled` - - """ - super(UnderSampler, self).transform(X, y) diff --git a/unbalanced_dataset/utils/__init__.py b/unbalanced_dataset/utils/__init__.py deleted file mode 100644 index 16284abcc..000000000 --- a/unbalanced_dataset/utils/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -""" -The :mod:`unbalanced_dataset.utils` provides some helper methods. -""" - -from .pipeline import Pipeline - -__all__ = ['Pipeline'] diff --git a/unbalanced_dataset/utils/pipeline.py b/unbalanced_dataset/utils/pipeline.py deleted file mode 100644 index 1d69b7f0a..000000000 --- a/unbalanced_dataset/utils/pipeline.py +++ /dev/null @@ -1,54 +0,0 @@ -"""A helper object to concatenate a number of re sampling objects and -streamline the re-sampling process.""" -from __future__ import print_function -from __future__ import division - - -class Pipeline(object): - """A helper object to concatenate a number of re sampling objects and - streamline the re-sampling process. - - Parameters - ---------- - - Attributes - ---------- - - Notes - ----- - - """ - - def __init__(self, x, y): - """ - :param x: - Feature matrix. - - :param y: - Target vectors. - """ - - self.x = x - self.y = y - - def pipeline(self, list_methods): - """ - :param list_methods: - Pass the methods to be used in a list, in the order they will be - used. - - :return: - The re-sampled dataset. - """ - - # Initialize with the original dataset. - x, y = self.x, self.y - - # Go through the list of methods and fit_transform each to the result - # of the last. - for met in list_methods: - x, y = met.fit_transform(x, y) - print(x.shape) - - # Return the re-sampled dataset. - return x, y diff --git a/unbalanced_dataset/utils/tests/test_pipeline.py b/unbalanced_dataset/utils/tests/test_pipeline.py deleted file mode 100644 index ca77b4a50..000000000 --- a/unbalanced_dataset/utils/tests/test_pipeline.py +++ /dev/null @@ -1,10 +0,0 @@ -"""Test the module pipeline.""" -from __future__ import print_function - -from unbalanced_dataset.utils import Pipeline - - -def test_pipeline(): - """Test the pipeline function.""" - - print('Test Pipeline')