具有自己的scikit-learn距离函数的k-NN算法

时间:2016-01-12 21:37:11

标签: python machine-learning scikit-learn

我想使用scikit-learn中的k-NN算法。 对于距离函数,我想使用我的“自己的”函数。这些应该由tanimoto系数计算。

我编写了tanimo函数并将其提供给scikit learn中的metric参数。

我的数据仅包含1和0(因此所有功能仅为1或0)。

对于tanimo,im计算x和y中的所有1并返回skalar =系数。 KNN函数的调用方式如下:KNeighborsClassifier(metric=tanimoto).fit(X_train,y_train)

def tanimoto(x,y):
    print x
    print y
    a=x.tolist()
    b=y.tolist()


    c=np.count_nonzero(x==y)
    a1=a.count(1.0)
    b1=b.count(1.0)

    return float(c)/(a1 + b1 - c)

如果我打印x和y,它们实际上应该只有1和0?

tanimoto中print x,y的输出为:

X:
[ 0.6371319   0.54557285  0.30214217  0.14690307  0.49778446  0.89183238
  0.52445514  0.63379164  0.71873681  0.55008567]

Y:
[ 0.6371319   0.54557285  0.30214217  0.14690307  0.49778446  0.89183238
  0.52445514  0.63379164  0.71873681  0.55008567]

X:
[ 0.          0.          0.          0.02358491  0.00471698  0.          0.
  0.          0.          0.00471698  0.00471698  0.00471698  0.02830189
  0.00943396  0.     .............................52358491  0.53773585
  0.63207547  0.51886792  0.66037736  0.75        0.57075472  0.59433962
  0.63679245  0.8490566   0.71698113  0.02358491]

Y:
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.
  1.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  1.  0.  0.  1.  0.  1.  0.  0.  1.  0.  1.  1.  0.
  1.  1.  1.  1.  0.] 

  # and so on ... X is always a skalar vector and y the vector how it should be. (only 1 and 0)

我的X_train矢量:

[[ 0.  0.  0. ...,  1.  1.  0.]
 [ 0.  0.  0. ...,  1.  1.  0.]
 [ 0.  0.  0. ...,  1.  1.  0.]
 ...,
 [ 0.  0.  0. ...,  1.  1.  0.]
 [ 0.  0.  0. ...,  0.  1.  0.]
 [ 0.  0.  0. ...,  0.  0.  0.]]

这是代码示例

import numpy as np
from sklearn.neighbors import NearestNeighbors  


def tanimoto(x,b):

    print "X  OUTPUT\n  ",x,"B OUTPUT\n",b

    c=np.sum(x==b)
    a1 = np.sum(x)
    b1 = np.sum(b)

    if (a1 + b1 - c)==0:
        return 0
    else:
        return float(c)/(a1 + b1 - c)

