Metadata-Version: 2.1
Name: calf_milp
Version: 0.0.2
Summary: A classifier that endeavors to solve the saddle point problem for AUC maximization.
Home-page: https://github.com/hrolfrc/calf-milp
Download-URL: https://github.com/hrolfrc/calf-milp
Maintainer: Carlson Research, LLC
Maintainer-email: hrolfrc@gmail.com
License: new BSD
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: License :: OSI Approved
Classifier: Topic :: Scientific/Engineering
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Provides-Extra: tests
Provides-Extra: docs
License-File: LICENSE

.. -*- mode: rst -*-

|ReadTheDocs|_

.. |ReadTheDocs| image:: https://readthedocs.org/projects/calf-milp/badge/?version=latest
.. _ReadTheDocs: https://calf-milp.readthedocs.io/en/latest/?badge=latest

CalfMilp - Saddle point problem for AUC maximization
============================================================

An AUC optimizing binomial classifier.

Contact
------------------
Rolf Carlson hrolfrc@gmail.com

Install
------------------
Use pip to install calf-milp.

``pip install calf-milp``

Introduction
------------------
This is a python implementation of a classifier that endeavors to solve the `saddle point problem for AUC maximization`_. [1]

CalfMilp provides classification and prediction for two classes, the binomial case.  Small to medium problems are supported.  This is research code and a work in progress.

CalfMilp is designed for use with scikit-learn_ pipelines and composite estimators.

.. _scikit-learn: https://scikit-learn.org

.. _`saddle point problem for AUC maximization`: https://www.frontiersin.org/articles/10.3389/fams.2019.00030/full

Example
------------------

.. code:: ipython2

    from calf-milp import CalfMilp
    from sklearn.datasets import make_classification
    from sklearn.model_selection import train_test_split

Make a classification problem
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: ipython2

    seed = 42
    X, y = make_classification(
        n_samples=30,
        n_features=5,
        n_informative=2,
        n_redundant=2,
        n_classes=2,
        random_state=seed
    )
    X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=seed)

Train the classifier
^^^^^^^^^^^^^^^^^^^^

.. code:: ipython2

    cls = CalfMilp().fit(X_train, y_train)

Get the score on unseen data
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code:: ipython2

    cls.score(X_test, y_test)


.. parsed-literal::

    1.0

References
------------------
[1] Natole Jr, Michael & Ying, Yiming & Lyu, Siwei. (2019).
Stochastic AUC Optimization Algorithms With Linear Convergence.
Frontiers in Applied Mathematics and Statistics. 5. 10.3389/fams.2019.00030.
