Ejemplo n.º 1
0
def port_svm(clf, **kwargs):
    """Port a SVC / OneClassSVC classifier"""
    assert isinstance(clf.gamma, float), 'You probably didn\'t set an explicit value for gamma: 0.001 is a good default'

    support_v = clf.support_vectors_
    n_classes = len(clf.n_support_)

    return jinja('svm/svm.jinja', {
        'kernel': {
            'type': clf.kernel,
            'gamma': clf.gamma,
            'coef0': clf.coef0,
            'degree': clf.degree
        },
        'sizes': {
            'features': len(support_v[0]),
            'vectors': len(support_v),
            'classes': n_classes,
            'decisions': n_classes * (n_classes - 1) // 2,
            'supports': clf.n_support_
        },
        'arrays': {
            'supports': support_v,
            'intercepts': clf.intercept_,
            'coefs': clf.dual_coef_
        }
    }, {
        'classname': 'OneClassSVM' if check_type(clf, 'OneClassSVM') else 'SVM'
    }, **kwargs)
Ejemplo n.º 2
0
def port_rvm(clf, classname, **kwargs):
    """Port a RVM classifier"""
    assert classname is None or len(classname) > 0, 'Invalid class name'
    template_data = {
        **kwargs,
        'kernel': {
            'type': clf.kernel,
            'gamma': clf.gamma,
            'coef0': clf.coef0,
            'degree': clf.degree
        },
        'sizes': {
            'features': len(clf.relevant_vectors_[0]),
        },
        'arrays': {
            'vectors': clf.relevant_vectors_,
            'coefs': clf.coef_,
            'actives': clf.active_,
            'intercepts': clf.intercept_,
            'mean': clf._x_mean,
            'std': clf._x_std
        },
        'classname': classname if classname is not None else 'RVM',
    }
    return jinja('rvm/rvm.jinja', template_data)
Ejemplo n.º 3
0
def port_svm(clf, classname=None, **kwargs):
    """Port a SVC / LinearSVC classifier"""
    assert isinstance(
        clf.gamma, float
    ), 'You probably didn\'t set an explicit value for gamma: 0.001 is a good default'
    assert classname is None or len(classname) > 0, 'Invalid class name'
    if classname is None:
        classname = 'OneClassSVM' if isinstance(clf, OneClassSVM) else 'SVM'
    support_v = clf.support_vectors_
    n_classes = len(clf.n_support_)
    template_data = {
        **kwargs, 'kernel': {
            'type': clf.kernel,
            'gamma': clf.gamma,
            'coef0': clf.coef0,
            'degree': clf.degree
        },
        'sizes': {
            'features': len(support_v[0]),
            'vectors': len(support_v),
            'classes': n_classes,
            'decisions': n_classes * (n_classes - 1) // 2,
            'supports': clf.n_support_
        },
        'arrays': {
            'supports': support_v,
            'intercepts': clf.intercept_,
            'coefs': clf.dual_coef_
        },
        'classname': classname
    }
    return jinja('svm/svm.jinja', template_data)
Ejemplo n.º 4
0
def port_sefr(clf, classname=None, **kwargs):
    kwargs.update({
        'weights': clf.weights,
        'bias': clf.bias,
        'classname': classname or 'SEFR'
    })
    return jinja('sefr/sefr.jinja', kwargs)
Ejemplo n.º 5
0
def port_sefr(clf, classname=None, **kwargs):
    """Port SEFR classifier"""
    return jinja('sefr/sefr.jinja', {
        'weights': clf.weights,
        'bias': clf.bias,
        'dimension': len(clf.weights),
    }, {'classname': 'SEFR'}, **kwargs)
Ejemplo n.º 6
0
def port_logisticregression(clf, **kwargs):
    """Port sklearn's LogisticRegressionClassifier"""
    return jinja(
        'logisticregression/logisticregression.jinja', {
            'weights': clf.coef_,
            'intercept': clf.intercept_,
            'classes': clf.classes_,
            'n_classes': len(clf.classes_)
        }, {'classname': 'LogisticRegression'}, **kwargs)
Ejemplo n.º 7
0
def port_pca(pca, classname=None, **kwargs):
    """Port a PCA"""
    template_data = {
        'arrays': {
            'components': pca.components_,
            'mean': pca.mean_
        },
        'classname': classname if classname is not None else 'PCA'
    }
    return jinja('pca/pca.jinja', template_data)
Ejemplo n.º 8
0
def port_pca(clf, **kwargs):
    """Port a PCA"""
    return jinja('pca/pca.jinja', {
        'arrays': {
            'components': clf.components_,
            'mean': clf.mean_
        },
    }, {
        'classname': 'PCA'
    }, **kwargs)
