基于SVM的时间序列异常检测的python代码
时间: 2023-12-29 19:03:01 浏览: 99
基于Python的自动化时间序列异常检测系统源码.zip
5星 · 资源好评率100%
好的,以下是一个基于SVM的时间序列异常检测的Python代码示例,希望能对您有所帮助:
```python
import pandas as pd
import numpy as np
from sklearn.svm import OneClassSVM
from sklearn.preprocessing import StandardScaler
# 数据预处理
data = pd.read_csv('data.csv', header=0)
data['timestamp'] = pd.to_datetime(data['timestamp'])
data = data.set_index('timestamp')
data = data.resample('H').mean().interpolate()
# 特征工程
data['lag1'] = data['value'].shift(1)
data['lag2'] = data['value'].shift(2)
data['lag3'] = data['value'].shift(3)
data['rolling_mean'] = data['value'].rolling(window=3).mean()
data['rolling_std'] = data['value'].rolling(window=3).std()
# 将数据集分为训练集和测试集
train_size = int(len(data) * 0.7)
train, test = data[0:train_size], data[train_size:len(data)]
# 标准化数据
scaler = StandardScaler()
train = scaler.fit_transform(train)
test = scaler.transform(test)
# 定义SVM模型
model = OneClassSVM(kernel='rbf', nu=0.01)
# 拟合模型并进行预测
model.fit(train)
predictions = model.predict(test)
# 检测异常值
anomalies = []
for i in range(len(predictions)):
if predictions[i] == -1:
anomalies.append(i)
print('Anomalies: ', anomalies)
```
这个示例中,我们首先进行了数据预处理,然后进行了特征工程。接下来,我们将数据集分为训练集和测试集,并对数据进行了标准化。然后,我们定义了一个SVM模型,并进行了拟合和预测。最后,我们根据预测结果检测了异常值。
请注意,这只是一个简单的示例代码,实际应用可能需要更多的特征工程和模型调整。
阅读全文