Как принимать данные пользователя для прогнозирования scikitlearn - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь создать веб-приложение с 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.

Вы знаете, как исправить это?

1 Ответ

1 голос
/ 06 августа 2020

Большинство функций scikit-learn работают с типами данных numpy array, поэтому ваш ввод должен быть типа numpy array. Необработанный ввод, который вы получаете с помощью st.number_input, скорее всего, является плавающим, поэтому вам нужно сохранить его в массиве numpy, например:

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

, если модель ожидает, что входной вектор признаков X будет иметь один особенность.

Кроме того, я не знаю, почему вы используете st.number_input вместо гораздо более общей команды input(), а затем передаете ввод. Это, вероятно, будет немного более надежным и не даст вам типа данных, например dtype('<M8[ns]')

...