2015-07-26 2 views
0

Я участвую в трудностях в случае классификации. У меня есть два массива, первый - «Фактический», а второй - «Предсказанный». Есть класс здесь.Как правильно рассчитать подобие двух массивов в python

A=np.array([1,1,1, 2,3]) 
P=np.array([1,1,2,3,3]) 

приведенные выше массивы означают, что третий и четвертый элементы не были точно предсказаны. Мне интересно, когда я вычислить среднюю точность между двумя массивами с помощью следующего кода, он показывает _ 0.59_:

np.mean(A==P) 
>out: 0.59 

Но, когда я вычислить точность для каждого класса с помощью следующего кода, он показывает 0,57 :

count1=[] 
for label in range(1,4):  
    count1.append(np.mean([(x == y) for x, y in zip(A,P) if x==label]))  
count1 
>out: [0.666666666667,0.0,1.0] 
np.mean(count1) 
>out:0.54 

Разница возрастает, когда число классов увеличивается.

+0

Вы не можете вычислить среднее среднее значение, усреднив средние значения. – BrenBarn

ответ

0

Это не имеет никакого отношения к программированию, но при вычислении средних значений.

Предположим, у вас есть только два класса, и ваши данные, как это:

Фактический: [1, 1, 1, 1, 2]

Прогнозируемая: [1, 1, 1, 1, 1]

Точность прогнозирования класса 1 составляет 100%, а точность прогнозирования класса 2 равна 0%. Общая точность составляет 80%. Теперь предположим, что ваши данные, как это:

Фактический: [1, 2, 2, 2, 2]

Прогнозируемая: [1, 1, 1, 1, 1]

Точность прогнозирования класса 1 снова равна 100%, а точность прогнозирования класса 2 снова равна 0%. Но ваша общая точность теперь составляет 20%. Очевидно, что невозможно получить общую точность только из процентных долей точности двух классов.

Вы не можете вычислить среднюю точность, просто зная точность каждого класса ставки (т. Е. Проценты). Вы должны знать , сколько значений было в каждом классе и соответственно вес соответственно.

Вы можете, конечно, вычислить точность каждого класса и сообщить о них как отдельную информацию, и это может быть полезно. В вашем случае, поскольку вы уже знаете, как вычислить общую точность, неясно, почему вам нужно использовать метод per-class для его вычисления вообще. Просто вычислите общую точность по прямому пути, который уже работает.

+0

Благодарим вас за объяснение. Итак, если я хочу сообщить о точности для каждого класса, приведенный выше код, который я делаю, является правильным или нет? – mar

+0

Между тем, наконец, я пройду проверку. Следовательно, точка, о которой вы говорили, будет решена. Мне интересно, почему общая точность не совпадает с средней для каждого класса. – mar

Смежные вопросы