访问数据点scikit KNNR

时间:2014-12-20 16:50:36

标签: python scikit-learn cluster-analysis nearest-neighbor

问题

用neigh.fit()拟合数据后,我想访问这些数据点,我该怎么做?

详细

>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]]
>>> samplesy = [80, 60, 40]
>>> from sklearn import neighbors
>>> neigh = neighbors.KNeighborsRegressor(n_neighbors=1)
>>> neigh.fit(samples, samplesy) 
>>> print(neigh.kneighbors([1., 1., 1.])) 
(array([[ 0.5]]), array([[2]]))

因此我从中了解到最接近的数据点是'samples [2]'。 但是,如果我不再访问变量'samples',是否有办法访问'neigh'中的数据点?也许像'neigh [2]'之类的东西?因为数据点必须保存在'neigh'模型的某个地方吗?

为什么

我想访问5个最近邻居的数据点,并计算这些数据点的集群中心。然后我想计算这个集群中心到新数据点的距离,以了解这个新数据点与原始数据的距离。

1 个答案:

答案 0 :(得分:2)

用于拟合模型的数据存储在neigh._fit_X

>>> neigh._fit_X
array([[ 0. ,  0. ,  0. ],
       [ 0. ,  0.5,  0. ],
       [ 1. ,  1. ,  0.5]])

但是:变量名的前导下划线应该是一个信号,告诉你这应该是某种私有属性。您不应期望此数据以任何特定方式运行,甚至存在于库的未来版本中。使用它需要您自担风险。

更好的方法可能就是自己跟踪输入数据。