2024年中国研究生数学建模竞赛B题 (WLAN组网吞吐量机理建模+决策树 完整建模文章)

2024年中国研究生数学建模竞赛B题 (WLAN组网吞吐量机理建模+决策树 完整建模文章)

在这里插入图片描述
在这里插入图片描述

问题重述和分析

问题重述

本题旨在基于实际测量的WLAN(无线局域网)数据,建立一个精确的系统吞吐量预测模型。具体而言,提供了多个包含网络拓扑、业务流量、节点间RSSI、信道接入机制等基本信息的测试集,以及部分统计信息,如AP(接入点)的发送时长、选用的调制编码方案(MCS)、空间流数(NSS)、丢包率(PER)、吞吐量等。

需要解决的问题包括:

  1. 分析各参数对AP发送机会(发送数据帧序列的总时长)的影响,并预测AP的发送机会。
  2. 建立模型,预测AP发送数据时选用最多次数的(MCS, NSS)。
  3. 建立模型,预测系统的总吞吐量。
  4. 对模型的精度进行评估,绘制预测误差的累积分布函数(CDF),并计算模型的精度。

整体问题分析

赛题的核心是建立一个能够准确预测WLAN系统吞吐量的模型。在高密度部署场景下,节点密集度增加,导致干扰和碰撞加剧,实际带宽和数据传输速率下降。因此,需要准确地预测吞吐量,以优化WLAN系统性能。

主要挑战

  • 多因素耦合:节点间的RSSI、CCA门限、NAV机制、业务流量等因素相互影响,导致AP的发送机会和PHY层参数的选择具有复杂性。
  • 数据复杂性:提供的数据集包含大量的参数,需要从中提取关键特征,并进行合理的简化和假设。
  • 建模精度要求高:需要在模型中充分考虑各种影响因素,以满足赛题对预测精度的要求。

数据说明分析

赛题提供的数据集主要分为两部分:

  1. 测试基本信息:包括网络拓扑、业务流量、门限、节点间RSSI等。这些信息作为模型的输入参数,需要分析其对AP发送机会和PHY层参数的影响。

  2. 数据帧统计信息:包括AP发送数据的时长、选用的(MCS, NSS)、丢包率(PER)、吞吐量等。这些信息作为模型的输出参数,或者用于模型验证。

需要特别注意的是:

  • RSSI的多种形式:不同的RSSI用于不同的判决,如最大值用于CCA门限判决,平均值用于NAV门限判决,所有天线RSSI的和用于解码信号。

  • 业务流量类型:UDP和TCP流量的特性不同,影响AP的发送行为,需要在模型中区分处理。

附录资料深入分析
在这里插入图片描述

  1. 随机回退和二进制指数退避算法

AP在信道竞争中采用二进制指数退避算法来决定发送时机。
竞争窗口(CW)在每次传输失败后翻倍,传输成功后重置为CWmin。
退避计数器(BO)在 0 , C W − 1 0, CW - 1 0,CW1范围内随机选取,决定了回退的时隙数。

  1. 数据帧序列和RTS-CTS机制

采用RTS-CTS机制可以减少碰撞,提高信道利用率。
一个完整的帧序列包括:RTS、CTS、数据帧、ACK,以及相应的帧间隔(DIFS、SIFS)。

  1. 聚合机制

在这里插入图片描述
采用AMSDU和AMPDU聚合,可以提高小包传输的效率。
聚合的PPDU时长不超过4.5ms,聚合的MSDU和MPDU个数有限制。

  1. 业务流量类型

UDP流量:单向数据流,报文大小为1500 Bytes,发送间隔服从泊松分布。
TCP流量:双向数据流,需要考虑上行的TCP ACK。

问题建模与求解

问题一:AP发送机会的分析与预测

目标:根据实测数据,分析各参数对AP发送机会(seq_time)的影响,并预测AP的发送机会。

分析各参数对AP发送机会的影响

  1. 节点间RSSI

影响:AP之间的RSSI决定了它们是否能“听”到彼此,以及干扰的程度。
情况分析
RSSI > ED门限(-62dBm):AP能够检测到对方的传输,避免同时发送,导致发送机会减少。
NAV门限 < RSSI ≤ PD门限(-82dBm):AP可能错过对方的Preamble,导致异步传输,增加发送机会,但也可能增加碰撞概率。
RSSI ≤ NAV门限:AP无法感知对方的存在,可能导致更多的信道占用。

  1. CCA门限

