У меня есть вопрос. Я пытаюсь определить, является ли рак доброкачественным или злокачественным. Но набор данных дает выходную информацию в виде числа. 2 - доброкачественная опухоль, 4 - злокачественная опухоль. Я хочу, чтобы она была в форме нити. И когда я пытаюсь записать выводимую информацию в строку, выдается следующая ошибка:
ValueError: could not convert string to float: 'malignant tumor'
Код:
from keras.models import Sequential
from keras.layers import Dense,Activation
import pandas as pd
import numpy as np
df = pd.read_csv("C:/Users/A/Desktop/Python/Data/breast-cancer-wisconsin1.data")
df.drop(["1000025"], axis = 1, inplace = True)
df.replace("?", round(df.mean().mean()), inplace=True)
a = df["2.1"]
a[a==2] = "benign tumor"
a[a==4] = "malignant tumor"
inp = np.array(df[["5","1","1.1","1.2","2","1.3","3","1.4","1.5"]])
outp = np.array(df["2.1"])
model = Sequential()
model.add(Dense(256, input_dim = 9))
model.add(Activation("relu"))
model.add(Dense(256))
model.add(Activation("relu"))
model.add(Dense(256))
model.add(Activation("softmax"))
model.compile(optimizer = "adam", loss = "sparse_categorical_crossentropy", metrics = ["accuracy"])
model.fit(inp, outp, epochs = 5, batch_size = 32, validation_split = 0.13)
Исходный набор данных:
1000025 5 1 1.1 1.2 2 1.3 3 1.4 1.5 2.1
0 1002945 5 4 4 5 7 10 3 2 1 2
1 1015425 3 1 1 1 2 2 3 1 1 2
2 1016277 6 8 8 1 3 4 3 7 1 2
3 1017023 4 1 1 3 2 1 3 1 1 2
4 1017122 8 10 10 8 7 10 9 7 1 4
.. ... .. .. ... ... .. .. .. ... ... ...
693 776715 3 1 1 1 3 2 1 1 1 2
694 841769 2 1 1 1 2 1 1 1 1 2
695 888820 5 10 10 3 7 3 8 10 2 4
696 897471 4 8 6 4 3 4 10 6 1 4
697 897471 4 8 8 5 4 5 10 4 1 4
Измененный набор данных:
5 1 1.1 1.2 2 1.3 3 1.4 1.5 2.1
0 5 4 4 5 7 10 3 2 1 benign tumor
1 3 1 1 1 2 2 3 1 1 benign tumor
2 6 8 8 1 3 4 3 7 1 benign tumor
3 4 1 1 3 2 1 3 1 1 benign tumor
4 8 10 10 8 7 10 9 7 1 malignant tumor
.. .. .. ... ... .. .. .. ... ... ...
693 3 1 1 1 3 2 1 1 1 benign tumor
694 2 1 1 1 2 1 1 1 1 benign tumor
695 5 10 10 3 7 3 8 10 2 malignant tumor
696 4 8 6 4 3 4 10 6 1 malignant tumor
697 4 8 8 5 4 5 10 4 1 malignant tumor
Что не так? Должен ли вывод быть целым числом?