2017-02-16 34 views
1

Я вычислил сходство между файлами вредоносных программ с использованием Bindiff, соответственно построил матрицу подобия, основанную на сравнении попарного сходства. Я хочу сгруппировать результаты, используя scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean'), но в документации указано, что y должна быть сжатой или избыточной матрицей расстояния. Итак, как я могу преобразовать матрицу подобия (НЕ) в требуемый формат?Каким должен быть вход функции сцепления в scipy?

Где находится this thread упоминается y может быть верхний треугольник матрицы расстояния. Но я хочу отметить, что порядок сравнения в Bindiff меняет результат так similarity(file1,file2) != similarity(file2,file1)

так как я могу решить эту проблему?

ответ

0

Вы можете просто реализовать иерархическую кластеризацию самостоятельно!

Есть tutorials for implementing it. Все, что вам нужно сделать, это использовать сходство, а не расстояние.

Но, как вы быстро поймете, вы должны нуждаться в, чтобы сделать его симметричным сходством, минимальным, средним, максимальным расстоянием до двух.

+0

Но матрица подобия, которая у меня есть, не является симметричной, как указано в моем сообщении, это связано с тем, что вычисление привязки зависит от порядка файлов. – Mohannad

+0

Да, опять: вы * необходимо *, чтобы сделать его симметричным с одной из вышеупомянутых функций, например. В противном случае вы не можете группировать. Рассмотрим две точки, но с bindiff 1 resp. 2 - с чем сходство сливается? Выберите один ответ. –