【2025五一数学建模竞赛C题】社交媒体平台用户分析问题|建模过程+完整代码论文全解全析
你是否在寻找数学建模比赛的突破点?数学建模进阶思路!
作为经验丰富的美赛O奖、国赛国一的数学建模团队,我们将为你带来本次数学建模竞赛的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。
详见文末
部分可视化(做了模糊处理,正文里的比这个更细致)
第一个问题是:基于用户与博主历史交互数据(观看、点赞、评论、关注)的统计分析,能够有效揭示用户行为特征,为内容优化和交互提升提供决策依据。根据附件1提供的数据,请建立数学模型,预测各博主在2024.7.21当天新增的关注数,并根据预测结果,在表1中填写当日新增关注数最多的5位博主ID及其对应的新增关注数。
问题1:预测各博主在2024.7.21当天新增的关注数
1. 问题理解
我们需要基于附件1中提供的2024.7.11至2024.7.20的历史交互数据(观看、点赞、评论、关注),预测每个博主在2024.7.21当天新增的关注数(即有多少新用户关注了该博主)。然后,找出新增关注数最多的前5位博主及其新增关注数。
2. 数据特征
- 用户行为:1(观看)、2(点赞)、3(评论)、4(关注)。注意,点赞、评论、关注都隐含了观看行为。
- 时间范围:2024.7.11至2024.7.20。
- 预测目标:2024.7.21当天每个博主的新增关注数。
3. 建模思路
由于我们需要预测未来一天的新增关注数,可以考虑以下方法:
- 时间序列模型:将每个博主每天新增的关注数看作一个时间序列,使用时间序列模型(如ARIMA、指数平滑等)进行预测。
- 趋势外推:根据过去几天的新增关注数的趋势,进行简单的外推预测。
- 机器学习模型:将博主的历史关注数作为特征,训练回归模型进行预测。
考虑到数据的时间跨度较短(10天),且每个博主的新增关注数可能存在波动,我们选择加权移动平均法进行预测,因为这种方法简单且能较好地反映近期的变化趋势。
4. 数学模型
加权移动平均法:对每个博主,计算过去若干天(如最近3天)的新增关注数的加权平均值,作为预测值。权重可以根据距离预测日期的远近进行调整,较近的日期赋予较大的权重。
假设我们要预测博主 b
在 t+1
天的新增关注数,使用过去 n
天的数据进行加权移动平均。权重向量为 w = [w1, w2, ..., wn]
,满足 w1 + w2 + ... + wn = 1
且 w1 < w2 < ... < wn
(近期的权重大)。
设博主 b
在过去 n
天的新增关注数为 [y_{t-n+1}, y_{t-n+2}, ..., y_t]
,则 t+1
天的预测值为:
y ^ t + 1 = w 1 ⋅ y t − n + 1 + w 2 ⋅ y t − n + 2 + ⋯ + w n ⋅ y t \hat{y}_{t+1} = w1 \cdot y_{t-n+1} + w2 \cdot y_{t-n+2} + \cdots + wn \cdot y_t y^t+1=w1⋅yt−n+1+w2⋅yt−n+2+⋯+wn⋅yt
在这里,我们选择 n = 3
,权重向量 w = [0.2, 0.3, 0.5]
(越近的权重越大)。
5. 实施步骤
- 读取附件1数据,预处理得到每个博主每天的新增关注数。
- 对于每个博主,使用过去3天(2024.7.18-2024.7.20)的数据,按照加权移动平均法计算2024.7.21的预测值。
- 对预测值进行排序,选出新增关注数最多的5个博主。
6. 代码实现
import pandas as pd# 读取数据
data = pd.read_excel('附件1.xlsx')# 提取时间列中的日期
data['date'] = pd.to_datetime(data['时间']).dt.date# 筛选出关注行为(行为类型为4)
follow_data = data[data['用户行为'] == 4]# 计算每个博主每天的新增关注数
daily_follows = follow_data.groupby(['博主ID', 'date']).size().reset_index(name='新增关注数')# 将日期转换为字符串,方便后续处理
daily_follows['date'] = daily_follows['date'].astype(str)# 获取所有博主ID和日期范围
all_b_loggers = daily_follows['博主ID'].unique()
all_dates = daily_follows['date'].unique()# 构建完整的博主-日期矩阵,确保每个博主在每天都有记录(如果没有记录,新增关注数为0)
full_matrix = pd.MultiIndex.from_product([all_b_loggers, all_dates], names=['博主ID', 'date']).to_frame(index=False)
daily_follows_full = full_matrix.merge(daily_follows, on=['博主ID', 'date'], how='left').fillna(0)# 计算每个博主2024.7.21的预测新增关注数(使用过去3天的加权移动平均)
predictions = []
for b_logger in all_b_loggers:# 获取该博主过去3天的数据
问题一:预测各博主在2024.7.21当天新增的关注数
1. 问题分析
我们需要预测每个博主在2024年7月21日当天新增的关注数。这需要利用附件1中2024年7月11日至2024年7月20日的历史交互数据(观看、点赞、评论、关注)。由于关注行为是用户与博主之间的一种重要互动,我们可以基于历史关注行为的趋势来预测未来的关注数。
2. 数据预处理
首先,从附件1中提取每个博主每天的关注数。由于附件1中记录了用户对博主的关注行为(行为类型为4),我们可以按天和博主统计关注次数,得到每个博主每天的新增关注数。
3. 预测模型选择
考虑到时间序列的连续性,可以采用时间序列预测模型。常见的模型有:
- 移动平均法(MA):简单移动平均或加权移动平均。
- 指数平滑法(ES):适用于无明显趋势和季节性的数据。
- 自回归积分滑动平均模型(ARIMA):适用于非平稳时间序列。
- 线性回归模型:基于时间作为自变量的线性回归。
由于数据的时间跨度较短(仅10天),且关注数可能受到多种因素影响,推荐使用简单模型如移动平均或指数平滑法。
4. 模型建立
这里我们选择**简单移动平均法(SMA)**进行预测,计算每个博主过去N天的平均关注数,作为预测值。具体步骤如下:
- 对每个博主,提取过去N天的每日新增关注数。
- 计算过去N天新增关注数的平均值,作为预测值。
数学公式表示为:
y ^ t + 1 = 1 N ∑ i = t − N + 1 t y i \hat{y}_{t+1} = \frac{1}{N} \sum_{i=t-N+1}^t y_i y^t+1=N1i=t−N+1∑tyi
其中:
- y ^ t + 1 \hat{y}_{t+1} y^t+1 是预测的第 t + 1 t+1 t+1 天的新增关注数,
- y i y_i yi 是第 i i i 天的新增关注数,
- N N N 是选择的移动平均窗口大小。
考虑到数据只有10天,我们可以取 N = 3 N=3 N=3 或 N = 5 N=5 N=5 进行移动平均。
5. 模型优化
为了提高预测准确性,可以尝试不同的N值,并选择预测误差最小的N。也可以采用加权移动平均法(WMA),给近期的数据赋予更高的权重。
加权移动平均的公式为:
y ^ t + 1 = ∑ i = t − N + 1 t w i y i \hat{y}_{t+1} = \sum_{i=t-N+1}^t w_i y_i y^t+1=i=t−N+1∑twiyi
其中, w i w_i wi 是第 i i i 天的权重,满足 ∑ w i = 1 \sum w_i = 1 ∑wi=1。常见的权重分配方法是线性递减,如最近一天的权重最大。
6. 预测结果
对每个博主,使用移动平均法预测2024年7月21日的新增关注数。然后,根据预测值排序,选出新增关注数最多的5位博主。
7. 结果验证
由于没有真实的数据进行验证,我们无法计算预测误差。但在实际应用中,可以使用历史数据的一部分作为训练集,另一部分作为测试集来评估模型性能。
8. 结果展示
最后,将预测结果填入表1。
9. 示例代码(伪代码)
# 读取数据
data = read_csv("附件1.csv")# 筛选关注行为(行为类型为4)
follow_data = data[data['行为'] == 4]# 按博主ID和日期分组,统计每天的关注数
daily_follows = follow_data.groupby(['博主ID', '日期']).size().reset_index(name='新增关注数')# 对每个博主,使用简单移动平均法预测2024.7.21的新增关注数
N = 3 # 移动平均窗口大小
predictions = {}for blogger_id in daily_follows['博主ID'].unique():blogger_data = daily_follows[daily_follows['博主ID'] == blogger_id]if len(blogger_data) >= N:y_pred = blogger_data['新增关注数'].tail(N).mean()else:y_pred = blogger_data['新增关注数'].mean()predictions[blogger_id] = y_pred# 排序并选出新增关注数最多的5位博主
top_bloggers = sorted(predictions.items(), key=lambda x: x[1], reverse=True)[:5]# 输出结果
print("排名\t博主ID\t新增关注数")
for i, (blogger_id, follows) in enumerate(top_bloggers, start=1):print(f"{i}\t{blogger_id}\t{follows}")
10. 注意事项
- 在实际操作中,可能
首先,我们理解问题1的要求:基于附件1中的历史交互数据(观看、点赞、评论、关注),预测各博主在2024.7.21当天新增的关注数,并找出新增关注数最多的5位博主ID及其对应的新增关注数。
解决方案思路
- 数据预处理:首先,我们需要加载并解析附件1中的数据,确保时间戳被正确解析,并提取有用的信息。
- 特征工程:提取有助于预测的特征,例如:
- 每位博主的历史关注数。
- 每位博主的观看、点赞、评论互动数。
- 每位博主在过去几天的关注数变化趋势。
- 用户与博主之间的互动频率等。
- 预测模型选择:由于这是一个时间序列预测问题,我们可以选择以下模型之一:
- 时间序列模型(如ARIMA、Prophet等)。
- 回归模型(如线性回归、随机森林回归等)。
- 深度学习模型(如LSTM等)。
- 模型训练与预测:使用历史数据训练模型,并进行预测。
- 结果提取:从预测结果中提取新增关注数最多的5位博主ID及其新增关注数。
简化方法
考虑到问题的时间限制和复杂性,我们可以采用一种简化的方法:假设每位博主的新增关注数与其过去一段时间的平均新增关注数相同。具体步骤如下:
- 计算每位博主在2024.7.11-2024.7.20期间每天的平均新增关注数。
- 将平均新增关注数作为2024.7.21的新增关注数预测值。
- 找出新增关注数预测值最高的5位博主。
Python代码实现
import pandas as pd
from datetime import datetime# 读取附件1的数据
data = pd.read_excel('附件1.xlsx')# 将时间列转换为datetime类型
data['时间'] = pd.to_datetime(data['时间'])# 筛选出关注行为(行为列值为4)
follow_data = data[data['用户行为'] == 4]# 提取日期信息
follow_data['日期'] = follow_data['时间'].dt.date# 按博主ID和日期分组,计算每天的新增关注数
daily_follows = follow_data.groupby(['博主ID', '日期']).size().reset_index(name='新增关注数')# 计算每位博主在2024.7.11-2024.7.20期间的平均新增关注数
avg_daily_follows = daily_follows.groupby('博主ID')['新增关注数'].mean().reset_index()# 预测2024.7.21的新增关注数(假设与平均新增关注数相同)
predicted_follows = avg_daily_follows.copy()
predicted_follows.rename(columns={'新增关注数': '预测新增关注数'}, inplace=True)# 找到预测新增关注数最多的5位博主
top_5_bloggers = predicted_follows.nlargest(5, '预测新增关注数')# 输出结果
print(top_5_bloggers)# 将结果填入表1
table1 = top_5_bloggers.set_index('博主ID').T.to_dict(orient='records')[0]
print("\n表1 问题1结果")
print("排名\t博主ID\t新增关注数")
for i, (blogger_id, follows) in enumerate(table1.items(), start=1):print(f"{i}\t{blogger_id}\t{follows:.2f}")
注意事项
- 上述代码假设附件1的文件名为
附件1.xlsx
,请根据实际情况调整。 - 如果附件1中的数据格式不同,请相应地调整代码。
- 简化的方法假设每位博主的新增关注数与其过去一段时间的平均新增关注数相同,这在实际中可能不够准确,但作为初步预测是合理的。
- 如果需要更精确的预测,可以使用更复杂的模型,如Prophet或LSTM等。
优化方向
- 考虑时间趋势:如果博主的新增关注数存在明显的增长或下降趋势,可以尝试使用时间序列模型进行预测。
- 引入其他特征:例如博主的活跃度、用户的活跃度、互动频率等,可以提高预测的准确性。
- 使用交叉验证:评估模型的性能,并选择最佳模型。
- 调整模型参数:根据实际情况调整模型参数,以获得更好的预测效果。
结果解释
运行上述代码后,将输出预测新增关注数最多的5位博主ID及其预测的新增关注数。这些结果可以填入表1中。由于数据是模拟的,实际预测结果可能与示例不同,但方法是一致的。
根据提供的文本,第二个问题是:
问题2. 附件2提供了2024.7.22当天用户进行观看、点赞、评论的行为数据,结合附件1中用户的历史行为数据,请建立数学模型,预测用户在2024.7.22产生的新关注行为,并将指定用户在2024.7.22新关注的博主ID填入表2。
表2 问题2结果
用户ID | U7 | U6749 | U5769 | U14990 | U52010 |
---|---|---|---|---|---|
新关注博主ID |
注:若用户在2024.7.22关注多名博主,均填入表2;若用户在2024.7.22未新关注博主,无需填写。
问题2:预测用户在2024.7.22产生的新关注行为
问题重述:
我们需要根据附件1中的用户历史行为数据(2024.7.11-2024.7.20)和附件2中2024.7.22用户的行为数据,预测指定用户在2024.7.22的新关注行为。预测结果将填入表2。
假设:
- 用户在2024.7.22的新关注行为受到其历史行为和其他行为(观看、点赞、评论)的影响。
- 用户对某个博主的关注概率可以通过其历史互动行为来估计。
- 用户对某个博主的关注可能基于该博主的内容质量、互动频率等因素。
方法:
-
数据预处理:
- 从附件1中提取每个用户在2024.7.11-2024.7.20期间的行为数据,包括观看、点赞、评论和关注。
- 从附件2中提取每个用户在2024.7.22的行为数据,包括观看、点赞、评论。
- 注意:附件2中没有关注行为,因为我们要预测的就是关注行为。
-
特征工程:
- 为每个用户和博主对构建以下特征:
- 用户对该博主的观看次数。
- 用户对该博主的点赞次数。
- 用户对该博主的评论次数。
- 用户是否已经关注该博主(在附件1中)。
- 用户对该博主的总互动次数(观看、点赞、评论)。
- 用户对该博主的最新互动时间(从附件1中获取)。
- 注意:由于附件2中只包含观看、点赞、评论,我们假设用户在2024.7.22对某个博主的新关注是基于2024.7.22之前的互动历史。
- 为每个用户和博主对构建以下特征:
-
模型选择:
- 由于这是一个二分类问题(用户是否会关注某个博主),我们可以选择逻辑回归、随机森林、XGBoost等分类算法。
- 由于数据量可能较大,我们可以选择LightGBM或XGBoost这类高效算法。
-
训练和预测:
- 以用户和博主对为样本,以用户是否关注该博主(在附件1中)作为标签,构建训练数据。
- 训练模型来预测用户是否会关注某个博主。
- 对于附件2中每个用户和博主对,使用训练好的模型预测关注概率。
- 对于每个用户,选择预测概率最高的博主作为其新关注的博主。
-
结果整理:
- 对于表2中指定的每个用户,如果模型预测其会关注某个博主,则填写该博主ID;否则留空。
数学模型:
假设我们有用户 u u u 和博主 v v v 的对,我们可以定义特征向量 x u , v \mathbf{x}_{u,v} xu,v,包括上述特征(观看次数、点赞次数等)。我们的目标是预测用户 u u u 是否会关注博主 v v v,即预测概率 P ( y u , v = 1 ∣ x u , v ) P(y_{u,v} = 1 | \mathbf{x}_{u,v}) P(yu,v=1∣xu,v),其中 y u , v = 1 y_{u,v} = 1 yu,v=1 表示关注, y u , v = 0 y_{u,v} = 0 yu,v=0 表示不关注。
我们可以使用逻辑回归模型:
P ( y u , v = 1 ∣ x u , v ) = 1 1 + e − w T x u , v P(y_{u,v} = 1 | \mathbf{x}_{u,v}) = \frac{1}{1 + e^{-\mathbf{w}^T \mathbf{x}_{u,v}}} P(yu,v=1∣xu,v)=1+e−wTxu,v1
其中 w \mathbf{w} w 是模型参数,通过最大似然估计学习得到。
或者使用树模型,如XGBoost,其预测形式为:
P ( y u , v = 1 ∣ x u , v ) = XGBoost ( x u , v ) P(y_{u,v} = 1 | \mathbf{x}_{u,v}) = \text{XGBoost}(\mathbf{x}_{u,v}) P(yu,v=1∣xu,v)=XGBoost(xu,v)
其中XGBoost是一个基于决策树的集成模型,通过梯度提升进行训练。
预测步骤:
- 对于每个用户 u u u 和博主 v v v 的对,计算其特征 x u , v \mathbf{x}_{u,v} xu,v。
- 使用训练好的模型计算 P ( y u , v = 1 ∣ x u , v ) P(y_{u,v} = 1 | \mathbf{x}_{u,v}) P(yu,v=1∣xu,v)。
- 对于每个用户 u u u,选择预测概率最高的博主 v v v,作为其新关注的博主(如果概率超过某个阈值)。
注意:
- 如果用户已经在附件1中关注了某个博主,那么在附件2中不应再次关注(根据假设2)。
- 需要确保在训练时,正样本( y u , v = 1 y_{u,v} = 1 yu,v=1)是用户在附件1中关注的博主,负样本是用户未关注的博主。
- 由于附件2中只包含观看、点赞、评论,我们需要基于附件1的数据来训练模型,然后用附件2中的互动行为作为特征进行预测。
表2填写:
- 对于表2中的每个用户,如果模型预测其会
问题2:预测用户在2024.7.22的新关注行为
1. 数据预处理
首先,将附件1中的历史行为数据和附件2中2024.7.22的观看、点赞、评论行为数据进行合并。由于附件2中只有观看、点赞、评论行为(对应数字1、2、3),我们需要基于这些行为来预测新的关注行为(数字4)。
2. 特征工程
构建用户和博主的互动特征,包括:
- 用户对博主的历史观看次数( W u , b W_{u,b} Wu,b)
- 用户对博主的历史点赞次数( L u , b L_{u,b} Lu,b)
- 用户对博主的历史评论次数( C u , b C_{u,b} Cu,b)
- 用户对博主的历史关注次数( F u , b F_{u,b} Fu,b,通常为0或1,因为关注后不会取消)
- 用户的总观看次数( W u W_{u} Wu)
- 用户的总点赞次数( L u L_{u} Lu)
- 用户的总评论次数( C u C_{u} Cu)
- 用户的总关注次数( F u F_{u} Fu)
- 博主的总被观看次数( W b W_{b} Wb)
- 博主的总被点赞次数( L b L_{b} Lb)
- 博主的总被评论次数( C b C_{b} Cb)
- 博主的总被关注次数( F b F_{b} Fb)
3. 构建预测模型
由于关注行为是二分类问题(关注或不关注),我们可以使用逻辑回归模型进行预测。
逻辑回归模型的公式如下:
P ( y u , b = 1 ∣ x u , b ) = 1 1 + e − ( β 0 + β 1 x 1 + ⋯ + β n x n ) P(y_{u,b} = 1 | x_{u,b}) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \cdots + \beta_n x_n)}} P(yu,b=1∣xu,b)=1+e−(β0+β1x1+⋯+βnxn)1
其中:
- y u , b = 1 y_{u,b} = 1 yu,b=1 表示用户 u u u 关注了博主 b b b;
- x u , b x_{u,b} xu,b 是特征向量,包括上述构建的所有特征;
- β 0 , β 1 , … , β n \beta_0, \beta_1, \dots, \beta_n β0,β1,…,βn 是模型参数。
4. 训练模型
使用附件1中的历史行为数据作为训练集。对于每个用户-博主对 ( u , b ) (u, b) (u,b),如果用户关注了博主,则标签 y u , b = 1 y_{u,b} = 1 yu,b=1,否则为0。注意,由于附件1中已经记录了关注行为,我们可以直接利用这些数据作为正样本,并从未关注的用户-博主对中随机选择负样本。
5. 预测新关注行为
对于附件2中指定的用户(U7, U6749, U5769, U14990, U52010)在2024.7.22的行为,我们根据他们在这一天与博主的互动情况,使用训练好的模型预测其是否会关注该博主。
具体步骤如下:
- 对于每个指定用户 u u u,找出他们在2024.7.22有过互动的所有博主 b b b(即观看、点赞、评论过)。
- 对于每个这样的 ( u , b ) (u, b) (u,b) 对,计算特征向量 x u , b x_{u,b} xu,b,并代入模型计算 P ( y u , b = 1 ∣ x u , b ) P(y_{u,b} = 1 | x_{u,b}) P(yu,b=1∣xu,b)。
- 如果概率超过阈值(例如0.5),则认为用户 u u u 会关注博主 b b b。
6. 输出结果
将预测为关注的 ( u , b ) (u, b) (u,b) 对填入表2。如果用户 u u u 在2024.7.22没有新关注任何博主,则该单元格留空。
公式总结
-
逻辑回归模型:
P ( y = 1 ∣ x ) = 1 1 + e − ( β T x ) P(y = 1 | x) = \frac{1}{1 + e^{-(\beta^T x)}} P(y=1∣x)=1+e−(βTx)1
其中 β = [ β 0 , β 1 , … , β n ] T \beta = [\beta_0, \beta_1, \dots, \beta_n]^T β=[β0,β1,…,βn]T, x = [ 1 , x 1 , … , x n ] T x = [1, x_1, \dots, x_n]^T x=[1,x1,…,xn]T。 -
特征构建示例:
- W u , b W_{u,b} Wu,b:用户 u u u 对博主 b b b 的历史观看次数。
- L u , b L_{u,b} Lu,b:用户 u u u 对博主 b b b 的历史点赞次数。
- 等等。
问题2: 预测用户在2024.7.22产生的新关注行为
步骤:
-
数据读取与预处理:
- 读取附件1(用户历史行为数据)和附件2(2024.7.22当天用户行为数据)。
- 预处理数据,确保时间格式正确,并筛选出关注行为(
用户行为
列为4)。
-
构建用户-博主关注关系:
- 从附件1中提取每个用户已关注的博主列表。
- 从附件2中提取用户在2024.7.22当天产生的新关注行为(即观看、点赞、评论行为,但不包含关注行为本身,因为附件2中只有观看、点赞、评论,无关注数据)。
-
预测新关注行为:
- 由于附件2只包含观看、点赞、评论行为,无法直接获取新关注行为,因此我们需要基于附件1的历史关注行为和附件2的互动行为来预测新关注。
- 假设用户对某个博主在2024.7.22有观看、点赞或评论行为,且该用户在附件1中没有关注该博主,则预测该用户可能在2024.7.22关注该博主。
-
填写结果:
- 对于给定的5个用户(U7, U6749, U5769, U14990, U52010),检查他们在2024.7.22是否有预测的新关注行为,并填写表2。
具体实现:
import pandas as pd# 读取附件1和附件2
df_history = pd.read_csv('附件1.csv')
df_20240722 = pd.read_csv('附件2.csv')# 预处理:筛选附件1中的关注行为
df_follow_history = df_history[df_history['用户行为'] == 4]# 提取每个用户在附件1中已关注的博主列表
user_followed_dict = df_follow_history.groupby('用户ID')['博主ID'].apply(list).to_dict()# 提取附件2中用户的互动行为(观看、点赞、评论)
df_20240722_interactions = df_20240722[df_20240722['用户行为'].isin([1, 2, 3])]# 预测新关注:用户在2024.7.22对某博主有互动且未关注该博主
predicted_new_follows = {}
for user_id, group in df_20240722_interactions.groupby('用户ID'):interacted_bloggers = set(group['博主ID'].unique())if user_id in user_followed_dict:followed_bloggers = set(user_followed_dict[user_id])new_follows = interacted_bloggers - followed_bloggerselse:new_follows = interacted_bloggersif new_follows:predicted_new_follows[user_id] = list(new_follows)# 填写表2:预测指定用户的新关注博主ID
specified_users = ['U7', 'U6749', 'U5769', 'U14990', 'U52010']
table2_result = {user: predicted_new_follows.get(user, []) for user in specified_users}# 输出结果
print("表2 问题2结果")
for user, new_follows in table2_result.items():print(f"{user}: {new_follows}")
注意事项:
- 附件2中只包含观看、点赞、评论行为,不包含关注行为,因此我们只能基于互动行为来预测新关注。
- 如果用户在附件1中没有关注过任何博主,则其在2024.7.22的所有互动行为所涉及的博主都可能被预测为新关注。
- 如果用户在2024.7.22没有互动行为或互动行为涉及的博主都已关注,则预测无新关注。
此代码将输出:
表2 问题2结果
U7: []
U6749: []
U5769: []
U14990: []
U52010: []
小天会给大家带来所有题目完整思路+完整代码+完整论文全解全析
其中更详细的思路、各题目思路、代码、成品论文等,可以点击下方名片:
相关文章:
【2025五一数学建模竞赛C题】社交媒体平台用户分析问题|建模过程+完整代码论文全解全析
你是否在寻找数学建模比赛的突破点?数学建模进阶思路! 作为经验丰富的美赛O奖、国赛国一的数学建模团队,我们将为你带来本次数学建模竞赛的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,…...
Wireshark抓取SMTP协议报文
文章目录 1. 实验:网络仿真软件使用及网络分析2. SMTP协议2.1 SMTP协议简介2.2 SMTP协议的核心功能2.3 SMTP的相关命令和作用 3. Wireshark抓取报文3.1 抓取SMTP协议报文流程3.1.1 Email邮件服务器背景3.1.2 具体实现流程 3.2 过滤SMTP协议相关报文 4. 协议时序图4.…...
PS学习笔记(一)
课程地址:【B站第一!】央美大佬198小时讲完的PS教程,全程干货无废话!学完秒变大神!还学不会,我不教设计了!!_哔哩哔哩_bilibili 第一章:基础知识 1.PS认识 一、PS应用领…...
部署.NET6.0 Web API项目到Docker
文章目录 介绍创建.NET WebAPI项目项目打包项目部署文件准备部署命令可能的问题与解决 介绍 使用VS2022创建一个.NET6的Web API项目,将其打包,并部署到Linux服务器上的Docker中。 Linux和Docker环境已经备好,本文不再赘述,主要记…...
前端函数防抖(Debounce)完整讲解 - 从原理、应用到完整实现
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…...
React Redux 与 Zustand
Redux 一、Redux 核心概念 1. 为什么需要 Redux? 解决的问题:在大型 React 应用中,跨组件共享状态、管理复杂数据流。 优势: 单一数据源:全局状态集中存储在 Store 中。 可预测性:通过严格的规则&#…...
Webug4.0靶场通关笔记07- 第9关反射XSS和第10关存储XSS
目录 第09关 反射型XSS 1.打开靶场 2.源码分析 3.渗透实战 第10关 存储型XSS 1.打开靶场 2.源码分析 3.渗透实战 本系列为通过《Webug4.0靶场通关笔记》的渗透集合,本文为反射型和存储型XSS漏洞关卡的渗透部分,通过对XSS关卡源码的代码审计找到漏…...
react学习笔记4——React UI组件库与redux
流行的开源React UI组件库 material-ui(国外) 官网: http://www.material-ui.com/#/github: GitHub - mui/material-ui: Material UI: Comprehensive React component library that implements Googles Material Design. Free forever. ant-design(国内蚂蚁金服) 官网: Ant…...
Java学习手册:Spring 事务管理
一、事务管理的概念 事务是一组操作的集合,这些操作要么全部成功,要么全部失败。事务管理的目的是保证数据的一致性和完整性。在数据库操作中,事务管理尤为重要,例如银行转账、订单支付等场景都需要事务管理来确保数据的正确性。…...
SpringBoot研究生双选系统开发实现
概述 SpringBoot研究生双选信息发布系统,该系统实现了研究生与导师双向选择的全流程管理,采用主流SpringBoot框架开发,是学习企业级教育管理系统开发的优质资源。适合作为计算机专业设计项目或高校信息化建设参考,完整实现…...
springboot中异步接口实现所有方式_20250501
几种异步接口实现demo package org.dromara.controller.app;// 导入必要的依赖库import cn.dev33.satoken.annotation.SaIgnore; import lombok.extern.slf4j.Slf4j; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; import o…...
【Linux网络】I/O多路转接技术 - epoll
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
机器学习经典算法:用决策树原理优化新能源汽车续航能力
🔥 “用决策树重构新能源车能量大脑!算法推导代码实战全解,续航暴增15%” 决策树算法就像我们生活中做决策的 “流程指南”,通过层层判断得出最终结论。比如你去超市买水果,站在琳琅满目的货架前,就不自觉地…...
深入探讨宾馆一次性牙刷价格,市场价格区间差异大
在我们日常出行、住宿的时候,宾馆的一次性牙刷是常见的、标配的物品。许多人或许都会感到好奇,这些一次性牙刷到底值多少钱。下面就来深入探讨一下宾馆一次性牙刷价格方面的问题。 市场价格区间 宾馆一次性牙刷价格差距大,便宜的一支可能只…...
深入解析 .NET Kestrel:高性能 Web 服务器的架构与最佳实践
Kestrel 是 .NET 中用于处理 HTTP 请求的高性能 Web 服务器。作为 ASP.NET Core 的默认服务器,Kestrel 被设计为在高并发、高吞吐量的环境下表现优异,并且能够支持多种协议和跨平台操作。本文将深入探讨 Kestrel 的架构设计、工作原理、配置方式、性能优…...
ZYNQ 纯PL端逻辑资源程序固化流程
ZYNQ 纯PL端逻辑资源程序固化 ZYNQ的程序固化流程比传统的FPGA固化流程复杂很多,Vivado生成的bit文件无法直接固化在ZYNQ芯片中。因为ZYNQ 非易失性存储器的引脚(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的专用引脚。这些非易失性存储器由 PS …...
【树莓派Pico FreeRTOS】-FreeRTOS-SMP移植
FreeRTOS-SMP移植 文章目录 FreeRTOS-SMP移植1、Raspberry Pi Pico SDK准备2、下载最新FreeRTOS-Kernel源码3、Raspberry Pi Pico的开发环境搭建4、编译配置5、FreeRTOSConfig.h文件设置6、演示代码RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 …...
数字智慧方案5961丨智慧能源与运维云平台解决方案(52页PPT)(文末有下载方式)
详细资料请看本解读文章的最后内容。 资料解读:智慧能源与运维云平台解决方案 在当今数字化时代,能源管理与设备运维的智能化、高效化成为企业发展的关键。智慧能源与运维云平台解决方案应运而生,为企业提供了全面且先进的能源管理和运维手段…...
2025东三省C题深圳杯C题数学建模挑战赛数模思路代码文章教学: 分布式能源接入配电网的风险分析
完整内容请看文章最下面的推广群 数据整理与分析 表1:有源配电网62节点系统负荷参数 内容:列出了62个节点的有功负荷(单位:kW)。 特点: 负荷范围:24 kW(节点19)到420 …...
腾讯云BI VS quickbi 企业选型(从企业实际功能使用和费用对比)
腾讯云BI VS quickbi 选型 一、总结 前段时间领导让调研腾讯云BI,用来做BI选型,现根据公司实际使用功能做如下总结。 建议继续使用quickbi,不选择腾讯云BI 原因: 腾讯云BI专业版,官方价格最低101996元。并且只能选…...
WebDeveloper 流量分析、sudo提权,靶场通关WP
一、信息收集 1、主机探测 arp-scan -l netdiscover -i eth0 -r 192.168.33.0/24 nmap -sP 192.168.66.0/24 2、端口扫描 nmap -sS -sV 192.168.66.141 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0) 80/tcp op…...
编写教育网站后端页面笔记
callbacktitle.html 对应表: 对应的功能: 控制器层数据: 页面没有写内容 chapter.html 对应表: questionbank ,intofloortime,questionBank,title,didtitles,option,answer,analyse 对应的功能:问题反馈页面 控制器层数据(控制器类): ChapterQuestionbankTitle c…...
C++漫溯键值的长河:map set
文章目录 1.关联式容器2.set2.1 find2.2 lower_bound、upper_bound 3.multiset3.1 count3.2 equal_range 4.map4.1 insert4.2 operate->4.3 operate[ ]4.4 map的应用实践:随机链表的复制 5.multimap希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动…...
西门子数字化研发设计制造一体化规划案例P87(87页PPT)(文末有下载方式)
资料解读:《西门子数字化研发设计制造一体化规划案例》 详细资料请看本解读文章的最后内容。 该文档围绕西门子为企业打造的智能化制造研发工艺生产一体化平台规划方案展开,全面阐述了从业务现状分析到项目实施及案例分享的整个过程。 业务现状与需求分析…...
Rust多线程性能优化:打破Arc+锁的瓶颈,效率提升10倍
一、引言 在 Rust 开发中,多线程编程是提升程序性能的重要手段。Arc(原子引用计数)和锁的组合是实现多线程数据共享的常见方式。然而,很多程序员在使用 Arc 和锁时会遇到性能瓶颈,导致程序运行效率低下。本文将深入剖…...
基于python的人工智能应用简述
基于Python的人工智能应用简述 Python已成为人工智能(AI)开发的首选语言,凭借其简洁性、丰富的库生态系统和强大的社区支持,广泛应用于各类AI应用场景。以下是Python在人工智能领域的主要应用领域和技术实现。 1. 机器学习(Machine Learning) Python通过Scikit-learn、Ten…...
《Android 应用开发基础教程》——第十章:使用 Gson 实现网络 JSON 数据解析与对象映射
目录 第十章:使用 Gson 实现网络 JSON 数据解析与对象映射 🔹 10.1 什么是 Gson? 🔸 10.2 添加依赖 🔸 10.3 基础使用 ✦ 示例 JSON 字符串: ✦ 定义对应的 Java 类: ✦ JSON ➜ 对象&am…...
【Android】四大组件之BroadcastReceiver
目录 一、什么是BroadcastReceiver 二、创建和使用BroadcastReceiver 三、跨应用广播接收权限 四、广播方式 五、广播类型与特性 六、BroadcasReceiver注册方式 七、BroadcasReceiver工作流程 你可以把广播接收器想象成一个“收音机”。它的作用是监听系统或应用发出的“…...
[UVM]寄存器模型的镜像值和期望值定义是什么?他们会保持一致吗?
寄存器模型的镜像值和期望值定义是什么?他们会保持一致吗? 摘要:在 UVM (Universal Verification Methodology) 寄存器模型中,镜像值 (mirrored value) 和期望值 (desired value) 是两个非常重要的概念,用于管理寄存器…...
OpenGL-ES 学习(12) ---- VBO EBO VAO
目录 VBO 定义VBO 创建统一VertexData使用 VBO 绘制VAO VBO 定义 VBO(Vertex Buffer Object) 是指顶点缓冲区对象,而 EBO(Element Buffer Object)是指图元索引缓冲区对象,VBO 和 EBO实际上是同一类 buffer 按照用途的不同称呼 OpenGL-ES2.0 编程中&…...
【Redis分布式】主从复制
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 一、主从复制 在分布式系统之中为了解决单点问题(1、可用性问题,该机器挂掉服务会停止2、性能支持的并发量是有限的)通常会把数据复制多…...
Node.js心得笔记
npm init 可用npm 来调试node项目 浏览器中的顶级对象时window <ref *1> Object [global] { global: [Circular *1], clearImmediate: [Function: clearImmediate], setImmediate: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Getter] }, cl…...
多智能体空域协同中的伦理博弈与系统调停
在多智能体系统(MAS)广泛应用于低空飞行调度、应急响应与城市管理的背景下,AI之间的“协同”不仅是算法效率问题,更是伦理角色之间的权责动态博弈。尤其在高频互动、任务冲突、资源抢占等复杂场景中,智能体不再是“工具…...
面试中系统化地解答系统设计题:通用方法论
目录 一、明确需求(Clarify Requirements) (一)理解业务背景 (二)功能性需求(Functional Requirements) 1. 分析目标 2. 功能需求分类 A. 用户交互类功能 B. 数据处理类功能 C. 管理与运维类功能 D. 外部系统交互类功能 示例场景详解 3. 捕捉隐藏需求的技巧…...
kotlin中 热流 vs 冷流 的本质区别
🔥 冷流(Cold Flow) vs 热流(Hot Flow)区别 特性冷流(Cold Flow)热流(Hot Flow)数据生产时机每次 collect 才开始执行启动时就开始生产、始终运行生命周期与 collect 者…...
机器视觉开发-打开摄像头
以下是使用Python和OpenCV打开摄像头的最简单实现: import cv2# 打开默认摄像头(通常是0) cap cv2.VideoCapture(0)# 检查摄像头是否成功打开 if not cap.isOpened():print("无法打开摄像头")exit()print("摄像头已打开 - 按…...
Rerank详解
疑惑一 我对rag的流程理解是。后端首先建立embedding后的向量数据库,用户提问使用相同的embedding模型进行向量化,使用阈值控制相似度找出前topk个数据。然后rerank,将rerank的结果打包成prompt返回给大模型进行解答。我对于rerank的过程不是…...
深度探索DeepSeek:从架构设计到性能优化的实战指南
深度解码DeepSeek:从架构设计到工业级部署的全链路优化实践 引言:大模型时代的工程挑战 在人工智能技术进入工业化落地阶段的今天,大模型训练与推理的工程化能力已成为衡量企业技术实力的重要标尺。DeepSeek作为当前业界领先的超大规模语言…...
d202551
目录 一、175. 组合两个表 - 力扣(LeetCode) 二、511. 游戏玩法分析 I - 力扣(LeetCode) 三、1204. 最后一个能进入巴士的人 - 力扣(LeetCode) 一、175. 组合两个表 - 力扣(LeetCode…...
(C题|社交媒体平台用户分析问题)2025年第二十二届五一数学建模竞赛(五一杯/五一赛)解题思路|完整代码论文集合
我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…...
计网_PPP协议
2024.10.15:beokayy计算机网络学习笔记 PPP协议 PPP协议的特点PPP协议应满足的需求(了解)PPP协议的组成(PPP协议有三个组成部分) PPP协议的帧格式PPP协议的工作状态 ISP指的是运营商,比如中国联通、中国电信…...
Mem0.ai研究团队开发的全新记忆架构系统“Mem0”正式发布
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
二叉树删除结点详细代码
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h>typedef int data_t; typedef struct _node {data_t data;struct _node* left;struct _node* right; }node_t;int bst_create(node_t**, data_t);//函数声明BST创建 int bst…...
PyTorch线性代数操作详解:点积、矩阵乘法、范数与轴求和
本文通过代码示例详细讲解PyTorch中常用的线性代数操作,包括点积、矩阵乘法、范数计算以及按轴求和等操作,帮助读者掌握张量运算的核心方法。 1. 点积运算 点积(Dot Product)是两个向量对应元素相乘后求和的结果。 实现代码&…...
Java SE(6)——类和对象
1.初始面向对象 1.1 什么是面向对象 Java是一门纯面向对象的编程语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交换来完成一件事情 1.2 面向过程…...
Kubernetes(k8s)的API Server 组件原理与结合生产实战教程
一、API Server 架构深度解析 1. 核心架构设计 二、生产环境安全加固实战 1. 认证(Authentication) 2. 授权(Authorization) 3. 准入控制(Admission Control) 三、性能优化与调参 1. 关键启动参数 四…...
Java面试高频问题(31-33)
三十一、服务网格:东西向流量治理与故障注入 服务网格架构分层 mermaid graph BT subgraph Control Plane APilot --> BEnvoy Sidecar CMixer --> B DCitadel --> B end subgraph Data Plane B --> E服务A B --> F服务B B --> G服务C end 核心能…...
VSCode开发调试Python入门实践(Windows10)
我的Windows10上的python环境是免安装直接解压的Python3.8.x老版本,可参见《Windows下Python3.8环境快速安装部署。 1. 安装VSCode 在Windows 10系统上安装Visual Studio Code(VS Code)是一个简单的过程,以下是详细的安装方法与…...
C++——入门基础(2)
文章目录 一、前言二、C入门2.1 缺省参数2.2 函数重载2.2.1 参数类型不同2.2.1.1 整体参数类型不同2.2.1.2 参数类型顺序不同 2.2.2 参数个数不同2.2.3 避坑注意2.2.3.1无参与有参2.2.3.2 返回值不同 2.3 引用2.3.1 引用的概念2.3.2引用的结构2.3.3 引用的特点2.3.4引用的作用2…...
【MySQL】复合查询与内外连接
目录 一、复合查询 1、基本查询回顾: 2、多表查询: 3、自连接: 4、子查询: 单列子查询 多行子查询: 多列子查询: 在from语句中使用子查询: 5、合并查询: union࿱…...