gpt4 book ai didi

python - sklearn : Custom distance function in nearest neighbor giving wrong answer

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:56 25 4
gpt4 key购买 nike

我正在尝试使用 Sklearn 中的自定义模型函数,但它给出了错误的距离。我有两个向量,我只需计算它们的余弦相似度,然后执行 1 - cosine_similarity 用作距离度量。

这是代码:

from sklearn.metrics.pairwise import cosine_similarity
def dist_fun(x, y):
return 1 - cosine_similarity(x.reshape(-1, 1), y.reshape(-1, 1))
nbrs = NearestNeighbors(n_neighbors=499, algorithm='brute',metric = dist_fun)
nbrs.fit(x)
distances, indices = nbrs.kneighbors(x[10])
print (distances)

我得到以下输出。如果您注意到距离的值是单调增加的。即使我在预测最近邻居时增加样本数量,我仍然得到相同的单调增加趋势。

array([[ -4.44089210e-16,   3.56164824e-03,   8.85347066e-02,
9.26700271e-02, 9.58609825e-02, 9.64477012e-02,
9.71035356e-02, 9.73237473e-02, 9.80660138e-02,
9.80660138e-02, 9.80660138e-02, 9.83731564e-02,
1.00054271e-01, 1.01234246e-01, 1.01811852e-01,
1.01849141e-01, 1.02621459e-01, 1.03175060e-01,
1.03230172e-01, 1.04023403e-01, 1.04023403e-01,
1.05189391e-01, 1.05705694e-01, 1.05739410e-01,
1.05773038e-01, 1.06241366e-01, 1.06661965e-01,
1.07260520e-01, 1.07538839e-01, 1.07634464e-01,
1.08394912e-01, 1.08400640e-01, 1.09003193e-01,
1.09209639e-01, 1.10290264e-01, 1.10379197e-01,
1.10442903e-01, 1.10482662e-01, 1.10698656e-01,
1.11221501e-01, 1.11401997e-01, 1.11852502e-01,
1.11852502e-01, 1.11929412e-01, 1.12309441e-01,
1.12805816e-01, 1.13097788e-01, 1.13097788e-01,
1.13097788e-01, 1.13097788e-01, 1.13097788e-01,
1.13543242e-01, 1.13672560e-01, 1.13687307e-01,
1.14012940e-01, 1.14184583e-01, 1.14184583e-01,
1.14184583e-01, 1.14322087e-01, 1.15439428e-01,
1.15884416e-01, 1.16419147e-01, 1.16773279e-01,
1.16803298e-01, 1.17356220e-01, 1.17495484e-01,
1.17707062e-01, 1.18146396e-01, 1.18146396e-01,
1.18595911e-01, 1.18883730e-01, 1.19037034e-01,
1.19069722e-01, 1.19828872e-01, 1.20566816e-01,
1.20582402e-01, 1.20582402e-01, 1.20708629e-01,
1.20716289e-01, 1.20716289e-01, 1.20972743e-01,
1.21237855e-01, 1.21788334e-01, 1.22017458e-01,
1.22226468e-01, 1.22230286e-01, 1.22230286e-01,
1.22702611e-01, 1.23099224e-01, 1.23163757e-01,
1.23289609e-01, 1.23289609e-01, 1.23292786e-01,
1.23417226e-01, 1.23664208e-01, 1.23990961e-01,
1.24189621e-01, 1.24189621e-01, 1.24960174e-01,
1.25237395e-01, 1.25624878e-01, 1.25831386e-01,
1.26729099e-01, 1.26729099e-01, 1.26729099e-01,
1.26729099e-01, 1.26782286e-01, 1.26799527e-01,
1.26889090e-01, 1.26909872e-01, 1.26970122e-01,
1.27205129e-01, 1.27268976e-01, 1.27431932e-01,
1.27431932e-01, 1.27538047e-01, 1.27538047e-01,
1.27538047e-01, 1.27587842e-01, 1.27817838e-01,
1.27877807e-01, 1.28231833e-01, 1.28238203e-01,
1.28633816e-01, 1.28664222e-01, 1.28734225e-01,
1.29052631e-01, 1.29217549e-01, 1.29217549e-01,
1.29217549e-01, 1.29484514e-01, 1.29538669e-01,
1.29538669e-01, 1.30029317e-01, 1.30124414e-01,
1.30407127e-01, 1.30439623e-01, 1.30439623e-01,
1.30468360e-01, 1.30514789e-01, 1.30534321e-01,
1.30550394e-01, 1.30655239e-01, 1.30690953e-01,
1.30723322e-01, 1.30723322e-01, 1.30841502e-01,
1.30901270e-01, 1.30905220e-01, 1.31210175e-01,
1.31613037e-01, 1.32151011e-01, 1.32223286e-01,
1.32247432e-01, 1.32294174e-01, 1.32423050e-01,
1.32503399e-01, 1.32821803e-01, 1.32864458e-01,
1.32905592e-01, 1.32940640e-01, 1.33156698e-01,
1.33156698e-01, 1.33156698e-01, 1.33181600e-01,
1.33193259e-01, 1.33238006e-01, 1.34096500e-01,
1.34121202e-01, 1.34537649e-01, 1.34564039e-01,
1.34766528e-01, 1.35170312e-01, 1.35298693e-01,
1.35951024e-01, 1.36009865e-01, 1.36237868e-01,
1.36377872e-01, 1.36432106e-01, 1.36562942e-01,
1.36626040e-01, 1.36626040e-01, 1.36626040e-01,
1.37111532e-01, 1.37146403e-01, 1.37230736e-01,
1.37315621e-01, 1.37393155e-01, 1.37411484e-01,
1.37502918e-01, 1.37598004e-01, 1.37631683e-01,
1.37659006e-01, 1.37828945e-01, 1.38182843e-01,
1.38248875e-01, 1.38281130e-01, 1.38281130e-01,
1.38646317e-01, 1.38727186e-01, 1.38825673e-01,
1.38859042e-01, 1.38929188e-01, 1.39211953e-01,
1.39248834e-01, 1.39321659e-01, 1.39335374e-01,
1.39394730e-01, 1.39395047e-01, 1.39521717e-01,
1.39670180e-01, 1.39868526e-01, 1.40094735e-01,
1.40340615e-01, 1.40340615e-01, 1.40428139e-01,
1.40676071e-01, 1.40819932e-01, 1.40957589e-01,
1.41202945e-01, 1.41323204e-01, 1.41916590e-01,
1.42025371e-01, 1.42272157e-01, 1.42710332e-01,
1.42726921e-01, 1.42755484e-01, 1.43157054e-01,
1.43299232e-01, 1.43299232e-01, 1.43299232e-01,
1.43325823e-01, 1.43400446e-01, 1.43681951e-01,
1.43690076e-01, 1.44005065e-01, 1.44238973e-01,
1.44238973e-01, 1.44396790e-01, 1.44473873e-01,
1.44473873e-01, 1.44917016e-01, 1.45297745e-01,
1.45304870e-01, 1.45346460e-01, 1.45394546e-01,
1.45484785e-01, 1.45554162e-01, 1.45626208e-01,
1.45740562e-01, 1.45762265e-01, 1.45794017e-01,
1.45804720e-01, 1.45824593e-01, 1.45861611e-01,
1.46116666e-01, 1.46212846e-01, 1.46347797e-01,
1.46355462e-01, 1.46510241e-01, 1.46706380e-01,
1.46706380e-01, 1.46731347e-01, 1.46880086e-01,
1.46880086e-01, 1.46880086e-01, 1.46895321e-01,
1.46895321e-01, 1.46898662e-01, 1.46932590e-01,
1.46932590e-01, 1.46934786e-01, 1.47062161e-01,
1.47102765e-01, 1.47125613e-01, 1.47195875e-01,
1.47203984e-01, 1.47276458e-01, 1.47541098e-01,
1.47679824e-01, 1.47744772e-01, 1.48021011e-01,
1.48021011e-01, 1.48051018e-01, 1.48093826e-01,
1.48120184e-01, 1.48687113e-01, 1.49050753e-01,
1.49073961e-01, 1.49157940e-01, 1.49225408e-01,
1.49249918e-01, 1.49394014e-01, 1.49660354e-01,
1.49674427e-01, 1.49769292e-01, 1.49769292e-01,
1.49773761e-01, 1.49897212e-01, 1.50259016e-01,
1.50295923e-01, 1.50629288e-01, 1.50878913e-01,
1.51013432e-01, 1.51178477e-01, 1.51207396e-01,
1.51451096e-01, 1.51580748e-01, 1.51695365e-01,
1.51695365e-01, 1.51734088e-01, 1.52043108e-01,
1.52060878e-01, 1.52301522e-01, 1.52445639e-01,
1.52544161e-01, 1.52743333e-01, 1.52872556e-01,
1.52908042e-01, 1.53073837e-01, 1.53204360e-01,
1.53246186e-01, 1.53300760e-01, 1.53306524e-01,
1.53591182e-01, 1.53626938e-01, 1.54052601e-01,
1.54052601e-01, 1.54052601e-01, 1.54052601e-01,
1.54052601e-01, 1.54052601e-01, 1.54052601e-01,
1.54052601e-01, 1.54052601e-01, 1.54052601e-01,
1.54052601e-01, 1.54052601e-01, 1.54052601e-01,
1.54052601e-01, 1.54229708e-01, 1.54366075e-01,
1.54392042e-01, 1.54537078e-01, 1.54546889e-01,
1.54602933e-01, 1.54738194e-01, 1.54805575e-01,
1.54977338e-01, 1.54977338e-01, 1.55012155e-01,
1.55016827e-01, 1.55028359e-01, 1.55383266e-01,
1.55610723e-01, 1.55615490e-01, 1.55722208e-01,
1.55737515e-01, 1.55840964e-01, 1.55847880e-01,
1.55929136e-01, 1.56063487e-01, 1.56063487e-01,
1.56063487e-01, 1.56063487e-01, 1.56141707e-01,
1.56141707e-01, 1.56142331e-01, 1.56161761e-01,
1.56179449e-01, 1.56280680e-01, 1.56409934e-01,
1.56616691e-01, 1.57009845e-01, 1.57278415e-01,
1.57292869e-01, 1.57563945e-01, 1.57617324e-01,
1.57617324e-01, 1.57695826e-01, 1.57776595e-01,
1.57783399e-01, 1.58031769e-01, 1.58031943e-01,
1.58085396e-01, 1.58353148e-01, 1.58459880e-01,
1.59230349e-01, 1.59236225e-01, 1.59242199e-01,
1.59353165e-01, 1.59391785e-01, 1.59396695e-01,
1.59654312e-01, 1.59798363e-01, 1.59860123e-01,
1.59895006e-01, 1.59934228e-01, 1.59950186e-01,
1.60054827e-01, 1.60526486e-01, 1.60554902e-01,
1.60787508e-01, 1.60850900e-01, 1.61051430e-01,
1.61090963e-01, 1.61101839e-01, 1.61143406e-01,
1.61246539e-01, 1.61393185e-01, 1.61488368e-01,
1.61496464e-01, 1.61559989e-01, 1.61658115e-01,
1.61892677e-01, 1.62214331e-01, 1.62329668e-01,
1.62603532e-01, 1.62727233e-01, 1.62760341e-01,
1.62869835e-01, 1.62871981e-01, 1.62997728e-01,
1.63399030e-01, 1.63441577e-01, 1.63834938e-01,
1.63996438e-01, 1.64021907e-01, 1.64200732e-01,
1.64268615e-01, 1.64648767e-01, 1.64782431e-01,
1.64782476e-01, 1.64782476e-01, 1.64813323e-01,
1.64892981e-01, 1.65070814e-01, 1.65179167e-01,
1.65386484e-01, 1.65563070e-01, 1.65597298e-01,
1.65707791e-01, 1.65719309e-01, 1.65762137e-01,
1.65807323e-01, 1.65832093e-01, 1.65832093e-01,
1.65862588e-01, 1.66052858e-01, 1.66094593e-01,
1.66187153e-01, 1.66233951e-01, 1.66233951e-01,
1.66265777e-01, 1.66415407e-01, 1.66644843e-01,
1.66756621e-01, 1.66838890e-01, 1.66934285e-01,
1.66978791e-01, 1.66978791e-01, 1.67427764e-01,
1.67445394e-01, 1.67445394e-01, 1.67445394e-01,
1.67650307e-01, 1.68064795e-01, 1.68072024e-01,
1.68134311e-01, 1.68279546e-01, 1.68518910e-01,
1.68596446e-01, 1.68665319e-01, 1.68828265e-01,
1.69141448e-01, 1.69220060e-01, 1.69342483e-01,
1.69598857e-01, 1.69757684e-01, 1.69965379e-01,
1.70091805e-01, 1.70114998e-01, 1.70158904e-01,
1.70284561e-01, 1.70285288e-01, 1.70430046e-01,
1.70467217e-01, 1.71019575e-01, 1.71045745e-01,
1.71238149e-01, 1.71417066e-01, 1.71478228e-01,
1.71552705e-01, 1.71726300e-01, 1.71779031e-01,
1.71835164e-01, 1.72085845e-01, 1.72085845e-01,
1.72180127e-01]])

最佳答案

扩展一下我的评论。 NearestNeighbors (NN) 始终会按升序给出距离,因为结果将是按顺序排列的 K 个最近邻居(从最近到最远)。

indices 变量将包含数据点的所有 K 个最近邻居的索引。也就是说,距离告诉您的是从每个最近的 K 点到源点的距离(按升序排列)。 indices 告诉您的是所有数据点中的哪个点对应于 distance 数组的 i 位置。

如果你想恢复原始值,你可以这样做:

y = x[indices]

现在 y 将是按顺序排列的 K 个最近点的列表。

关于python - sklearn : Custom distance function in nearest neighbor giving wrong answer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45000386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com