我试图用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)
如果你想了解更多关于不同近邻算法的信息,可以参考用户指南。