#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. Я попробую