Предполагая, что определены и D
, и classifier
, в вашем коде есть некоторые ошибки, которые все должны давать разумные сообщения об ошибках (кроме приведения типа с плавающей запятой, который может быть хитрым с питоном).
Вы оба пропускаете :
в запросе if, а также пытаетесь получить доступ к массиву D
, как D[i, 13]
, который не разрешен.2D-массивы доступны с другим набором []
, например D[i][13]
.Однако, поскольку вы уже перечисляете двумерный массив, вы также можете использовать item[13]
для получения значения.
Наконец, если вам нужно десятичное значение в конце, вам также необходимоприведите хотя бы одно из значений в число с плавающей точкой, например float(x)/D.length
, в противном случае оно просто округлит его до 0 или 1.
Фиксированный код:
for i, item in enumerate(D):
if classifier(item) == D[i][13]:
# if classifier(item) == item[13]: # This should also work, you can use either.
x += 1 #Increase x on a hit
acc = (float(x)/D.length)
# Divide x by length of D to calculate hitrate eg. "0.5"; 100% would be "1"
return acc