Я написал код вычисления матрицы путаницы в Python:
def conf_mat(prob_arr, input_arr):
# confusion matrix
conf_arr = [[0, 0], [0, 0]]
for i in range(len(prob_arr)):
if int(input_arr[i]) == 1:
if float(prob_arr[i]) < 0.5:
conf_arr[0][1] = conf_arr[0][1] + 1
else:
conf_arr[0][0] = conf_arr[0][0] + 1
elif int(input_arr[i]) == 2:
if float(prob_arr[i]) >= 0.5:
conf_arr[1][0] = conf_arr[1][0] +1
else:
conf_arr[1][1] = conf_arr[1][1] +1
accuracy = float(conf_arr[0][0] + conf_arr[1][1])/(len(input_arr))
prob_arr - это массив, который вернул мой классификационный код, и образец массива выглядит так:
[1.0, 1.0, 1.0, 0.41592955657342651, 1.0, 0.0053405015805891975, 4.5321494433440449e-299, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.70943426182688163, 1.0, 1.0, 1.0, 1.0]
input_arr isисходные метки классов для набора данных, и это выглядит так:
[2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, 1, 1, 1]
Что мой код пытается сделать, это: я получаю prob_arr и input_arr и для каждого класса (1 и 2) я проверяю, если онинеправильно классифицировано или нет.
Но мой код работает только для двух классов.Если я запускаю этот код для нескольких классифицированных данных, он не работает.Как я могу сделать это для нескольких классов?
Например, для набора данных с тремя классами он должен вернуть: [[21,7,3],[3,38,6],[5,4,19]]