如何将用户输入用于预测 scikit 学习

How to take user input for prediction scikitlearn

我正在尝试使用 Streamlit 制作一个网络应用程序,并希望通过 scikitlearn 使用多项式回归来获取用户输入以预测下一个值。

我将其用于 streamlit 的用户输入

user_input = st.number_input("input number")

然后根据我找到的教程进行预测

pol.predict(poly.fit_transform(user_input))

这不起作用,我收到此错误:

ValueError: Expected 2D array, got scalar array instead:
array=0.0.
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample

.

然后我尝试了以下在线教程:

model = numpy.poly1d(numpy.polyfit(X,y,3))
number = model(user_input)
print(case)

我收到此错误:

TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('float64')

如果这是日期时间数据的问题,我之前已对其进行了转换。至于另一个错误,我之前在定义X和y时也对数据进行了整形。

你知道如何解决这个问题吗?

大多数 scikit-learn 函数使用 numpy 数组数据类型,因此您的输入必须是 numpy 数组类型。您使用 st.number_input 获得的原始输入可能是一个浮点数,因此您需要将其存储在一个 numpy 数组中,例如:

user_input = np.array(user_input).reshape(-1,1)

假设模型期望输入特征向量 X 具有一个特征。

此外,我不知道您为什么使用 st.number_input 而不是更通用的 input() 命令,然后转换输入。这可能会更健壮一些,不会给你像 dtype('<M8[ns]')

这样的数据类型