示例#1
0
def _kdtree(*, train, test, x_predict=None, metrics, X, leaf_size=40, metric='minkowski', **kwargs):
    """
    For more info visit :
    https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KDTree.html#sklearn.neighbors.KDTree
    """

    model = KDTree(X, leaf_size=leaf_size, metric=metric, **kwargs)
    model.fit(train[0], train[1])
    model_name = 'KD Tree'
    y_hat = model.predict(test[0])

    if metrics == 'accuracy':
        accuracy = accuracy_score(test[1], y_hat)

    if metrics == 'f1':
        accuracy = f1_score(test[1], y_hat)

    if metrics == 'jaccard':
        accuracy = jaccard_score(test[1], y_hat)

    if x_predict is None:
        return (model_name, accuracy, None)

    y_predict = model.predict(x_predict)
    return (model_name, accuracy, y_predict)
示例#2
0
def main():
    y, X_train, X_test, y_train, y_test = load_data()

    # use kd-tree
    model = KDTree(X_train, metric='euclidean')
    ind = model.query(X_test, k=3, return_distance=False)
    predictions = []
    k_nearest_indexes = ind.tolist()
    for i in k_nearest_indexes:
        counts = np.bincount(np.array(y[i]))
        predictions.append(np.argmax(counts))

    # knn
    model = KNNClassifier()
    model.fit(X_train, y_train)
    predictions = model.predict(X_test)
    accuracy = accuracy_score(y_test, predictions)
    print(f"KNN Accuracy: {accuracy}")