#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 . Вот идея для устранения неполадок:
- Выведите и проверьте длину y_train (
len(y_train)
) и посмотрите, соответствует ли возвращаемая форма ожидаемой - Выведите и проверьте длину sample_weight (
len(sample_weight)
) - Выходные данные (1) и (2) должны быть одинаковыми для
sample_weight[y_train < 1] = 2.0
работы
Комментарии:
1. Да, я смог выровнять свой массив до 1D — теперь это работает 🙂