tests=[[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]

classifiers=NearestNeighbors( n_neighbors=4,algorithm='ball_tree',metric=tanimoto).fit(tests)


#example

和整个输出,如果我在tanimoto函数中打印出x,b

------------ new Fingerprint ------------
fingerprint:  macc
-----------------------------------------
X  OUTPUT
   [ 0.86899132  0.85534082  0.21453329  0.24435568  0.32321695  0.6926369
  0.5124301   0.98725159  0.01685611  0.58985301] B OUTPUT
[ 0.86899132  0.85534082  0.21453329  0.24435568  0.32321695  0.6926369
  0.5124301   0.98725159  0.01685611  0.58985301]
X  OUTPUT
   [ 0.          0.          0.          0.09090909  0.          0.          0.
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.          0.          0.09090909  0.          0.
  0.09090909  0.          0.          0.09090909  0.09090909  0.          0.
  0.          0.          0.          0.          0.09090909  0.09090909
  0.09090909  0.09090909  0.          0.          0.09090909  0.
  0.09090909  0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.          0.          0.          0.09090909  0.09090909  0.18181818
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.09090909  0.          0.09090909  0.36363636  0.18181818  0.18181818
  0.09090909  0.18181818  0.          0.          0.27272727  0.09090909
  0.09090909  0.27272727  0.09090909  0.09090909  0.09090909  0.09090909
  0.09090909  0.18181818  0.          0.36363636  0.          0.09090909
  0.09090909  0.27272727  0.27272727  0.18181818  0.          0.09090909
  0.36363636  0.18181818  0.18181818  0.27272727  0.45454545  0.18181818
  0.27272727  0.09090909  0.09090909  0.36363636  0.18181818  0.45454545
  0.          0.36363636  0.45454545  0.45454545  0.45454545  0.36363636
  0.54545455  0.          0.54545455  0.36363636  0.45454545  0.27272727
  0.09090909  0.54545455  0.18181818  0.09090909  0.27272727  0.45454545
  0.27272727  0.45454545  0.45454545  0.36363636  0.54545455  0.54545455
  0.09090909  0.18181818  0.27272727  0.18181818  0.36363636  0.
  0.54545455  0.          0.45454545  0.54545455  0.18181818  0.18181818
  0.18181818  0.36363636  0.18181818  0.54545455  0.45454545  0.36363636
  0.54545455  0.18181818  0.45454545  0.54545455  0.54545455  0.18181818
  0.45454545  0.45454545  0.63636364  0.54545455  0.54545455  0.63636364
  0.45454545  0.72727273  0.63636364  0.54545455  0.54545455  0.63636364
  0.90909091  0.63636364  0.18181818] B OUTPUT
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  1.  0.  0.  0.  0.  0.  1.  0.  1.  0.  1.  0.  1.  1.  0.
  0.  0.  0.  0.  0.  1.  1.  0.  0.  0.  1.  1.  0.  1.  0.  1.  1.  1.
  1.  1.  1.  0.  0.  1.  1.  0.  0.  1.  0.  0.  1.  1.  1.  1.  0.  1.
  1.  1.  0.  1.  0.  0.  1.  0.  1.  0.  1.  1.  1.  0.  0.  0.  0.  1.
  1.  0.  1.  0.  1.  0.  1.  0.  0.  1.  1.  1.  1.  1.  1.  1.  1.  1.
  1.  1.  1.  1.  0.]
X  OUTPUT
   [ 0.          0.          0.          0.09090909  0.          0.          0.
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.          0.          0.09090909  0.          0.
  0.09090909  0.          0.          0.09090909  0.09090909  0.          0.
  0.          0.          0.          0.          0.09090909  0.09090909
  0.09090909  0.09090909  0.          0.          0.09090909  0.
  0.09090909  0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.          0.          0.          0.09090909  0.09090909  0.18181818
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.09090909  0.          0.09090909  0.36363636  0.18181818  0.18181818
  0.09090909  0.18181818  0.          0.          0.27272727  0.09090909
  0.09090909  0.27272727  0.09090909  0.09090909  0.09090909  0.09090909
  0.09090909  0.18181818  0.          0.36363636  0.          0.09090909
  0.09090909  0.27272727  0.27272727  0.18181818  0.          0.09090909
  0.36363636  0.18181818  0.18181818  0.27272727  0.45454545  0.18181818
  0.27272727  0.09090909  0.09090909  0.36363636  0.18181818  0.45454545
  0.          0.36363636  0.45454545  0.45454545  0.45454545  0.36363636
  0.54545455  0.          0.54545455  0.36363636  0.45454545  0.27272727
  0.09090909  0.54545455  0.18181818  0.09090909  0.27272727  0.45454545
  0.27272727  0.45454545  0.45454545  0.36363636  0.54545455  0.54545455
  0.09090909  0.18181818  0.27272727  0.18181818  0.36363636  0.
  0.54545455  0.          0.45454545  0.54545455  0.18181818  0.18181818
  0.18181818  0.36363636  0.18181818  0.54545455  0.45454545  0.36363636
  0.54545455  0.18181818  0.45454545  0.54545455  0.54545455  0.18181818
  0.45454545  0.45454545  0.63636364  0.54545455  0.54545455  0.63636364
  0.45454545  0.72727273  0.63636364  0.54545455  0.54545455  0.63636364
  0.90909091  0.63636364  0.18181818] B OUTPUT
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.
  0.  0.  0.  0.  1.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.]
X  OUTPUT
   [ 0.          0.          0.          0.09090909  0.          0.          0.
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.          0.          0.09090909  0.          0.
  0.09090909  0.          0.          0.09090909  0.09090909  0.          0.
  0.          0.          0.          0.          0.09090909  0.09090909
  0.09090909  0.09090909  0.          0.          0.09090909  0.
  0.09090909  0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.          0.          0.          0.09090909  0.09090909  0.18181818
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.09090909  0.          0.09090909  0.36363636  0.18181818  0.18181818
  0.09090909  0.18181818  0.          0.          0.27272727  0.09090909
  0.09090909  0.27272727  0.09090909  0.09090909  0.09090909  0.09090909
  0.09090909  0.18181818  0.          0.36363636  0.          0.09090909
  0.09090909  0.27272727  0.27272727  0.18181818  0.          0.09090909
  0.36363636  0.18181818  0.18181818  0.27272727  0.45454545  0.18181818
  0.27272727  0.09090909  0.09090909  0.36363636  0.18181818  0.45454545
  0.          0.36363636  0.45454545  0.45454545  0.45454545  0.36363636
  0.54545455  0.          0.54545455  0.36363636  0.45454545  0.27272727
  0.09090909  0.54545455  0.18181818  0.09090909  0.27272727  0.45454545
  0.27272727  0.45454545  0.45454545  0.36363636  0.54545455  0.54545455
  0.09090909  0.18181818  0.27272727  0.18181818  0.36363636  0.
  0.54545455  0.          0.45454545  0.54545455  0.18181818  0.18181818
  0.18181818  0.36363636  0.18181818  0.54545455  0.45454545  0.36363636
  0.54545455  0.18181818  0.45454545  0.54545455  0.54545455  0.18181818
  0.45454545  0.45454545  0.63636364  0.54545455  0.54545455  0.63636364
  0.45454545  0.72727273  0.63636364  0.54545455  0.54545455  0.63636364
  0.90909091  0.63636364  0.18181818] B OUTPUT
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.
  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  1.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  1.  1.
  1.  1.  1.  0.  1.  1.  1.  1.  1.  1.  1.  0.  0.  1.  0.  1.  0.  1.
  1.  1.  0.  0.  0.  0.  1.  0.  1.  0.  0.  1.  0.  0.  1.  0.  0.  1.
  0.  1.  1.  1.  0.  1.  0.  0.  1.  1.  1.  1.  1.  1.  0.  1.  1.  1.
  1.  1.  1.  1.  0.]
X  OUTPUT
   [ 0.          0.          0.          0.09090909  0.          0.          0.
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.          0.          0.09090909  0.          0.
  0.09090909  0.          0.          0.09090909  0.09090909  0.          0.
  0.          0.          0.          0.          0.09090909  0.09090909
  0.09090909  0.09090909  0.          0.          0.09090909  0.
  0.09090909  0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.          0.          0.          0.09090909  0.09090909  0.18181818
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.09090909  0.          0.09090909  0.36363636  0.18181818  0.18181818
  0.09090909  0.18181818  0.          0.          0.27272727  0.09090909
  0.09090909  0.27272727  0.09090909  0.09090909  0.09090909  0.09090909
  0.09090909  0.18181818  0.          0.36363636  0.          0.09090909
  0.09090909  0.27272727  0.27272727  0.18181818  0.          0.09090909
  0.36363636  0.18181818  0.18181818  0.27272727  0.45454545  0.18181818
  0.27272727  0.09090909  0.09090909  0.36363636  0.18181818  0.45454545
  0.          0.36363636  0.45454545  0.45454545  0.45454545  0.36363636
  0.54545455  0.          0.54545455  0.36363636  0.45454545  0.27272727
  0.09090909  0.54545455  0.18181818  0.09090909  0.27272727  0.45454545
  0.27272727  0.45454545  0.45454545  0.36363636  0.54545455  0.54545455
  0.09090909  0.18181818  0.27272727  0.18181818  0.36363636  0.
  0.54545455  0.          0.45454545  0.54545455  0.18181818  0.18181818
  0.18181818  0.36363636  0.18181818  0.54545455  0.45454545  0.36363636
  0.54545455  0.18181818  0.45454545  0.54545455  0.54545455  0.18181818
  0.45454545  0.45454545  0.63636364  0.54545455  0.54545455  0.63636364
  0.45454545  0.72727273  0.63636364  0.54545455  0.54545455  0.63636364
  0.90909091  0.63636364  0.18181818] B OUTPUT
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.
  0.  1.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.
  0.  0.  0.  0.  0.  0.  1.  0.  1.  1.  0.  1.  0.  1.  0.  1.  0.  1.
  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  1.  0.  0.  0.  0.  0.  0.
  0.  1.  0.  0.  0.  0.  1.  0.  1.  0.  0.  0.  0.  1.  0.  0.  0.  0.
  0.  1.  1.  1.  0.]
X  OUTPUT
   [ 0.          0.          0.          0.09090909  0.          0.          0.
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.          0.          0.09090909  0.          0.
  0.09090909  0.          0.          0.09090909  0.09090909  0.          0.
  0.          0.          0.          0.          0.09090909  0.09090909
  0.09090909  0.09090909  0.          0.          0.09090909  0.
  0.09090909  0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.          0.          0.          0.09090909  0.09090909  0.18181818
  0.          0.          0.09090909  0.          0.          0.09090909
  0.          0.09090909  0.09090909  0.          0.09090909  0.09090909
  0.09090909  0.          0.09090909  0.36363636  0.18181818  0.18181818
  0.09090909  0.18181818  0.          0.          0.27272727  0.09090909
  0.09090909  0.27272727  0.09090909  0.09090909  0.09090909  0.09090909
  0.09090909  0.18181818  0.          0.36363636  0.          0.09090909
  0.09090909  0.27272727  0.27272727  0.18181818  0.          0.09090909
  0.36363636  0.18181818  0.18181818  0.27272727  0.45454545  0.18181818
  0.27272727  0.09090909  0.09090909  0.36363636  0.18181818  0.45454545
  0.          0.36363636  0.45454545  0.45454545  0.45454545  0.36363636
  0.54545455  0.          0.54545455  0.36363636  0.45454545  0.27272727
  0.09090909  0.54545455  0.18181818  0.09090909  0.27272727  0.45454545
  0.27272727  0.45454545  0.45454545  0.36363636  0.54545455  0.54545455
  0.09090909  0.18181818  0.27272727  0.18181818  0.36363636  0.
  0.54545455  0.          0.45454545  0.54545455  0.18181818  0.18181818
  0.18181818  0.36363636  0.18181818  0.54545455  0.45454545  0.36363636
  0.54545455  0.18181818  0.45454545  0.54545455  0.54545455  0.18181818
  0.45454545  0.45454545  0.63636364  0.54545455  0.54545455  0.63636364
  0.45454545  0.72727273  0.63636364  0.54545455  0.54545455  0.63636364
  0.90909091  0.63636364  0.18181818] B OUTPUT
[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.
  0.  0.  0.  1.  1.  0.  0.  1.  0.  0.  0.  0.  1.  1.  0.  0.  0.  0.
  0.  1.  0.  0.  1.  0.  1.  1.  0.  0.  0.  0.  0.  1.  1.  1.  0.  0.
  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.
  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.  0.  1.  0.
  0.  0.  0.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.
  0.  0.  0.  0.  1.  1.  0.  0.  0.  0.  1.  0.  0.  1.  1.  0.  0.  0.
  0.  0.  1.  0.  1.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  1.  0.  0.
  0.  0.  1.  0.  1.]

在这个数据中,我只是使用了11个样本

我只是从我的样本和属性提取中复制粘贴测试向量,但是我得到了这些,同样的问题。问题= X和B不是1和0,X也应该只包含1和0

1 个答案:

答案 0 :(得分:1)

您正在使用一棵球树。如Maintaining Identifiers, Devices, and Profiles

中所述
  

球树递归地将数据划分为由质心C和半径r [...]定义的节点。使用此设置,测试点和质心之间的单个距离计算足以确定下限和上限。到节点内所有点的距离。

换句话说,球树不仅计算点之间的距离,还经常计算点与某些点之间的质心之间的距离。虽然你的所有点的坐标都是0或1,但是它们的某些组的质心通常不会。