Ejemplo n.º 9
0
def port_linear_regression(clf, classname=None, **kwargs):
    """Port Linear Regression"""
    return jinja('linearregression/linearregression.jinja', {
        'coefs': clf.coef_,
        'intercept': clf.intercept_,
        'dimension': len(clf.coef_),
        'dtype': 'float'
    }, {
        'classname': 'LinearRegression'
    }, **kwargs)
Ejemplo n.º 10
0
def port_gaussiannb(clf, **kwargs):
    """Port sklearn's GaussianNB"""
    return jinja('gaussiannb/gaussiannb.jinja', {
        'sigma': clf.sigma_,
        'theta': clf.theta_,
        'prior': clf.class_prior_,
        'classes': clf.classes_,
        'n_classes': len(clf.classes_)
    }, {
        'classname': 'GaussianNB'
    }, **kwargs)
Ejemplo n.º 11
0
def port_wifi_indoor_positioning(samples):
    classmap = get_classmap(samples)
    networkmap = get_networkmap(samples)
    X = get_x(samples, networkmap)
    y = get_y(samples, classmap)
    # classmap is flipped wrt the format `port` expects: flip it
    classmap = {v: k for k, v in classmap.items()}
    return X, y, classmap, jinja('wifiindoorpositioning/wifiindoorpositioning.jinja', {
        'X': X,
        'networkmap': networkmap
    })
Ejemplo n.º 12
0
def port_decisiontree(clf, **kwargs):
    """Port sklearn's DecisionTreeClassifier"""
    return jinja('decisiontree/decisiontree.jinja', {
        'left': clf.tree_.children_left,
        'right': clf.tree_.children_right,
        'features': clf.tree_.feature,
        'thresholds': clf.tree_.threshold,
        'classes': clf.tree_.value,
        'i': 0
    }, {
        'classname': 'DecisionTree'
    }, **kwargs)
Ejemplo n.º 13
0
def port_randomforest(clf, **kwargs):
    """Port sklearn's RandomForestClassifier"""
    return jinja(
        'randomforest/randomforest.jinja', {
            'n_classes':
            clf.n_classes_,
            'trees': [{
                'left': clf.tree_.children_left,
                'right': clf.tree_.children_right,
                'features': clf.tree_.feature,
                'thresholds': clf.tree_.threshold,
                'classes': clf.tree_.value,
            } for clf in clf.estimators_]
        }, {'classname': 'RandomForest'}, **kwargs)
Ejemplo n.º 14
0
def port_principalfft(clf,
                      optimize_sin=False,
                      lookup_cos=None,
                      lookup_sin=None,
                      **kwargs):
    """Port PrincipalFFT classifier"""
    return jinja(
        'principalfft/principalfft.jinja', {
            'fft': clf,
            'PI': pi,
            'size': len(clf.idx),
            'optmize_sin': optimize_sin,
            'lookup_cos': lookup_cos,
            'lookup_sin': lookup_sin,
        }, **kwargs)
Ejemplo n.º 15
0
def port_xgboost(clf, **kwargs):
    """Port a XGBoost classifier"""
    with NamedTemporaryFile('w+', suffix='.json', encoding='utf-8') as tmp:
        clf.save_model(tmp.name)
        tmp.seek(0)
        decoded = json.load(tmp)
        trees = [
            format_tree(tree) for tree in decoded['learner']
            ['gradient_booster']['model']['trees']
        ]
        return jinja(
            'xgboost/xgboost.jinja', {
                'n_classes':
                int(decoded['learner']['learner_model_param']['num_class']),
                'trees':
                trees,
            }, {'classname': 'XGBClassifier'}, **kwargs)
Ejemplo n.º 16
0
def port_rvm(clf, **kwargs):
    """Port a RVM classifier"""
    return jinja(
        'rvm/rvm.jinja', {
            'n_classes': len(clf.intercept_),
            'kernel': {
                'type': clf.kernel,
                'gamma': clf.gamma,
                'coef0': clf.coef0,
                'degree': clf.degree
            },
            'sizes': {
                'features': clf.relevant_vectors_[0].shape[1],
            },
            'arrays': {
                'vectors': clf.relevant_vectors_,
                'coefs': clf.coef_,
                'actives': clf.active_,
                'intercepts': clf.intercept_,
                'mean': clf._x_mean,
                'std': clf._x_std
            },
        }, {'classname': 'RVC'}, **kwargs)