用python写个简易的股票机器学习示例
时间: 2023-06-15 15:07:53 浏览: 149
基于python的ai及机器学习示例和笔记
好的,我可以给你一个简单的股票预测的机器学习示例,用到的库是`pandas`和`scikit-learn`。
首先,我们需要准备数据。我们可以从Yahoo Finance上下载股票数据,也可以使用`pandas-datareader`库。
```python
import pandas as pd
import pandas_datareader as pdr
# 从yahoo finance获取股票数据
df = pdr.get_data_yahoo('AAPL', start='2015-01-01', end='2021-01-01')
```
接着,我们需要对数据进行处理。我们可以使用简单移动平均线(SMA)指标和相对强弱指标(RSI)来预处理数据。
```python
# 计算SMA指标
def compute_sma(df, n):
sma = pd.Series(df['Close'].rolling(n).mean(), name='SMA')
df = df.join(sma)
return df
# 计算RSI指标
def compute_rsi(df, n):
diff = df['Close'].diff()
up = diff.where(diff > 0, 0)
down = -diff.where(diff < 0, 0)
ema_up = up.ewm(com=n - 1, min_periods=n).mean()
ema_down = down.ewm(com=n - 1, min_periods=n).mean()
rs = ema_up / ema_down
rsi = 100 - (100 / (1 + rs))
df = df.join(rsi.to_frame(name='RSI'))
return df
# 处理数据
df = compute_sma(df, 20)
df = compute_rsi(df, 14)
df = df.dropna()
```
现在我们可以使用支持向量机(SVM)模型来进行预测。我们将数据划分为训练集和测试集,并训练模型。
```python
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 划分数据集
X = df[['SMA', 'RSI']]
y = df['Close']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 训练模型
model = SVR(kernel='rbf', C=1e3, gamma=0.1)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print('均方误差:', mse)
```
最后,我们可以使用matplotlib库来可视化结果。
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(16, 8))
plt.plot(df.index, df['Close'], label='真实值')
plt.plot(X_test.index, y_pred, label='预测值')
plt.legend()
plt.show()
```
这就是一个简单的股票预测的机器学习示例。当然,这只是一个起点,你可以根据自己的需要进行更多的特征工程和模型优化。
阅读全文