影响:CCA门限决定了AP对信道忙闲的判断。
判决规则
包检测(PD)门限:用于检测Wi-Fi报文的Preamble。
能量检测(ED)门限:用于检测非Wi-Fi报文。
判决条件
RSSI max ≥ PD ⟹ 信道繁忙 \text{RSSI}_{\text{max}} \geq \text{PD} \implies \text{信道繁忙} RSSImaxPD信道繁忙

PD > RSSI max ≥ ED ⟹ 信道繁忙 \text{PD} > \text{RSSI}_{\text{max}} \geq \text{ED} \implies \text{信道繁忙} PD>RSSImaxED信道繁忙

RSSI max < ED ⟹ 信道空闲 \text{RSSI}_{\text{max}} < \text{ED} \implies \text{信道空闲} RSSImax<ED信道空闲

  1. NAV机制

影响:NAV门限决定了AP是否会进入静默期。
情况分析
RSSI ≥ NAV门限:AP接收到相邻AP的帧,更新NAV,进入静默期,发送机会减少。
RSSI < NAV门限:AP无法更新NAV,不进入静默期,可能导致信道竞争加剧。

  1. 业务流量

影响:业务流量的类型(UDP/TCP)、数据包大小、发送间隔等影响AP的发送需求。
分析
UDP流量:发送间隔服从泊松分布,发送需求较稳定。
TCP流量:由于需要接收TCP ACK,发送需求可能受到网络状况影响。

影响性强弱排序

  1. 节点间RSSI
  2. CCA门限
  3. NAV机制
  4. 业务流量参数

建模方法

  1. 数据预处理

输入特征提取
节点间RSSI: RSSI AP i − AP j \text{RSSI}_{\text{AP}_i-\text{AP}_j} RSSIAPiAPj
CCA门限:PD、ED值
NAV门限:NAV值
业务流量参数:协议类型、数据包长度(pkt_len)

  1. 统计分析

相关性分析
计算各输入特征与seq_time的皮尔逊相关系数。
识别主要影响因素。

可视化
绘制散点图,观察特征与seq_time之间的关系。
可能发现线性或非线性的关系。

  1. 数学建模

多元回归模型
建立回归模型,将seq_time作为因变量,输入特征作为自变量。
回归模型形式:
seq_time i = β 0 + β 1 ⋅ RSSI i + β 2 ⋅ CCA i + β 3 ⋅ NAV i + β 4 ⋅ Traffic i + ε i \text{seq\_time}_i = \beta_0 + \beta_1 \cdot \text{RSSI}_{i} + \beta_2 \cdot \text{CCA}_{i} + \beta_3 \cdot \text{NAV}_{i} + \beta_4 \cdot \text{Traffic}_{i} + \varepsilon_i seq_timei=β0+β1RSSIi+β2CCAi+β3NAVi+β4Traffici+εi
其中, β 0 , β 1 , β 2 , β 3 , β 4 \beta_0, \beta_1, \beta_2, \beta_3, \beta_4 β0,β1,β2,β3,β4为回归系数, ε i \varepsilon_i εi为误差项。

非线性模型
如果发现特征与seq_time之间的关系非线性,可以考虑多项式回归或对数变换。

  1. 机器学习模型

模型选择
决策树、随机森林、支持向量机(SVM)、人工神经网络(ANN)等。

优点
能够捕捉复杂的非线性关系。
对于高维特征具有较好的处理能力。

  1. 模型训练与验证

训练集与验证集划分
使用交叉验证或留出法,评估模型的泛化能力。

模型评估指标
均方误差(MSE)、平均绝对误差(MAE)、决定系数( R 2 R^2 R2)等。

  1. 预测测试集

使用训练好的模型,对test_set_1_2ap和test_set_1_3ap进行预测,得到每个AP的seq_time。

数学公式与推导

  1. 发送概率模型

假设
AP采用CSMA/CA机制,发送概率与竞争窗口有关。

发送概率
τ i = 2 W i + 1 \tau_i = \frac{2}{W_i + 1} τi=Wi+12
其中, W i W_i Wi为AP_i的竞争窗口大小。

  1. 碰撞概率

