18 package mining.learning;
20 import static ca.uqac.lif.cep.Connector.connect;
22 import ca.uqac.lif.cep.Connector;
23 import ca.uqac.lif.cep.functions.ApplyFunction;
24 import ca.uqac.lif.cep.functions.Constant;
25 import ca.uqac.lif.cep.functions.FunctionTree;
26 import ca.uqac.lif.cep.functions.IdentityFunction;
27 import ca.uqac.lif.cep.functions.IfThenElse;
28 import ca.uqac.lif.cep.functions.StreamVariable;
29 import ca.uqac.lif.cep.graphviz.CallGraphviz;
30 import ca.uqac.lif.cep.io.ReadLines;
31 import ca.uqac.lif.cep.peg.forecast.SelfLearningPrediction;
32 import ca.uqac.lif.cep.peg.weka.UpdateClassifier;
33 import ca.uqac.lif.cep.peg.weka.WekaUtils;
34 import ca.uqac.lif.cep.tmf.Pump;
35 import ca.uqac.lif.cep.tuples.FetchAttribute;
36 import ca.uqac.lif.cep.tuples.TupleFeeder;
37 import ca.uqac.lif.cep.util.Bags;
38 import ca.uqac.lif.cep.util.Numbers;
39 import java.io.InputStream;
41 import weka.classifiers.trees.J48;
42 import weka.core.Attribute;
54 public static void main(String[] args)
throws Exception
58 ReadLines reader =
new ReadLines(is);
59 TupleFeeder
tuples =
new TupleFeeder();
60 connect(reader, tuples);
64 ApplyFunction beta =
new ApplyFunction(
new FunctionTree(
65 new Bags.ToArray(Number.class, String.class),
66 new FunctionTree(Numbers.numberCast,
new FetchAttribute(
"RPM")),
67 new FunctionTree(
new FetchAttribute(
"Gr"), StreamVariable.X)
73 ApplyFunction kappa =
new ApplyFunction(
new FunctionTree(IfThenElse.instance,
74 new FunctionTree(Numbers.isGreaterThan,
75 new FunctionTree(Numbers.numberCast,
new FetchAttribute(
"Temp")),
77 new Constant(
"overheat"),
78 new Constant(
"normal")
83 Attribute[] attributes =
new Attribute[] {
85 WekaUtils.createAttribute(
"Gr",
"N",
"1",
"2",
"3",
"4"),
86 WekaUtils.createAttribute(
"State",
"overheat",
"normal")
90 UpdateClassifier uc =
new UpdateClassifier(
new J48(),
"Engine", attributes);
93 SelfLearningPrediction ct =
new SelfLearningPrediction(
new IdentityFunction(1), beta, 3, 1, kappa, 1, uc);
97 ApplyFunction get_graph =
new ApplyFunction(WekaUtils.GetGraph.instance);
98 connect(ct, get_graph);
99 CallGraphviz cg =
new CallGraphviz().use(CallGraphviz.Renderer.DOT);
100 connect(get_graph, cg);
103 Pump pump =
new Pump(500);
106 Connector.connect(pump, plot_frame);
Generate tables, charts and plots from event streams.
Train a classifier to predict the overheating of an engine.
Receives a byte array as an input, and shows it in a Swing window as a picture.