用互信息重构特征工程的时序预测改进实战
看到“TPM-MI改进”这个项目代号估计不少同行的第一反应是TPM是什么MI又是什么这俩缩写的解释空间太大先说清楚我在项目里怎么定义的后面所有内容才有讨论基础。TPM在我这边是时间序列预测模型Temporal Predictive Model的缩写MI是互信息Mutual Information。整个项目做的是对一个已经能跑通的时序预测系统做一次系统性的改进核心切入点是用互信息重新做特征工程顺带在目标构造和模型侧做配套优化。这个改进项目完结之后我复盘了很久觉得整个过程非常适合那些做时序预测做到瓶颈、模型效果一直差口气的工程师参考。如果你手头也有一个预测系统特征堆了几十上百个模型换了几种都提不上去那这篇内容尤其值得你花几分钟看完。我会把从问题定位、方案选型、特征筛选、样本构建到模型调参的完整过程以及过程中踩过的坑、排查过的诡异问题都写出来。1. 项目整体思路与方案选型1.1 原始TPM模型的痛点先交代背景。当时手里的基线系统是一个用于某工业设备关键参数预测的模型输入是设备的历史运行数据输出是未来一小段时间内的参数变化趋势。基线模型本身没什么大问题结构也简单就是多变量时序特征直接进树模型。但这个系统上线之后表现一直不温不火。预测误差在可接受范围内可一旦设备运行工况发生变化模型误差就明显放大。最让人头疼的是特征维度已经堆到了几十个却没有一个清晰的特征选择逻辑全靠经验往里塞。特征多并不等于效果好反而让模型训练变慢、过拟合风险变大还经常出现预测结果对某些弱相关特征过度敏感的情况。后来我花了一周时间把数据、特征、模型全部过了一遍最终把问题收敛到三个方向特征与目标之间的相关性没有量化分析、滞后窗口的构建缺乏依据、目标变量直接用原始值导致模型学不到趋势变化。这时候我意识到缺的不是更复杂的模型而是回到特征工程这个最基础、也最容易被忽视的环节重新做一次“体检”。1.2 为什么选互信息做特征改造特征相关性分析大家最习惯用的就是皮尔逊相关系数。这个指标的问题很明显它只能捕捉线性关系两个变量一旦存在非线性关联皮尔逊系数就会严重低估它们的真实相关性。设备数据里我见过大量非线性关联的场景——某特征在阈值附近对目标产生突变式影响输入特征和目标之间呈现分段式关系这类情况用皮尔逊系数打分很容易把真正有用的特征排在倒数。互信息则完全不依赖变量之间的函数形式它度量的是“知道这个特征的值之后目标变量的不确定性降低了多少”。如果特征携带目标的信息越多不确定性降低得就越多互信息值就越大。这个特性让互信息成为特征工程阶段最可靠的路标。用户经常质疑的是互信息只能衡量相关性又不能告诉你“怎么用”。这部分是对的但我的观点是特征筛选阶段你需要的就是一张“谁有用、谁没用”的榜单每个特征和目标的互信息值能帮你快速砍掉无关特征把精力集中到核心特征上。至于这些特征怎么组合、需要什么样的非线性变换那是后续模型侧该做的事情不该把这个责任推给特征排序指标。1.3 改进后的整体流程整个TPM-MI改进项目最终形成了一个完整工作流我按顺序整理出来数据清洗与基础检查包括缺失值、异常值、时间戳对齐计算所有候选特征与目标变量的互信息值得到特征重要性初榜结合滞后窗口分析对TOP特征做滞后扩展目标变量差分化预测变化量而不是绝对值按时间顺序切分训练集与验证集树模型训练 网格调参用MAE、MAPE、R²等指标对比基线与改进版本效果。这套流程最核心的变化在于把“拍脑袋筛选特征”变成了“互信息定量筛选”又把“预测绝对值”变成了“预测差分值”两个改动直接解决了原系统最大的两个痛点。2. 核心细节解析与实操要点2.1 互信息估计方法选型要动手做互信息特征筛选第一步是搞清楚用什么方式计算互信息。教科书里的互信息定义基于概率密度但连续变量的概率密度估计从来都是个麻烦事所以在实际项目里用的都是近似估计方法。我在这个项目里用了基于k近邻的估计方法代码上是直接用sklearn.feature_selection.mutual_info_regression这个函数。它的核心思路是KSG估计器对每个样本点找到它在联合空间里的第k近邻距离然后根据落入对应边界内的邻居数量来估算互信息值。这个方法的好处是不需要显式估计概率密度工程实现稳定在大样本下计算精度足够。实操时有个关键参数n_neighbors默认是3。这个参数值越小估计方差越大但偏差小值越大偏差越大但方差小。我在项目里对比过不同取值的结果n_neighbors特征排序稳定性计算耗时2排序波动较大适中3排序相对稳定适中5排序稳定略长10排序稳定但敏感特征被稀释较长最终我把n_neighbors设为5排序稳定性和敏感性之间比较平衡。如果你只是粗筛一遍特征用默认值3也行但如果你准备根据互信息值设定硬性删除阈值建议先多跑几个k值确认排序变化不大再动手。另外一个细节是随机种子。互信息估计过程带有随机性直接表现就是每次运行得到的分数不完全相同但排序基本一致。建议设定随机种子保证实验可复现。2.2 滞后特征怎么构建窗口时序预测和普通监督学习最大的不同在于样本构造方式。原始数据里一条记录是某一时刻的观测值但预测未来值需要构造“过去窗口 → 未来目标”的训练样本。滞后特征的构造方法是把每个特征的历史值作为新特征加入样本。举例来说如果特征是温度T那么滞后1步的特征是当前时刻之前1个时间点的温度值滞后2步则是之前2个时间点的值。在代码层面就是shift()操作。窗口取多大最合适这个问题没有标准答案要结合具体业务的周期性和采样频率。我在项目里先做了自相关分析然后对比了不同窗口下的模型效果窗口过短模型只能看到局部趋势难以捕捉周期性模式窗口过长特征维度大幅膨胀训练变慢还会引入大量噪声模型反而被带偏。最后我的处理办法是先用互信息对原始特征做了一个粗筛只对排名靠前的特征做滞后扩展这样既控制了维度又不丢失主要信息。假设选了8个核心特征窗口20步生成的特征就是8×20160维这个规模对树模型来说是完全可以接受的。2.3 数据预处理与标签构造数据预处理在时序项目里比普通项目更容易出问题因为时序数据的缺失、异常和漂移都有时间维度上的特殊性。先处理缺失值。对时序数据我强烈不建议用全局均值填充因为这会抹掉趋势信息。通用做法是用前后值插值或者前值填充。这个项目里的数据缺失是零散的我用了ffill前向填充效果较好。如果缺失集中在一个连续时间段那要检查是采集故障还是设备停机不同原因处理方式完全不同。然后是异常值。时序数据里的异常值对互信息计算影响很大个别离群点会显著拉高或拉低特征与目标的相关性导致特征排序失真。我的策略是先画出特征分布对超过分位数边界的值做截断处理而不是直接删除因为直接删行会破坏时间连续性。目标变量构造上我这次做了一个重要改动把原本预测的目标值从y_t改成差分值y_t - y_{t-1}。这个改动的本质是让模型学习“变化量”而不是“绝对量”。设备参数这类数据绝对量和设备本身的基准状态强相关不同设备、不同工况下基准值差异很大但变化模式往往是一致的。预测差分值之后系统泛化能力明显增强。2.4 模型侧的小改动特征工程做完模型侧不能完全不动。我用的基模型是LightGBM原因很简单训练快、对非线性特征组合拟合能力强、对特征缩放不敏感非常适合这个场景。如果你不熟悉LightGBM换成XGBoost或者随机森林也可以走通整个流程只是调参重点不太一样。训练集和验证集的切分方式是时序项目里最容易犯的错误。普通机器学习任务习惯用随机打乱切分但时序数据一旦随机打乱等于让模型偷看了未来的信息验证集指标虚高到没有参考意义。这个项目里我严格按时间顺序切分前80%时间窗口做训练后20%做验证。另外一个我在项目里验证有效的技巧是对预测值做差分还原之后再计算误差指标。如果用差分后的目标训练模型需要把预测的差分值累加回真实目标尺度再计算MAE和MAPE这样得到的误差数字才和业务方理解的偏差一致。3. 实操过程与核心环节实现3.1 环境与数据准备这部分代码不复杂但每步都有讲究。先看整体环境Python 3.9、Pandas、NumPy、Scikit-learn、LightGBM。数据是某设备运行记录的模拟数据集包含温度、压力、转速等多个维度的采集数据采样间隔固定。第一步是读取数据、检查时间连续性、处理缺失值。这个步骤里最容易踩的坑是不检查时间戳是否连续有些采集系统会间歇性丢数据时间序列中间缺了若干个时间点直接用shift()构造滞后特征会把不同时间间隔的数据错误地当作固定间隔处理。import pandas as pd import numpy as np df pd.read_csv(equipment_data.csv, parse_dates[timestamp]) df df.sort_values(timestamp).reset_index(dropTrue) # 检查缺失值比例 print(df.isnull().sum()) # 前向填充缺失值 df df.fillna(methodffill) # 异常值截断基于分位数 for col in [pressure, temperature]: lower df[col].quantile(0.01) upper df[col].quantile(0.99) df[col] df[col].clip(lower, upper)3.2 代码实现互信息计算与特征筛选数据准备好了直接进入核心环节互信息计算与特征筛选。我用mutual_info_regression对所有候选特征打分这个函数要求特征矩阵是数值型如果有类别特征需要先编码。from sklearn.feature_selection import mutual_info_regression feature_cols [temperature, pressure, speed, vibration, power, current, humidity, position] X df[feature_cols] y df[target_param] mi_scores mutual_info_regression(X, y, n_neighbors5, random_state42) mi_series pd.Series(mi_scores, indexfeature_cols).sort_values(ascendingFalse) print(mi_series) # 输出示例 # temperature 0.823 # pressure 0.716 # speed 0.652 # vibration 0.412 # current 0.358 # power 0.214 # humidity 0.131 # position 0.087这个结果直接给出一个清晰的认知温度、压力、转速三个特征和目标参数的关系最紧密湿度、位置等特征基本没什么贡献。我最终筛选规则是保留所有互信息值大于0.1的特征低于这个值的直接丢弃。需要提醒的一点是这个筛选规则只针对“单特征和目标的关系”。如果某两个特征单独看和目标的相关性都很低但它们组合起来能提供很强的预测信号这种互补型特征就会被互信息单变量筛选误杀。为了避免这类问题我在实际项目中做了个折中——对排名靠后但业务含义明确的特征不直接删除而是留一个“待观察”名单后续建模时对比有无这个特征的效果差异。3.3 样本构建与模型训练互信息筛选之后进入样本构建。这一步的核心是滞后特征展开。我对筛选出的核心特征分别做多个滞后步长的移位生成新特征列。def build_lag_features(df, cols, lags): df_lag df.copy() for col in cols: for lag in lags: df_lag[f{col}_lag_{lag}] df_lag[col].shift(lag) return df_lag lags list(range(1, 21)) core_cols [temperature, pressure, speed, vibration, current] df_lag build_lag_features(df, core_cols, lags) # 目标变量差分 df_lag[target_diff] df_lag[target_param].diff() df_lag df_lag.dropna().reset_index(dropTrue)注意shift()之后会产生 NaN因为开头若干行没有足够的历史数据用dropna()直接丢掉这些样本就行。如果总数据量大、丢弃比例不高这是最简单稳妥的做法。接下来按时间顺序切分数据集train_size int(len(df_lag) * 0.8) train_df df_lag.iloc[:train_size] test_df df_lag.iloc[train_size:] feature_cols_final [c for c in df_lag.columns if c not in [timestamp, target_param, target_diff]] X_train train_df[feature_cols_final] y_train train_df[target_diff] X_test test_df[feature_cols_final] y_test test_df[target_diff]模型训练用LightGBM先跑一组基础参数不做精细调参目的是快速建立基线import lightgbm as lgb model lgb.LGBMRegressor( n_estimators500, learning_rate0.05, num_leaves31, max_depth7, subsample0.8, colsample_bytree0.8, random_state42 ) model.fit(X_train, y_train, eval_set[(X_test, y_test)], eval_metricmae)训练过程中我重点观察的是验证集损失曲线是否平稳如果出现验证集误差在某个轮次之后持续上升基本可以判定过拟合需要减小num_leaves或者增加min_child_samples。3.4 实验结果对比与调参记录训练完成后把差分预测值还原回绝对尺度计算误差指标。还原方法很简单对差分预测值做累加加上真实基准值。pred_diff model.predict(X_test) pred_absolute test_df[target_param].iloc[0] np.cumsum(pred_diff) true_absolute test_df[target_param].values from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score mae mean_absolute_error(true_absolute, pred_absolute) rmse mean_squared_error(true_absolute, pred_absolute, squaredFalse) r2 r2_score(true_absolute, pred_absolute) print(fMAE{mae:.4f}, RMSE{rmse:.4f}, R2{r2:.4f})我在项目里做了多组对照实验记录效果实验版本MAERMSER²基线全特征预测绝对值0.6840.9120.74加滞后特征0.5210.7030.85加互信息筛选0.4970.6760.86加差分目标0.3520.4890.93可以看到滞后特征带来了一次明显提升互信息筛选又小幅优化了效果最显著的提升来自差分目标。最终组合版本的MAE从0.684降到了0.352几乎减半。这说明很多时候模型提不上去问题不在模型结构而在目标和特征的构造方式。调参方面我也做了几轮。LightGBM对num_leaves比较敏感我从小到大跑了一组对比num_leaves15单棵树表达能力偏弱训练欠拟合验证误差偏高num_leaves31验证指标最优泛化能力稳定num_leaves63训练误差明显下降但验证误差反弹典型过拟合信号。最后固定num_leaves31。还有一个小细节时序预测场景下模型越复杂越容易对近期样本过拟合因为训练数据里的时间分布并不均匀所以我把min_child_samples调到了30强行约束叶子节点的最小样本量对稳定预测帮助很大。4. 常见问题与排查技巧实录4.1 互信息计算太慢特征维度一大互信息计算会成为明显的性能瓶颈。我最初在完整特征集上跑mutual_info_regression耗时一度达到几分钟在需要反复调参时非常痛苦。解决思路是分阶段粗筛。先用Fast Correlation-Based Filter这类快速方法把候选特征压缩到几十个以内再对保留特征跑互信息精确计算。或者把连续特征分箱后用基于离散变量的互信息公式快速估算虽然精度低一些但排序稳定性足够支撑决策。还有一个实际技巧mutual_info_regression的计算复杂度跟n_neighbors和样本量直接相关如果只需要特征排序可以在全集上用较大步长抽样计算比如每10个样本取1个排序结果和全量计算的差别很小耗时能降到原来的十分之一以下。4.2 特征筛选后效果反而变差我自己在项目初期就遇到过按互信息排序删掉低分特征后模型效果不但没提升反而比全特征时更差了。排查之后发现问题出在特征冗余和互补性上。有些特征单独看和目标互信息值很低但它与其他特征组合后对模型有明确的增益单纯按单变量评分删除会误伤这类特征。处理办法是互信息筛选用“粗筛”不要用“精选”。每次只删除排名垫底那部分明显无关的特征保留中间地带然后用模型的特征重要性做后续的二次筛选。两次筛选结合既控制了维度又不至于把互补特征过早丢掉。另外要意识到互信息衡量的是线性与非线性相关性但模型在有限样本下不一定能充分利用这种相关性所以得分高不代表放进模型一定有效。我通常会用互信息作为初筛手段再配合前向选择做一个小的消融实验确认哪些高互信息特征真正能提升模型效果。4.3 训练与线上分布不一致这个坑藏得很深发生后最让人崩溃。改进版模型在验证集上效果非常好结果上线后效果远不如预期。我查了很久才定位到分布漂移问题。场景是这样的设备在不同生产阶段、不同外部环境下的数据分布差异很大。训练数据主要来自某个稳定运行时段验证集虽然也是按时间切分出来的但整体分布和训练集相似泛化到新工况之后特征分布变了模型自然失效。解决方案是两层第一训练数据里尽可能覆盖不同工况的数据宁可数据多一点也不要只用一个典型时段第二建模时加入环境相关特征比如外部温度、运行模式标识等让模型显式感知分布的变化。如果这两步都没法做那只能建立在线监控机制定期检测特征分布漂移触发重新训练。4.4 滞后窗口长度怎么定滞后窗口这个参数我纠结了最久。窗口太短模型看不到趋势窗口太长引入噪声而且特征数量会线性膨胀。我的经验是分三步来确定第一步做一个目标变量的自相关图找到相关性明显衰减的滞后阶数这个衰减点附近是窗口长度的参考下界。第二步对比窗口长度在10、15、20、30时的验证集误差画出曲线。第三步结合业务经验修正比如业务上已知设备参数调整后15分钟内会稳定那么窗口至少要覆盖15分钟对应的采样点数。如果窗口很长、特征巨多考虑换思路把原始序列先做一次下采样或者滑动平均再做滞后扩展这样减少特征数又保留趋势信息。这个方法在特征膨胀问题严重时非常好用。5. 一些想单独拿出来说的实操体会做完整轮改进我想单独把几个容易被忽略的细节拎出来补充。这些细节在教科书和文档里很难看到但它们往往决定项目成败。目标变量差分化是我这次项目收益最大的一步但它也有代价。差分会让目标序列的信噪比降低如果数据本身噪声大差分后噪声占比进一步放大模型的误差可能不降反升。我当时的判断标准是如果原始序列的差分自相关显著也就是变化量本身有可预测的序列结构差分就值得做如果变化更像随机噪声那还是保留绝对值预测更稳妥。互信息和模型特征重要性是两种不同视角的评估维度两者经常互相补充。互信息看的是“特征和目标之间理论上携带多少信息”模型特征重要性看的是“模型在有限样本下实际利用了哪些信息”。当某个特征的互信息很高、但模型特征重要性很低时这通常说明数据量不足或特征表达形式需要变换当互信息很低、但模型特征重要性很高时就要警惕过拟合或特征泄漏。把两个榜单放在一起对比能发现很多单看一个视角发现不了的问题。部署环节也有一个容易踩的坑滞后特征在在线推理时需要缓存历史值。离线训练时shift()直接取历史数据但线上模型推理时你要手动维护一个滚动窗口把最近20个时刻的值缓存下来再构造同样的滞后特征。如果线上逻辑和离线特征构造不一致哪怕差一点点预测效果都会明显劣化。我的建议是用一份统一代码同时管理离线特征函数和线上特征构造逻辑避免出现两份代码各写各的隐患。最后说一个方法论层面的体会做改进项目之前先把基线问题想清楚比急着调模型重要得多。这个项目里我花了一周时间在特征工程和目标构造上模型侧几乎没动结构最终效果提升远超最初“换个更强模型”的思路。如果你现在也正好卡在预测精度上不去、只会反复调参的死循环里我真心建议你退一步从特征关系和目标定义的角度重新审视数据。这一退可能比前进更解决问题。

