# Python - проблема с функцией pyplote - TypeError: только массивы размера 1 могут быть преобразованы в Python скаляры - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть проблема с рисунком в pyplot в этой строке "plt.figure (pred [:, 1], (val_targets [:, 1]))" Пожалуйста, помогите решить эту ошибку TypeError: только массивы размера 1 могут быть преобразовано в Python скаляры. Эти векторы содержат точное количество значений.

​​​​def evaluate_classifier(model_f, model_info, train_data, train_targets, epochs):
k = 5
num_val_samples = len(train_data) // k
num_epochs = epochs
all_scores = []
for i in range(k):
    print('processing fold #', i)
    # Prepare the validation data: data from partition # k
    val_data = train_data[i * num_val_samples: (i + 1) * num_val_samples]
    val_targets = train_targets[i * num_val_samples: (i + 1) * num_val_samples]

    # Prepare the training data: data from all other partitions
    partial_train_data = np.concatenate(
        [train_data[:i * num_val_samples],
         train_data[(i + 1) * num_val_samples:]],
        axis=0)
    partial_train_targets = np.concatenate(
        [train_targets[:i * num_val_samples],
         train_targets[(i + 1) * num_val_samples:]],
        axis=0)

    # Build the Keras model (already compiled)
    model = model_f(info)

    # Train the model (in silent mode, verbose=0)
    history = model.fit(partial_train_data, partial_train_targets,
              epochs=num_epochs, batch_size=124, verbose=0, validation_data=(val_data, val_targets))

    # Evaluate the model on the validation data
    val_mse, val_mae = model.evaluate(val_data, val_targets, verbose=1)
    all_scores.append(val_mae)  


    pred = model.predict(val_data)

    print(f"Mean squared error: {val_mse}\n")

    plt.figure(figsize = (25,8))
    plt.plot(pred, 'r')
    plt.plot(val_targets[number_previous_days:], 'g')
    plt.show()

    print("Kontrola")
    print(pred[:,1])
    print(val_targets[:,1])
    plt.figure(pred[:,1],(val_targets[:,1]))
    plt.show()


    plt.figure(figsize=(16,8))
    plt.plot(history.history['loss'], 'bo')
    plt.plot(history.history['val_loss'], 'b')
    plt.title('Whole training and validation loss')
    plt.xlabel('Epochs')
    plt.ylabel('Loss')
    plt.ylim((0, 15))
    plt.legend()

    plt.show()

    print("MAE:")
    print(np.mean(all_scores))   
return np.mean(all_scores)

Я могу отправить весь код.

...