对流媒体传输关键指标作简单预测

小书匠

本文目录:

  • 1.数据情况
  • 2.数据预处理
  • 3.样本划分及标签处理
  • 4.模型训练
  • 5.模型评估
  • 6.预测未来下一个6个指标

现收集有流媒体传输过程中的6个指标,这些指标分别是:

  • PDCCH信道CCE可用个数 AvaPdcch
  • PDCCH信道CCE占用个数 OccPdcch
  • RRC连接最大数 ConRrc
  • 上行PRB平均利用率 UpPrb
  • 下行PRB平均利用率 DownPrb
  • 有效RRC连接最大数 EffConRrc

1.数据情况

每个指标的数据格式为:Data-Time-Value,本文首先对数据进行预处理,然后使用LSTM对这6个指标作简单预测。

  1. import pandas as pd


  2. import numpy as np 


  3. filenames=[‘AvaPdcch‘,‘OccPdcch‘,‘ConRrc‘,‘UpPrb‘,‘DownPrb‘,‘EffConRrc‘] #属性列表 


  4. #读取数据 

  5. dataset=[] 

  6. for filename in filenames: 

  7. df=pd.read_csv(filename+‘.csv‘,delimiter=‘,‘) 

  8. partfea=np.array(df)[:,-1] 

  9. dataset.append(partfea) 


  10. dataset=np.array(dataset) 

  11. dataset=dataset.T 


  12. print(dataset.shape,dataset[1302]) 

输出:

(1378, 6) [nan nan 18.0 nan nan 8.0]

从这输出可以看出,数据量就是1378个,每个数据量是前文的6个指标。并且数据中包含缺失值,为了简单,这里使用均值进行填充,实际上还可以更加灵活处理缺失值,比如整行/列去掉,进行插值等。

2.数据预处理

  • 缺失值填充
  1. from sklearn import preprocessing



  2. impute = preprocessing.Imputer() 

  3. dataset = impute.fit_transform(dataset) 


  4. print(dataset.shape,dataset[1302]) 

输出:

(1378, 6) [ 7.31026325e+07 9.40476974e+06 1.80000000e+01 3.38872727e-02

1.92543953e-01 8.00000000e+00]

  • 数据归一化
  1. from sklearn.preprocessing import MinMaxScaler



  2. scaler = MinMaxScaler(feature_range=(0, 1)) 

  3. dataset = scaler.fit_transform(dataset) 


  4. print(dataset.shape,dataset[1302]) 

输出:

(1378, 6) [ 0.5072962 0.23767169 0.22222222 0.17733455 0.21859107 0.23809524]

3.样本划分及标签处理

后一个数据作为前一个数据的标签,模型最终是基于当前的数据预测下一状态数据。

  1. train_size=int(0.8*len(dataset))


  2. #训练集 

  3. train_X=dataset[0:train_size,:] 

  4. train_y=dataset[1:train_size+1,:] 

  5. #验证集 

  6. vali_X=dataset[train_size:,:] 

  7. vali_y=dataset[train_size+1:,:] 


  8. train_X=train_X.reshape(train_X.shape[0],1,train_X.shape[1]) 

  9. vali_X=vali_X.reshape(vali_X.shape[0],1,vali_X.shape[1]) 


  10. print(train_X.shape,train_y.shape,vali_X.shape,vali_y.shape) 

输出:

(1102, 1, 6) (1102, 6) (276, 1, 6) (275, 6)

4.模型训练

  1. import keras


  2. from keras.models import Sequential 

  3. from keras.layers import Dense 

  4. from keras.layers import LSTM 

  5. from keras.utils import plot_model 

  6. from IPython.display import SVG 


  7. from keras.utils.vis_utils import model_to_dot 


  8. #构建LSTM网络 

  9. model=Sequential() 

  10. model.add(LSTM(32,input_shape=(1,6))) 

  11. model.add(Dense(6)) 


  12. #编译模型 

  13. model.compile(loss=‘mean_squared_error‘, optimizer=‘adam‘) 


  14. #打印模型 

  15. model.summary() 


  16. #保存模型 

  17. SVG(model_to_dot(model,show_shapes=True).create(prog=‘dot‘, format=‘svg‘)) 


  18. #训练LSTM网络 

  19. model.fit(train_X, train_y, epochs=10, batch_size=1, verbose=1) 

5.模型评估

  1. #预测数据


  2. valipredict=model.predict(vali_X) 

  3. print(valipredict.shape,vali_y.shape) 

  1. #画图模型预测显示


  2. finalypredict=[] 

  3. #归一化后的数据画图,有6列 

  4. plt.subplots(2,3,figsize=(18,6))  

  5. for ind in range(6): 

  6. #归一化数据转换为真实数据 

  7. valipredict_real=valipredict[:,ind]*(scaler.data_max_[ind]-scaler.data_min_[ind])+scaler.data_min_[ind] 

  8. vali_y_real=vali_y[:,ind]*(scaler.data_max_[ind]-scaler.data_min_[ind])+scaler.data_min_[ind] 


  9. #未来的6个真实值 

  10. finalypredict.append(valipredict_real[-1]) 


  11. plt.subplot(2, 3,ind+1) 

  12. plt.title(filenames[ind])  

  13. plt.plot(valipredict_real,color=‘red‘,label=‘valipredict‘) 

  14. plt.plot(vali_y_real,color=‘green‘,label=‘vali_y‘) 


  15. plt.show() 

模型在验证数据上的预测效果

由图可以看出,6个指标基本的趋势被正确预测,但是某个时刻的准确度不是很高,我认为原因有几个:

  1. 数据量太少,导致模型无法学习足够的特征
  2. 特征太简单,某个指标的预测仅仅依赖于包括自身在内的历史时刻的6个值,这明显不够,可以考虑加入更多特征。比如这几个值明显对”时间“敏感,不同的时间区间内,流媒体的传输需要不同,将时间考虑进去将使得模型学习到更加丰富的特征
  3. 模型太简单,在数据量少,特征不多的情况下,我只用了一层的LSTM。