相关新闻

Vue 3调试指南:DevTools 6.5.0安装、面板实操与状态快照审计

Vue 3调试指南:DevTools 6.5.0安装、面板实操与状态快照审计

简介:Vue DevTools 6.5.0 是一款面向 Vue.js 前端开发者的 Chrome 浏览器调试插件,主要用于查看组件树结构、Vue 实例状态、props、data 及 methods 等运行信息,并支持实时修改数据、观察虚拟 DOM 变化、跟踪生命周期钩子,帮助定位…

2026/10/17 7:07:04 阅读更多 →
CANN深度解析:昇腾AI异构计算架构的核心原理与性能调优实践

CANN深度解析:昇腾AI异构计算架构的核心原理与性能调优实践

如果最近在昇腾AI处理器上跑过模型,那你大概率躲不开这个名字:CANN。我第一次接触它时,想当然地以为它和GPU上的CUDA一样——装个驱动、配好环境、调一下框架后端就能直接跑。真正上手才发现,CANN不是一个简单的驱动,也…

2026/10/17 7:06:04 阅读更多 →
Ollama+Go+词库+RAG:本地大模型应用实战拆解

Ollama+Go+词库+RAG:本地大模型应用实战拆解

本地大模型这两年已经卷到“开箱即用”了。去年我跑一个开源大模型,还得先折腾显卡驱动、CUDA、Python 环境、模型转换脚本,现在一把梭的方式是直接拉一个 Ollama 服务,命令一敲模型就跑起来了。更吸引人的是,Ollama 这边既能接入…

