使用支持向量机预测股票价格走势


在这篇文章中,我们将学习如何使用支持向量机预测股票价格走势。

机器学习是一种人工智能应用,它正在改善世界在各个学科中的运作方式。从本质上讲,它是一种算法或模型,它识别特定数据集中的模式,然后在通用数据上预测学习到的模式。通俗地说,它是机器人学习模式并通过经验进行调整以得出正确且可重复结论的概念。在这篇文章中,我们将探讨使用支持向量机预测股票价格走势。让我们开始吧。

安装库并导入它们

第一步,我们只需要安装库并导入它们。

!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 算法来预测股票价格走势的方向。在企业界,股票价格预测非常重要,当我们自动化此过程时,它会提高人们对该问题的认识。

更新于: 2022年12月1日

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告