package quickml.supervised.classifier.temporallyWeightClassifier; import org.junit.Ignore; import org.testng.Assert; import org.testng.annotations.Test; import quickml.data.AttributesMap; import quickml.InstanceLoader; import quickml.supervised.PredictiveModelBuilder; import quickml.data.instances.ClassifierInstance; import quickml.data.OnespotDateTimeExtractor; import quickml.supervised.classifier.TreeBuilderTestUtils; import quickml.supervised.tree.decisionTree.DecisionTreeBuilder; import quickml.supervised.tree.decisionTree.scorers.PenalizedSplitDiffScorerFactory; import java.util.LinkedList; import java.util.List; /** * Created by chrisreeves on 6/23/14. */ public class TemporallyReweightedClassifierBuilderTest { @Test(expectedExceptions = IllegalArgumentException.class) public void testError3ClassificationsInDataSet() throws Exception { final List<ClassifierInstance> instances = new LinkedList<>(); AttributesMap map = AttributesMap.newHashMap(); map.put("2", "2"); instances.add(new ClassifierInstance(map, "1")); instances.add(new ClassifierInstance(map, "2")); instances.add(new ClassifierInstance(map, "3")); PredictiveModelBuilder predictiveModelBuilder = new DecisionTreeBuilder(); final TemporallyReweightedClassifierBuilder cpmb = new TemporallyReweightedClassifierBuilder(predictiveModelBuilder, 1.0, new OnespotDateTimeExtractor()); cpmb.buildPredictiveModel(instances); } @Ignore("Reweighting implementation is broken currently") @Test public void simpleAdTest() throws Exception { final List<ClassifierInstance> instances = InstanceLoader.getAdvertisingInstances(); final PredictiveModelBuilder tb = new DecisionTreeBuilder().scorerFactory(new PenalizedSplitDiffScorerFactory()); final TemporallyReweightedClassifierBuilder builder = new TemporallyReweightedClassifierBuilder(tb, 1.0, new OnespotDateTimeExtractor()); final long startTime = System.currentTimeMillis(); final TemporallyReweightedClassifier model = builder.buildPredictiveModel(instances); TreeBuilderTestUtils.serializeDeserialize(model); Assert.assertTrue((System.currentTimeMillis() - startTime) < 20000, "Building this node should take far less than 20 seconds"); } }