2026/10/17 7:06:04 阅读更多 →

最新新闻

ThreadX串口通信实战:从信号量到DMA空闲中断的丢数据排查指南

ThreadX串口通信实战:从信号量到DMA空闲中断的丢数据排查指南

简介:本资源面向STM32嵌入式开发者与实时操作系统学习者,聚焦ThreadX下UART串口DMA通信的完整工程实现,解决裸机串口收发效率低、任务间同步困难等问题。工程基于STM32CubeMX生成,结合ThreadX的队列与信号量机制,演示D…

2026/10/17 7:42:12 阅读更多 →
从Agent到AI IDE:一位开发者的年度工具链进化实录

从Agent到AI IDE:一位开发者的年度工具链进化实录

年初那阵子,我参加了几场线上的技术交流,大家开口闭口都是Agent,各种演示视频看着确实唬人——什么自动写周报、自动跑数据分析、自动修Bug。到了下半年,风向变了,圈子里的热门话题从Agent转向了AI IDE,一批…

2026/10/17 7:42:12 阅读更多 →
从零搭建深度学习围棋AI:特征编码、网络训练与MCTS联调实战

从零搭建深度学习围棋AI:特征编码、网络训练与MCTS联调实战

把特征、网络、搜索这三件事从"听说过"变成"跑得通",是我写这篇续篇最想解决的问题。上一篇写深度学习与围棋的结合思路时,有不少读者留言说原理能看懂,但一到自己动手搭系统就卡壳:棋盘状态怎么编码&#xf…

