Условные вероятности Панд на всех перестановках столбцов - PullRequest
0 голосов
/ 21 марта 2019

Я хотел бы рассчитать условные вероятности всех перестановок столбцов в панде 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 или каким-либо другим способом, который вы можете себе представить?

...