有必要在时间序列上建立机器学习模型来评估通信质量。
该数据集是在 14 天 (01/15/2016-01/28/2016) 内收集的,包含 7026706 行和 6 列:Dest。IP、最后一跳 IP、LQ、NLQ、成本。在这个数据集中,我为所有行添加了一个日期列并删除了 Dest 列。IP、最后一跳 IP、NLQ、成本。结果,我得到了踪迹。数据集。
接下来,我根据日期绘制了 LQ 值。
并对最后一次观测(24小时)进行了预测:0.9105833333333333
目前的代码:
import pandas as pd
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from glob import glob
from datetime import datetime, time
from pandas.plotting import autocorrelation_plot
from statsmodels.graphics.tsaplots import plot_acf
#Формирование датасета
files = glob("/content/newDataset/*.tsv")
dataset = pd.concat([pd.read_csv(f, sep="\t", skiprows=1) for f in files],
ignore_index=True)
n_samples = 7026706
dt_from = pd.to_datetime("2016-01-15 00:00:00.000000")
dt_to = pd.to_datetime("2016-01-28 23:59:59.999999")
dataset["DateTime"] = pd.date_range(dt_from, dt_to, periods=n_samples)
dataset['LQ'] = dataset.LQ.astype('float64')
#df = pd.DataFrame(dataset)
del dataset['Dest. IP']
del dataset['Last hop IP']
del dataset['NLQ']
del dataset['Cost']
#dataset.drop(['Dest. IP', 'Last hop IP', 'NLQ', 'Cost'], axis=1)
print(dataset)
#График
def plot_series(time, series, format="-", start=0, end=None, label=None):
plt.plot(time[start:end], series[start:end], format, label=label)
plt.xlabel("DateTime")
plt.ylabel("LQ")
if label:
plt.legend(fontsize=14)
plt.grid(True)
def trend(time, slope=0):
return slope * time
time = dataset['DateTime']
series = dataset['LQ']
plt.figure(figsize=(30, 6))
#plot_series(time, series)
#plt.show()
dataset.set_index("DateTime")["LQ"].rolling(window=600000).mean().plot()
#прогноз по последнему наблюдению
def moving_average(series, n):
return np.average(series[-n:])
moving_average(dataset.LQ, 24)
由于我的机器学习能力不强,那么:
- 我需要平滑时间序列吗?
- 什么模型可以用于这个任务?
- 我是否正确理解没有异常值并且该系列是固定的?
项目文件。





