如何以余弦_相似性运行KNN



我试图用KNN Classifier运行cosine_similarity,但没有成功。

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,但没有成功。

如何使用cosine_similarity在此数据集(x有4个功能(上运行KNN Classifier

问题是余弦相似性仅由最近邻算法的暴力变体支持。这里有两个选项:

选项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)

如果你想了解更多关于不同近邻算法的信息,可以参考用户指南。

最新更新