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