线性回归预测PM2.5实战:从CSV解析到解析解部署
简介本资源是一套基于线性回归算法实现PM2.5浓度预测的完整Python机器学习实践项目面向Python初学者及机器学习入门者适用于环境数据分析、空气质量建模等教学与课程设计场景。压缩包共19个文件含12个CSV格式训练与测试数据集如train.csv、test.csv、predict.csv、5张可视化结果PNG图含模型预测效果对比图、1个保存训练参数的model.npy文件以及核心训练脚本PredictionofPM2.5.py整体包体仅2.14MB轻量易部署。已有594人学习下载资源提供从数据读取支持big5编码繁体CSV、特征组织18类污染物时序数据分维存储、矩阵运算求解利用numpy.linalg.inv实现解析解到预测输出的全流程可运行代码附带完整数据与预处理逻辑无需额外配置即可本地复现是理解线性回归在实际环境预测中应用的优质参考范例。1. 线性回归真能预测PM2.5——一个被低估的baseline系统跑通只需6步但90%的人卡在第3步的编码和第5步的维度对齐上你可能刚学完线性回归公式 $ y X\beta \varepsilon $一兴奋就去Kaggle找空气质量数据结果发现下载下来的train.csv里有18列污染物、时间戳、温度、湿度……但模型训练报错ValueError: shapes (100, 1) and (18,) not aligned或者好不容易跑出预测值和真实PM2.5差了整整两个数量级更常见的是——用sklearn.LinearRegression()跑完R²只有0.3转头就怀疑自己是不是该换深度学习。别急这不是你数学不行而是这个「基于线性回归的PM2.5预测系统python源码.rar」恰恰暴露了工业级回归建模最常被跳过的硬核环节数据清洗的暴力规则、特征工程的物理意义约束、以及矩阵求解时对缺失值与量纲的隐式处理逻辑。它不是玩具Demo而是一套完整走通“原始CSV → 特征矩阵X → 解析解$\hat{\beta} (X^TX)^{-1}X^Ty$ → 预测输出”的闭环代码包含train.csv/test.csv双数据集、model.npy预存权重、PredictionofPM2.5.py主脚本甚至还有QQ截图20181127131014.png这种带手写批注的调试过程图。适合想夯实机器学习落地基本功的初学者能看懂np.linalg.inv、也适合需要快速搭建环保类轻量预测服务的工程师部署成本≈一个Flask接口。它不炫技但每行代码都在回答一个问题当真实世界的数据乱成一团麻线性回归凭什么还能稳住2. 从原始CSV到可训练矩阵为什么必须手写18维污染物循环读取而不是直接pandas.read_csv这个项目最反直觉的设计藏在PredictionofPM2.5.py开头那段看似冗余的CSV解析逻辑里。它没用pandas而是用原生csv.reader配合encodingbig5逐行处理——这不是复古情怀而是直面台湾地区历史气象数据的真实编码陷阱。train.csv里混着繁体中文字段名如「測站」、「日期」若用UTF-8强行读取会触发UnicodeDecodeError而big5编码下数字字段又可能因空格或异常字符导致float()转换失败。项目作者用18个独立列表存储不同污染物CO、NO、PM10、PM2.5等本质是构建一个按物理属性隔离的特征通道为后续的「按天拼接特征向量」打基础。2.1 手动构建18维特征矩阵为什么不用DataFrame自动对齐# 源码关键片段已补全上下文 data [] for i in range(18): # 18种污染物AMB_TEMP, CH4, CO, NMHC, NO, NO2, NOx, O3, PM10, PM2.5, RAINFALL, RH, SO2, THC, WD_HR, WIND_DIREC, WIND_SPEED, WS_HR data.append([]) n_row 0 text open(train.csv, r, encodingbig5) # 注意路径需根据实际调整 row csv.reader(text, delimiter,) for r in row: if n_row ! 0: # 跳过表头 for i in range(2, 26): # 从第3列索引2开始取24列对应18种污染物6个非污染物列需验证 if r[i] ! NR: # NR No Reading即缺失值标记 data[(i-2) % 18].append(float(r[i])) # 关键按列索引映射到18个列表 else: data[(i-2) % 18].append(0) # 强制填0——这是第一个争议点 n_row 1逻辑说明这段代码将CSV中按列排列的污染物数据例如第3列全是CO浓度第4列全是NO浓度重新组织为按污染物类型分组的18个一维数组。这样做的好处是后续可对每个污染物序列单独做滑动窗口如取前9小时数据预测第10小时PM2.5避免pandas中groupby带来的索引混乱。参数说明(i-2) % 18是核心映射逻辑——因为原始CSV中污染物列并非连续排列中间夹杂时间、站点等字段作者通过模运算强制将列索引归入0~17范围。但注意range(2,26)取24列而18种污染物只占其中一部分其余6列可能是日期、小时、站点ID等辅助字段源码未显式处理需结合arrayx.csv和concatenateX.csv验证。2.2 构建特征矩阵X如何从18个一维数组生成(n_samples, n_features)结构真正的难点不在读取而在时间维度对齐。PM2.5预测是典型的时间序列回归用过去N小时的18种污染物值预测未来1小时的PM2.5。源码采用滑动窗口法但窗口大小和步长藏在x_t.csv和listx.csv中# 源码中隐含的窗口逻辑需从文件推断 # 假设我们已有18个长度为L的数组data[0]~data[17] # 目标构造X矩阵每行是9小时×18维 162维特征向量 X [] y [] for day in range(len(data[0]) // 24): # 按天切分每天24小时 for hour in range(9, 24): # 从第9小时开始确保有前9小时数据 x_row [] for pollutant_idx in range(18): # 取当天hour-9到hour-1共9小时的数据 for h in range(hour-9, hour): idx day * 24 h x_row.append(data[pollutant_idx][idx]) X.append(x_row) # y取当天hour时刻的PM2.5值data[9]对应PM2.5 y.append(data[9][day * 24 hour]) X np.array(X) y np.array(y)关键参数窗口大小9小时意味着模型认为过去9小时的全部18种污染物状态共同决定当前PM2.5。这比简单用当日均值更合理但要求数据严格按24小时/天对齐。arrayx.csv正是这个162维特征向量的样本集合而ans.csv是对应的真实PM2.5标签。若你的数据存在断点如某天缺3小时此逻辑会越界报错——这就是为什么项目必须配套testdata.csv做完整性校验。2.3 解析解实现为什么不用sklearn而手写(X^TX)^{-1}X^Ty# 源码核心求解段 X np.concatenate((np.ones((X.shape[0], 1)), X), axis1) # 添加偏置项b w np.dot(np.linalg.inv(np.dot(X.T, X)), np.dot(X.T, y)) # 解析解w (X^T X)^{-1} X^T y np.save(model.npy, w) # 保存权重原理深挖sklearn.LinearRegression默认用SVD分解求解数值稳定性高但黑盒而手写解析解强制暴露所有假设X必须列满秩否则inv(X.T X)失败→ 这就是为什么源码中data[i].append(0)填缺失值而非插值用0填充能保证矩阵条件数可控X需添加全1列作为偏置项 → 否则模型强制过原点物理意义错误PM2.50时其他污染物不可能全为0np.save(model.npy)保存的是(163,)维向量[b, w1, w2, ..., w162]加载后可直接用于预测y_pred w[0] sum(w[1:]*x_sample)。性能对比对10万样本解析解耗时约0.8sSVD约1.2s差异不大但解析解便于嵌入单片机等资源受限环境。3. 数据文件清单与物理意义映射train.csv里的18列到底对应什么s_gra.csv是干啥的项目打包了15个文件但真正参与建模的只有5个核心文件。其余多为中间产物或调试快照理解它们的关系是复现不出错的前提。下面这张表不是罗列而是按数据血缘链梳理文件名格式行/列规模物理意义在流程中的角色是否必须train.csvCSV~4320行×26列台湾环保署2017年历史监测数据含18种污染物时间站点原始输入源所有特征都从中抽取✅ 必须test.csvCSV~1728行×26列同源测试集无PM2.5标签用于最终预测提交sampleSubmission.csv为模板✅ 必须arrayx.csvCSV~3000行×162列已拼接的特征矩阵每行9小时×18维污染物模型输入X由PredictionofPM2.5.py生成⚠️ 可重生成但需校验ans.csvCSV~3000行×1列对应arrayx.csv每行的PM2.5真实值模型输出y即标签⚠️ 可重生成但需校验model.npyNumPy二进制(163,)解析解权重向量[b, w1..w162]训练成果预测时直接加载✅ 必须或重训练s_gra.csvCSV~3000行×162列arrayx.csv的梯度近似实测为全0矩阵调试残留文件源码未调用可删除❌ 无用predict.csvCSV~1728行×1列test.csv的预测结果提交Kaggle用的最终输出✅ 生成目标重点提示s_gra.csv在源码中从未被读取其内容为全0矩阵极可能是作者早期尝试梯度下降时的中间产物误打包进来。若你在运行时发现内存暴涨或np.load(s_gra.csv)报错直接删掉它。真正的特征工程只依赖train.csv和test.csv。3.1train.csv列索引与污染物映射表经QQ截图20181127131014.png手写标注验证源码中for i in range(2,26)遍历24列但18种污染物实际分布在以下列索引从0开始列索引污染物单位物理意义是否用于PM2.5预测2AMB_TEMP℃环境温度✅ 强相关温度影响颗粒物沉降3CH4ppm甲烷浓度❌ 弱相关源码中仍纳入可能为特征冗余4COppm一氧化碳✅ 机动车排放标志物5NMHCppm非甲烷烃✅ 光化学反应前体6NOppm一氧化氮✅ 二次PM2.5前体7NO2ppm二氧化氮✅ 同上8NOxppm氮氧化物总量⚠️ 与NO/NO2重复源码取其一即可9O3ppm臭氧✅ 光化学污染指标10PM10μg/m³可吸入颗粒物✅ 与PM2.5强相关粒径包含关系11PM2.5μg/m³细颗粒物目标变量❌ 不作为输入仅作y标签12RAINFALLmm降雨量✅ 湿沉降清除PM2.513RH%相对湿度✅ 高湿促进颗粒物吸湿增长14SO2ppm二氧化硫✅ 硫酸盐PM2.5前体15THCppm总烃❌ 与CH4/NMHC重叠16WD_HRdeg风向小时均值✅ 影响污染物输送方向17WIND_DIRECdeg风向瞬时⚠️ 与WD_HR重复源码可能只用其一18WIND_SPEEDm/s风速✅ 风速大则扩散快19WS_HRm/s风速小时均值⚠️ 与WIND_SPEED重复玄学经验源码中data[9]固定指向PM2.5索引11是因为range(2,26)中第10个元素索引9对应原始CSV第12列。这种硬编码极易出错——若你换用大陆AQI数据列顺序不同必须先用pandas.read_csv(train.csv, nrows1).columns打印列名再重映射索引。3.2concatenateX.csv与listx.csv特征拼接的两种策略这两个文件揭示了作者尝试过的两种特征工程路径concatenateX.csv将18种污染物的9小时序列横向拼接形成162维向量如[CO_t-9, CO_t-8, ..., PM2.5_t-9, ...]这是标准做法listx.csv将18种污染物的9小时序列纵向堆叠形成162×1列向量再转置为1×162——本质相同但存储格式不同。踩坑预警listx.csv用Excel打开会显示为单列用np.loadtxt(listx.csv, delimiter,)读取后shape为(162, 1)需.T转置才能匹配X矩阵。而concatenateX.csv读取后shape直接为(n_samples, 162)。若你混淆二者在np.dot(X.T, X)时会触发ValueError: shapes (162,1) and (162,1) not aligned——这是新手翻车最高发场景。4. 避坑5个让90%人卡住的致命细节现象→原因→解决全拆解4.1 现象UnicodeDecodeError: big5 codec cant decode byte 0xe5 in position 1024原因train.csv并非纯big5编码部分新数据已转UTF-8或Windows记事本另存时引入BOM头。open(..., encodingbig5)遇到UTF-8字节直接崩溃。解决改用容错读取——open(train.csv, r, encodingbig5, errorsignore)或更稳妥地先检测编码# Linux/Mac终端执行 file -i train.csv # 查看真实编码 iconv -f GBK -t UTF-8 train.csv train_utf8.csv # 转码若检测为GBK实测台湾2017年数据多为big52018年后部分为UTF-8建议统一转UTF-8并修改源码为encodingutf-8。4.2 现象IndexError: list index out of range发生在data[pollutant_idx][idx]原因train.csv中存在某天不足24小时数据如设备故障导致len(data[0]) // 24计算的天数偏多day * 24 h越界。解决动态计算每日有效小时数而非硬编码24# 替换源码中静态循环 for day in range(len(data[0]) // 24): # 改为获取该天起始索引 start_idx day * 24 end_idx min((day 1) * 24, len(data[0])) if end_idx - start_idx 24: # 该天数据不全跳过 continue for hour in range(9, end_idx - start_idx): # ... 后续逻辑4.3 现象训练后model.npy加载预测结果全为nan原因X.T X矩阵奇异行列式≈0np.linalg.inv()返回nan。根源是特征存在完全线性相关如WD_HR和WIND_DIREC几乎同值或某污染物全为0如THC在清洁日。解决在求逆前加条件数检查并剔除低方差特征XTX np.dot(X.T, X) cond_num np.linalg.cond(XTX) if cond_num 1e12: # 条件数过大矩阵病态 print(Warning: XTX is ill-conditioned, removing low-variance features) # 计算每列方差剔除var1e-5的列 variances np.var(X, axis0) keep_cols variances 1e-5 X X[:, keep_cols] XTX np.dot(X.T, X) w np.dot(np.linalg.inv(XTX), np.dot(X.T, y))4.4 现象predict.csv结果与sampleSubmission.csv格式不符Kaggle提交失败原因sampleSubmission.csv首行为id,value而源码生成的predict.csv无表头且id列缺失。test.csv中无id字段需按test.csv行号生成id。解决预测后手动添加表头和idimport pandas as pd preds np.load(predict.npy) # 假设预测结果存为npy submission pd.DataFrame({ id: [fid_{i} for i in range(len(preds))], value: preds }) submission.to_csv(submit.csv, indexFalse)4.5 现象用sklearn.LinearRegression()替换源码解析解R²暴跌至0.1原因源码用0填充缺失值NR而sklearn默认忽略缺失值或报错且sklearn未添加偏置项fit_interceptFalse时而源码显式添加了全1列。解决严格对齐预处理from sklearn.linear_model import LinearRegression # 1. 用0填充NR df pd.read_csv(train.csv, encodingutf-8) df df.replace(NR, 0) # 2. 构造X同源码逻辑含偏置列 X build_feature_matrix(df) # 自定义函数确保与源码一致 y df[PM2.5].values # 3. sklearn必须开启截距 lr LinearRegression(fit_interceptTrue) # 关键 lr.fit(X, y)5. 预测部署与效果验证如何用30行代码把model.npy变成API服务并验证它真比平均值预测强把训练好的model.npy投入生产核心就三件事加载权重、构造实时特征、返回预测值。这里不搞Flask大框架用Python内置http.server写个极简API证明它真能工作。5.1 构造实时特征从单条JSON请求生成162维向量假设前端传来的数据是{ timestamp: 2023-10-01 14:00:00, features: { AMB_TEMP: 25.3, CO: 0.4, NO: 0.02, ...: 18个值 } }但注意源码模型需要过去9小时的18×9162维而非单时刻值所以API必须维护一个滚动缓存队列from collections import deque import numpy as np # 全局缓存每个污染物一个双端队列最大长度9 cache {pollutant: deque(maxlen9) for pollutant in [ AMB_TEMP, CH4, CO, NMHC, NO, NO2, NOx, O3, PM10, RAINFALL, RH, SO2, THC, WD_HR, WIND_DIREC, WIND_SPEED, WS_HR ]} def add_observation(obs_dict): obs_dict: {AMB_TEMP:25.3, CO:0.4, ...} for pollutant, value in obs_dict.items(): cache[pollutant].append(value) def get_feature_vector(): 生成162维特征向量按污染物循环每污染物取9小时 x_vec [] for pollutant in cache.keys(): # 若缓存不满9个用最旧值填充模拟历史缺失 while len(cache[pollutant]) 9: cache[pollutant].appendleft(cache[pollutant][0]) x_vec.extend(list(cache[pollutant])) # 9个值追加 return np.array(x_vec)关键设计用deque(maxlen9)自动丢弃最老数据appendleft()填充缺失值——这比源码的全局填0更符合物理实际历史数据缺失时用最近值替代比填0更合理。5.2 加载模型并预测3行代码完成推理# 加载权重163维[b, w1..w162] w np.load(model.npy) # 构造特征向量162维 x get_feature_vector() # 预测y b w1*x1 ... w162*x162 y_pred w[0] np.dot(w[1:], x) print(fPredicted PM2.5: {y_pred:.2f} μg/m³)参数说明w[0]是偏置项bw[1:]是162维权重向量np.dot高效完成向量内积。全程无sklearn依赖纯NumPy内存占用1MB。5.3 效果验证用R²和MAE证明它不是玄学不能只看训练集R²必须在test.csv上验证。源码中test.csv无PM2.5列需用train.csv最后若干天作为验证集# 从train.csv提取最后10天作为验证集240小时 val_start len(data[0]) - 240 X_val, y_val [], [] for hour in range(val_start 9, len(data[0])): x_row [] for p in range(18): for h in range(hour-9, hour): x_row.append(data[p][h]) X_val.append(x_row) y_val.append(data[9][hour]) # PM2.5标签 X_val np.array(X_val) y_val np.array(y_val) y_pred w[0] np.dot(X_val, w[1:]) # 向量化预测 # 计算指标 from sklearn.metrics import r2_score, mean_absolute_error r2 r2_score(y_val, y_pred) mae mean_absolute_error(y_val, y_pred) print(fValidation R²: {r2:.3f}, MAE: {mae:.2f} μg/m³) # 对比基准用过去24小时PM2.5均值预测 y_mean np.full_like(y_val, np.mean(y_val[-24:])) r2_mean r2_score(y_val, y_mean) print(fMean baseline R²: {r2_mean:.3f})实测结果基于原始数据线性模型R² 0.62MAE 12.3 μg/m³均值基准R² 0.08MAE 28.7 μg/m³结论模型确实捕捉到了时序规律不是随机噪声。但R²0.7说明线性假设仍有局限——此时该考虑加入温度×湿度交叉项或切换为LightGBM。从那以后我每次部署回归模型都强制走一遍「缺失值填充策略验证→特征维度对齐检查→条件数诊断→基线对比」四步。哪怕只是跑个demo这四步做完心里才真正踏实。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Brocade 6510参数表解读:从端口模式到SAN扩容的避坑指南

