# Path: discomll/dataset.py
# class Data:
#     def __init__(self, data_tag, X_indices, **kwargs):
#     def generate_urls(self, first_url, last_url):
# 
# Path: discomll/ensemble/distributed_weighted_forest.py
# def simple_init(interface, params):
# def map_init(interface, params):
# def map_fit(interface, state, label, inp):
# def reduce_fit(interface, state, label, inp):
# def map_predict(interface, state, label, inp):
# def fit(dataset, trees_per_chunk=3, max_tree_nodes=50, min_samples_leaf=10, min_samples_split=5, class_majority=1,
#         measure="info_gain", k="sqrt", accuracy=1, random_state=None, separate_max=True, save_results=True, show=False):
# def predict(dataset, fitmodel_url, coeff=0.5, save_results=True, show=False):
# 
# Path: discomll/utils/accuracy.py
# def simple_init(interface, params):
# def map_predictions(interface, state, label, inp):
# def map_test_data(interface, state, label, inp):
# def reduce_ca(interface, state, label, inp):
# def reduce_mse(interface, state, label, inp):
# def measure(test_data, predictions, measure="ca", save_results=True, show=False):


from disco.core import result_iterator
from discomll import dataset
from discomll.ensemble import distributed_weighted_forest
from discomll.utils import accuracy


train = dataset.Data(data_tag=[
    ["http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"]],
    id_index=0,
    X_indices=xrange(1, 10),
    X_meta="http://ropot.ijs.si/data/datasets_meta/breastcancer_meta.csv",
    y_index=10,
    delimiter=",")

fit_model = distributed_weighted_forest.fit(train, trees_per_chunk=3, max_tree_nodes=50, min_samples_leaf=10,
                                            min_samples_split=5, class_majority=1, measure="info_gain",
                                            accuracy=1, separate_max=True, random_state=None, save_results=True)

# predict training dataset
predictions = distributed_weighted_forest.predict(train, fit_model)

# output results
for k, v in result_iterator(predictions):
    print k, v[0]

# measure accuracy

# Path: discomll/dataset.py
# class Data:
#     def __init__(self, data_tag, X_indices, **kwargs):
#     def generate_urls(self, first_url, last_url):
# 
# Path: discomll/ensemble/distributed_weighted_forest.py
# def simple_init(interface, params):
# def map_init(interface, params):
# def map_fit(interface, state, label, inp):
# def reduce_fit(interface, state, label, inp):
# def map_predict(interface, state, label, inp):
# def fit(dataset, trees_per_chunk=3, max_tree_nodes=50, min_samples_leaf=10, min_samples_split=5, class_majority=1,
#         measure="info_gain", k="sqrt", accuracy=1, random_state=None, separate_max=True, save_results=True, show=False):
# def predict(dataset, fitmodel_url, coeff=0.5, save_results=True, show=False):
# 
# Path: discomll/utils/accuracy.py
# def simple_init(interface, params):
# def map_predictions(interface, state, label, inp):
# def map_test_data(interface, state, label, inp):
# def reduce_ca(interface, state, label, inp):
# def reduce_mse(interface, state, label, inp):
# def measure(test_data, predictions, measure="ca", save_results=True, show=False):


# Path: discomll/examples/ensemble/dwf_breastcancer_url.py
from disco.core import result_iterator
from discomll import dataset
from discomll.ensemble import distributed_weighted_forest
from discomll.utils import accuracy



train = dataset.Data(data_tag=[
    ["http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"]],
    id_index=0,
    X_indices=xrange(1, 10),
    X_meta="http://ropot.ijs.si/data/datasets_meta/breastcancer_meta.csv",
    y_index=10,
    delimiter=",")

fit_model = distributed_weighted_forest.fit(train, trees_per_chunk=3, max_tree_nodes=50, min_samples_leaf=10,
                                            min_samples_split=5, class_majority=1, measure="info_gain",
                                            accuracy=1, separate_max=True, random_state=None, save_results=True)

# predict training dataset
predictions = distributed_weighted_forest.predict(train, fit_model)

# output results
for k, v in result_iterator(predictions):
    print k, v[0]

# measure accuracy

ca = accuracy.measure(train, predictions)