【问题标题】:Forecasting apple stock预测苹果库存
【发布时间】:2019-04-05 05:57:31
【问题描述】:

我正在尝试创建一个机器学习模型来预测苹果股票,这是我第一次尝试并且真正基于 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:\Users\chris\Anaconda2\lib\site-packages\sklearn\svm\base.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:\Users\chris\Anaconda2\lib\site-packages\sklearn\utils\validation.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:\Users\chris\Anaconda2\lib\site-packages\sklearn\utils\validation.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 supported\n"

C:\Users\chris\Anaconda2\lib\site-packages\numpy\core\numeric.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

【问题讨论】:

    标签: python pandas machine-learning scikit-learn non-linear-regression


    【解决方案1】:

    我发现的错误(请提供错误日志):

    这显然是个错误

    dates = np.reshape,(len(dates),1)
    

    应该是这样的:

    dates = np.reshape(dates, (len(dates),1))
    

    此外,当您拟合 SVR 时,您将给出 X 日期和 y 价格。这使得算法学会使用日期进行预测。您确定这是预测价格的最佳功能吗?也许您应该使用其他股票或业务指标。

    希望这会有所帮助。

    P.D:请报告错误日志,我会更好地帮助您。

    【讨论】:

    • 我同意@BCJuan 的观点,使用日期作为您唯一的特征对于时间序列预测来说并不是一个好习惯。机器学习的思想是,基于数据中的相似趋势,你想对未来做出预测。而且日期是独一无二的,所以没有模式。但是您可以从日期中提取特征,这样可以学习模式。
    • 感谢双方,我知道根据日期预测时间并不理想,但我才刚刚开始学习机器学习,并真正尝试学习如何使用它以及如何使用它的编码部分有用。 P.D:在纠正发现的错误之前添加错误日志。
    猜你喜欢
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多