Sample_weights Модель Keras — ошибка индекса: слишком много индексов для массива

#python #pandas

#python #панды

Вопрос:

У меня довольно несбалансированный набор данных, в котором я хотел бы взвесить некоторые данные иначе, чем другие, чтобы реализовать мою нейронную сеть с Keras.
Я обнаружил, что для этого я могу использовать sample_weights.

Мой код выглядит так:

 sample_weight = np.ones(shape=(len(y_train),))
sample_weight[y_train < 1] = 2.0


history = model.fit(x_train, y_train, batch_size=32, sample_weight=sample_weight, epochs=100, validation_data=(x_val, y_val))
  

но это дает мне следующую ошибку для строки 2: Ошибка индекса: слишком много индексов для массива

Если я напечатаю свой y_train, это будет выглядеть примерно так:

            Ertrag
41799      0.979252
48595      1.000000
50681      1.000000
51678      1.000000
4896       1.000000
  

Это из-за столбца индекса в y_train?

Заранее спасибо!

Комментарии:

1. только простая попытка … вы пытались преобразовать pandas в np.array свой y?

2. да, я только что сделал y_train=y_train.to_numpy() …. он по-прежнему не работает

3. Также y_train.flatten(), чтобы получить его в 1D массив, не будет работать; (

Ответ №1:

Ошибка может быть вызвана разницей в размерности y_train и sample_weight . Вот идея для устранения неполадок:

  1. Выведите и проверьте длину y_train ( len(y_train) ) и посмотрите, соответствует ли возвращаемая форма ожидаемой
  2. Выведите и проверьте длину sample_weight ( len(sample_weight) )
  3. Выходные данные (1) и (2) должны быть одинаковыми для sample_weight[y_train < 1] = 2.0 работы

Комментарии:

1. Да, я смог выровнять свой массив до 1D — теперь это работает 🙂