Spaces:
Sleeping
Sleeping
| import numpy as np | |
| def mutual_information(x, y, bins=30): | |
| c_xy = np.histogram2d(x, y, bins)[0] | |
| p_xy = c_xy / np.sum(c_xy) | |
| p_x = np.sum(p_xy, axis=1) | |
| p_y = np.sum(p_xy, axis=0) | |
| mi = 0.0 | |
| for i in range(len(p_x)): | |
| for j in range(len(p_y)): | |
| if p_xy[i, j] > 0: | |
| mi += p_xy[i, j] * np.log( | |
| p_xy[i, j] / (p_x[i] * p_y[j] + 1e-12) | |
| ) | |
| return mi |