Предположим, что у меня есть матрица с целыми значениями. Я хочу сделать его стохастической матрицей (т. Е. Суммой каждой строки в матрице, равной 1)Целочисленная матрица для нормализации стохастической матрицы
Я создаю случайную матрицу, подсчитываю сумму каждой строки и делю каждый элемент в строке для суммы строки.
dt = pd.DataFrame(np.random.randint(0,10000,size=10000).reshape(100,100))
dt['sum_row'] = dt.sum(axis=1)
for col_n in dt.columns[:-1]:
dt[col_n] = dt[col_n]/dt['sum_row']
После этой суммы каждой строки должно быть равно 1. Но это не так.
(dt.sum_row_normalized == 1).value_counts()
> False 75
> True 25
> Name: sum_row_normalized, dtype: int64
Я понимаю, что некоторые значения не точно 1, но очень близки к нему. Тем не менее, как правильно нормализовать матрицу?
Обратите внимание, что '3/2 == 1' в Python 2. Попробуйте преобразовать один из двух чисел в дивизии сначала 'float':' dt [col_n]/float (dt ['sum_row']) '. –