#Script generated by Orange3
from Orange.data.table import Table
from Orange.widgets.classify.owclassificationtree import OWClassificationTree
from Orange.widgets.classify.owclassificationtreegraph import OWClassificationTreeGraph
from Orange.widgets.data.owpreprocess import OWPreprocess
from Orange.widgets.visualize.owscatterplot import OWScatterPlot
from PyQt4.QtGui import QApplication
import numpy
from sklearn.tree._tree import TREE_LEAF
qapp = QApplication([])
#
#file0
#
dataPath = "/home/casey/Documents/orange-dev/orange3/Orange/datasets/titanic.tab"
data = Table(dataPath)
file0_data = data
#
#preprocess1
#
input_data = file0_data
ow = OWPreprocess()
ow.set_data(input_data)
preprocessor = ow.buildpreproc()
if input_data is not None:
try:
data = preprocessor(input_data)
except ValueError as e:
print("Error preprocessing data.")
else:
data = None
ow.set_data(None)
ow.handleNewSignals()
ow.saveSettings()
ow.onDeleteWidget()
preprocess1_preprocessed_data = data
preprocess1_preprocessor = preprocessor
#
#file2
#
dataPath = "/home/casey/Documents/orange-dev/orange3/Orange/datasets/iris.tab"
data = Table(dataPath)
file2_data = data
#
#scatter_plot3
#
input_data = file2_data
ow = OWScatterPlot()
ow.set_data(input_data)
try:
ow.set_subset_data(input_data_subset)
except:
pass
ow.handleNewSignals()
ow.show()
qapp.exec()
ow.set_data(None)
ow.set_subset_data(None)
ow.handleNewSignals()
ow.saveSettings()
ow.onDeleteWidget()
#
#classification_tree4
#
input_preprocessor = preprocess1_preprocessor
input_data = preprocess1_preprocessed_data
ow = OWClassificationTree()
ow.set_data(input_data)
try:
ow.set_preprocessor(input_preprocessor)
except:
pass
ow.learner = ow.create_learner()
ow.update_learner()
ow.update_model()
classification_tree4_Learner = ow.learner
classification_tree4_classifier = ow.model
def update_selection(ow):
if ow.dataset is None or ow.model is None or ow.tree is None:
return
items = [item for item in ow.scene.selectedItems()
if isinstance(item, ow.NODE)]
selected_leaves = [_leaf_indices(ow.tree, item.node_id)
for item in items]
if selected_leaves:
selected_leaves = numpy.unique(numpy.hstack(selected_leaves))
all_leaves = _leaf_indices(ow.tree, 0)
if len(selected_leaves) > 0:
ind = numpy.searchsorted(all_leaves, selected_leaves, side="left")
leaf_samples = _assign_samples(ow.tree, ow.clf_dataset.X)
leaf_samples = [leaf_samples[i] for i in ind]
indices = numpy.hstack(leaf_samples)
else:
indices = []
if len(indices):
data = ow.dataset[indices]
else:
data = None
ow.send("Data", data)
def _leaf_indices(tree, node_id):
start, stop = _subnode_range(tree, node_id)
if start == stop:
# leaf
return numpy.array([node_id], dtype=int)
else:
isleaf = tree.children_left[start: stop] == TREE_LEAF
assert numpy.flatnonzero(isleaf).size > 0
return start + numpy.flatnonzero(isleaf)
def _subnode_range(tree, node_id):
right = left = node_id
if tree.children_left[left] == TREE_LEAF:
assert tree.children_right[node_id] == TREE_LEAF
return node_id, node_id
else:
left = tree.children_left[left]
# run down to the right most node
while tree.children_right[right] != TREE_LEAF:
right = tree.children_right[right]
return left, right + 1
#
#classification_tree_viewer5
#
input_classifier = classification_tree4_classifier
ow = OWClassificationTreeGraph()
ow.handleNewSignals()
ow.ctree(input_classifier)
ow.show()
qapp.exec()
update_selection(ow)
ow.handleNewSignals()
ow.saveSettings()
ow.onDeleteWidget()
classification_tree_viewer5_data = data
#
#scatter_plot6
#
input_data = file0_data
input_data_subset = classification_tree_viewer5_data
ow = OWScatterPlot()
ow.set_data(input_data)
try:
ow.set_subset_data(input_data_subset)
except:
pass
ow.handleNewSignals()
ow.show()
qapp.exec()
ow.set_data(None)
ow.set_subset_data(None)
ow.handleNewSignals()
ow.saveSettings()
ow.onDeleteWidget()