ARIMA-BP组合预测:原理、Python实现与避坑指南
简介结合ARIMA与BP的组合模型完整项目实例面向具备Python基础、熟悉时间序列分析的研发人员与数据分析师适用于智能制造、能源负荷、零售销量、供应链库存等高精度预测场景。项目覆盖数据生成、平稳性检验、ARIMA线性建模、BP残差学习与加权融合的完整工程闭环。资源包为单个docx文档151KB含完整Python代码、GUI可视化界面设计说明、数据处理流程、递归预测与多指标评估方法并配有应用领域与代码模块详解。已有110人学习浏览适合需掌握组合模型设计思路并落地真实数据验证的技术人员。文档从ADF平稳性检验、候选阶数组合、ARIMA训练、残差滑动窗口构造到BP递归预测与融合评价分层讲解可作为工业智能、数字孪生方向预测建模的直接参考。1. ARIMA-BP组合预测为什么单模型总是“差一口气”同一份带明显趋势和周期性波动的销售数据单独用ARIMA做预测曲线总是慢半拍单独搭BP神经网络收敛速度慢序列尾部还经常抖得没法看。这不是模型不行而是线性与非线性的活儿全堆在了一个模型上。ARIMA自回归积分滑动平均模型擅长抓线性趋势和自相关结构反向传播算法BP擅长拟合残差里的非线性规律——两者拼接成ARIMA-BP组合预测器恰恰能互相补位。这套方案适合手里有几条历史序列、想把趋势、周期和突发扰动一起纳入预测的从业者。下文我会给出一个能直接跑通的最小Python项目并把GUI面板、参数设置和常见踩坑一次讲清楚。2. 模型底层逻辑ARIMA先抓线性趋势BP再收非线性残差2.1 先解决“谁主谁从”ARIMA和BP不是各预测一个序列再取平均把ARIMA和BP放一起最省事的想法是拿两个模型分别预测最后加权平均。我建议你直接放弃这条路两个模型都在拟合同一个目标误差结构高度相关加权平均往往只是把误差摊薄并不会把趋势和周期分开处理。常见做法是把ARIMA当作“线性主体模型”。先对序列做差分和平稳化用ARIMA把趋势、自回归项、滑动平均项这些线性结构吃干净再用BP对ARIMA的残差建模。ARIMA的残差里剩下的东西是节假日效应、突变台阶、周期性波动错位这类线性模型描述不了的非线性信息。BP的输入就是残差序列的滞后窗口输出是下一时刻的残差修正值。最终预测等于ARIMA的基线预测加上BP的残差预测这个结构在统计学上叫“残差修正”组合落地时比并行预测稳得多。这套分工还有个好处ARIMA的预测误差如果不是白噪声说明线性部分没提取干净BP的验证损失如果一直降不下去说明残差里也没有可学的结构。两个模型的诊断边界非常清晰出了问题你能一眼看出该调谁。2.2 BP网络输入输出与结构设置先把特征定下来别急着堆隐藏层很多人一上来就照抄网上那些bp神经网络结构图输入层、隐藏层、输出层画得密密麻麻结果训练一半就过拟合。结构图再复杂本质上也只是三层区域真正要命的是每层的节点数和你给网络喂什么。我在这个项目里把BP的输入特征设为“残差的滞后窗口”。比如给定滞后阶数L8BP在t时刻看到的输入是前8个残差值输出是第t个残差。这里有个容易被忽略的点ARIMA残差往往量级很小而且可能出现负值直接把原始残差喂给激活函数梯度会在tanh或sigmoid的饱和区来回震荡。所以训练BP之前必须对输入残差和输出残差各做一次归一化。网络结构方面我一般从两层隐藏层起步节点数先给输入维度的一到两倍。数据量在几千条以内时隐藏层节点超过64个几乎必过拟合。反向传播算法本身只是一个训练规则真正决定模型上限的是输入特征和网络容量这两点定不好调多少学习率都是玄学。2.3 组合公式和滚动预测边界预测值怎么合成测试期怎么不走样ARIMA-BP的合成公式非常直接y_hat(t1) y_arima_hat(t1) r_bp_hat(t1)y_arima_hat是ARIMA给出的基线预测r_bp_hat是BP基于残差窗口给出的残差修正值。训练阶段ARIMA拟合完训练集后把样本内残差按滞后窗口组织成监督学习样本训练BP预测阶段ARIMA先给出测试期的基线预测BP则随着时间推进不断更新残差窗口。这里最需要警惕的是时间穿越。BP的残差窗口只能包含当前时刻之前已经发生的信息。如果你在测试期里把未来真实残差提前塞进窗口验证指标会好得离谱但上线后立刻打回原形。我做这个模型时会把测试期的滚动预测单独拆成循环每预测一个点等到该时刻的真实值出现后才把真实残差追加进窗口再预测下一个点。这样既符合真实预测场景也能准确暴露模型的真实误差。3. Python落地ARIMA-BP从数据预处理到训练评估依赖库按最小集来装statsmodels负责ARIMA和ADF检验scikit-learn里的MLPRegressor负责BPnumpy和pandas处理数据。很多复制这套代码的读者第一个卡点不在模型而在装库——python安装numpy库的方法网上教程很多但用VS Code调试时选错解释器照样报ImportError。我建议先建虚拟环境再pip install statsmodels scikit-learn matplotlib pandas装完立刻在终端里import一遍确认解释器路径。3.1 构造演示序列与ADF平稳性检验先造一条带趋势、周期和阶跃扰动的序列保证ARIMA和BP都能找到各自该学的东西。import numpy as np import pandas as pd from statsmodels.tsa.stattools import adfuller from statsmodels.tsa.arima.model import ARIMA from sklearn.neural_network import MLPRegressor from sklearn.preprocessing import MinMaxScaler rng np.random.default_rng(42) n 1200 t np.arange(n) trend np.cumsum(rng.normal(0.02, 0.005, n)) season 3.0 * np.sin(t / 24) 2.0 * np.sin(t / 6 1.2) step np.where(t 480, 8, 0) series trend season step rng.normal(0, 0.5, n) d 0 tmp np.asarray(series, dtypefloat) while d 2: p_value adfuller(tmp)[1] if p_value 0.05: break tmp np.diff(tmp) d 1 print(ADF选择的差分阶数 d , d)这段代码先给趋势项做了累计和让序列带有随机游走成分再叠加两个不同周期的正弦项和一个阶跃项。ADF检验在d0时p值大概率大于0.05所以会进入差分d1之后再检验通常通过最终把差分阶数确定下来。这里说明一下ADF检验只能帮你判断“够不够平稳”不能帮你判断“差几阶最合适”。有的序列差一阶就从欠差分变成过差分预测曲线会变得异常平直。我看到有人把d固定写死在代码里换数据就翻车正确做法是像上面这样每次启动都跑一遍检验。3.2 ARIMA定阶、拟合与残差提取statsmodels没有内置的自动定阶接口常见做法是在(p, d, q)的小范围网格里搜索AIC最小的组合。def select_order(y, d, max_p5, max_q5): best_aic np.inf best_order None for p in range(max_p 1): for q in range(max_q 1): try: aic ARIMA(y, order(p, d, q)).fit().aic if aic best_aic: best_aic aic best_order (p, d, q) except Exception: continue return best_order train_size int(len(series) * 0.8) train, test series[:train_size], series[train_size:] order select_order(train, d) print(最优ARIMA阶数:, order) model ARIMA(train, orderorder, trendc) fit model.fit() train_resid fit.resid base_forecast fit.forecast(stepslen(test))网格里每一组(p, q)都会重新拟合一整次模型数据量大时比较慢但胜在稳妥。要注意try-except必须保留有些阶数组合在数值求解时会报收敛错误直接跳过比让整个脚本崩溃强得多。fit.resid给出的是训练集的样本内残差长度和训练集一致。这里的残差就是给BP准备的原始素材不要再对它做白噪声检验后就直接扔掉。趋势项用“c”表示模型含常数项如果序列没有明显漂移可以改成“nc”去掉常数项AIC结果会变。3.3 用BP网络训练残差修正模型把残差序列改造成监督学习样本然后训练MLPRegressor。这里我用的是scikit-learn的MLPRegressor它内部走的就是反向传播加Adam优化。LAG 8 X_r, y_r [], [] resid_vals train_resid.values for i in range(LAG, len(resid_vals)): X_r.append(resid_vals[i - LAG:i]) y_r.append(resid_vals[i]) X_r np.array(X_r) y_r np.array(y_r).reshape(-1, 1) scaler_x MinMaxScaler() scaler_y MinMaxScaler() X_r_scaled scaler_x.fit_transform(X_r) y_r_scaled scaler_y.fit_transform(y_r).ravel() mlp MLPRegressor( hidden_layer_sizes(16, 8), activationrelu, solveradam, alpha1e-4, learning_rate_init1e-3, max_iter500, early_stoppingTrue, n_iter_no_change20, random_state42 ) mlp.fit(X_r_scaled, y_r_scaled) print(BP训练损失:, mlp.loss_)滞后阶数LAG一般跟序列周期挂钩。如果数据按天记录且周周期明显LAG取7或14月度数据通常取12。LAG太小学不到周期信息LAG太大输入维度膨胀数据量少时BP很容易过拟合。MLPRegressor的early_stopping会把训练数据再切出10%做验证验证损失连续20轮不下降就停。这里我刻意把alpha设得偏大对残差这种弱信号正则化比增加节点更管用。如果训练损失不降优先检查是否忘了归一化而不是加大迭代次数。3.4 组合预测与滚动误差评估测试阶段不能一股脑把ARIMA的测试期预测和BP的预测直接相加残差窗口需要随着时间滚动更新。resid_window list(resid_vals[-LAG:]) combined_pred np.zeros(len(test)) resid_preds [] for i in range(len(test)): x_now scaler_x.transform( np.array(resid_window[-LAG:]).reshape(1, -1) ) r_hat mlp.predict(x_now)[0] r_hat scaler_y.inverse_transform([[r_hat]])[0][0] resid_preds.append(r_hat) combined_pred[i] base_forecast[i] r_hat true_resid test[i] - base_forecast[i] resid_window.append(true_resid) def rmse(true, pred): return float(np.sqrt(np.mean((true - pred) ** 2))) print(ARIMA单独RMSE:, rmse(test, base_forecast)) print(ARIMA-BP组合RMSE:, rmse(test, combined_pred))第一次循环开始时resid_window里放的是训练集最后8个残差每预测完一个测试点就拿到真实观测值算出真实残差并追加进窗口。这个“先预测、后更新”的顺序决定了不会用到未来信息。如果写成先append再预测那预测用的窗口里就包含了当前时刻的真实残差测试成绩会严重虚高。组合RMSE一般都会比ARIMA单独RMSE低一些但低多少取决于残差里有没有可学习的非线性结构。如果两者相差无几说明当前序列的残差已经接近白噪声这时候就算把BP换成更复杂的网络也榨不出收益。4. GUI设计把ARIMA-BP变成能点按钮的预测工具命令行脚本跑通后还得考虑给别人用。我一般用tkinter做这个GUI它在Python标准库里就有不依赖额外框架matplotlib可以直接嵌入画布预测曲线和残差图同屏展示。4.1 控件布局模型参数面板与操作面板GUI左侧放模型参数右侧放操作按钮和结果画布。控件的绑定关系按下面这张表来设计控件绑定参数说明Entry: pp值ARIMA自回归阶数优先填0到5Entry: dd值差分阶数可由ADF自动计算Entry: qq值滑动平均阶数优先填0到5Entry: lagLAGBP残差窗口长度按周期设置Entry: hiddenhidden_layer_sizes隐藏层节点如16,8Button: 训练start_train启动训练线程Button: 导入CSVload_csv选择外部序列文件Button: 保存结果save_result导出预测CSVp、d、q这三个输入框建议做成“自动计算”和“手动覆盖”两套逻辑。界面放一个“自动定阶”复选项勾上时用第3章的网格搜索不勾时直接用输入框里的值。这样新手能用默认参数跑通熟手能自己控制。4.2 训练回调与线程防卡死训练ARIMA和BP都会阻塞几秒到几十秒如果直接放在按钮回调里界面会白屏Windows甚至会弹出“未响应”。常见做法是把训练丢进后台线程训练完成后通过after回调回到主线程刷新界面。import threading import tkinter as tk class ArimaBpApp: def __init__(self, root): self.root root self.status_var tk.StringVar(value等待训练) self.result {} def start_train(self): self.status_var.set(训练中请稍候) params { p: int(self.p_entry.get()), d: int(self.d_entry.get()), q: int(self.q_entry.get()), lag: int(self.lag_entry.get()), hidden: tuple( int(x) for x in self.hidden_entry.get().split(,) ), } self.result {params: params} t threading.Thread( targetself._train_worker, args(params,), daemonTrue ) t.start() def _train_worker(self, params): try: self.result[forecast] self.run_arima_bp(params) self.result[error] None except Exception as exc: self.result[error] str(exc) self.root.after(0, self._on_train_done) def _on_train_done(self): if self.result.get(error): self.status_var.set(训练失败: self.result[error]) else: self.status_var.set(训练完成) self.show_result()run_arima_bp方法就是把第3章的逻辑封装成函数参数从字典里读取。后台线程里不要碰任何tkinter控件连设置Label文本都不行必须通过after把结果交还主线程。我见过有人在线程里直接调用status_var.set结果界面时好时坏这就是Tkinter线程安全的坑。训练完成后可以顺手把模型参数、最终RMSE、预测结果存成一个文本摘要放到界面的状态栏里。这样复现时能确认当时用的是哪组参数避免隔天忘了改过什么。4.3 用matplotlib嵌入预测曲线与残差图结果展示部分用FigureCanvasTkAgg嵌入这样预测图就在GUI内部不需要单独弹窗口。from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import matplotlib.pyplot as plt def show_result(self): fig plt.Figure(figsize(7, 4), dpi100) ax fig.add_subplot(111) test self.result[test] pred self.result[forecast] ax.plot(test, label真实值, colorblack) ax.plot(pred, labelARIMA-BP预测, colorcrimson) ax.legend() ax.set_title(ARIMA-BP滚动预测结果) canvas FigureCanvasTkAgg(fig, masterself.root) canvas.draw() canvas.get_tk_widget().pack(sidetk.RIGHT, filltk.BOTH, expandTrue)每次点击训练都会重新生成Figure旧画布会留在界面上。要记得先调用get_tk_widget().destroy()清理上一次的画布再pack新画布否则界面会越来越卡。残差图不必单独开页面在同一个Figure里用add_subplot(2,1,1)和(2,1,2)叠起来上边画预测对比下边画测试期残差比两个窗口直观得多。5. 参数调优与避坑ARIMA-BP最常见的5个翻车现场5.1 ADF检验d值飘忽预测曲线直接飞掉现象同一份数据连续跑两次第一次d0第二次d2预测曲线一个陡峭一个平滑谁都不敢用。原因ADF检验结果对数据窗口和滞后阶数敏感样本量变化或异常值出现后判定结论会跳变。d选太大时序列被过度差分ARIMA把噪声也当成趋势来拟合。解决把ADF检验当成粗筛而不是最终答案。在d0到d2的范围内各拟合一次模型比较AIC而不是只信p值。AIC最优时的d通常更稳跑完再回看残差是否近似白噪声两者互相印证。5.2 隐藏层节点越堆越多训练时间长但验证集不涨现象hidden_layer_sizes设成(128,64)BP训练五百轮验证损失始终在一个高位附近震荡。原因残差序列的信息量远低于原始序列给BP分配过大的网络容量让它把训练噪声当成了规律。调参时人们以为“网络越大越准”实际在弱信号场景下这是最常见的过拟合路径。解决从(8,4)或(16,8)起步先把训练损失压下去再逐步加节点。观察验证损失的曲线如果训练损失降、验证损失升立刻回到更小的网络。残差建模的任务里小网络的泛化能力普遍好于大网络。5.3 归一化还原出错预测曲线整体平移现象BP输出的残差预测没有还原到原始量纲导致最终预测整体偏高或偏低RMSE看起来不大但曲线和真实值错开一个固定距离。原因MLPRegressor的训练目标是归一化后的残差值预测结果必须在同一量纲下逆变换。有人对输入做了MinMaxScaler却忘了对输出单独建scaler或者把scaler_y的fit和transform混在一起。解决输出层务必单独创建一个scaler_y在reshape成列向量后fit预测时用scaler_y.inverse_transform还原。还原后再和ARIMA基线相加顺序不能反。这是做组合模型最容易踩的坑没有之一。5.4 BP输入窗口混入未来残差测试指标虚高现象测试集RMSE比训练集还低报告写出来很漂亮换一段新数据预测立刻崩。原因滚动预测时代码写成先append后预测残差窗口在t时刻包含了t时刻的真实残差等于让模型提前看到了答案。这种数据泄漏在时间序列项目里极难察觉因为它不报错指标只会偷偷变好看。解决给测试循环加一个严格约定——先transform、再predict、再合成预测值、最后用真实值更新窗口。代码顺序就按第3章的写法来并加注释标明四步顺序。看到异常低的误差时要警觉先怀疑泄漏再怀疑模型强。5.5 GUI点击训练后白屏系统提示程序未响应现象点击训练按钮后界面卡住鼠标转圈过几分钟可能恢复也可能直接被关闭。原因Tkinter的主事件循环被训练任务占住刷新和重绘全都排队。statsmodels网格定阶本身就耗时再加BP训练界面必卡。这不是电脑配置问题是线程模型用错了。解决训练任务必须放进后台线程Tkinter控件更新统一用root.after(0, callback)切回主线程。顺手给状态栏加一个“训练中”的提示至少让使用者在等待时知道程序没有死。如果你要同时支持多组参数跑对比还可以把每个任务丢进ThreadPoolExecutor结果用队列回传。6. 进阶用法滚动回测与特征扩展ARIMA-BP调通后别急着上真实数据先用滚动回测把模型稳定性验一遍。scikit-learn里的TimeSeriesSplit不洗乱数据按时间顺序切分训练集和验证集正适合这类验证。from sklearn.model_selection import TimeSeriesSplit tscv TimeSeriesSplit(n_splits5) for fold, (tr_idx, te_idx) in enumerate(tscv.split(series)): tr series[tr_idx] te series[te_idx] # 在这里复用第3章的train_arima_bp(tr, te, params)每个fold都会训练一次ARIMA和BP最终把5个fold的RMSE平均。真实项目里建议至少做5折样本量少就做3折。如果某个fold的误差突然变大先查resid_window初始化时是不是把上一折的测试残差带了进来这是滚动回测里非常隐蔽的泄漏点。特征扩展比网络结构调整收益更大。除了残差滞后窗口还可以把星期几、月份、节假日标记、ARIMA基线预测值本身作为BP的额外输入。比如月度销量数据把前12个月的残差加月份索引拼成一个二维矩阵BP能自动学到季节性偏移。我在做这类任务时一般会把特征分为两组残差历史组和日历特征组分别归一化后再拼接避免周末哑变量把残差的尺度带偏。如果你搜过LSTM时间序列预测Python的代码会发现它几乎不需要做特征构造直接把原始序列喂进循环网络。但LSTM要的训练量比ARIMA-BP大一个量级样本几千条时LSTM很难稳定收敛反而ARIMA-BP能在几十轮训练内出结果。我的经验是数据量小于5000且周期性明确时优先ARIMA-BP数据几十万条、高度非线性、想免去特征工程时再换LSTM。两条路各有利弊ARIMA-BP最突出的价值是在中小样本上给你一个“看得懂、能解释、跑得快”的基线。最后补一条实操习惯每次训练完把p、d、q、LAG、隐藏层、RMSE原样存成一个文本记录下次调参就从这个记录出发。我在这套项目上吃过一次亏花两周调出了看似不错的参数隔天忘了保存只能从零重新搜网格。模型再强也敌不过没记录好参数。保存好实验记录才能少走回头路希望帮到你。本文还有配套的精品资源点击获取

