随机森林时间序列预测实战:特征工程、多步策略与避坑指南
简介一套基于Python实现随机森林RF时间序列预测的完整工程包面向需要完成课程设计、期末大作业或毕业设计的计算机、电子信息、数学等专业学生也适合刚接触机器学习预测的新手快速上手。压缩包内共3个文件包含1个Python主程序与2个CSV数据集整体大小仅46KB结构紧凑。主程序采用参数化编程关键参数可方便修改同时提供接近一行一注释的保姆级注释代码思路清晰几乎无需额外查阅资料即可读懂预测流程配套数据集如焦作地区相关时序数据可直接用于验证模型效果。资源目前已有194人学习/下载。对于零基础入门者可将其作为RF时间序列预测的标准范本学习特征构造、模型训练与预测输出的完整链路对于有基础的学生也可基于此快速替换数据集或调整参数进行拓展实验节省从零搭建环境与调试代码的时间是一份实用且易读的实战资料。1. 让随机森林RF学会看时间序列预测本质上是特征工程第一次把随机森林Random Forest, RF用在时间序列预测上时我把它当黑匣子用数据进去、prediction 出来画出来的预测曲线却是一条几乎水平的线。后来我才意识到RF 本身不认时间它只认识“表格”。所谓 RF 时间序列预测核心就是把时序展开成特征矩阵——把过去一天、一周的值写成滞后特征把滚动窗口统计量写成新列把时间戳拆成星期几和月份再交给随机森林回归器学习。这套方案在销售预测、容量规划、量化策略的特征基座上都很常见尤其适合数据量几千到几万行、想要快速拿到一个可解释 baseline 的团队。下面从建模原理讲起给出一份带完整源码和数据的 Python 实现再讲清楚五个容易翻车的细节。2. RF 做序列预测的建模假设滞后特征、滑窗统计与多步策略选型2.1 为什么这里选 RF 而不是 LSTM很多人第一反应是去搜“lstm时间序列预测python”因为序列建模默认就该上循环网络。但在一线落地时RF 往往更先被拿出来做 baseline而且大量场景里这个 baseline 已经够用。数据量是最现实的约束RF 在几千行样本上就能训练出可用模型LSTM 在这种量级通常欠拟合RF 可以自然混合节假日、门店 id、促销标记这类外部静态特征LSTM 则需要额外设计 embedding 或条件输入RF 有 feature_importances_ 可以直接回答“模型靠什么做预测”LSTM 的解释性要费很大功夫。选型边界可以参考这张表维度RFLSTM最少样本量几千行可跑通常要更多序列样本外部特征融合直接加列需要结构调整可解释性特征重要度、树结构弱训练资源CPU 足够GPU 更合适分布外推弱需差分配合弱短步长内略好不确定性输出叶子里天然有分布需要专用结构结论是如果业务要求“三天内出一个可解释、可上线的预测”RF 几乎总比从头训 LSTM 划算。LSTM 更适合有大量历史序列、强动态依赖、且允许投入工程成本去调滑窗和归一化的场景。2.2 核心是把时序转成监督学习的 5 类特征RF 能处理的输入永远是“行是样本、列是特征”的表格。时间序列是一列有序的 y 值建模的第一步就是把它展开成能喂给回归器的特征。常见做法是构造 5 类特征特征族典型列时间含义滞后特征lag_1, lag_2, lag_7t 时刻前 1、2、7 天的数值滚动统计rolling_mean_7, rolling_std_14近期均值与波动水平差分特征diff_1, diff_7环比变化、周同比变化时间编码dayofweek, month, dayofyear周期位置与季节性极值窗口rolling_min_7, rolling_max_7近期上下边界滞后特征的物理含义很直接第 t 行的 lag_1 等于第 t-1 行的 ylag_7 等于一周前的值。RF 看不到“曲线”它只能看到 7 个独立列因此滞后特征提供了最朴素的短期记忆。滚动统计则告诉模型“最近这段时间是在涨还是在震荡”——这些信息对判断明天的均值区间非常关键。时间编码常被忽略但序列里的星期效应、月度效应全靠它体现。比如零售数据里周末的销量模式和工作日完全不同dayofweek 这一列能让树直接在“周末”节点上分裂。差分特征的作用是让模型学习变化量而不是绝对水平这对带趋势的序列尤其重要后文会专门展开。2.3 三种多步预测策略递归、直接与多输出RF 是单步回归器要预测未来 30 天必须选出多步策略。三种方式差别很大策略做法优点风险递归recursive预测 t1把结果当作新的 lag_1继续预测 t2只训一个模型误差逐层累积曲线容易“躺平”直接direct每个预测步数单独训练一个模型误差不累积模型数量多维护成本高多输出multi-output让 RF 一次输出未来 N 步推理最快长 horizon 不稳定我一般按预测长度选1 到 3 步用递归足够因为短期滞后特征还都是真实值误差没有机会放大7 步以上就倾向直接法尤其当数据有周期性时每个 horizon 的模型可以各自掌握“第 7 天和第 1 天不同”的规律。若数据里存在明显趋势还有一个更稳妥的组合把趋势项单独外推RF 只负责预测残差这样既保留 RF 的拟合能力又绕开它对训练范围外数值外推能力弱的硬伤。3. 完整源码链路从生成模拟数据到训练 RF 并评估3.1 模拟数据生成与第一张图为了让整套源码可以脱离任何外部文件直接跑通我用合成数据演示。生成一条带线性趋势、7 天周期和随机噪声的日频序列这样既有季节性又有噪声能真实反映 RF 的预测行为。import numpy as np import pandas as pd import matplotlib.pyplot as plt np.random.seed(42) n 800 dates pd.date_range(2020-01-01, periodsn, freqD) trend np.linspace(10, 30, n) # 线性趋势项 season 5 * np.sin(2 * np.pi * np.arange(n) / 7) # 7天周期项 noise np.random.normal(0, 0.8, n) # 随机噪声 y trend season noise df pd.DataFrame({ds: dates, y: y}) df.plot(xds, yy, figsize(12, 4)) plt.show()逻辑说明这组数据是“趋势 周期 噪声”的标准结构任何机器跑出来的图都一样方便排查问题。如果你有真实数据把 df 换成 pd.read_csv 读进来的 DataFrame 即可关键是必须包含 ds时间戳和 y目标值两列。参数说明np.random.seed(42) 固定随机种子保证噪声序列每次完全相同freqD 表示按天采样周期设为 7模拟一周的节奏变化。3.2 特征工程函数滞后、窗口统计、时间编码特征工程是整个 RF 时序预测的核心我把它封装成一个独立函数方便后续替换数据时直接复用。def make_features(data, lags7, windows(7, 14)): df data.copy() # 滞后特征把过去1~lags天的值变成独立特征列 for lag in range(1, lags 1): df[flag_{lag}] df[y].shift(lag) # 滚动窗口统计只算窗口内历史值避免用到未来 for w in windows: df[frolling_mean_{w}] df[y].rolling(w).mean() df[frolling_std_{w}] df[y].rolling(w).std() # 一阶差分让模型看到环比变化而不是绝对水平 df[diff_1] df[y].diff() # 时间编码供模型识别周期位置 df[dayofweek] df[ds].dt.dayofweek df[dayofyear] df[ds].dt.dayofyear df[month] df[ds].dt.month return df feature_df make_features(df)逻辑说明shift(lag) 把整列向下移动 lag 行所以第 t 行的 lag_1 是第 t-1 行的真实 y滚动均值在第 t 行输出的是 t-w1 到 t 的均值天然只含历史信息。dayofweek、dayofyear 则让树模型有机会学习“工作日比周末高”“每年第 200 天附近有异常波动”这类规律。参数说明lags7 保证模型能看到一整周的滞后值习惯上至少覆盖主周期windows(7, 14) 同时提供周和双周两个尺度的波动信息diff_1 的第一行是 NaN后面做训练集时需要 dropna()否则 sklearn 会直接报错。3.3 训练随机森林回归器与误差评估特征矩阵准备好之后按时间顺序切分前 80% 训练、后 20% 测试再训练随机森林并输出误差指标。from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_absolute_error, mean_squared_error data make_features(df).dropna().reset_index(dropTrue) cut int(len(data) * 0.8) train, test data.iloc[:cut], data.iloc[cut:] FEATURES [c for c in data.columns if c not in (ds, y)] model RandomForestRegressor( n_estimators500, max_depth8, min_samples_leaf5, n_jobs-1, random_state42, ) model.fit(train[FEATURES], train[y]) pred model.predict(test[FEATURES]) print(MAE:, mean_absolute_error(test[y], pred)) print(RMSE:, mean_squared_error(test[y], pred) ** 0.5)逻辑说明dropna() 删掉特征工程产生的前导 NaN 行reset_index 保证索引连续切分必须严格按时间顺序不能 shuffle因为序列预测里样本顺序本身就是信息的一部分。RF 由 500 棵树构成每棵树在行和列方向上随机抽样最后对预测取平均以此降低单棵树过拟合的风险。参数说明n_estimators500 是“稳”和“快”的平衡点继续加大到 1000 收益递减max_depth8 限制树的深度时序数据特征量本来就不多太深只会记住噪声min_samples_leaf5 是主要的正则项防止个别异常日被当成规律n_jobs-1 让所有 CPU 核心参与训练random_state42 保证每次运行结果一致方便不同特征方案间对比。3.4 交付的源码文件清单与替换数据的接法按标题交付的“完整源码和数据”我在实际工程里习惯组织成这样的结构文件作用data_gen.py生成模拟数据真实场景直接删除features.pymake_features 特征工程函数train.py训练、评估、输出预测结果data.csv原始序列数据两列ds, yforecast_result.csv预测值与真实值的对照result.png预测曲线对比图替换数据时只需要保证 data.csv 里的列名是 ds 和 y时间列能用 pd.to_datetime 解析。注意两点y 里不能有 NaN否则训练直接报错时间字段最好按天补全缺失日期要么填充、要么显式标记不要留空洞让特征工程错位。4. 时间序列验证不踩坑TimeSeriesSplit、递归预测与评估指标4.1 普通 KFold 会造成什么后果很多人会把时序预测当成普通回归直接 train_test_split(X, y, test_size0.2)并且在默认参数下忘了 shuffleTrue 的存在。这一步几乎是所有 RF 时序项目里最隐蔽的数据泄露来源。from sklearn.model_selection import train_test_split # 反例默认 shuffleTrue时序场景下会把未来样本混进训练集 X_tr, X_te, y_tr, y_te train_test_split(X, y, test_size0.2, random_state42)逻辑说明RF 的拟合能力很强一旦训练集里混入未来样本它会在分裂时直接利用“未来值”做特征验证集误差低得离谱上线后立刻翻车。正确做法是用 TimeSeriesSplit 做交叉验证它保证训练数据永远在验证数据之前from sklearn.model_selection import TimeSeriesSplit tscv TimeSeriesSplit(n_splits5) scores [] for tr_idx, va_idx in tscv.split(train[FEATURES]): m RandomForestRegressor( n_estimators500, max_depth8, min_samples_leaf5, n_jobs-1, random_state42, ) m.fit(train[FEATURES].iloc[tr_idx], train[y].iloc[tr_idx]) va_pred m.predict(train[FEATURES].iloc[va_idx]) scores.append(mean_absolute_error(train[y].iloc[va_idx], va_pred)) print(TimeSeriesSplit MAE:, scores)逻辑说明TimeSeriesSplit 把训练集切分成 5 段每轮只用前若干段训练、用后面一段验证模拟“用过去预测未来”的真实约束。各 fold 的误差会有波动观察整体量级和趋势即可。参数说明n_splits5 是常规选择序列越长可以加到 10每轮模型参数保持一致否则无法判断误差变化来自数据还是模型。4.2 递归预测与直接预测的对比实测如果你要预测未来 30 天递归法是最容易想到的做法也是曲线“躺平”的元凶def recursive_forecast(model, history, features, steps30): 把上一轮预测值追加到历史末尾作为下一轮的滞后输入。 frame history.copy() preds [] for _ in range(steps): nxt model.predict(frame[features].tail(1))[0] preds.append(nxt) # 构造下一个时间步lags整体前移lag_1填新预测值 new_row {} for col in features: if col lag_1: new_row[col] nxt elif col.startswith(lag_): old_lag int(col.split(_)[1]) new_row[col] frame[col].iloc[-1] if old_lag 1 else nxt else: new_row[col] frame[col].iloc[-1] frame pd.concat([frame, pd.DataFrame([new_row])], ignore_indexTrue) return preds逻辑说明递归的本质是自回归——预测出 t1 后把这个值塞进 lag_1再利用它预测 t2。对树模型来说下一轮分裂时 lag_1 位置是“预测值”而非真实值误差会随步数放大。这里简化了滚动窗口的更新生产环境应维护滑动 buffer 重新计算 rolling 统计量。要抑制误差累积更稳妥的是 direct 策略为每个 horizon 单独训练模型目标列用 shift(-h) 构造特征里只保留步数大于 h 的滞后项避免短期 lag 把预测值带进目标链条。def direct_model(data, horizon, model_params): d data.copy() d[target] d[y].shift(-horizon) d d.dropna() X d[FEATURES] y d[target] m RandomForestRegressor(**model_params) m.fit(X, y) return m逻辑说明直接法训练的是“用今天的历史特征预测第 h 天之后的值”推理时不需要递归循环直接取最后一行特征送入模型即可。在我的最小实验里同样的模拟数据、horizon30 时direct 的 MAE 通常比递归低 15%~30%代价是要训练多个模型并分别维护。4.3 评估时至少要跑赢哪个基准模型指标不能只看绝对值要先和“惰性基准”对比。最常见的三个基准基准定义适用场景naive用昨天值预测明天最底线seasonal naive用 7 天前值预测明天有明显周期时rolling mean用过去 14 天均值均值回归强时我会在建模前先算一遍 naive 的 MAE再拿 RF 的结果去比。如果 RF 只低了不到 10%先别急着调参回去查特征和泄漏如果 RF 反而更差说明滞后特征或窗口宽度选得不对加再多的树也救不回来。5. RF 时序预测避坑指南数据泄露、躺平曲线与可视化问题5.1 数据泄露验证分数很漂亮上线就翻车现象交叉验证的 MAE 低得像是“作弊”特征重要度几乎全打在 lag_1 上但模型一上线预测就完全不准。原因最常见的有四种。shift 方向写反用了 shift(-1) 直接把未来值当成特征rolling 统计时用了 centerTrue窗口内包含未来 3 天train_test_split 忘记设 shuffleFalse或者用了全期统计值比如把整个序列的均值塞进每一行模型等于提前看到了测试集的分布。解决特征构造代码里只允许用 shift(1) 及以上的滞后、rolling 不设 center切分统一走 TimeSeriesSplit对任何“看起来像历史”的列手动检查它是否只依赖过去数据。5.2 预测曲线“躺平”递归误差累积与差分特征现象递归预测时前 3 天曲线还能跟上真实值到了第 10 天左右开始变平最后几乎成了一条均值线。原因递归预测让滞后特征逐渐被预测值替换树模型把这种偏差当成正常模式继续学习误差逐步收敛到序列均值同时 RF 对超出训练目标范围的外推天生很弱没有一棵树能产生训练样本之外的新高。解决改用 direct 策略或者对差分序列建模。训练目标从 y 换成 diff_1预测后再逐项还原# 用变化量做目标预测后再逐项还原 df[target_diff] df[y].diff() # 训练时model.fit(train[FEATURES], train[target_diff]) # 预测时y_hat y_last cumsum(pred_diff)逻辑说明当模型学的是“明天比今天涨多少”输出是一个有正有负的增量不容易被拉到历史均值上还原时用最后一个真实值加上累计预测增量能保留趋势信息。5.3 min_samples_leaf 过小导致过拟合噪声现象训练集 MAE 低到接近 0验证集误差反而比调参前更差特征重要度越来越集中到 lag_1。原因min_samples_leaf 默认是 1叶子节点可以只装一个样本模型把个别日期的噪声当成规律记下来了。时序噪声本身是非平稳的这种记忆在测试集上毫无价值。解决先固定 max_depth8把 min_samples_leaf 从 5 开始尝试逐步放到 20。调参时观察 TimeSeriesSplit 各 fold 的均值而不是训练集误差。5.4 画图时横坐标日期全叠在一起现象预测曲线和真实曲线画在一起后x 轴日期标签全部重叠图缩成一团完全没法看。第一次遇到这个问题时我去搜“python画图横坐标太密集”才发现这是 DatetimeIndex 绘图的经典坑。原因matplotlib 对时间索引的自动刻度策略会试图覆盖整个时间跨度数据量一大所有月份标签挤在一起。解决用 MaxNLocator 限制刻度数量再用 autofmt_xdate 旋转标签from matplotlib.ticker import MaxNLocator fig, ax plt.subplots(figsize(12, 4)) ax.plot(test[ds], test[y], labelactual) ax.plot(test[ds], pred, labelforecast, linestyle--) ax.xaxis.set_major_locator(MaxNLocator(nbins8)) fig.autofmt_xdate() ax.legend()逻辑说明nbins8 让 x 轴只显示 8 个日期刻度图面立刻干净autofmt_xdate 自动旋转日期标签避免横排文字重叠。5.5 RF 不需要归一化但差分要用对现象沿用 LSTM 的习惯先把数据做 StandardScaler 标准化训练完再逆变换发现结果和没归一化时一模一样。原因RF 分裂时用的是“阈值比较”对特征的单调变换完全不敏感归一化不会改变任何一棵树的分裂点。注意这不代表差分可以不做——差分不是尺度变换而是把水平值改成变化量改变了模型能学到的信息结构。结论是RF 不要做归一化但 diff_1 该用还是要用。6. 调参顺序与下一步特征重要度决定要不要继续投入6.1 调参顺序先固定种子再动正则调参最忌讳一次改多个参数。我的顺序是先把 random_state 固定在 42再定 n_estimators500 作为基线接下来只动两类正则参数调参顺序参数常见范围作用1random_state42保证每次对比同一起点2n_estimators300~800决定预测稳定性3min_samples_leaf5~20抑制噪声记忆4max_depth5~15控制模型容量5max_featuressqrt降低树间相关性判断标准永远是 TimeSeriesSplit 各 fold 的 MAE 均值。如果 max_depth 从 8 加到 15训练误差几乎不变说明容量已经足够继续加深只会让验证集波动变大。6.2 用特征重要度判断模型的极限与扩展方向训练完成后把 feature_importances_ 按列名排序一眼就能看出模型依赖什么信息。如果 top3 全是 lag_1、lag_2、lag_7说明预测主要靠短期自相关继续加更多 lag 收益有限该转向外部特征或时间编码如果 dayofweek 和 dayofyear 排得靠前说明季节性结构值得深挖可以考虑按节假日、促销位继续拆分特征。这一步骤的价值在于决定下一步投入方向是继续做特征还是换 XGBoost 或 LSTM。6.3 我的实战顺序与一个值得保留的习惯我给完整源码和数据时会保证 train.py 一条命令能跑完整个链路但真正动手前一定先跑一遍 naive 基准。一个值得保留的习惯是每次实验都把数据版本、源码脚本、预测结果图和 MAE 记录存进带日期的文件夹回看时能清楚知道哪个特征改动导致了误差变化。我踩过的最大教训是“直接调参之前先检查泄漏和切分”很多模型问题根本不是参数问题是验证协议出了问题。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

EP_机械双臂ROS2交互协议

EP_机械双臂ROS2交互协议

EP:Engineering and Projects 双臂轮式机器人(单臂 7 关节 夹爪)ROS2 Topic 交互协议硬件构成: 移动底盘(轮式)【本次只做状态反馈,不展开底盘控制话题】左机械臂:7 个转动关节 夹…

2026/10/11 17:44:28 阅读更多 →
人脸检测数据集从零搭建:WIDER FACE大目标子集8188张VOC转YOLO全流程

人脸检测数据集从零搭建:WIDER FACE大目标子集8188张VOC转YOLO全流程

简介:从WIDER Face中筛选出的B子集大目标人脸检测数据集,包含8188张jpg图片及对应标注,仅face一个类别,总标注框14649个。所有目标的像素面积均大于3500,专门面向近距离、大脸检测场景,可显著减少远距离小目…

2026/10/11 17:44:28 阅读更多 →
CoT还是ToT怎么选?Agentic Design Patterns推理技术(Reasoning Techniques)终极对比

CoT还是ToT怎么选?Agentic Design Patterns推理技术(Reasoning Techniques)终极对比

文档教程AI Agent人工智能 【免费下载链接】Agentic-Design-Patterns Agentic Design Patterns 项目地址: https://gitcode.com/gh_mirrors/agen/Agentic-Design-Patterns 点击查看 免费下载 Agentic Design Patterns 项目第 17 章聚焦 AI 智能体的推理技术&#x…

