#python #pandas #machine-learning #scikit-learn #non-linear-regression
#питон #панды #машинное обучение #scikit-учиться #нелинейная регрессия
Вопрос:
Я пытаюсь создать модель машинного обучения для прогнозирования запасов Apple, впервые пытаюсь и действительно основываюсь в основном на видеороликах YouTube. Но я действительно не понимаю причину ошибки. Я уже пробовал отделить функцию, но это потребовало изменить форму массивов и использовать массивы numpy.
import pandas as pd
import numpy as np
import csv
from sklearn.svm import SVR
from matplotlib import pyplot as plt
dta = pd.read_csv('aapl.csv')
dta.Date = dta.Date.apply(pd.to_datetime)
dates = np.array(dta.Date)
prices = np.array(dta.Open)
def predicted_prices(dates,prices,x):
dates = np.reshape,(len(dates),1)
svr_lin = SVR(kernel='linear', C=1e3)
svr_poly = SVR(kernel='poly', C = 1e3, degree = 2)
svr_rbf =SVR(kernel = 'rbf', C=1e3, gamma=0.1)
svr_lin.fit(dates, prices)
svr_poly.fit(dates,prices)
svr_rbf.fit(dates,prices)
plt.scatter(dates,prices,color='black',label='Data')
plt.plot(dates,svr_rbf.predict(dates),color='red',label='RBF model')
plt.plot(dates,svr_lin.predict(dates),color='green',label='Linear Model')
plt.plot(dates,svr_poly.predict(dates),color='blue',label='Polynomial model')
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
return svr_rbf.predict(x)[0], svr_lin.predict(x)[0],svr_rbf.predict(x)[0]
predicted_prices(dates,prices,29)
Я ожидаю получить график прогнозируемых значений.
Журнал ошибок:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-6870461ae560> in <module>()
33 return svr_rbf.predict(x)[0], svr_lin.predict(x)
[0],svr_rbf.predict(x)[0]
34
---> 35 predicted_prices(dates,prices,29)
<ipython-input-1-6870461ae560> in predicted_prices(dates, prices, x)
17 svr_poly = SVR(kernel='poly', C = 1e3, degree = 2)
18 svr_rbf =SVR(kernel = 'rbf', C=1e3, gamma=0.1)
---> 19 svr_lin.fit(dates, prices)
20 svr_poly.fit(dates,prices)
21 svr_rbf.fit(dates,prices)
C:UserschrisAnaconda2libsite-packagessklearnsvmbase.pyc in fit(self, X, y, sample_weight)
147 X, y = check_X_y(X, y, dtype=np.float64,
148 order='C', accept_sparse='csr',
--> 149 accept_large_sparse=False)
150 y = self._validate_targets(y)
151
C:UserschrisAnaconda2libsite-packagessklearnutilsvalidation.pyc in check_X_y(X, y, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, multi_output, ensure_min_samples, ensure_min_features, y_numeric, warn_on_dtype, estimator)
754 ensure_min_features=ensure_min_features,
755 warn_on_dtype=warn_on_dtype,
--> 756 estimator=estimator)
757 if multi_output:
758 y = check_array(y, 'csr', force_all_finite=True, ensure_2d=False,
C:UserschrisAnaconda2libsite-packagessklearnutilsvalidation.pyc in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
525 try:
526 warnings.simplefilter('error', ComplexWarning)
--> 527 array = np.asarray(array, dtype=dtype, order=order)
528 except ComplexWarning:
529 raise ValueError("Complex data not supportedn"
C:UserschrisAnaconda2libsite-packagesnumpycorenumeric.pyc in asarray(a, dtype, order)
499
500 """
--> 501 return array(a, dtype, copy=False, order=order)
502
503
TypeError: float() argument must be a string or a number
Ответ №1:
Ошибки, которые я обнаруживаю (пожалуйста, предоставьте журнал ошибок):
Очевидно, что это ошибка
dates = np.reshape,(len(dates),1)
который должен быть чем-то вроде:
dates = np.reshape(dates, (len(dates),1))
Кроме того, когда вы устанавливаете SVR, вы указываете в виде X дату и в виде y цену. Это позволяет алгоритму научиться прогнозировать с использованием дат. Вы уверены, что это лучшая функция для прогнозирования цены? Возможно, вам следует использовать другие акции или бизнес-индикаторы.
Надеюсь, это поможет.
П.Д.: пожалуйста, отправьте журнал ошибок, и я буду рад помочь вам лучше.
Комментарии:
1. Я бы согласился с @BCJuan, использование даты в качестве единственной функции не является хорошей практикой для прогнозирования временных рядов. Идея машинного обучения заключается в том, что, основываясь на схожих тенденциях в данных, вы хотите сделать прогноз на будущее. А даты уникальны, поэтому здесь нет никаких закономерностей. Но вы можете извлекать особенности из дат, таким образом, можно было бы изучить шаблон.
2. Благодаря обоим, я понимаю, что время не идеально для прогнозирования на основе дат, но я только начинаю узнавать о машинном обучении и действительно пытаюсь научиться его использовать и как работает часть кодирования. P.D: Журнал ошибок перед добавлением исправления обнаруженных ошибок.