package quickml.supervised.classifier.logRegression;
import org.junit.Ignore;
import org.junit.Test;
import quickml.data.AttributesMap;
import quickml.data.instances.ClassifierInstance;
import quickml.supervised.classifier.logisticRegression.InstanceTransformerUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
/**
* Created by chrisreeves on 10/14/15.
*/
public class InstanceTransformerUtilsTest {
@Ignore("need to update this test to be compatible with inverted index")
@Test
public void testGetAttributeProductCounts() throws Exception {
Map<String, Integer> map = null;//InstanceTransformerUtils.addProductAttributes(getInstances());
assertEquals(2, (int) map.get("feature1-feature2"));
assertEquals(1, (int) map.get("feature1-feature3"));
assertEquals(1, (int) map.get("feature1-feature4"));
assertEquals(2, (int) map.get("feature2-feature3"));
assertEquals(String.valueOf(map), 4, map.size());
}
@Test
public void testPopulateNameToIndexMap() throws Exception {
HashMap<String, Integer> map = InstanceTransformerUtils.populateNameToIndexMap(getInstances(), true);
//order isn't deterministic, verify map contains every feature and index
assertTrue(map.containsKey("feature1"));
assertTrue(map.containsKey("feature2"));
assertTrue(map.containsKey("feature3"));
assertTrue(map.containsKey("feature4"));
assertTrue(map.containsKey("feature5"));
assertTrue(map.containsValue(0));
assertTrue(map.containsValue(1));
assertTrue(map.containsValue(2));
assertTrue(map.containsValue(3));
assertTrue(map.containsValue(4));
}
@Test
public void testGetNumericClassLabels() throws Exception {
Map<Serializable, Double> labels = InstanceTransformerUtils.determineNumericClassLabels(getInstances());
assertTrue(labels.size() == 2);
assertTrue(labels.containsKey(1.0));
assertTrue(labels.containsKey(0.0));
}
private List<ClassifierInstance> getInstances() {
List<ClassifierInstance> instances = new ArrayList<>();
AttributesMap attributesMap = new AttributesMap();
attributesMap.put("feature1", 1.0);
attributesMap.put("feature2", 10.0);
instances.add(new ClassifierInstance(attributesMap, 1.0, 1.0));
attributesMap = new AttributesMap();
attributesMap.put("feature1", 1.0);
attributesMap.put("feature2", 10.0);
attributesMap.put("feature3", 1.0);
instances.add(new ClassifierInstance(attributesMap, 1.0, 1.0));
attributesMap = new AttributesMap();
attributesMap.put("feature2", 4.0);
attributesMap.put("feature3", 1.0);
instances.add(new ClassifierInstance(attributesMap, 0.0, 1.0));
attributesMap = new AttributesMap();
attributesMap.put("feature1", 1.0);
attributesMap.put("feature4", 1.0);
attributesMap.put("feature5", 0.0);
instances.add(new ClassifierInstance(attributesMap, 0.0, 1.0));
return instances;
}
@Test
public void testGetAttributeProductCounts1() throws Exception {
}
}