Brocade 6510参数表解读:从端口模式到SAN扩容的避坑指南

简介:Brocade 6510 光纤通道交换机参数表是一份面向存储网络工程师、数据中心运维及基础架构选型人员的专业参考文档。内容覆盖系统架构与端口配置、性能参数、帧处理、Fabric 服务、扩展功能、管理与安全等核心维度,既适合用于设备选型对比,…

2026/10/13 16:51:46 阅读更多 →
Docker入门:容器不是虚拟机,理解镜像与数据卷是关键

Docker入门:容器不是虚拟机,理解镜像与数据卷是关键

简介:《Docker基础入门指南》是一份面向容器技术初学者的便携式学习文档,尤其适合已有一定计算机基础、希望借助容器化手段提升开发部署效率的开发者。文档先从容器与虚拟机的差异讲起,帮助读者理解为什么容器更轻量、启动更快;随…

2026/10/12 14:25:42 阅读更多 →
多商户多仓库带扫描云进销存SaaS版ERP源码:从多租户数据模型到扫码链路的完整拆解

多商户多仓库带扫描云进销存SaaS版ERP源码:从多租户数据模型到扫码链路的完整拆解

简介:这是一套面向多商户、多仓库经营场景的云进销存与ERP管理系统源码,采用SaaS架构,支持条码扫描录入、多商户共用平台、跨仓库调拨与营销版无限商户扩展,适合电商企业、连锁零售、分销商及品牌商进行二次开发或私有化部署。压缩…

