Я работаю над следующим фреймом данных:
height weight shoe_size age
0 175 70 40 30
1 175 75 39 41
2 175 69 40 33
3 176 71 40 35
4 178 81 41 27
5 169 73 38 49
6 170 65 39 30
и обнаружил эту расслабленную функциональную зависимость (RFD):
('weight': 2.0) ==> ('height': 1.0)
, что означает, что для каждой пары строк есть разница <= 2 </strong> по весу они будут иметь разницу <= 1 </strong> по высоте тоже.
Мне нужно найти все подмножества строк, по которым этот RFDудерживает и показывает тот, у которого больше строк.
В этом случае наилучшим (самым большим) подмножеством будет:
height weight shoe_size age
2 175 69 40 33
0 175 70 40 30
3 176 71 40 35
Как получить все такие подмножества из кадра данных или, по крайней мере,самое большое подмножество, для которого этот RFD содержит?
Обновление
Я реализовал решение, предложенное @DYZ, но похоже, что Порог соблюдается только для отдельных ребер, а не для полного пути от одного узла к другому подключенного компонента в графе.
Чтобы лучше объяснить, о чем я говорю, приведу пример подмножества, найденного сследующий RFD
('height': 1.0, 'age': 6.0) ==> ('weight': 4.0)
Subset
height weight shoe_size age
0 175 70 40 30
1 175 75 39 41
2 175 69 40 33
3 176 71 40 35
Это подмножество неверно, поскольку строки
height weight shoe_size age
0 175 70 40 30
и
height weight shoe_size age
1 175 75 39 41
имеют расстояние 11> 6 , на возрасте , а также на расстоянии 5> 4 на весе .
Я думаю, это может быть из-заона считается матрицей смежности, а не матрицей расстояний для графа, поэтому добавляется строка, если существует хотя бы одно ребро, соответствующее порогу, но оно должно быть на самом деле, если все пути в подключенных компонентах соответствуют порогам.