def main(): """ Just runs some example code. """ """ Plots a dataset. """ # setup the flow helper.print_title("Plot dataset") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="plot dataset") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() flow.actors.append(loaddataset) branch = Branch() flow.actors.append(branch) seq = Sequence(name="matrix plot") branch.actors.append(seq) mplot = MatrixPlot() mplot.config["percent"] = 50.0 mplot.config["wait"] = False seq.actors.append(mplot) seq = Sequence(name="line plot") branch.actors.append(seq) copy = Copy() seq.actors.append(copy) flter = Filter() flter.config["setup"] = filters.Filter( classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "last"]) flter.config["keep_relationname"] = True seq.actors.append(flter) lplot = LinePlot() lplot.config["percent"] = 50.0 lplot.config["wait"] = True seq.actors.append(lplot) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("Generate dataset") flow = Flow(name="generate dataset") generator = DataGenerator() generator.config["setup"] = datagen.DataGenerator( classname="weka.datagenerators.classifiers.classification.Agrawal") flow.actors.append(generator) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ """ Loads data from a database. """ # setup the flow helper.print_title("Load from database") flow = Flow(name="load from database") loaddatabase = LoadDatabase() loaddatabase.config["db_url"] = "jdbc:mysql://HOSTNAME:3306/DBNAME" loaddatabase.config["user"] = "******" loaddatabase.config["password"] = "******" loaddatabase.config["query"] = "select * from TABLE" flow.actors.append(loaddatabase) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow flow = Flow(name="math expression") outer = ForLoop() outer.config["max"] = 100 flow.actors.append(outer) expr = MathExpression() expr.config["expression"] = "math.sqrt({X})" flow.actors.append(expr) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def load_custom_loader(): """ Loads a dataset using a custom loader. """ # setup the flow helper.print_title("Load dataset (custom loader)") iris = helper.get_data_dir() + os.sep + "iris.csv" flow = Flow(name="load dataset") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = False loaddataset.config["use_custom_loader"] = True loaddataset.config["custom_loader"] = Loader( classname="weka.core.converters.CSVLoader") flow.actors.append(loaddataset) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow flow = Flow(name="list files") # flow.print_help() listfiles = ListFiles() listfiles.config["dir"] = str(tempfile.gettempdir()) listfiles.config["list_files"] = True listfiles.config["list_dirs"] = False listfiles.config["recursive"] = False listfiles.config["regexp"] = ".*r.*" # listfiles.print_help() flow.actors.append(listfiles) console = Console() console.config["prefix"] = "Match: " # console.print_help() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def load_incremental(): """ Loads a dataset incrementally. """ # setup the flow helper.print_title("Load dataset (incremental)") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="load dataset") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True flow.actors.append(loaddataset) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def load_custom_loader(): """ Loads a dataset using a custom loader. """ # setup the flow helper.print_title("Load dataset (custom loader)") iris = helper.get_data_dir() + os.sep + "iris.csv" flow = Flow(name="load dataset") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = False loaddataset.config["use_custom_loader"] = True loaddataset.config["custom_loader"] = Loader(classname="weka.core.converters.CSVLoader") flow.actors.append(loaddataset) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("Generate dataset") flow = Flow(name="generate dataset") generator = DataGenerator() generator.config["setup"] = datagen.DataGenerator(classname="weka.datagenerators.classifiers.classification.Agrawal") flow.actors.append(generator) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow flow = Flow(name="update storage value") start = Start() flow.actors.append(start) init = InitStorageValue() init.config["storage_name"] = "max" init.config["value"] = "int(1)" flow.actors.append(init) trigger = Trigger() flow.actors.append(trigger) outer = ForLoop() outer.name = "outer" outer.config["max"] = 3 trigger.actors.append(outer) trigger2 = Trigger() trigger.actors.append(trigger2) inner = ForLoop() inner.name = "inner" inner.config["max"] = "@{max}" trigger2.actors.append(inner) console = Console() trigger2.actors.append(console) update = UpdateStorageValue() update.config["storage_name"] = "max" update.config["expression"] = "{X} + 2" trigger.actors.append(update) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow flow = Flow(name="combine storage") outer = ForLoop() outer.name = "outer" outer.config["max"] = 3 flow.actors.append(outer) ssv = SetStorageValue() ssv.config["storage_name"] = "max" flow.actors.append(ssv) trigger = Trigger() flow.actors.append(trigger) inner = ForLoop() inner.name = "inner" inner.config["max"] = "@{max}" trigger.actors.append(inner) ssv2 = SetStorageValue() ssv2.config["storage_name"] = "inner" trigger.actors.append(ssv2) trigger2 = Trigger() trigger.actors.append(trigger2) combine = CombineStorage() combine.config["format"] = "@{max} / @{inner}" trigger2.actors.append(combine) console = Console() trigger2.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow flow = Flow(name="list files") listfiles = ListFiles() listfiles.config["dir"] = str(helper.get_data_dir()) listfiles.config["list_files"] = True listfiles.config["list_dirs"] = False listfiles.config["recursive"] = False listfiles.config["regexp"] = ".*.arff" flow.actors.append(listfiles) tee = Tee() flow.actors.append(tee) convert = Convert() convert.config["setup"] = conversion.PassThrough() tee.actors.append(convert) console = Console() console.config["prefix"] = "Match: " tee.actors.append(console) load = LoadDataset() load.config["use_custom_loader"] = True flow.actors.append(load) cross = CrossValidate() cross.config["setup"] = Classifier(classname="weka.classifiers.trees.J48", options=["-C", "0.3"]) flow.actors.append(cross) summary = EvaluationSummary() summary.config["matrix"] = True flow.actors.append(summary) # print flow flow.setup() print("\n" + flow.tree + "\n") # save the flow fname = tempfile.gettempdir() + os.sep + "simpleflow.json" Flow.save(flow, fname) # load flow fl2 = Flow.load(fname) # output flow fl2.setup() print("\n" + fl2.tree + "\n")
def main(): """ Just runs some example code. """ """ Loads/filters a dataset incrementally and saves it to a new file. """ # setup the flow helper.print_title("Load/filter/save dataset (incrementally)") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="Load/filter/save dataset (incrementally)") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True flow.actors.append(loaddataset) flter = Filter() flter.config["setup"] = filters.Filter( classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "last"]) flow.actors.append(flter) rename = RenameRelation() rename.config["name"] = "iris-reduced" flow.actors.append(rename) dumper = InstanceDumper() dumper.config["output"] = tempfile.gettempdir() + os.sep + "out.arff" flow.actors.append(dumper) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("build and save clusterer") iris = helper.get_data_dir() + os.sep + "iris_no_class.arff" flow = Flow(name="build and save clusterer") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() flow.actors.append(loaddataset) train = Train() train.config["setup"] = Clusterer(classname="weka.clusterers.SimpleKMeans") flow.actors.append(train) pick = ContainerValuePicker() pick.config["value"] = "Model" flow.actors.append(pick) console = Console() pick.actors.append(console) writer = ModelWriter() writer.config["output"] = str( tempfile.gettempdir()) + os.sep + "simplekmeans.model" flow.actors.append(writer) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("Cross-validate clusterer") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="cross-validate clusterer") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() flow.actors.append(loaddataset) flter = Filter() flter.name = "Remove class" flter.config["filter"] = filters.Filter( classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "last"]) flow.actors.append(flter) cv = CrossValidate() cv.config["setup"] = Clusterer(classname="weka.clusterers.EM") flow.actors.append(cv) console = Console() console.config["prefix"] = "Loglikelihood: " flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def incremental(): """ Just runs some example code. """ """ Loads/filters a dataset incrementally. """ # setup the flow helper.print_title("Filter datasets (incrementally)") iris = helper.get_data_dir() + os.sep + "iris.arff" anneal = helper.get_data_dir() + os.sep + "anneal.arff" flow = Flow(name="filter datasets (incrementally)") filesupplier = FileSupplier() filesupplier.config["files"] = [iris, anneal] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True flow.actors.append(loaddataset) flter = Filter() flter.config["setup"] = filters.Filter( classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "1"]) flter.config["keep_relationname"] = True flow.actors.append(flter) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ """ Tests some conversions. """ # setup the flow helper.print_title("conversions") flow = Flow(name="conversions") strings = StringConstants() strings.config["strings"] = [ "weka.classifiers.trees.J48", "weka.classifiers.functions.SMO" ] flow.actors.append(strings) c2a = CommandlineToAny() c2a.config["wrapper"] = "weka.classifiers.Classifier" convert1 = Convert() convert1.config["setup"] = c2a flow.actors.append(convert1) convert2 = Convert() convert2.config["setup"] = AnyToCommandline() flow.actors.append(convert2) console = Console() console.config["prefix"] = "setup: " flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("build and save clusterer") iris = helper.get_data_dir() + os.sep + "iris_no_class.arff" flow = Flow(name="build and save clusterer") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() flow.actors.append(loaddataset) train = Train() train.config["setup"] = Clusterer(classname="weka.clusterers.SimpleKMeans") flow.actors.append(train) pick = ContainerValuePicker() pick.config["value"] = "Model" flow.actors.append(pick) console = Console() pick.actors.append(console) writer = ModelWriter() writer.config["output"] = str(tempfile.gettempdir()) + os.sep + "simplekmeans.model" flow.actors.append(writer) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow flow = Flow(name="stopping the flow") outer = ForLoop() outer.config["max"] = 10 flow.actors.append(outer) ssv = SetStorageValue() ssv.config["storage_name"] = "current" flow.actors.append(ssv) tee = Tee() tee.config["condition"] = "@{current} == 7" flow.actors.append(tee) stop = Stop() tee.actors.append(stop) console = Console() flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ """ Tests some conversions. """ # setup the flow helper.print_title("conversions") flow = Flow(name="conversions") strings = StringConstants() strings.config["strings"] = ["weka.classifiers.trees.J48", "weka.classifiers.functions.SMO"] flow.actors.append(strings) c2a = CommandlineToAny() c2a.config["wrapper"] = "weka.classifiers.Classifier" convert1 = Convert() convert1.config["setup"] = c2a flow.actors.append(convert1) convert2 = Convert() convert2.config["setup"] = AnyToCommandline() flow.actors.append(convert2) console = Console() console.config["prefix"] = "setup: " flow.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ """ Displays a dataset as matrixplot. """ # setup the flow helper.print_title("Matrix plot") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="matrix plot") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() flow.actors.append(loaddataset) plot = MatrixPlot() plot.config["percent"] = 50.0 flow.actors.append(plot) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("build and evaluate classifier") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="build and evaluate classifier") start = Start() flow.actors.append(start) build_save = Trigger() build_save.name = "build and store classifier" flow.actors.append(build_save) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] build_save.actors.append(filesupplier) loaddataset = LoadDataset() build_save.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" build_save.actors.append(select) ssv = SetStorageValue() ssv.config["storage_name"] = "data" build_save.actors.append(ssv) train = Train() train.config["setup"] = Classifier(classname="weka.classifiers.trees.J48") build_save.actors.append(train) pick = ContainerValuePicker() pick.config["value"] = "Model" build_save.actors.append(pick) ssv = SetStorageValue() ssv.config["storage_name"] = "model" pick.actors.append(ssv) evaluate = Trigger() evaluate.name = "evaluate classifier" flow.actors.append(evaluate) gsv = GetStorageValue() gsv.config["storage_name"] = "data" evaluate.actors.append(gsv) evl = Evaluate() evl.config["storage_name"] = "model" evaluate.actors.append(evl) summary = EvaluationSummary() summary.config["matrix"] = True evaluate.actors.append(summary) console = Console() evaluate.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("cluster data") iris = helper.get_data_dir() + os.sep + "iris_no_class.arff" clsfile = str(tempfile.gettempdir()) + os.sep + "simplekmeans.model" flow = Flow(name="cluster data") start = Start() flow.actors.append(start) build_save = Trigger() build_save.name = "build and save clusterer" flow.actors.append(build_save) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] build_save.actors.append(filesupplier) loaddataset = LoadDataset() build_save.actors.append(loaddataset) ssv = SetStorageValue() ssv.config["storage_name"] = "data" build_save.actors.append(ssv) train = Train() train.config["setup"] = Clusterer(classname="weka.clusterers.SimpleKMeans") build_save.actors.append(train) ssv = SetStorageValue() ssv.config["storage_name"] = "model" build_save.actors.append(ssv) pick = ContainerValuePicker() pick.config["value"] = "Model" build_save.actors.append(pick) console = Console() console.config["prefix"] = "built: " pick.actors.append(console) writer = ModelWriter() writer.config["output"] = clsfile build_save.actors.append(writer) pred_serialized = Trigger() pred_serialized.name = "make predictions (serialized model)" flow.actors.append(pred_serialized) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] pred_serialized.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True pred_serialized.actors.append(loaddataset) predict = Predict() predict.config["model"] = clsfile pred_serialized.actors.append(predict) console = Console() console.config["prefix"] = "serialized: " pred_serialized.actors.append(console) pred_storage = Trigger() pred_storage.name = "make predictions (model from storage)" flow.actors.append(pred_storage) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] pred_storage.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True pred_storage.actors.append(loaddataset) predict = Predict() predict.config["storage_name"] = "model" pred_storage.actors.append(predict) console = Console() console.config["prefix"] = "storage: " pred_storage.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("Attribute selection") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="attribute selection") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = False flow.actors.append(loaddataset) attsel = AttributeSelection() attsel.config["search"] = ASSearch( classname="weka.attributeSelection.BestFirst") attsel.config["eval"] = ASEvaluation( classname="weka.attributeSelection.CfsSubsetEval") flow.actors.append(attsel) results = Tee() results.name = "output results" flow.actors.append(results) picker = ContainerValuePicker() picker.config["value"] = "Results" picker.config["switch"] = True results.actors.append(picker) console = Console() console.config["prefix"] = "Attribute selection results:" results.actors.append(console) reduced = Tee() reduced.name = "reduced dataset" flow.actors.append(reduced) picker = ContainerValuePicker() picker.config["value"] = "Reduced" picker.config["switch"] = True reduced.actors.append(picker) console = Console() console.config["prefix"] = "Reduced dataset:\n\n" reduced.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("Attribute selection") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="attribute selection") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = False flow.actors.append(loaddataset) attsel = AttributeSelection() attsel.config["search"] = ASSearch(classname="weka.attributeSelection.BestFirst") attsel.config["eval"] = ASEvaluation(classname="weka.attributeSelection.CfsSubsetEval") flow.actors.append(attsel) results = Tee() results.name = "output results" flow.actors.append(results) picker = ContainerValuePicker() picker.config["value"] = "Results" picker.config["switch"] = True results.actors.append(picker) console = Console() console.config["prefix"] = "Attribute selection results:" results.actors.append(console) reduced = Tee() reduced.name = "reduced dataset" flow.actors.append(reduced) picker = ContainerValuePicker() picker.config["value"] = "Reduced" picker.config["switch"] = True reduced.actors.append(picker) console = Console() console.config["prefix"] = "Reduced dataset:\n\n" reduced.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("build, save and load classifier") iris = helper.get_data_dir() + os.sep + "iris.arff" clsfile = str(tempfile.gettempdir()) + os.sep + "j48.model" flow = Flow(name="build, save and load classifier") start = Start() flow.actors.append(start) build_save = Trigger() build_save.name = "build and save classifier" flow.actors.append(build_save) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] build_save.actors.append(filesupplier) loaddataset = LoadDataset() build_save.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" build_save.actors.append(select) train = Train() train.config["setup"] = Classifier(classname="weka.classifiers.trees.J48") build_save.actors.append(train) pick = ContainerValuePicker() pick.config["value"] = "Model" build_save.actors.append(pick) console = Console() console.config["prefix"] = "built: " pick.actors.append(console) writer = ModelWriter() writer.config["output"] = clsfile build_save.actors.append(writer) load = Trigger() load.name = "load classifier" flow.actors.append(load) filesupplier = FileSupplier() filesupplier.config["files"] = [clsfile] load.actors.append(filesupplier) reader = ModelReader() load.actors.append(reader) pick = ContainerValuePicker() pick.config["value"] = "Model" load.actors.append(pick) console = Console() console.config["prefix"] = "loaded: " pick.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow count = 50 helper.print_title("build clusterer incrementally") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="build clusterer incrementally") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) initcounter = InitStorageValue() initcounter.config["storage_name"] = "counter" initcounter.config["value"] = 0 flow.actors.append(initcounter) loaddataset = LoadDataset() loaddataset.config["incremental"] = True flow.actors.append(loaddataset) remove = Filter(name="remove class attribute") remove.config["setup"] = filters.Filter( classname="weka.filters.unsupervised.attribute.Remove", options=["-R", "last"]) flow.actors.append(remove) inccounter = UpdateStorageValue() inccounter.config["storage_name"] = "counter" inccounter.config["expression"] = "{X} + 1" flow.actors.append(inccounter) train = Train() train.config["setup"] = Clusterer(classname="weka.clusterers.Cobweb") flow.actors.append(train) pick = ContainerValuePicker() pick.config["value"] = "Model" pick.config["switch"] = True flow.actors.append(pick) tee = Tee(name="output model every " + str(count) + " instances") tee.config["condition"] = "@{counter} % " + str(count) + " == 0" flow.actors.append(tee) trigger = Trigger(name="output # of instances") tee.actors.append(trigger) getcounter = GetStorageValue() getcounter.config["storage_name"] = "counter" trigger.actors.append(getcounter) console = Console() console.config["prefix"] = "# of instances: " trigger.actors.append(console) console = Console(name="output model") tee.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow count = 50 helper.print_title("build classifier incrementally") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="build classifier incrementally") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) initcounter = InitStorageValue() initcounter.config["storage_name"] = "counter" initcounter.config["value"] = 0 flow.actors.append(initcounter) loaddataset = LoadDataset() loaddataset.config["incremental"] = True flow.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" flow.actors.append(select) inccounter = UpdateStorageValue() inccounter.config["storage_name"] = "counter" inccounter.config["expression"] = "{X} + 1" flow.actors.append(inccounter) train = Train() train.config["setup"] = Classifier(classname="weka.classifiers.bayes.NaiveBayesUpdateable") flow.actors.append(train) pick = ContainerValuePicker() pick.config["value"] = "Model" pick.config["switch"] = True flow.actors.append(pick) tee = Tee(name="output model every " + str(count) + " instances") tee.config["condition"] = "@{counter} % " + str(count) + " == 0" flow.actors.append(tee) trigger = Trigger(name="output # of instances") tee.actors.append(trigger) getcounter = GetStorageValue() getcounter.config["storage_name"] = "counter" trigger.actors.append(getcounter) console = Console() console.config["prefix"] = "# of instances: " trigger.actors.append(console) console = Console(name="output model") tee.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("Cross-validate classifier") iris = helper.get_data_dir() + os.sep + "iris.arff" flow = Flow(name="cross-validate classifier") filesupplier = FileSupplier() filesupplier.config["files"] = [iris] flow.actors.append(filesupplier) loaddataset = LoadDataset() flow.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" flow.actors.append(select) cv = CrossValidate() cv.config["setup"] = Classifier(classname="weka.classifiers.trees.J48") flow.actors.append(cv) branch = Branch() flow.actors.append(branch) seqsum = Sequence() seqsum.name = "summary" branch.actors.append(seqsum) summary = EvaluationSummary() summary.config["title"] = "=== J48/iris ===" summary.config["complexity"] = False summary.config["matrix"] = True seqsum.actors.append(summary) console = Console() seqsum.actors.append(console) seqerr = Sequence() seqerr.name = "errors" branch.actors.append(seqerr) errors = ClassifierErrors() errors.config["wait"] = False seqerr.actors.append(errors) seqroc = Sequence() seqroc.name = "roc" branch.actors.append(seqroc) roc = ROC() roc.config["wait"] = False roc.config["class_index"] = [0, 1, 2] seqroc.actors.append(roc) seqprc = Sequence() seqprc.name = "prc" branch.actors.append(seqprc) prc = PRC() prc.config["wait"] = True prc.config["class_index"] = [0, 1, 2] seqprc.actors.append(prc) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()
def main(): """ Just runs some example code. """ # setup the flow helper.print_title("classify data") iris = helper.get_data_dir() + os.sep + "iris.arff" clsfile = str(tempfile.gettempdir()) + os.sep + "j48.model" flow = Flow(name="classify data") start = Start() flow.actors.append(start) build_save = Trigger() build_save.name = "build and save classifier" flow.actors.append(build_save) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] build_save.actors.append(filesupplier) loaddataset = LoadDataset() build_save.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" build_save.actors.append(select) ssv = SetStorageValue() ssv.config["storage_name"] = "data" build_save.actors.append(ssv) train = Train() train.config["setup"] = Classifier(classname="weka.classifiers.trees.J48") build_save.actors.append(train) ssv = SetStorageValue() ssv.config["storage_name"] = "model" build_save.actors.append(ssv) pick = ContainerValuePicker() pick.config["value"] = "Model" build_save.actors.append(pick) console = Console() console.config["prefix"] = "built: " pick.actors.append(console) writer = ModelWriter() writer.config["output"] = clsfile build_save.actors.append(writer) pred_serialized = Trigger() pred_serialized.name = "make predictions (serialized model)" flow.actors.append(pred_serialized) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] pred_serialized.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True pred_serialized.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" pred_serialized.actors.append(select) predict = Predict() predict.config["model"] = clsfile pred_serialized.actors.append(predict) console = Console() console.config["prefix"] = "serialized: " pred_serialized.actors.append(console) pred_storage = Trigger() pred_storage.name = "make predictions (model from storage)" flow.actors.append(pred_storage) filesupplier = FileSupplier() filesupplier.config["files"] = [iris] pred_storage.actors.append(filesupplier) loaddataset = LoadDataset() loaddataset.config["incremental"] = True pred_storage.actors.append(loaddataset) select = ClassSelector() select.config["index"] = "last" pred_storage.actors.append(select) predict = Predict() predict.config["storage_name"] = "model" pred_storage.actors.append(predict) console = Console() console.config["prefix"] = "storage: " pred_storage.actors.append(console) # run the flow msg = flow.setup() if msg is None: print("\n" + flow.tree + "\n") msg = flow.execute() if msg is not None: print("Error executing flow:\n" + msg) else: print("Error setting up flow:\n" + msg) flow.wrapup() flow.cleanup()