Python scikit学习'的类型错误;圆柏

Python scikit学习'的类型错误;圆柏,python,scikit-learn,python-3.6,typeerror,nearest-neighbor,Python,Scikit Learn,Python 3.6,Typeerror,Nearest Neighbor,我有一个使用scipy的toyexample,它工作得很好,我想用scikit learn做一段类似的代码 当我用BallTree做一个类似的玩具示例时,比如下面 import numpy as np from sklearn.neighbors.ball_tree import BallTree from sklearn.neighbors import NearestNeighbors import sys def main(): min_neighbors = 3 x

我有一个使用scipy的toyexample,它工作得很好,我想用scikit learn做一段类似的代码

当我用BallTree做一个类似的玩具示例时,比如下面

import numpy as np

from sklearn.neighbors.ball_tree import BallTree
from sklearn.neighbors import NearestNeighbors

import sys

def main():
    min_neighbors = 3
    x,y = np.mgrid[0:5,0:5]  
    grid_x,grid_y = np.mgrid[1:6,1:6]
    points = np.c_[x.ravel(),y.ravel()]
    grid_points = np.c_[grid_x.ravel(),grid_y.ravel()]
    bt = BallTree(points,leaf_size=1, metric='haversine')
    indices = bt.query_radius(grid_points,1)

    for idx,(matches,grid) in enumerate(zip(indices,grid_points)):
        #print(matches)
        if len(matches) >= min_neighbors:
           x1,y1 = bt.data[matches].T

 main()
我得到以下错误-

   Traceback (most recent call last):
   File "testballtree.py", line 25, in <module>
   main()
   File "testballtree.py", line 23, in main
    x1,y1 = bt.data[matches].T
   File "stringsource", line 406, in      View.MemoryView.memoryview.__getitem__
   File "stringsource", line 746, in View.MemoryView.memview_slice
   TypeError: only integer scalar arrays can be converted to a scalar index

看起来文档是错误的,
bt.data
是内存视图,而不是numpy数组。它可能应该是一个numpy数组或者是私有的。不过,您可以改为使用
来修复代码段。已打开

BallTree。数据
为,因此在上面的示例中,您可以直接使用
数组

data
属性docstring确实不正确:它是一个memoryview而不是数组。您可以使用
numpy.asarray(bt.data)
将其转换回numpy数组

   Traceback (most recent call last):
   File "testballtree.py", line 25, in <module>
   main()
   File "testballtree.py", line 23, in main
    x1,y1 = bt.data[matches].T
   File "stringsource", line 406, in      View.MemoryView.memoryview.__getitem__
   File "stringsource", line 746, in View.MemoryView.memview_slice
   TypeError: only integer scalar arrays can be converted to a scalar index
  scikit-learn version is 0.19.2