相关新闻

鸿蒙Flutter混合开发:Channel通信与原生能力调用实战指南

鸿蒙Flutter混合开发:Channel通信与原生能力调用实战指南

很多人第一次跑通鸿蒙 Flutter 的 Hello World 时都会松一口气,觉得 Flutter 适配鸿蒙也就是加个平台参数的事。但真正进入混合开发阶段,问题就接踵而至:Flutter 页面怎么调用鸿蒙原生的定位、蓝牙、相机?原生侧怎么把系统事件主动…

2026/10/11 16:07:27 阅读更多 →
POA逐步优化算法在水库调度中的Python实现与避坑指南

POA逐步优化算法在水库调度中的Python实现与避坑指南

简介:资源包面向水库调度研究者和优化算法学习者,提供POA(逐步优化算法)求解水库优化调度问题的C实现及配套工程文件,可帮助处理蓄水、泄洪、发电等多目标约束下的方案优化。压缩包共40个文件,大小5.05MB&a…

2026/10/11 16:07:27 阅读更多 →
降AI率工具实测:论文改写避坑指南与高效流程

降AI率工具实测:论文改写避坑指南与高效流程

先把话放前面:这篇不是广告,也不是什么“神器合集”的云测评。我自己的毕业设计说明文、实训报告、学期论文,前前后后用降AI率工具折腾了快两个月,踩过的坑比工具本身还多。现在网上但凡搜“降低AI率”,跳出来一堆软文…