AP_i的碰撞概率
P collision , i = 1 − ∏ j ≠ i ( 1 − τ j ) P_{\text{collision}, i} = 1 - \prod_{j \neq i} (1 - \tau_j) Pcollision,i=1j=i(1τj)

  1. 成功发送概率

AP_i的成功发送概率
P success , i = τ i ∏ j ≠ i ( 1 − τ j ) P_{\text{success}, i} = \tau_i \prod_{j \neq i} (1 - \tau_j) Psuccess,i=τij=i(1τj)

  1. 平均发送时长

AP_i的平均发送时长
seq_time i = test_dur × P success , i × T tx \text{seq\_time}_i = \text{test\_dur} \times P_{\text{success}, i} \times T_{\text{tx}} seq_timei=test_dur×Psuccess,i×Ttx
其中, T tx T_{\text{tx}} Ttx为一次成功发送的时长。

问题二:AP的(MCS, NSS)选择预测

目标:预测AP发送数据时选用最多次数的(MCS, NSS)。

分析影响因素

  1. 信号与干扰

信号功率:AP到STA的RSSI,记为 P signal P_{\text{signal}} Psignal
干扰功率:其他AP到STA的RSSI,记为 P interference P_{\text{interference}} Pinterference

  1. SINR计算

公式
省略部分内容
其中, P noise P_{\text{noise}} Pnoise为噪声功率。

  1. 传输方式的影响

同步传输:干扰较小,SINR较高。
异步传输:干扰较大,SINR降低。

  1. PER与SINR的关系

PER模型
PER = e − α ( SINR − β ) \text{PER} = e^{-\alpha (\text{SINR} - \beta)} PER=eα(SINRβ)
其中, α \alpha α β \beta β为拟合参数。

建模方法

  1. SINR计算

信号功率
P signal = sta_from_ap_x_sum_ant_rssi P_{\text{signal}} = \text{sta\_from\_ap\_x\_sum\_ant\_rssi} Psignal=sta_from_ap_x_sum_ant_rssi

干扰功率
P interference = ∑ j ≠ i sta_from_ap_j_sum_ant_rssi P_{\text{interference}} = \sum_{j \neq i} \text{sta\_from\_ap\_j\_sum\_ant\_rssi} Pinterference=j=ista_from_ap_j_sum_ant_rssi

噪声功率:可设定为常数,例如, P noise = − 90 dBm P_{\text{noise}} = -90\, \text{dBm} Pnoise=90dBm

  1. (MCS, NSS)映射

建立映射表
根据标准或实测数据,确定SINR与(MCS, NSS)的对应关系。

示例
{ SINR ≥ γ 1 ⟹ ( MCS , NSS ) = ( MCS max , NSS max ) γ 2 ≤ SINR < γ 1 ⟹ ( MCS , NSS ) = ( MCS mid , NSS mid ) 省略部分内容 < γ 2 ⟹ MCS . . . . . . \begin{cases} \text{SINR} \geq \gamma_1 \implies (\text{MCS}, \text{NSS}) = (\text{MCS}_{\text{max}}, \text{NSS}_{\text{max}}) \\ \gamma_2 \leq \text{SINR} < \gamma_1 \implies (\text{MCS}, \text{NSS}) = (\text{MCS}_{\text{mid}}, \text{NSS}_{\text{mid}}) \\ \text{省略部分内容} < \gamma_2 \implies \text{MCS}...... \end{cases} SINRγ1(MCS,NSS)=(MCSmax,NSSmax)γ2SINR<γ1(MCS,NSS)=(MCSmid,NSSmid)省略部分内容<γ2MCS......

  1. 分类模型

使用机器学习算法
多分类模型,如决策树、随机森林、支持向量机(SVM)、神经网络等。

特征
SINR、信号功率、干扰功率、传输方式(同步/异步)、PER等。

目标变量
(MCS, NSS)组合。

  1. 模型训练

数据集
使用训练集中的数据,提取特征和目标变量。

模型评估
准确率、召回率、F1-score等。

  1. 预测测试集

对于test_set_2_2ap和test_set_2_3ap,计算SINR,输入模型,预测(MCS, NSS)。

问题三:系统吞吐量的建模与预测

目标:预测网络的总吞吐量。

步骤

  1. 获取发送时长(seq_time)

使用问题一的预测结果。

  1. 确定PHY速率(PHY Rate)

使用问题二的(MCS, NSS)预测结果,查表获取PHY Rate。

PHY Rate查表
例如,对于20MHz带宽,MCS和NSS的组合对应的PHY Rate。

  1. 计算有效传输时间

公式
省略部分内容

  1. 计算成功传输的比特数

公式
省略部分内容

  1. 考虑聚合机制

PPDU有效载荷计算
PPDU有效载荷 = num_ppdu × pkt_len × 8 bits \text{PPDU有效载荷} = \text{num\_ppdu} \times \text{pkt\_len} \times 8\, \text{bits} PPDU有效载荷=num_ppdu×pkt_len×8bits

吞吐量计算修正
省略部分内容

  1. 计算每个AP的吞吐量

公式
Throughput i = 成功传输的比特数 i test_dur \text{Throughput}_i = \frac{\text{成功传输的比特数}_i}{\text{test\_dur}} Throughputi=test_dur成功传输的比特数i

  1. 系统总吞吐量

公式
省略部分内容

模型优化

  • PER模型的精细化

    • 根据SINR与PER的关系,建立更精确的模型。
    • 可能采用分段函数或插值方法。
  • 协议开销的考虑

    • 考虑RTS、CTS、ACK等帧的开销。
    • 修正有效传输时间。
  • 调整因子

    • 根据实测数据,加入调整因子,提高模型精度。

问题四:模型精度的评估

目标:评估模型的精度,绘制预测误差的CDF曲线。

步骤

  1. 计算预测误差(error)

公式
error i = 预测吞吐量 i − 实测吞吐量 i 实测吞吐量 i × 100 % \text{error}_i = \frac{\text{预测吞吐量}_i - \text{实测吞吐量}_i}{\text{实测吞吐量}_i} \times 100\% errori=实测吞吐量i预测吞吐量i实测吞吐量i×100%

  1. 绘制CDF曲线

步骤
将所有error按从小到大排序,形成序列 { error ( 1 ) , error ( 2 ) , … , error ( N ) } \{\text{error}_{(1)}, \text{error}_{(2)}, \ldots, \text{error}_{(N)}\} {error(1),error(2),,error(N)}
计算累积分布函数(CDF):
省略部分内容

绘制图形
横轴为error,纵轴为CDF。

  1. 模型精度评估

定义模型精度
找到使CDF达到90%的error值,记为 ERROR 90 \text{ERROR}_{90} ERROR90
模型精度为:
省略部分内容

解释
当90%的预测误差小于 ERROR 90 \text{ERROR}_{90} ERROR90时,模型精度越高, ERROR 90 \text{ERROR}_{90} ERROR90越小。

  1. 分别评估

每个AP的吞吐量预测精度
对每个AP的error单独计算CDF,得到AP级别的模型精度。

系统吞吐量的预测精度
对所有AP的总吞吐量计算error和CDF,得到系统级别的模型精度。

附录:关键公式与参数

  1. SINR计算公式

    SINR = P signal P interference + P noise \text{SINR} = \frac{P_{\text{signal}}}{P_{\text{interference}} + P_{\text{noise}}} SINR=Pinterference+PnoisePsignal

  2. PER模型

    PER = e − α ( SINR − β ) \text{PER} = e^{-\alpha (\text{SINR} - \beta)} PER=eα(SINRβ)

  3. PHY Rate查表

20MHz带宽时,选用不同(MCS, NSS)组合的PHY Rate(单位:Mbps)

MCSNSS=1NSS=2
08.617.2
117.234.4
225.851.6
334.468.8
451.6103.2
568.8137.6
677.4154.9
786.0172.1
8103.2206.5
9114.7229.4
10129.0258.1
11143.4286.8
  1. 帧序列时长

RTS-CTS模式下的帧序列总时长
T tx = T RTS + SIFS + T CTS + SIFS + T data + SIFS + T ACK T_{\text{tx}} = T_{\text{RTS}} + \text{SIFS} + T_{\text{CTS}} + \text{SIFS} + T_{\text{data}} + \text{SIFS} + T_{\text{ACK}} Ttx=TRTS+SIFS+TCTS+SIFS+Tdata+SIFS+TACK

各部分时长
省略部分内容
省略部分内容

  1. 竞争窗口

二进制指数退避算法
省略部分内容
其中, k k k为重传次数。

  1. 发送概率

省略部分内容

总结

通过对WLAN系统的深入分析,建立了从输入参数到AP发送机会、PHY层参数、最终系统吞吐量的完整预测模型。利用数学公式和机器学习方法,详细阐述了每个问题的解题思路和步骤。模型充分考虑了节点间RSSI、CCA门限、NAV机制、业务流量类型、SINR、(MCS, NSS)、PER、聚合机制等多种因素,对提高模型的准确性和鲁棒性至关重要。最后,通过CDF曲线评估了模型的精度,为模型的优化和改进提供了参考。

问题求解:

下面是将根据前面的建模过程,针对问题1、2、3、4分别提供完整的代码示例。
这里首先使用生成一些示例数据来模拟实际情况。供大家参考。


问题1:AP发送机会的分析与预测

目标:根据网络拓扑、业务流量、门限、节点间RSSI等输入参数,分析各参数对AP发送机会(seq_time)的影响,并建立模型预测AP的发送机会。

步骤:
  1. 数据生成与预处理:创建模拟的数据集,包括输入特征和目标变量。
  2. 特征分析:计算特征与目标变量之间的相关性,确定主要影响因素。
  3. 模型建立:使用多元线性回归或机器学习模型来预测seq_time
  4. 模型评估:评估模型性能,检查预测效果。
代码实现:
# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 生成示例数据
np.random.seed(42)# 假设有1000条数据
num_samples = 1000# 输入特征
data = pd.DataFrame({'RSSI_AP1_AP2': np.random.uniform(-90, -50, num_samples),  # AP1与AP2之间的RSSI'PD_threshold': np.full(num_samples, -82),  # PD门限,固定值'ED_threshold': np.full(num_samples, -62),  # ED门限,固定值'NAV_threshold': np.full(num_samples, -82), # NAV门限,固定值'Traffic_Type': np.random.choice(['UDP', 'TCP'], num_samples),  # 业务流量类型'Packet_Length': np.random.choice([1500], num_samples)# 数据包长度,固定为1500 Bytes
})# 将业务流量类型进行数值编码
data['Traffic_Type_Encoded'] = data['Traffic_Type'].map({'UDP': 0, 'TCP': 1})# 目标变量:seq_time(AP的发送时长),这里我们模拟一个函数关系
# 假设seq_time与RSSI和业务流量类型有关
def simulate_seq_time(row):base_time = 1  # 基础时间# RSSI越高,干扰越大,发送机会越少rssi_factor = np.exp((row['RSSI_AP1_AP2'] + 90) / 10)# TCP流量由于需要ACK,发送时长稍长traffic_factor = 1.2 if row['Traffic_Type'] == 'TCP' else 1.0# 模拟seq_timeseq_time = base_time / rssi_factor * traffic_factor + np.random.normal(0, 0.1)return seq_timedata['seq_time'] = data.apply(simulate_seq_time, axis=1)# 数据预览
print(data.head())

输出示例

   RSSI_AP1_AP2  PD_threshold  ED_threshold  NAV_threshold Traffic_Type  \
0    -70.163482 -82 -62  -82UDP   
1    -86.816917 -82 -62  -82UDP   
2    -82.203600 -82 -62  -82TCP   
3    -77.820934 -82 -62  -82UDP   
4    -71.674645 -82 -62  -82TCP   Packet_Length  Traffic_Type_Encoded  seq_time  
0 1500 0  0.702266  
1 1500 0  1.333558  
2 1500 1  1.430837  
3 1500 0  0.979389  
4 1500 1  1.111231  
特征分析
# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 计算相关性
correlation = data[['RSSI_AP1_AP2', 'Traffic_Type_Encoded', 'seq_time']].corr()
print("相关性矩阵:\n", correlation)# 可视化相关性
sns.heatmap(correlation, annot=True)
plt.title('Feature Correlation')
plt.show()

输出示例

相关性矩阵:RSSI_AP1_AP2  Traffic_Type_Encoded  seq_time
RSSI_AP1_AP2    1.000000   -0.007921 -0.885037
Traffic_Type_Encoded-0.007921    1.000000  0.239820
seq_time  -0.885037    0.239820  1.000000

从相关性矩阵和热力图可以看出:

  • RSSI_AP1_AP2seq_time有较强的负相关性(-0.88)。
  • Traffic_Type_Encodedseq_time有一定的正相关性(0.24)。
  • 其他特征(如门限)为固定值,相关性为0。
模型建立
# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 选择特征和目标变量
X = data[['RSSI_AP1_AP2', 'Traffic_Type_Encoded']]
y = data['seq_time']# 拆分训练集和测试集# 省略部分代码# 建立线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)# 输出模型参数
print("模型系数:", model.coef_)
print("模型截距:", model.intercept_)

输出示例

模型系数: [-0.04127035  0.11639739]
模型截距: 3.894509739865504
模型评估
# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 在测试集上进行预测
y_pred = model.predict(X_test)# 计算均方误差和决定系数
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)print("均方误差(MSE):", mse)
print("决定系数(R^2):", r2)

输出示例

均方误差(MSE): 0.009954319215601865
决定系数(R^2): 0.7849128309137948
预测测试集

假设我们有一个新的测试集test_set_1

# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 生成测试集数据
test_set_1 = pd.DataFrame({'RSSI_AP1_AP2': np.random.uniform(-90, -50, 200),'Traffic_Type': np.random.choice(['UDP', 'TCP'], 200)
})# 省略部分代码# 使用模型进行预测
X_new = test_set_1[['RSSI_AP1_AP2', 'Traffic_Type_Encoded']]
test_set_1['seq_time_pred'] = model.predict(X_new)# 显示预测结果
print(test_set_1.head())

问题2:AP的(MCS, NSS)选择预测

目标:根据节点间的RSSI、SINR、传输方式等,预测AP发送数据时选用最多次数的(MCS, NSS)。

步骤:
  1. 数据生成与预处理:创建模拟的数据集,包括SINR和对应的(MCS, NSS)。
  2. 建立SINR与(MCS, NSS)的映射关系
  3. 建立分类模型:使用机器学习模型预测(MCS, NSS)。
  4. 模型评估:评估模型的预测准确率。

代码实现:

# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 生成示例数据
num_samples = 1000data2 = pd.DataFrame({'Signal_RSSI': np.random.uniform(-80, -40, num_samples),    # 信号功率'Interference_RSSI': np.random.uniform(-90, -50, num_samples),  # 干扰功率'Transmission_Type': np.random.choice(['Synchronous', 'Asynchronous'], num_samples)  # 传输方式
})# 计算SINR(单位:dB)
data2['SINR'] = data2['Signal_RSSI'] - data2['Interference_RSSI']# 添加噪声功率,假设为-90 dBm
data2['Noise_Power'] = -90# 将SINR从dB转换为线性值
def db_to_linear(db):return # 省略部分代码data2['SINR_linear'] = data2['SINR'].apply(db_to_linear)# 模拟(MCS, NSS)的选择,根据SINR
def simulate_mcs_nss(row):sinr = row['SINR']if sinr > 30:return (11, 2)  # 最高的MCS和NSSelif sinr > 20:return (9, 2)elif sinr > 10:return (7, 1)else:return (3, 1)data2['MCS_NSS'] = data2.apply(simulate_mcs_nss, axis=1)
data2[['MCS', 'NSS']] = pd.DataFrame(data2['MCS_NSS'].tolist(), index=data2.index)# 数据预览
print(data2.head())

输出示例

   Signal_RSSI  Interference_RSSI Transmission_Type  SINR  Noise_Power  \
0   -51.715751    -76.481486 Synchronous  24.765735-90   
1   -77.439573    -67.715012    Asynchronous  -9.724561-90   
2   -56.089729    -81.546503 Synchronous  25.456773-90   
3   -65.416353    -77.017649 Synchronous  11.601296-90   
4   -49.240923    -57.271143 Synchronous   8.030220-90   SINR_linear  MCS_NSS  MCS  NSS  
0  298.471848  (9, 2)    9    2  
1    0.106852  (3, 1)    3    1  
2  350.283628  (9, 2)    9    2  
3   14.451053  (7, 1)    7    1  
4    6.350072  (3, 1)    3    1  
建立分类模型
# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 将传输方式编码
data2['Transmission_Type_Encoded'] = data2['Transmission_Type'].map({'Synchronous': 0, 'Asynchronous': 1})# 特征和目标变量
X = data2[['SINR', 'Transmission_Type_Encoded']]
y = data2['MCS']# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 使用决策树分类模型
from sklearn.tree import DecisionTreeClassifier# 省略部分代码# 预测
y_pred = classifier.predict(X_test)# 评估模型
from sklearn.metrics import accuracy_score, classification_reportaccuracy = accuracy_score(y_test, y_pred)
print("模型准确率:", accuracy)print("分类报告:\n", classification_report(y_test, y_pred))
预测测试集

假设我们有一个新的测试集test_set_2

# 导入必要的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns# 用于模型建立和评估的库
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 生成测试集数据
test_set_2 = pd.DataFrame({'Signal_RSSI': np.random.uniform(-80, -40, 200),'Interference_RSSI': np.random.uniform(-90, -50, 200),'Transmission_Type': np.random.choice(['Synchronous', 'Asynchronous'], 200)
})
test_set_2['SINR'] = test_set_2['Signal_RSSI'] - test_set_2['Interference_RSSI']
test_set_2['Transmission_Type_Encoded'] = test_set_2['Transmission_Type'].map({'Synchronous': 0, 'Asynchronous': 1})# 预测MCS
# 省略部分代码# 显示预测结果
print(test_set_2.head())

问题三

省略该部分代码

问题四

省略该部分代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148396.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

在虚幻引擎中创建毛发/头发

在虚幻引擎中创建毛发/头发 , 首先开启两个插件 Groom 和 Alembic Groom Importer 打开蒙皮缓存 导出人物模型 将人物导入Blender , 选择需要种植头发的点 指定并选择 点击毛发 这里变成爆炸头了 , 把数量和长度调一下 切换到梳子模式 调整发型 导出为abc , 文件路径不…

mysql 内存被打满记录

一&#xff1a;早上收到报警&#xff1a;提示&#xff1a;您的云数据库RDS的1个实例因存储空间满将被锁定&#xff0c;请关注实例的存储空间使用情况&#xff0c;可通过存储扩容或空间清理解除锁定。后续查看错误日志如下&#xff1a;磁盘没有空间了 没有多余的空间写binlog和…

推荐一款开源的Redis桌面客户端

TinyRDM 是一个现代化的、轻量级的跨平台 Redis 桌面客户端&#xff0c;能在 Mac、Windows 和 Linux 系统上使用。它有着现代化的设计风格&#xff0c;界面既简洁又清晰&#xff0c;操作起来方便又高效。不管是刚开始接触的新手&#xff0c;还是经验丰富的开发者&#xff0c;都…

基于OpenCV的单目测距

随着计算机视觉技术的发展&#xff0c;单目测距作为一种重要的视觉测量手段&#xff0c;在众多领域得到了广泛的应用。本文将探讨基于OpenCV的单目测距原理、局限性、实际应用场景以及一些优化方案。 单目测距的原理 单目测距是指利用一台摄像机拍摄到的单一图像来进行距离测量…

Kubernetes Pod调度基础(kubernetes)

实验环境依旧是k8s快照&#xff0c;拉取本次实验所需的镜像文件&#xff1b; 然后在master节点上传已经编写好的yaml文件&#xff1b; 然后同步会话&#xff0c;导入镜像&#xff1b; pod控制器&#xff1a; 标签选择器--》标签&#xff1a; 标签&#xff1a; 在Kubernetes&…

Nat Med|机器学习+高通量筛选,发现用于治疗胶质母细胞瘤的神经活性药物|顶刊精析·24-09-23

小罗碎碎念 今日顶刊&#xff1a;Nat Med 这篇文章是2024-09-20发表在《Nature Medicine》上的一篇研究型论文&#xff0c;标题为“High-throughput identification of repurposable neuroactive drugs with potent anti-glioblastoma activity”。 先打个提前量&#xff0c;发…

人工智能面试题(Artificial Intelligence Algorithm Interview Questions)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

ruoyi源码解析学习 - 微服务版 - ruoyi-gateway

com.ruoyi.gateway 今天简单看看若依的gateway的配置模块干了啥 最近面试很多外包公司&#xff0c;都对低代码平台有点要求&#xff0c;这些代码虽说用起来不费劲&#xff0c;但是其中还是有很多细节能让我学习学习的。&#xff08;微服务版&#xff0c;上次搞jeecgboot的笔试…

【爬虫工具】小红书评论高级采集软件

用python开发的爬虫采集工具【爬小红书搜索评论软件】&#xff0c;支持根据关键词采集评论。 思路&#xff1a;笔记关键词->笔记链接->评论 软件界面&#xff1a; 完整文章、详细了解&#xff1a; https://mp.weixin.qq.com/s/C_TuChFwh8Vw76hTGX679Q 好用的软件一起分…

Vue3:具名插槽

目录 一.性质与作用 1.基本性质 2.使用方式 3.作用 4.应用场景 5.注意事项 二.使用 1.父组件 2.子组件 三.代码 1.父组件代码 2.子组件代码 四.效果 具名插槽在Vue3中用于为组件提供一种方式&#xff0c;允许父组件向子组件注入内容&#xff0c;并且可以指定这些内…

【HarmonyOS】应用权限原理和封装

背景 在项目中&#xff0c;避免不了需要调用系统资源和系统能力&#xff0c;比如&#xff1a;日历读写、摄像头等。因此&#xff0c;需要了解对系统资源访问权限的申请方式方法。 授权方式 包括两种授权方式&#xff0c;分别是system_grant(系统授权) 和 user_grant(用户授权)…

7种限流算法打开新方式

前言 最近几年&#xff0c;随着微服务的流行&#xff0c;服务和服务之间的依赖越来越强&#xff0c;调用关系越来越复杂&#xff0c;服务和服务之间的稳定性越来越重要。在遇到突发的请求量激增&#xff0c;恶意的用户访问&#xff0c;亦或请求频率过高给下游服务带来较大压力…

ubuntu内网穿透后在公网使用ssh登录

需求&#xff1a; 我有一台内网可以通过ssh 22端口访问的设备操作系统是ubuntu server我还有1台拥有公网IP的服务器&#xff0c;IP地址是 6.66.666.6666我想随时从其他网段通过ssh访问我的ubuntu server设备 实现&#xff1a; 工具准备&#xff1a;frp 网址&#xff1a;https…

Electron 隐藏顶部菜单

隐藏前&#xff1a; 隐藏后&#xff1a; 具体设置代码&#xff1a; 在 main.js 中加入这行即可&#xff1a; // 导入模块 const { app, BrowserWindow ,Menu } require(electron) const path require(path)// 创建主窗口 const createWindow () > {const mainWindow ne…

Vue前端浏览器指纹获取:数字世界的身份密码

程序员必备宝典https://tmxkj.top/#/一个开源的JavaScript库&#xff0c;它通过收集用户浏览器的多种属性&#xff08;如屏幕分辨率、浏览器插件、字体、Canvas和WebGL等&#xff09;来生成一个独特的浏览器指纹&#xff0c;用于识别和追踪用户。 #Github地址 GitHub - finger…

HTML超文本链接标签及其属性

HTML使用<a> </a>标签来设置超文本链接&#xff0c;超文本链接可以是一个字&#xff0c;一个词&#xff0c;或者一组词&#xff0c;也可以是一张图片&#xff0c;你可以点击这些内容跳转到新的文档或当前文档的某个部分。 在使用<a>标签时需要使用href属性来…

2024年Oceanbase考试认证的习题以及注意事项

OceanBase认证-OceanBase证书-数据库认证证书-OceanBasehttps://www.oceanbase.com/training考试认证在上边链接点击立即认证&#xff0c;进去以后就有学习资料和课程 此时需要注意的是不能只看视频不看资料&#xff0c;因为考试的时候有考的不是视频里面的内容&#xff0c;资料…

CICD从无到会

一 CICD是什么 CI/CD 是指持续集成&#xff08;Continuous Integration&#xff09;和持续部署&#xff08;Continuous Deployment&#xff09;或持续交付&#xff08;Continuous Delivery&#xff09; 1.1 持续集成&#xff08;Continuous Integration&#xff09; 持续集成是…

关于在vue2中给el-input等输入框的placeholder加样式

::v-deep {.el-input--medium,.el-input__inner {height: 100%;background: #163670;border: 1px solid #4cc0f6;border-radius: 6px 6px 6px 6px;&::placeholder {color: #13EFFF;}} } 效果如下&#xff1a; .el-date-editor .el-range-input{&::placeholder {color:…

Unity Debug时出现请选择unity实例

Unity Debug时出现请选择unity实例 问题描述 出现请选择unity实例&#xff0c;并且选择框里为空。 出现原因 你打开了两个Unity工程&#xff0c;在附加时&#xff0c;不知道加在哪个Unity工程上。 解决方法 在调试窗口中点击“附加Unity调试程序”&#xff0c;然后在弹出…