2026/10/17 7:42:12 阅读更多 →
从零构建围棋AI:深度学习与蒙特卡洛树搜索实战解析

从零构建围棋AI:深度学习与蒙特卡洛树搜索实战解析

先算一笔账。19路围棋的合法局面数量大约在10的170次方量级,这个数字比宇宙中的原子总数还要多出不少量级。传统搜索树和简单局面评估在这种复杂度面前基本是失效的,这也是二十多年前程序员用绝对搜索算法做围棋程序时始终卡在业余低段的根本原因。深度学…

2026/10/17 7:42:12 阅读更多 →
数据增强实战指南:五大策略提升竞赛模型泛化能力

数据增强实战指南:五大策略提升竞赛模型泛化能力

数据竞赛打久了,你会越来越明显地感觉到一件事:模型结构的边际收益已经越来越低,真正让你在排行榜上稳住位置的,往往是别人看不见的那部分数据工作。数据增强就是其中最基础、也最容易被低估的一块。在大数据竞赛里,数…

2026/10/17 7:42:12 阅读更多 →
【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

【共创稿事节】HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集

做 Agent 应用最怕的不是「写不出第一版」,而是「改了第三版之后,发现第一版明明答对的题现在答错了」。大模型有随机性、提示词有耦合、工具调用有边界,靠人肉聊天抽查既覆盖不全又无法回放。这一篇我们给 Agent 配上一套离线评测集&#xf…

2026/10/17 7:41:11 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →