我有对象和距离的功能,并希望在scikit-learn
群集使用这些方法DBSCAN
。我的物体在欧几里德空间中没有表示。我知道,这是可以使用precomputed
指标,但对我来说这是非常不切实际的,由于大尺寸的距离矩阵。有没有什么办法可以在scikit-learn
中克服这个问题?也许,DBSCAN的另一个python实现可以这样做吗?DBSCAN(只有指标)scikit学习
回答
scikit学习有大量的各种指标的支持。
它们中的一些可以使用kdtree(非常快),使用球树(快速),使用预先计算的距离矩阵(快速但需要大量内存)或无需预先计算,但Cython实现(二次运行时)甚至是python回调(很慢)。
被实现,但极其缓慢的最后一个选项:
def mydistance(x,y):
return numpy.sum((x-y)**2)
labels = DBSCAN(eps=eps, min_samples=minpts, metric=mydistance).fit_predict(X)
,不幸的是,很多很多很多比
labels = DBSCAN(eps=eps, min_samples=minpts, metric='euclidean').fit_predict(X)
我发现ELKI执行,当你需要使用更好的慢得多你自己的距离功能。 Java可以使用Hotspot JNI编译器将它们编译成接近原生代码的速度。 Python(当前)不能这样做。
我不认为DBSCAN将与用户定义的工作指标,如“mydistance”。该文档说:如果度量标准是一个字符串或可调用的,它必须是度量参数metrics.pairwise.calculate_distance允许的选项之一。 – vdesai
它的工作原理(否则,他们为什么会提到“callable”)。我用它。由于python解释器与Cython度量相比,它非常慢。 –
- 1. 非平衡类指标和scikit学习
- 2. Scikit学习多个目标
- 3. OneClassSVM scikit学习
- 4. Scikit学习安装
- 5. 路径scikit学习
- 6. scikit学习管道
- 7. Scikit学习分类
- 8. scikit学习StratifiedShuffleSplit KeyError异常与指数
- 9. 值误差而产生使用PCA指标scikit学习
- 10. Scikit学习图像分类
- 11. Scikit学习混淆矩阵
- 12. scikit在KNeighbors上学习GridSearchCV
- 13. SCIKIT学习多类错误
- 14. 用Scikit学习Unigram分析
- 15. 特征选择Scikit学习
- 16. Scikit学习TruncatedSVD文档
- 17. 得分RFECV()的scikit学习
- 18. AgglomerativeClustering scikit学习连通
- 19. scikit学习CountVectorizer的UnicodeDecodeError
- 20. Scikit学习:preprocessing.scale()与preprocessing.StandardScalar()
- 21. 警告消息scikit学习
- 22. Startified GroupShuffleSplit在Scikit学习
- 23. scikit学习安装难度
- 24. 稀疏实现/ scikit学习
- 25. 误差scikit学习CV
- 26. Scikit学习没有正确的IPython
- 27. scikit-学习句柄有多少功能?
- 28. 学习指标功能,ML
- 29. 使用scikit学习字典学习中的内存错误学习
- 30. 问题与机器学习scikit在Python学习
为什么你不希望在构造函数中使用的度量参数? –
继@ Olologin的评论,'metric'参数在DBSCAN的构造器接受字符串(对于一个已经实现的距离)或一个可调用(一个函数,对于给定的2个元素,返回一个距离量度)。编写你自己的并用'metric = my_func'初始化DBSCAN。 –