use*_*129 2 machine-learning knn scikit-learn
我正在尝试跑步cosine_similarity
,但KNN Classifier
没有成功。
from sklearn.metrics.pairwise import cosine_similarity
knn = KNeighborsClassifier(n_neighbors=10, metric=cosine_similarity).fit(x, y)
Run Code Online (Sandbox Code Playgroud)
x 的形状(150 个样本,4 个特征):
(150, 4)
Run Code Online (Sandbox Code Playgroud)
y 的形状:
(150,)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
ValueError: Expected 2D array, got 1D array instead
Run Code Online (Sandbox Code Playgroud)
我曾尝试重塑x
,但无论成功reshape(-1,1)
还是rehsape(1,-1)
失败。
我如何 KNN Classifier
在这个数据集(x 有 4 个特征)上运行cosine_similarity
?
问题是余弦相似度仅由最近邻算法的强力变体支持。您有两种选择来完成这项工作:
选项 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)
Run Code Online (Sandbox Code Playgroud)
选项 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)
Run Code Online (Sandbox Code Playgroud)
如果您想了解有关不同最近邻算法的更多信息,可以参考用户指南。
归档时间: |
|
查看次数: |
2259 次 |
最近记录: |