2026/10/11 16:07:27 阅读更多 →

最新新闻

手写文字去除:OCR前图像预处理的可控方案

手写文字去除:OCR前图像预处理的可控方案

简介:本资源提供手写文字智能擦除的工业级Python实现方案,面向图像处理开发者、AI算法工程师及教育信息化从业者,解决试卷、表单等场景中手写内容与印刷体混杂导致的OCR识别干扰问题。资源包共36个文件,含22个核心Python脚本&…

2026/10/11 17:43:28 阅读更多 →
响应头里藏flag?从“迅疾响应”看CTF信息收集与源码审计

响应头里藏flag?从“迅疾响应”看CTF信息收集与源码审计

前几天一个刚入门的朋友在CTFshow上刷“菜狗杯”的新手题,卡在了一道叫“迅疾响应”的题目上。他跑来跟我说:页面就一行字,啥提示都没有,不知道从哪下手。我让他把浏览器开发者工具打开,先别碰页面内容,去翻…

2026/10/11 17:43:28 阅读更多 →
GemPy隐式地质建模实战:从数据准备到MCMC不确定性分析

GemPy隐式地质建模实战:从数据准备到MCMC不确定性分析

简介:GemPy是基于Python的开源隐式3D结构地质建模库,它利用界面与方向数据自动构建褶皱、断层网络和不整合面等复杂地质结构,避免了传统显式建模的繁杂几何操作,并支持贝叶斯推断与蒙特卡洛随机模拟以量化参数和模型不确定性&…

