使用支持向量机预测股票价格走势
在这篇文章中,我们将学习如何使用支持向量机预测股票价格走势。
机器学习是一种人工智能应用,它正在改善世界在各个学科中的运作方式。从本质上讲,它是一种算法或模型,它识别特定数据集中的模式,然后在通用数据上预测学习到的模式。通俗地说,它是机器人学习模式并通过经验进行调整以得出正确且可重复结论的概念。在这篇文章中,我们将探讨使用支持向量机预测股票价格走势。让我们开始吧。
安装库并导入它们
第一步,我们只需要安装库并导入它们。
!pip install pandas !pip install numpy ! pip install scikit-learn import pandas as pd import numpy as np from sklearn.svm import SVC from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt import warnings
下载和读取股票数据集
读取文件中的数据集是下一个任务。您可以从这里下载数据集,该文件将存储在外部存储中。我们使用 pandas 读取数据集。
示例
df = pd.read_csv('/content/sample_data/RELIANCE.csv') df.head()
输出
Date Symbol Series Prev Close Open High Low Last Close VWAP Volume Turnover Trades Deliverable Volume %Deliverble 0 2000-01-03 RELIANCE EQ 233.05 237.50 251.70 237.50 251.70 251.70 249.37 4456424 1.111319e+14 NaN NaN NaN 1 2000-01-04 RELIANCE EQ 251.70 258.40 271.85 251.30 271.85 271.85 263.52 9487878 2.500222e+14 NaN NaN NaN 2 2000-01-05 RELIANCE EQ 271.85 256.65 287.90 256.65 286.75 282.50 274.79 26833684 7.373697e+14 NaN NaN NaN 3 2000-01-06 RELIANCE EQ 282.50 289.00 300.70 289.00 293.50 294.35 295.45 15682286 4.633254e+14 NaN NaN NaN 4 2000-01-07 RELIANCE EQ 294.35 295.00 317.90 293.00 314.50 314.55 308.91 19870977 6.138388e+14 NaN NaN NaN
数据准备
在使用数据进行分析之前,日期列应充当索引。
示例
# Changes The Date column as index columns df.index = pd.to_datetime(df['Date']) df # drop The original date column df = df.drop(['Date'], axis='columns') df
输出
Symbol Series Prev Close Open High Low Last Close VWAP Volume Turnover Trades Deliverable Volume %Deliverble Date 2000-01-03 RELIANCE EQ 233.05 237.50 251.70 237.50 251.70 251.70 249.37 4456424 1.111319e+14 NaN NaN NaN 2000-01-04 RELIANCE EQ 251.70 258.40 271.85 251.30 271.85 271.85 263.52 9487878 2.500222e+14 NaN NaN NaN 2000-01-05 RELIANCE EQ 271.85 256.65 287.90 256.65 286.75 282.50 274.79 26833684 7.373697e+14 NaN NaN NaN 2000-01-06 RELIANCE EQ 282.50 289.00 300.70 289.00 293.50 294.35 295.45 15682286 4.633254e+14 NaN NaN NaN 2000-01-07 RELIANCE EQ 294.35 295.00 317.90 293.00 314.50 314.55 308.91 19870977 6.138388e+14 NaN NaN NaN ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 2020-05-22 RELIANCE EQ 1441.25 1451.80 1458.00 1426.50 1433.00 1431.55 1442.31 17458503 2.518059e+15 388907.0 4083814.0 0.2339 2020-05-26 RELIANCE EQ 1431.55 1448.15 1449.70 1416.30 1426.00 1424.05 1428.70 15330793 2.190317e+15 341795.0 7437964.0 0.4852 2020-05-27 RELIANCE EQ 1424.05 1431.00 1454.00 1412.00 1449.85 1445.55 1430.20 16460764 2.354223e+15 348477.0 6524302.0 0.3964 2020-05-28 RELIANCE EQ 1445.55 1455.00 1479.75 1449.00 1471.05 1472.25 1467.50 18519252 2.717698e+15 405603.0 8377100.0 0.4523 2020-05-29 RELIANCE EQ 1472.25 1468.00 1472.00 1452.65 1470.00 1464.40 1462.79 18471770 2.702029e+15 300018.0 10292573.0 0.5572
解释性因素
使用解释性或独立因素预测值响应变量。用于预测的变量存储在 X 数据集中。变量如“开盘价-收盘价”和“最高价-最低价”是 X 的一部分。这些可以被视为算法将用来预测未来一天趋势的标记。随意包含更多指标并评估结果。
示例
# Create predictor variables df['Open-Close'] = df.Open - df.Close df['High-Low'] = df.High - df.Low # Store all predictor variables in a variable X X = df[['Open-Close', 'High-Low']] X.head()
输出
Open-Close High-Low Date 2000-01-03 -14.20 14.20 2000-01-04 -13.45 20.55 2000-01-05 -25.85 31.25 2000-01-06 -5.35 11.70 2000-01-07 -19.55 24.90
目标变量
目标数据集 y 包含相应的交易信号,机器学习算法将尝试预测该信号。
y = np.where(df['Close'].shift(-1) > df['Close'], 1, 0)
将数据拆分为训练集和测试集
将有不同的数据集用于训练和测试。
split_percentage = 0.8 split = int(split_percentage*len(df)) # Train data set X_train = X[:split] y_train = y[:split] # Test data set X_test = X[split:] y_test = y[split:]
支持向量分类器
现在是时候使用支持向量分类器了。
示例
cls = SVC().fit(X_train, y_train) df['prediction'] = cls.predict(X) print(df['prediction'])
输出
Date 2000-01-03 1 2000-01-04 1 2000-01-05 1 2000-01-06 1 2000-01-07 1 .. 2020-05-22 1 2020-05-26 1 2020-05-27 1 2020-05-28 1 2020-05-29 1 Name: prediction, Length: 5075, dtype: int64
结论
支持向量机是一种流行且节省空间的用于分类和回归应用的方法,它利用几何概念来解决我们的问题。我们还使用 SVM 算法来预测股票价格走势的方向。在企业界,股票价格预测非常重要,当我们自动化此过程时,它会提高人们对该问题的认识。
广告