基于SVM实现股票趋势预测,写出python代码
时间: 2023-12-24 22:05:04 浏览: 45
以下是一个简单的基于SVM的股票趋势预测的Python代码示例:
首先,我们需要导入必要的库:
```python
import pandas as pd
import numpy as np
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
```
然后,我们可以读取股票数据,例如:
```python
df = pd.read_csv('stock_data.csv')
```
接下来,我们需要对数据进行预处理,包括特征提取和标签编码等。例如,我们可以将每天的收盘价作为特征,将涨跌幅度编码为1或-1作为标签:
```python
X = df['Close'].values.reshape(-1, 1)
y = np.where(df['Change'] > 0, 1, -1)
```
然后,我们可以将数据集分为训练集和测试集:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
```
接下来,我们可以训练一个SVM分类器:
```python
svm = SVC(kernel='linear', C=1.0, random_state=42)
svm.fit(X_train, y_train)
```
最后,我们可以使用测试集评估模型的性能:
```python
y_pred = svm.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
```
完整代码如下:
```python
import pandas as pd
import numpy as np
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
df = pd.read_csv('stock_data.csv')
X = df['Close'].values.reshape(-1, 1)
y = np.where(df['Change'] > 0, 1, -1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
svm = SVC(kernel='linear', C=1.0, random_state=42)
svm.fit(X_train, y_train)
y_pred = svm.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('Accuracy:', acc)
```