2026/10/11 17:43:27 阅读更多 →
Sourcetree重置操作全解析:soft、mixed、hard三种模式与恢复技巧

Sourcetree重置操作全解析:soft、mixed、hard三种模式与恢复技巧

1. 重置操作到底在重置什么:先搞懂Git的“后悔药”体系在聊Sourcetree之前,先说说我为什么总会写到这个主题。Git用久了你会发现,真正让人心里发虚的操作往往不是冲突合并,而是“怎么回到过去”。提交记录删不掉、分支拉错、本地改…

2026/10/11 17:43:27 阅读更多 →
Matlab CNN图像分类实战:从数据流水线到参数调试完整指南

Matlab CNN图像分类实战:从数据流水线到参数调试完整指南

简介:这是一套基于Matlab实现的卷积神经网络图像分类项目,适合正在学习CNN原理、需要完整可运行代码进行实验的初学者,也适合有一定深度学习基础的开发人员快速迁移使用。项目覆盖数据加载、特征提取(PCA)、网络初始化…

2026/10/11 17:43:27 阅读更多 →
C#实现Excel实时导入SQL Server:NPOI+SqlBulkCopy完整方案

C#实现Excel实时导入SQL Server:NPOI+SqlBulkCopy完整方案

有段时间我接到一个需求:业务部门每天把Excel报价单丢进一个共享目录,希望系统能把新数据自动读进SQL Server,全程不靠人点按钮。听到这个需求,我的第一反应是“读个Excel写个库而已”,真动手才发现,容易的…

2026/10/11 17:42: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 阅读更多 →

周新闻

流感时间序列预测实战: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 阅读更多 →