我试图使用cosine_similarity运行KNN Classifier,但没有成功。
from sklearn.metrics.pairwise import cosine_similarity
knn = KNeighborsClassifier(n_neighbors=10, metric=cosine_similarity).fit(x, y)X的形状(150个样本,4个特征):
(150, 4)Y的形状:
(150,)我搞错了:
ValueError: Expected 2D array, got 1D array instead我曾尝试用reshape(-1,1)或rehsape(1,-1)重塑reshape(-1,1)或rehsape(1,-1),但没有成功。
如何使用KNN Classifier在这个数据集(x有4个特性)上运行cosine_similarity?
发布于 2021-07-03 07:47:26
问题是余弦相似性仅由最近邻算法的蛮力变体所支持。在这里,您有两个选项可以完成此任务:
选项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)如果您想了解更多关于不同最近邻算法的内容,可以参考用户指南。
https://stackoverflow.com/questions/68233136
复制相似问题