6.预测未来下一个6个指标

将数据中的最后的6个指标输入已经训练好的模型,模型输出6个值,该6个值作为模型预测到的未来下一个6个指标值。

  1. #前文已经存储,直接输出


  2. print(finalypredict) 

[93690488.0, 25693568.0, 40.356155, 0.088783175, 0.64066094, 17.614025]

原文地址:https://www.cnblogs.com/wushaogui/p/10637277.html

时间: 2024-11-14 12:47:49

对流媒体传输关键指标作简单预测的相关文章

性能测试关键指标介绍

什么是性能测试? 通过技术手段模拟大量用户同时访问被测应用,观察.记录和分析系统的各项性能指标: 性能测试的目的是评估系统的性能瓶颈,预测系统的最大用户负载能力. 性能指标: 平均响应时间(最重要,举例:访问淘宝宝贝):平均每个请求从发送到接收响应的时间 合理的平均响应时间:2/5/8原则 -- 2s:非常有吸引力 -- 5s:比较不错 -- 10s:糟糕 平均响应时间对业务的影响:1s的延时,相当于少了11%的PV(page view),降低了用户继续使用产品的兴趣:页面响应时间从2s增长到1

【JavaScript】使用setInterval()函数作简单的轮询操作

轮询(Polling)是一种CPU决策怎样提供周边设备服务的方式,又称"程控输出入"(Programmed I/O). 轮询法的概念是.由CPU定时发出询问.依序询问每个周边设备是否须要其服务,有即给予服务,服务结束后再问下一个周边,接着不断周而复始. 轮询法实作easy.但效率偏低. 在JavaScript使用setInterval函数作简单的轮询操作,能够随时判定某一个參数值,但不用刷新页面.即不用在页头增加<META HTTP-EQUIV="Refresh&quo

性能测试中关键指标的监控与分析

一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上目的并回答用户的关注点,就必须首先执行性

浅谈软件性能测试中关键指标的监控与分析

浅谈软件性能测试中关键指标的监控与分析 一.软件性能测试需要监控哪些关键指标? 软件性能测试的目的主要有以下三点: Ø  评价系统当前性能,判断系统是否满足预期的性能需求. Ø  寻找软件系统可能存在的性能问题,定位性能瓶颈并解决问题. Ø  判定软件系统的性能表现,预见系统负载压力承受力,在应用部署之前,评估系统性能. 而对于用户来说,则最关注的是当前系统: Ø  是否满足上线性能要求? Ø  系统极限承载如何? Ø  系统稳定性如何? 因此,针对以上性能测试的目的以及用户的关注点,要达到以上

[转]如何分析监控的关键指标

三.如何分析监控的关键指标? 通过第二部分监控收集到性能度量关键指标,如何进行分析,并判断是否存在性能瓶颈呢?以下主要从资源指标与系统指标两方面进行阐述. ·    资源指标分析 判断CPU是否是瓶颈的方法:一般情况下CPU满负荷工作,有时候并不能判定为CPU出现瓶颈,比如Linux 总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化,即CPU尽可能最大化使用. 判断CPU为瓶颈,一般从两方面: CPU空闲持续为 0 运行队列大于CPU核数(经验值3-4倍),即可判定存在瓶颈 CPU高消耗主要

移动推广关键指标

*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } a { color: #4183C4; text-decoration: none; } a.absent { color: #cc0000; } a.anchor { display: block; padding-left: 30px; margin-left: -30px; cursor: poin

windows服务器性能监控工具、方法及关键指标

监控方法 推荐使用windows自带的"性能监视器"(老版本的windows叫性能计数器)来监控服务器的性能. 打开控制面板内的管理工具,在管理工具内打开性能监视器,出现如下界面(各版本的window操作系统的性能监视器的界面可能略有不同): 点击中上部的绿色加号图标,可以添加一项监视内容,添加界面如下图所示,可以在左侧选中需要监控的内容,点击添加,即可监控该内容.选中下方的"显示描述"复选框,可以查看被监控内容的具体描述信息. 关键指标 CPU监控 Process

(转载)高速ADC的关键指标:量化误差、offset/gain error、DNL、INL、ENOB、分辨率、RMS、SFDR、THD、SINAD、dBFS、TWO-TONE IMD

(一)一个基本概念 分贝(dB):按照对数定义的一个幅度单位.对于电压值,dB以20log(VA/VB)给出:对于功率值,以10log(PA/PB)给出.dBc是相对于一个载波信号的dB值:dBm是相对于1mW的dB值.对于dBm而言,规格中的负载电阻必须是已知的(如:1mW提供给50Ω),以确定等效的电压或电流值. (二)静态指标定义 1.量化误差(Quantization Error) 量化误差是基本误差,用简单3bit ADC来说明.输入电压被数字化,以8个离散电平来划分,分别由代码000

MTP(Media Transfer Protocol(媒体传输协议))简介

---恢复内容开始--- 1,简单说明 MTP,微软公司规定的新的传输规则(字面本来应该是协议的,但是自己感觉更像是规则,制定了基本上的所有路线,剩下的是你想怎么选择罢了,使用者完全没有可能在它的框架里面再生成其他的东西).MTP不但应用在USB(以USB端口传输数据的设备)方面,还应用在IP方面.不过主要还是在USB设备方面.现在很多手机都支持. 2,基本的工作原理 关于MTP的文档,我会在参考文件处列出.仅供大家参考. MTP协议本身,规定了USB设备的所有信息,文件读取方式,传输方式,读取