KNN 预测与 L1(曼哈顿距离)

KNN prediction with L1 (Manhattan distance)

我可以 运行 使用默认分类器(L2 - 欧氏距离)的 KNN 分类器:

def L2(trainx, trainy, testx):

    from sklearn.neighbors import KNeighborsClassifier
    # Create KNN Classifier
    knn = KNeighborsClassifier(n_neighbors=1)

    # Train the model using the training sets
    knn.fit(trainx, trainy)

    # Predict the response for test dataset
    y_pred = knn.predict(testx)
    return y_pred

但是,我想使用 L1(曼哈顿)距离作为我的距离函数。

以下内容无效(尽管我认为我是在遵循文档):

def L1(trainx, trainy, testx):

    from sklearn.neighbors import NearestNeighbors
    from sklearn.neighbors import DistanceMetric
    dist = DistanceMetric.get_metric('manhattan')
    # Create KNN Classifier
    knn = NearestNeighbors(n_neighbors=1, metric=dist)

    # Train the model using the training sets
    knn.fit(trainx, trainy)

    # Predict the response for test dataset
    y_pred = knn.predict(testx)
    return y_pred

NearestNeighbors没有predict(),我使用metric=dist也是错误的

我 want\need 使用 KNN 和曼哈顿距离函数进行预测。这可能吗?

指标必须作为字符串传递。

def L1(trainx, trainy, testx):

    from sklearn.neighbors import KNeighborsClassifier
    # Create KNN Classifier
    knn = KNeighborsClassifier(n_neighbors=1, metric='manhattan')

    # Train the model using the training sets
    knn.fit(trainx, trainy)

    # Predict the response for test dataset
    y_pred = knn.predict(testx)
    return y_pred