2026/10/11 17:44:28 阅读更多 →

最新新闻

TypeWhisper 私有化与安全设计剖析:127.0.0.1 API、Keychain 与 CSP 防护如何守住数据边界

TypeWhisper 私有化与安全设计剖析:127.0.0.1 API、Keychain 与 CSP 防护如何守住数据边界

语音音频AI 应用桌面应用CLI插件系统 【免费下载链接】typewhisper-mac Local speech-to-text for macOS on-device AI, fully private, optional cloud 项目地址: https://gitcode.com/gh_mirrors/ty/typewhisper-mac 点击查看 免费下载 TypeWhisper 是一款面向 m…

2026/10/11 18:30:54 阅读更多 →
全国行政区划SHP全流程处理:结构、坐标系与geopandas实战

全国行政区划SHP全流程处理:结构、坐标系与geopandas实战

简介:面向GIS制图、空间分析与规划人员,这份压缩包提供2022年5月整理的最新全国省、市、县三级行政区域SHP矢量数据,同时包含九段线图层,适合Arcgis等常用GIS平台直接使用。数据覆盖34个省级行政单位、333个地级行政单位和2843个县…

2026/10/11 18:30:54 阅读更多 →
Linux服务日志治理实战:轮转、压缩、裁剪与排障策略

Linux服务日志治理实战:轮转、压缩、裁剪与排障策略

1. 日志不是用来“存”的,是用来“用”的 做了十几年系统架构和运维,我发现一个规律:大部分服务器出故障时,不是没有日志,而是日志已经膨胀到让人不想打开。要么单个文件几个GB,要么一天产生几十个文件&…

2026/10/11 18:30:54 阅读更多 →
力扣611有效三角形个数:排序+双指针优化详解

力扣611有效三角形个数:排序+双指针优化详解

“有效三角形的个数”是力扣上一道很有代表性的数组题,编号611。乍一看就是“给一堆数字,数一数能组成多少个三角形”,但真正上手之后你会发现,这道题考的根本不是怎么判断三角形,而是怎么把三层循环降到两层。我当时第…

2026/10/11 18:30:54 阅读更多 →
迅雷下载速度慢的提速指南:从软件设置到网络环境全排查

迅雷下载速度慢的提速指南:从软件设置到网络环境全排查

很多人以为迅雷下载速度慢是软件“故意限速”,其实大部分时候是设置、资源、网络环境三者没匹配好。我折腾下载提速这些年,踩过不少坑,也总结出一套比较稳的提速方法,从软件内部设置到路由器层面的调整都有。这篇文章就把我实际用…

2026/10/11 18:30:54 阅读更多 →
ComfyUI+Wan2.2文生视频实战:显存优化与参数配方全解析

ComfyUI+Wan2.2文生视频实战:显存优化与参数配方全解析

简介:一份基于 ComfyUI/Wan2.2 RapidAIOMega 的二次元文生视频配置包,面向刚入门 ComfyUI 或想快速产出二次元风格视频的创作者。核心内容为可直接导入 ComfyUI 的 JSON 工作流文件,内部已预置采样器、模型加载等基础节点,省去从零…

2026/10/11 18:29:54 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →