You could just need “regular" Python function that outputs a scalar. For 
example, consider the following example:

>>> from sklearn.neighbors import NearestNeighbors
>>> import numpy as np
>>> X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
>>> nbrs = NearestNeighbors(n_neighbors=2, algorithm='ball_tree').fit(X)
>>> distances, indices = nbrs.kneighbors(X)
>>> distances
array([[ 0.        ,  1.        ],
       [ 0.        ,  1.        ],
       [ 0.        ,  1.41421356],
       [ 0.        ,  1.        ],
       [ 0.        ,  1.        ],
       [ 0.        ,  1.41421356]])

(note that I am using the NearestNeighbors class here, but the same applies to 
the KNeighborsClassifier)

For example, to compute the distances between samples as Euclidean distance 
(the default) you could just define a Python function

>>> def eucldist(x, y):
...    return np.sqrt(np.sum((x-y)**2))
>>> nbrs = NearestNeighbors(n_neighbors=2, algorithm='ball_tree', 
>>> metric=eucldist).fit(X)
>>> distances, indices = nbrs.kneighbors(X)
>>> distances
array([[ 0.        ,  1.        ],
       [ 0.        ,  1.        ],
       [ 0.        ,  1.41421356],
       [ 0.        ,  1.        ],
       [ 0.        ,  1.        ],
       [ 0.        ,  1.41421356]])

(alt. you could provide it as lambda function)

Best,
Sebastian

> On Jan 8, 2016, at 9:19 PM, A neuman <themagenta...@gmail.com> wrote:
> 
> Hello everyone,
> 
> I actually want to use the KNeighboursClassifier, with my own distances.
> 
> in the Documentation stands the following:
> 
> [callable] : a user-defined function which accepts an array of distances, and 
> returns an array of the same shape containing the weights.
> 
> I just dont know, how should the array looks like?
> 
> For example, if I have 100 Samples, the array has a size 100*100?
> So for every samples there is a distance to the other 99 samples. 
> 
> [[0.4, 0.2, ...],[0.3,0.1,...]........[0.9,0.6,...]]   something like this? 
> 
> I would appreciate your help.
> 
> best,
> 
> 
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140_______________________________________________
> Scikit-learn-general mailing list
> Scikit-learn-general@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/scikit-learn-general


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Scikit-learn-general mailing list
Scikit-learn-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/scikit-learn-general

Reply via email to