知识点
1)股票价格是较为常见的时间序列数据
2)量化交易是大宗商品交易市场中的重要分析交易方法
3)线性回归模型基于最小二乘方法得到模型最优解
4)SVR是支持向量回归(support vector regression)的英文缩写,是支持向量机(SVM)的重要的应用分支。
实验目的
1)学习建立线性回归模型对股票进行预测
2)学习建立SVR对股票进行预测
3)学习对时序数据进行预处理与可视化
实验环境
1)Oracle Linux 7.4
2)Python 3
载入分析所需要用到的包,读取并展示数据
import pandas as pd
import numpy as np
import datetime
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn import preprocessing, model_selection, svm
读取数据并查看前五行
df = pd.read_csv('/root/experiment/datas/ZBH.csv')
df.head()
数据预处理,去掉缺失值
df = df[['Adj Close']]
df = df.dropna()
数据可视化
df.plot();
预测未来30天
forecast_out = int(30)
df['Prediction'] = df[['Adj Close']].shift(-forecast_out)
数据预处理
X = np.array(df.drop(['Prediction'], 1))
X = preprocessing.scale(X)
X = X[:-forecast_out]
X_forecast = X[X.shape[0] - forecast_out:]
y = np.array(df['Prediction'])
y = y[:-forecast_out]
划分训练集和测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.25)
建立SVR和线性回归模型
1.建立SVR模型并训练
clf = svm.SVR()
clf.fit(X_train, y_train)
2.建立线性回归模型并训练
LR = LinearRegression()
LR.fit(X_train, y_train)
result = clf.predict(X_test)
对预测结果进行可视化
1.可视化SVR模型预测
plt.figure()
plt.plot(np.arange(len(result)), y_test, 'go-', label='true value')
plt.plot(np.arange(len(result)), result, 'ro-', label='predict value')
plt.title('SVM score: %f')
plt.legend()
plt.show()
forecast_prediction = clf.predict(X_forecast)
print("\nforecast_prediction:\n", forecast_prediction)
2.可视化线性回归模型预测
confidence = LR.score(X_test, y_test)
result_LR = LR.predict(X_test)
print("\nconfidence:", confidence)
plt.figure()
plt.plot(np.arange(len(result_LR)), y_test, 'go-', label='true value')
plt.plot(np.arange(len(result_LR)), result_LR, 'ro-', label='predict value')
plt.title('LR score: %f')
plt.legend()
plt.show()