Я хотел бы рассчитать условные вероятности всех перестановок столбцов в панде DataFrame.
Например, у меня есть следующая таблица:
+-------+-------+----------+-------+
| Price | Color | Material | Brand |
+-------+-------+----------+-------+
| 10 | red | leather | X |
| 20 | red | leather | Y |
| 10 | red | steel | X |
| 10 | blue | leather | Y |
| 20 | blue | leather | X |
| 20 | blue | leather | X |
+-------+-------+----------+-------+
Теперь я хочу вычислить все условные вероятности, что означает:
- P (Цена |Цвет)
- P (Материал | Цвет)
- P (Марка | Цвет)
- P (Цвет | Цена)
- ...
- P (Цена | Цвет, Материал)
- P (Цена | Цвет, Марка)
- P (Цвет, Цена | Марка)
- P (Цвет, Цена| Материал)
- ...
- P (Цвет | Бренд, Материал, Цена)
и т. Д.
Так в основном для каждого "P (...) "Я должен разделить данные на часть, оставленную от" | "и вычислите долю элементов с этим атрибутом, разделенную на все элементы в этом разделении.
т.е. P (Цена | Цвет, Материал) вернет кортежи
(red, leather) -> [(X, 10, 0.5), (Y, 20, 0.5)]
(red, steel) -> [(X, 10, 1.0)]
(blue, leather) -> [(X, 10, 0.3333), (X, 20, 0.6666)]
Я знаю времясложность этого будет чрезвычайно высокой.Есть ли относительно простой способ сделать это в Python или каким-либо другим способом, который вы можете себе представить?