在数据集中仔细查找最近的点对(如重复点)
closel的Python项目详细描述
紧密:三角尺:
在数组中查找最近的对。
利用主成分分析(pca)将维数降到2,并采用分治算法寻找最接近的点对。
开始
pip install closely
或从源安装:
git clone https://github.com/justinshenk/closely
cd closely
pip install .
如何使用
importclosely# X is an n x m numpy arraypairs,distances=closely.solve(X,n=1)
可以指定要用n
标识的对数。
示例
importcloselyimportnumpyasnpimportmatplotlib.pyplotasplt# Create datasetX=np.random.random((100,2))pairs,distance=closely.solve(X,n=1)# Plot pointsz,y=np.split(X,2,axis=1)fig,ax=plt.subplots()ax.scatter(z,y)fori,txtinenumerate(X):ifiinpairs:ax.annotate(i,(z[i],y[i]),color='red')else:ax.annotate(i,(z[i],y[i]))plt.show()
检查对:
In [10]: pairs Out[10]: array([[ 7, 16], [96, 50]])
输出:
注意事项
如果数据有3个以上的特征,closely
将通过将其投影到解释大部分方差的两个方向来降低维数。这加快了处理速度,但不是100%精确。换句话说,如果数据有四列(例如,x,y,z,a),它将在新的投影基p1和p2上应用“分而治之”。
如果n
>;1,它还会删除一对中的第一个点在极少数情况下,如果数据高度重叠,则会导致假阴性
信用和解释
Python代码由Andriy Lazorenko修改,打包后可用于Justin Shenk的>;2特性