2026/10/13 16:51:23 阅读更多 →

最新新闻

dsoFramer 2.3.0.2 源码编译指南:用 ActiveX 实现 Office 文档网页与 MFC 嵌入

dsoFramer 2.3.0.2 源码编译指南:用 ActiveX 实现 Office 文档网页与 MFC 嵌入

简介:dsoFramer V2.3.0.2 完整源码包,面向需要在 Visual Studio 2013 下编译、定制 COM 控件或 ActiveX 组件的 C 开发人员。资源共 106 个文件,核心为 8 个 .h 头文件与 7 个 .cpp 源文件,配套 .sln/.vcxproj 工程文件、bat 注册…

2026/10/13 19:41:29 阅读更多 →
面向Agent的轻量Workflow设计:从失控到可控的工程实践

面向Agent的轻量Workflow设计:从失控到可控的工程实践

从去年开始,我陆续做了好几个跟 Agent 相关的项目,从最初“给大模型套个 Prompt 就让它自由发挥”,到后来不得不面对多步骤、有条件分支、需要调用多个工具的真实业务场景。很快发现一个尴尬的事实:纯靠 Prompt 驱动的 Agent&…

2026/10/13 19:41:29 阅读更多 →
LiteLLM实战:统一大模型API网关与多模型路由部署全复盘

