我有对象和距离的功能,并希望在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. OneClassSVM scikit学习
- 2. scikit学习StratifiedShuffleSplit KeyError异常与指数
- 3. 路径scikit学习
- 4. Scikit学习分类
- 5. 用Scikit学习Unigram分析
- 6. 误差scikit学习CV
- 7. Scikit学习TruncatedSVD文档
- 8. scikit学习安装难度
- 9. Scikit学习:preprocessing.scale()与preprocessing.StandardScalar()
- 10. 警告消息scikit学习
- 11. Startified GroupShuffleSplit在Scikit学习
- 12. scikit从coef_学习预测
- 13. scikit在KNeighbors上学习GridSearchCV
- 14. 特征选择Scikit学习
- 15. scikit-学习句柄有多少功能?
- 16. 使用scikit学习字典学习中的内存错误学习
- 17. 问题与机器学习scikit在Python学习
- 18. Scikit学习多标签分类,从MultiLabelBinarizer获取标签
- 19. Scikit学习(Python)的不同的指标结果(F1分数)为StratifiedKFold
- 20. TF-IDF简单使用 - NLTK/Scikit学习
- 21. scikit学习决策树模型评估
- 22. 将python scikit学习模型导入pmml
- 23. 如何创建scikit学习数据集?
- 24. 不同的结果scikit学习wapper
- 25. Nifti图像变成scikit学习
- 26. python LDA scikit学习抛出ValueError
- 27. Scikit学习预测单一观察
- 28. Scikit的大火学习K-Means
- 29. 大熊猫数据和scikit学习
- 30. Scikit学习,KMeans:如何使用max_iter
为什么你不希望在构造函数中使用的度量参数? –
继@ Olologin的评论,'metric'参数在DBSCAN的构造器接受字符串(对于一个已经实现的距离)或一个可调用(一个函数,对于给定的2个元素,返回一个距离量度)。编写你自己的并用'metric = my_func'初始化DBSCAN。 –