Ошибка классификатора Keras «Ошибка значения: не удалось преобразовать массив NumPy в тензор (неподдерживаемый объект типа float)».

#pandas #numpy #tensorflow #keras #keras-layer

#pandas #numpy #tensorflow #keras #keras-layer

Вопрос:

Я пытаюсь создать классификатор. В настоящее время я нахожусь на этапе создания объектов, но продолжаю получать сообщение об ошибке:

 ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float).
  

Я не уверен, почему я получаю эту ошибку или как ее исправить. Я довольно новичок во всем этом, поэтому любые советы или решения были бы замечательными. Спасибо.

 import tensorflow as tf
from keras.models import Sequential
import pandas as pd
from keras.layers import Dense
import seaborn as sns
import matplotlib as plt
from keras.utils import to_categorical

from sklearn.model_selection import train_test_split
from sklearn import preprocessing

dataframe = pd.read_csv('file.csv')

val_dataframe = dataframe.sample(frac=0.2, random_state=1337)
train_dataframe = dataframe.drop(val_dataframe.index)

print(
    "Using %d samples for training and %d for validation"
    % (len(train_dataframe), len(val_dataframe))
)

def dataframe_to_dataset(dataframe):
    dataframe = dataframe.copy()
    labels = dataframe.pop("output")
    ds = tf.data.Dataset.from_tensor_slices((dict(dataframe), labels))
    ds = ds.shuffle(buffer_size=len(dataframe))
    return ds


train_ds = dataframe_to_dataset(train_dataframe)
val_ds = dataframe_to_dataset(val_dataframe)
  

Образец данных из файла CSV:

          0    1    2        3          4       5    6     7
0     Name  TRY  LOC   OUTPUT     TYPE_A   SIGNAL  A-B  SPOT
1    inc 1    2   20   TYPE-1    TORPEDO   ULTRA    A   -21
2    inc 2    3   16   TYPE-2    TORPEDO     ILH    B   -14
3    inc 3    2   20  BLACK47    TORPEDO    LION    A    49
4    inc 4    3   12   TYPE-2  CENTRALPA    LION    A    25
5    inc 5    3   10   TYPE-2      THREE    LION    A   -21
6    inc 6    2   20   TYPE-2        ATF    LION    A   -48
7    inc 7    4    2  NIVEA-1        ATF    LION    B   -23
8    inc 8    3   16  NIVEA-1        ATF    LION    B    18
9    inc 9    3   18  BLENDER  CENTRALPA    LION    B    48
10   inc 10   4   20    DELCO        ATF    LION    B   -26
11   inc 11   3   20    VE248        ATF    LION    B    44
12   inc 12   1   20   SILVER  CENTRALPA    LION    B   -35
13   inc 13   2   20  CALVIN3     SEVENX    LION    B   -20
14   inc 14   3   14  DECK-BT  CENTRALPA    LION    B   -38
15   inc 15   4    4  10-LEVI    BERWYEN     OWL    B   -29
16   inc 16   4   14   TYPE-2        ATF     NOV    B   -31
17   inc 17   4   10     NYNY    TORPEDO     NOV    B    21
18   inc 18   2   20  NIVEA-1  CENTRALPA     NOV    B    45
19   inc 19   3   27   FMRA97    TORPEDO     NOV    B   -26
20   inc 20   4   18   SILVER        ATF     NOV    B   -46
  

Ответ №1:

Вы должны преобразовать все столбцы в тип данных float или int. Сначала вы можете использовать этот вид предварительной обработки,

 dataframe.TYPE_A, mapping_index = pd.Series(dataframe.TYPE_A).factorize()
  

Кроме того, вы действительно хотите использовать name столбец в качестве объекта?

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

1. Я не планирую использовать функцию name. Я попробую