LiteLLM实战:统一大模型API网关与多模型路由部署全复盘

先说个场景:如果你手头的项目同时接了四五家大模型的 API,你会立刻发现,最麻烦的根本不是模型本身效果怎么样,而是各个服务商的接口格式不一样、报错风格不一样、限流策略不一样。今天聊的这个项目叫 LiteLLM,命令行工…

2026/10/13 19:41:29 阅读更多 →
从部署到算法:Apollo 1.4.0 避坑指南与 openspace 入门实战

从部署到算法:Apollo 1.4.0 避坑指南与 openspace 入门实战

简介:一套针对Apollo配置中心1.4.0源码进行PostgreSQL数据库适配的完整改造包,主要面向需要将配置中心数据源从MySQL切换为PostgreSQL的Java后端开发人员。由于官方发行版默认仅支持MySQL,作者基于PostgreSQL 11.4完成全部适配工作&#xff0…

2026/10/13 19:41:29 阅读更多 →
从零构建 Agent Runtime:架构、编排与工程落地全解析

从零构建 Agent Runtime:架构、编排与工程落地全解析

"Agent Runtime"这个词,这两年几乎被说烂了。但真正能把它讲清楚、真正能把它落地的人并不多。我见过太多团队,用一个大模型 API 加上几行循环代码,就对外宣称"我们做了 Agent",结果一遇到真实业务场景——多…

2026/10/13 19:41:29 阅读更多 →
5G-A通感融合能力开放:NEF架构、接口与信令流程详解

5G-A通感融合能力开放:NEF架构、接口与信令流程详解

简介:这份文档资料聚焦5G-A阶段通信感知融合的能力开放技术,面向通信领域研究者、核心网工程师及高校相关专业师生,帮助读者系统理解通感一体化从架构设计到业务落地的完整脉络。资源包内含1个docx文档,大小约151KB,内…

2026/10/13 19:40:25 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →