如何 运行 KNN 与 cosine_similarity?

How to run KNN with cosine_similarity?

我正在尝试 运行 cosine_similarityKNN Classifier 但没有成功。

from sklearn.metrics.pairwise import cosine_similarity
knn = KNeighborsClassifier(n_neighbors=10,  metric=cosine_similarity).fit(x, y)

x 的形状(具有 4 个特征的 150 个样本):

(150, 4)

y 的形状:

(150,)

我遇到错误:

ValueError: Expected 2D array, got 1D array instead

我尝试用 reshape(-1,1)rehsape(1,-1) 重塑 x 但没有成功。

我如何 运行 KNN Classifier 使用 cosine_similarity 在这个数据集上(x 有 4 个特征)?

问题在于余弦相似度仅由最近邻算法的强力变体支持。你有两个选择来完成这项工作:

选项1:明确指定使用暴力算法algorithm='brute':

from sklearn.datasets import make_classification
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.neighbors import KNeighborsClassifier


X, y = make_classification(n_samples=150, n_features=4, random_state=42)

knn = KNeighborsClassifier(n_neighbors=10, algorithm='brute',  metric=cosine_similarity)
knn.fit(X, y)

选项 2: 指定 metric='cosine' 将自动选择暴力算法:

from sklearn.datasets import make_classification
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.neighbors import KNeighborsClassifier


X, y = make_classification(n_samples=150, n_features=4, random_state=42)

knn = KNeighborsClassifier(n_neighbors=10,  metric='cosine')
knn.fit(X, y)

如果您想了解更多关于不同最近邻算法的信息,您可以参考 user guide