Python TensorFlow机器学习-根据用户输入进行预测

Python TensorFlow机器学习-根据用户输入进行预测,python,tensorflow,machine-learning,keras,data-science,Python,Tensorflow,Machine Learning,Keras,Data Science,我正在研究一个涉及两个类的分类问题。我需要在数据集上训练模型,并在将一个值作为每个属性的输入后预测正确的类。这里是数据集的一个片段。这些类是0和1。 以下是我用来培训和测试模型的代码: X = df.drop(["classification"], axis=1) y = df["classification"] x_scaler = MinMaxScaler() x_scaler.fit(X) column_names = X.columns X[column_names] = x_sca

我正在研究一个涉及两个类的分类问题。我需要在数据集上训练模型,并在将一个值作为每个属性的输入后预测正确的类。这里是数据集的一个片段。这些类是
0
1

以下是我用来培训和测试模型的代码:

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:检查输入时出错:预期密集_1_输入具有形状(14),但获得具有形状(1,)的数组

分别在
5
6
的情况下

AttributeError:“tuple”对象没有属性“ndim”
TypeError:predict()接受2到9个位置参数,但给出了15个

另外,我试着运行了这个程序,但效果很好:

pred=model.predict(X_test)
但这一预测无论如何都不成立。我试过:

(1) print(np.argmax(pred(userInput)))
(2) print(np.argmax(pred(prediction)))
使用
.shape
也不起作用,并给出错误:

TypeError:“列表”对象不可调用

训练数据的形状:(320,14) 试验数据的形状:(80,14)

有什么方法可以让我从用户那里获取输入,并将其用于预测吗?

当您使用
pred=model.predict(userInput)
您将得到错误
AttributeError:“str”对象没有属性“ndim”
,因为您正在向函数传递字符串。您必须拆分从终端读取的字符串,并将字符串转换为整数

inputString = "1, 2, 3,4"
sample = inputString.replace(" ", "").split(",")
sample = [int(x) for x in sample]
print(sample)
[1, 2, 3, 4]
对于预测,请尝试将样本传递给预测方法,如下所示:

pred = model.predict([[40,8,1,2,0,2,6,10,34,40,16,23,67,25]])