private MIM() {}
@Test
    public void mimTest() {
        LabelFactory lblFactory = new LabelFactory();
        MutableDataset<Label> dataset = new MutableDataset<>(new SimpleDataSourceProvenance("Test",lblFactory),lblFactory);

        String[] featureNames = new String[]{"A","B","C","D","E"};
        Label one = new Label("ONE");
        Label two = new Label("TWO");
        Example<Label> ex = new ArrayExample<>(one,featureNames,new double[]{0,0,0,0,0});
        dataset.add(ex);

        ex = new ArrayExample<>(one,featureNames,new double[]{1,0,1,0,0});
        dataset.add(ex);

        ex = new ArrayExample<>(one,featureNames,new double[]{0,0,0,1,0});
        dataset.add(ex);

        ex = new ArrayExample<>(one,featureNames,new double[]{1,1,0,0,0});
        dataset.add(ex);

        ex = new ArrayExample<>(two,featureNames,new double[]{0,0,1,0,1});
        dataset.add(ex);

        ex = new ArrayExample<>(two,featureNames,new double[]{1,1,1,0,1});
        dataset.add(ex);

        ex = new ArrayExample<>(two,featureNames,new double[]{0,1,1,1,1});
        dataset.add(ex);

        ex = new ArrayExample<>(two,featureNames,new double[]{1,1,0,1,1});
        dataset.add(ex);

        MIM mim = new MIM(2);

        SelectedFeatureSet sfs = mim.select(dataset);

        List<String> names = sfs.featureNames();
        List<Double> scores = sfs.featureScores();

        assertTrue(sfs.isOrdered());
        assertEquals(5,names.size());
        assertEquals(5,scores.size());

        assertEquals(Arrays.asList("E","B","C","D","A"),sfs.featureNames());
        assertEquals(Arrays.asList(1.0, 0.1887218755408671, 0.1887218755408671, 0.0487949406953985, 0.0),sfs.featureScores());
    }