python - 从相似度矩阵中识别异常值
问题描述
我有一个维度为 nxn 的 numpy 矩阵,其中 [i,j] 元素是两个对象之间的相似度得分(0-1,1 相同,0 相对)(在这种情况下,我正在分析调色板,所以它是调色板 i 和调色板 j 之间的相似度得分)。我想确定哪些对象是“异常值”(在这里使用松散的定义)。我能想到的最接近的是使用 DBSCAN 之类的东西并确定哪些对象似乎不适合。有没有更好的方法来解决这个问题?
解决方案
我会选择Markov clustering。
本质上,该算法是在图上进行随机游走。
如果您有邻近矩阵,则随机游走非常容易实现。算法大致是:
- 标准化矩阵。
- 将其提高到大幂 (
M**n
)。 - 查看节点之间的连接强度。
推荐阅读
- javascript - 带有 SQL 查询问题的准备好的语句
- c# - 不可能两次运行 IAsyncEnumerable 的枚举?
- javascript - 本机模块分辨率
- react-native - 抽屉中的样式项目没有反映在本机反应中?
- css - 如何将两个图像并排放置
- oracle - 为什么我收到“序列不存在”错误代码?
- reactjs - React - 如何等待数据加载
- biztalk - BizTalk 适配器与 Oracle 云上的 Oracle E-Business Suite 集成?
- css - CSS:错误的元素宽度和位置 IE11(flexbox、位置、变换)
- xamarin.forms - PRISM - Xamarin 表单 - 在 MasterDetailPage 的某些详细信息页面上禁用 IsGestureEnable