Мой код бросает 'Y [i] отсутствует в списке' ValueError, хотя этот список состоит из уникальных значений в Y. Я распечатал список, типы списка и тип Y [i], но не нашли решения. Кроме того, ошибка происходит нерегулярно.Невозможное значениеError. Значение не в списке при использовании numpy.unique
Чтобы обеспечить некоторый контекст: я пытаюсь написать простой фрагмент кода, который проверяет, классифицирован ли мой классификатор K-Means правильно. Поскольку средства кластера являются немаркированными ints, я хочу, чтобы мой результат был матрицей целых чисел, так что C [h] [y] представляет количество раз, которое моя модель классифицирует X [i] как h, а фактическая метка - y. Поскольку указанные метки не обязательно являются целыми числами, я пытаюсь назначить их целыми числами, создав список возможных меток (V) и используя индекс этого списка, а не сам ярлык.
Код (включая отладочные печати):
def classify(func, D):
X = D[0]
Y = D[1]
V = list(np.unique(Y)) # <- V contains all values of Y
print(V)
print(type(V[0]),type(V[1]),type(V[2]))
C = [V]
for i in range(len(Y)):
h = func(X[i])
while len(C) < h+1:
C.append(np.zeros(len(V)))
if not Y[i] in V:
print(type(Y[i]))
y = V.index(Y[i]) # <- V does not contain Y[i]?
C[h][y] += 1
return np.array(C)
Выход:
[1.0, 2.0, 3.0]
<class 'numpy.float64'> <class 'numpy.float64'> <class 'numpy.float64'>
<class 'numpy.float64'>
Traceback (most recent call last):
File "leren6.py", line 38, in <module>
main()
File "leren6.py", line 18, in main
C = classify(model, Data)
File "leren6.py", line 33, in classify
y = V.index(Y[i])
ValueError: 3.0 is not in list
Если вы можете это исправить, вы официально удивительным.
Исправлено. Спасибо, ты официально классный! – Jornam