用SVM算法预测股票未来的开盘价、收盘价等,完整代码
时间: 2024-02-11 16:07:50 浏览: 34
当然可以,下面是一个基于SVM算法的股票预测的完整代码示例,您可以根据需要进行调整和修改:
```python
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from sklearn.svm import SVR
import matplotlib.pyplot as plt
# 读取股票数据
df = pd.read_csv('stock_data.csv')
# 取出开盘价和收盘价数据
data = df.filter(['Open', 'Close'])
# 将数据归一化处理
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)
# 定义训练集和测试集
train_size = int(len(scaled_data) * 0.7)
train_data = scaled_data[0:train_size, :]
test_data = scaled_data[train_size:len(scaled_data), :]
# 定义X和y
def create_dataset(dataset, look_back=1):
X, y = [], []
for i in range(len(dataset) - look_back - 1):
a = dataset[i:(i + look_back), :]
X.append(a)
y.append(dataset[i + look_back, 0])
return np.array(X), np.array(y)
look_back = 10
train_X, train_y = create_dataset(train_data, look_back)
test_X, test_y = create_dataset(test_data, look_back)
# 定义SVM模型
svr = SVR(kernel='rbf', C=1e3, gamma=0.1)
# 训练模型
svr.fit(train_X.reshape(train_X.shape[0], -1), train_y)
# 测试模型
predicted_stock_price = svr.predict(test_X.reshape(test_X.shape[0], -1))
predicted_stock_price = predicted_stock_price.reshape(-1, 1)
predicted_stock_price = scaler.inverse_transform(predicted_stock_price)
# 绘制预测结果
plt.plot(df['Open'][train_size + look_back + 1:], label='Real Stock Price')
plt.plot(predicted_stock_price, label='Predicted Stock Price')
plt.legend()
plt.show()
```
需要注意的是,该代码示例仅供参考,实际应用中还需要根据股票的特点和市场情况进行调整和修改。同时,SVM算法需要调节的参数比较多,需要进行耐心的调试和优化。