Python package for multiple instance learning (MIL). This wraps single instance learning algorithms so that they can be fitted to data for MIL.
- support count-based multiple instance assumptions (see wikipedia)
- support multi-class setting
- support scikit-learn algorithms (such as
RandomForestClassifier,SVC,LogisticRegression)
pip install milwrapFor 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.
milwrap is available under the MIT License.