Skip to content
Snippets Groups Projects
Commit 463812d2 authored by René Schöne's avatar René Schöne
Browse files

Begin with test for learner.

parent d27e90d5
Branches
No related tags found
1 merge request!19dev to master
Pipeline #4684 failed
package de.tudresden.inf.st.eraser.feedbackloop.learner_backup;
import com.opencsv.CSVReader;
import de.tudresden.inf.st.eraser.jastadd.model.*;
import de.tudresden.inf.st.eraser.util.ParserUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
/**
* Testing the learner.
*
* @author rschoene - Initial contribution
*/
public class LearnerTest {
private static final URL ACTIVITY_DATA = LearnerTest.class.getResource("/activity_data.csv");
private MachineLearningEncoder encoder;
private MachineLearningDecoder decoder;
private String[] itemNames = new String[]{"m_accel_x", "m_accel_y", "m_accel_z", "m_rotation_x", "m_rotation_y",
"m_rotation_z", "w_accel_x", "w_accel_y", "w_accel_z", "w_rotation_x", "w_rotation_y", "w_rotation_z"};
private String[] activityNames = new String[]{"working",
"walking",
"dancing",
"lying",
"getting up",
"reading"};
private Root root;
private Root createKnowledgeBase() {
Root result = Root.createEmptyRoot();
Group group = new Group();
result.getSmartHomeEntityModel().addGroup(group);
// init items
for (String itemName : itemNames) {
NumberItem item = new NumberItem();
item.setID(itemName);
ParserUtils.createMqttTopic(item, itemName, result);
group.addItem(item);
}
// init activities
for (int i = 0; i < activityNames.length; i++) {
result.getMachineLearningRoot().addActivity(new Activity(i, activityNames[i]));
}
return result;
}
@Before
public void initLearner() {
root = createKnowledgeBase();
MachineLearningHandlerFactoryImpl factory = new MachineLearningHandlerFactoryImpl();
factory.setKnowledgeBaseRoot(root);
factory.initializeFor(MachineLearningHandlerFactory.MachineLearningHandlerFactoryTarget.ACTIVITY_RECOGNITION,
ACTIVITY_DATA);
encoder = factory.createEncoder();
decoder = factory.createDecoder();
// maybe use factory.createModel() here instead
}
@Test
public void testActivities() {
// go through same csv as for training and test some of the values
try(InputStream is = ACTIVITY_DATA.openStream();
Reader reader = new InputStreamReader(is);
CSVReader csvreader = new CSVReader(reader)) {
int index = 0;
for (String[] line : csvreader) {
if (++index % 10 == 0) {
// only check every 10th line, push an update for every 12 input columns
for (int i = 0; i < itemNames.length; i++) {
int finalI = i;
Item item = root.getSmartHomeEntityModel().resolveItem(itemNames[i])
.orElseThrow(() -> new AssertionError("Item " + itemNames[finalI] + " not found"));
item.setStateFromString(line[i]);
encoder.newData(Collections.singletonList(item));
}
MachineLearningResult result = decoder.classify();
// check if only one item is to be updated
assertEquals("Not one item update", 1, result.getNumItemUpdate());
ItemUpdate update = result.getItemUpdate(0);
// check that the activity item is to be updated
assertEquals("activity not updated", root.getSmartHomeEntityModel().getActivityItem(), update.getItem());
update.apply();
// check if the correct activity was set
assertEquals("wrong activity", line[12], root.currentActivityName());
}
}
} catch (IOException e) {
e.printStackTrace();
fail();
}
}
}
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console">
<PatternLayout pattern="%highlight{%d{HH:mm:ss.SSS} %-5level} %c{1.} - %msg%n"/>
</Console>
<RollingFile name="RollingFile" fileName="logs/eraser-test.log"
filePattern="logs/eraser-test-%i.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n"/>
<Policies>
<OnStartupTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
<AppenderRef ref="RollingFile"/>
</Root>
<Logger name="de.tudresden.inf.st.eraser.openhab2.mqtt" level="DEBUG" additivity="false">
<Appender-ref ref="Console"/>
</Logger>
<!-- Stubs reduce noise-->
<Logger name="de.tudresden.inf.st.eraser.jastadd.model.InfluxAdapterStub" level="WARN" additivity="false">
</Logger>
<Logger name="de.tudresden.inf.st.eraser.jastadd.model.MQTTSenderStub" level="WARN" additivity="false">
</Logger>
</Loggers>
</Configuration>
walking,medium,120,70
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,medium,120,70
walking,dimmer,120,40
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,dark,120,100
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,dimmer,120,40
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,dark,120,100
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,medium,120,70
walking,medium,120,70
walking,medium,120,70
walking,bright,120,0
walking,medium,120,70
walking,medium,120,70
walking,bright,120,0
walking,dark,120,100
walking,medium,120,70
walking,bright,120,0
walking,dimmer,120,40
walking,medium,120,70
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
walking,medium,120,70
walking,medium,120,70
walking,bright,120,0
walking,medium,120,70
walking,bright,120,0
walking,bright,120,0
walking,bright,120,0
reading,medium,180,70
reading,medium,180,70
reading,medium,180,70
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,dark,180,100
reading,medium,180,70
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,dimmer,180,40
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,dimmer,180,40
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,dimmer,180,40
reading,bright,180,0
reading,dark,180,100
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,medium,180,70
reading,dimmer,180,40
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,dimmer,180,40
reading,bright,180,0
reading,dimmer,180,40
reading,medium,180,70
reading,dimmer,180,40
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,medium,180,70
reading,dimmer,180,40
reading,bright,180,0
reading,dark,180,100
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
reading,bright,180,0
reading,medium,180,70
reading,dimmer,180,40
reading,medium,180,70
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,bright,180,0
reading,medium,180,70
working,medium,240,70
working,medium,240,70
working,medium,240,70
working,medium,240,70
working,dark,240,100
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,dimmer,240,40
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,bright,240,0
working,medium,240,70
working,medium,240,70
dancing,medium,300,70
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,dimmer,300,40
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,dimmer,300,40
dancing,dimmer,300,40
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,medium,300,70
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,medium,300,70
dancing,bright,300,0
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
dancing,dimmer,300,40
dancing,bright,300,0
dancing,bright,300,0
dancing,medium,300,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,dimmer,7,40
lying,bright,7,0
lying,bright,7,0
lying,dark,7,100
lying,bright,7,0
lying,dark,7,100
lying,dimmer,7,40
lying,medium,7,70
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,medium,7,70
lying,bright,7,0
lying,dimmer,7,40
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,dimmer,7,40
lying,medium,7,70
lying,medium,7,70
lying,dark,7,100
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,dimmer,7,40
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,dimmer,7,40
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,dimmer,7,40
lying,medium,7,70
lying,medium,7,70
lying,dark,7,100
lying,medium,7,70
lying,medium,7,70
lying,bright,7,0
lying,medium,7,70
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,bright,7,0
lying,medium,7,70
lying,bright,7,0
lying,medium,7,70
lying,medium,7,70
lying,medium,7,70
lying,medium,7,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,dimmer,60,40
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,dimmer,60,40
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,dark,60,100
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,medium,60,70
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,dimmer,60,40
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,dimmer,60,40
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,dimmer,60,40
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,bright,60,0
getting up,bright,60,0
getting up,bright,60,0
getting up,medium,60,70
getting up,medium,60,70
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment