milwrap

Wrapping single instance learning algorithms for fitting them to data for multiple instance learning

MIT License

Downloads
88
Stars
1
Committers
2

milwrap

Python package for multiple instance learning (MIL). This wraps single instance learning algorithms so that they can be fitted to data for MIL.

Features

  • support count-based multiple instance assumptions (see wikipedia)
  • support multi-class setting
  • support scikit-learn algorithms (such as RandomForestClassifier, SVC, LogisticRegression)

Installation

pip install milwrap

Usage

For more information, see Use scikit-learn models in multiple instance learning based on the count-based assumption.

# Prepare single-instance supervised-learning algorithm
# Note: only supports models with predict_proba() method.
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()

# Wrap it with MilCountBasedMultiClassLearner
from milwrap import MilCountBasedMultiClassLearner 
mil_learner = MilCountBasedMultiClassLearner(clf)

# Prepare follwing dataset
#
# - bags ... list of np.ndarray
#            (num_instance_in_the_bag * num_features)
# - lower_threshold ... np.ndarray (num_bags * num_classes)
# - upper_threshold ... np.ndarray (num_bags * num_classes)
#
# bags[i_bag] contains not less than lower_thrshold[i_bag, i_class]
# i_class instances.

# run multiple instance learning
clf_mil, y_mil = learner.fit(
    bags,
    lower_threshold,
    upper_threshold,
    n_classes,
    max_iter=10)

# after multiple instance learning,
# you can predict instance class
clf_mil.predict([instance_feature])

See tests/test_countbased.py for an example of a fully working test data generation process.

License

milwrap is available under the MIT License.

Package Rankings
Top 29.07% on Pypi.org
Badges
Extracted from project README
Build Status Open In Colab
Related Projects