Exemplo n.º 1
0
def run_exp(scenario, remove_small, or_level, current_sites, remove_timeout,
            exclude_sites, _rnd):
    config.OR_LEVEL = config.OR_LEVEL if or_level is None else or_level
    config.REMOVE_SMALL = (config.REMOVE_SMALL
                           if remove_small is None else remove_small)
    config.REMOVE_TIMEOUT = (config.REMOVE_TIMEOUT
                             if remove_timeout is None else remove_timeout)
    scenario_obj = Scenario(scenario, exclude_sites=exclude_sites)
    traces = scenario_obj.get_traces(current_sites=current_sites)
    result = analyse.simulated_original(traces)
    X, y, d = scenario_obj.get_features_cumul(current_sites)
    X = preprocessing.MinMaxScaler().fit_transform(X)  # scaling is idempotent
    clf = result.clf.estimator
    y_pred = model_selection.cross_val_predict(clf,
                                               X,
                                               y,
                                               cv=10,
                                               n_jobs=config.JOBS_NUM)
    _add_as_artifact(y.tolist(), "y_true")
    _add_as_artifact(y_pred.tolist(), "y_prediction")
    _add_as_artifact(d, "y_domains")
    return {
        'C': result.clf.estimator.C,
        'gamma': result.clf.estimator.gamma,
        'sites': traces.keys(),
        'score': result.best_score_,
        'type': "cumul",
        'C_gamma_result': _format_results(result.results),
        # todo: remove duplicates (or_level...), after checking that they match
        'outlier_removal': scenario_obj.trace_args,
        'size_increase': scenario_obj.size_increase(),
        'time_increase': scenario_obj.time_increase()
    }