Я работаю над проблемой классификации, включающей два класса. Мне нужно обучить модель на наборе данных и предсказать правильный класс после принятия одного значения в качестве входных данных для каждого из атрибутов. Вот фрагмент набора данных. Классы 0
и 1
. ![enter image description here](https://i.stack.imgur.com/JRwji.png)
Вот код, с которым я тренируюсь и тестирую модель:
X = df.drop(["classification"], axis=1)
y = df["classification"]
x_scaler = MinMaxScaler()
x_scaler.fit(X)
column_names = X.columns
X[column_names] = x_scaler.transform(X)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size= 0.2, shuffle=True)
Я попытался получить ввод от пользователя следующим образом:
userInput=input("Enter 14 attributes separated by commas")
#userInput=userInput.split(",")
#userInput=[np.float32(c) for c in userInput]
и прогнозирование с помощью:
pred=model.predict(userInput)
Но я получаю ошибку:
AttributeError: объект 'str' не имеет атрибута 'ndim'
Я также попытался ввести атрибуты вручную:
prediction=np.array([40,8,1,2,0,2,6,10,34,40,16,23,67,25])
print(prediction.shape) # Shape is (14,)
print(prediction[0].shape) # Shape is ()
print(prediction[0:1].shape) #Shape is (1,)
print(X_test[0:1].shape) #Shape is (1, 14)
и прогнозировать несколькими способами, например:
(1) pred = model.predict(x=np.array(prediction[0:1].shape))
(2) pred = model.predict(x=np.array(prediction[0].shape))
(3) pred = model.predict(prediction)
(4) pred = model.predict([40,8,1,2,0,2,6,10,34,40,16,23,67,25])
(5) pred = model.predict(prediction.shape)
(6) pred = model.predict([40],[8],[1],[2],[0],[2],[6],[10],[34],[40],[16],[23],[67],[25])
Но я получаю эту ошибку в случаях 1
, чтобы 4
ValueError: Ошибка при проверке ввода: ожидалось, что dens_1_input будет иметь форму (14,), но получил массив с формой (1,)
, и это в случае 5
и 6
соответственно
AttributeError: объект 'tuple' не имеет атрибута 'ndim'
TypeError: Forex () принимает от 2 до 9 позиционных аргументов, но 15 было дано
Кроме того, я попытался запустить это вместо ', и это работает:
pred=model.predict(X_test)
Но предсказание не в любом случае. Я попытался:
(1) print(np.argmax(pred(userInput)))
(2) print(np.argmax(pred(prediction)))
Использование .shape
также не работает, и выдает ошибку:
TypeError: объект 'list' не вызывается
Форма данных обучения: (320, 14) Форма данных теста: (80, 14)
Можно ли как-то получить данные от пользователя и использовать их для прогноза?