python-3.x - 使用 L1 的 KNN 预测(曼哈顿距离)
问题描述
我可以使用默认分类器(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 也是错误的。
我想\需要使用带有曼哈顿距离函数的 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
推荐阅读
- python - 切换git分支后Visual Studio Code Python IntelliSense数据库不同步?
- java - 在抽象方法中添加一般参数 (Java)
- css - CSS彩虹动画的同步
- sql - 用特定字符串而不是分隔符拆分 SQL 字符串?
- android - 更新在 Google App Signing 中注册的应用程序
- list-comprehension - Rebol 中用于列表理解的“编译器”
- react-native - 在 React Native 中将 Fetch 请求传递给另一个 Fetch 请求
- python - 从 Matplotlib 图中提取数据
- attributes - 如何在 phtml Magento 2 上回显视觉样本
- angular - 如何只获取传入的 observable 中的一个字段?