基于Hadoop+Spark的金融信贷风控系统:架构、特征工程与模型评估
简介一份基于 Hadoop 与 Spark 的大数据金融信贷风险控制系统毕业设计源码定位清晰主要面向计算机及相关专业正在完成毕业设计或课程设计的学生也适合希望积累大数据实战经验的学习者。项目以 Spark 流式处理作为实时数据入口结合 Hadoop 生态的存储与计算组件覆盖信贷数据接入、风险指标计算、结果存储及前端展示等完整链路能够帮助读者理解从数据流处理到风控决策的整体架构。压缩包包含 68 个文件以 Java 和 Scala 源码为主辅以 XML 配置、SQL 初始化脚本、属性配置及少量前端脚本资源整体约 90KB目录按数据源、风控逻辑、前端展示等模块划分结构清晰便于对照学习和二次开发。该项目由导师指导完成评审分为 98 分源码已在本地编译并调试通过可直接运行省去环境搭建和排错成本。当前已有 279 人学习下载对于毕业设计选题、系统设计或源码参考都有较高的参考价值。1. 基于HadoopSpark的金融信贷风控系统这个高分项目到底做了什么一套能跑通“原始信贷数据 → HDFS 存储 → Spark 清洗 → MLlib 建模 → 评分结果落地”的完整闭环源码这就是基于 HadoopSpark 的大数据金融信贷风险控系统。做毕业设计最怕两件事环境搭不起来或者模型跑完不知道效果怎么证明。这套源码把这两件事一次性解决了。它不是一个孤立的算法 notebook而是把 HDFS、Hive、Spark、Zookeeper 串起来的一个可演示系统。适合三类人大数据方向的毕业生、想快速建立风控项目经验的初学者、以及需要一套可复现代码去支撑答辩的从业者。对熟手而言这套东西的价值在于你不需要从零搭架构直接看数据流和调参逻辑就能拿去改。2. 系统架构与数据管道从信贷原始数据到特征宽表的完整链路2.1 技术选型考虑为什么是 HadoopSpark 而非单机处理信贷风控场景和普通的数据分析有个本质差别数据量。真实的进件申请表、征信查询流水、历史还款记录日增量就可能到百万行级别。单机 Python Pandas 能处理几百万条是极限再往上内存就撑不住更别说做复杂的特征衍生和交叉统计。Hadoop 的 HDFS 提供横向扩展的存储Spark 用分布式内存计算解决清洗和建模速度。这就是为什么这个项目的架构是“Hadoop Spark 双引擎”而不是直接用 sklearn 跑逻辑回归。组件分工我按下面这张表来切组件职责选型理由HDFS原始数据落盘与备份分布式存储扩容就是加 DataNode不需要改代码Zookeeper集群协调服务HDFS HA、HBase Region 调度都依赖它是集群稳定的基础Hive数仓元数据管理用 SQL 方式管理海量表配合 Spark 做离线分析Spark分布式计算引擎清洗、特征工程、模型训练都在同一套 API 内完成HBase评分结果存储按主键查询低延迟适合放模型输出的评分结果这套组合在生产环境里是经典搭配。毕业设计里如果数据量没那么大有些人会把 HBase 换成 MySQL但保留 HBase 的好处是能体现完整的大数据技术栈深度。如果做的是实时风控方向还可以把 Spark Streaming 加进来。这套源码默认走的是批量评分路线适合信贷审批这种 T1 或小时级的场景。2.2 数仓分层设计与表结构定义数据管道我习惯分三层来建ODS 原始层、DWD 明细层、DWS 汇总特征层。ODS 层放的是从业务系统同步过来的原始数据不做任何加工DWD 层做清洗去重、类型统一、异常值过滤DWS 层把多个维度的数据聚合成模型需要的宽表。以信贷进件数据为例ODS 层的核心表结构是这样字段类型说明apply_idstring申请单号主键user_idstring用户唯一标识ageint申请人年龄genderstring性别occupationstring职业类别编码incomedouble月收入单位元debt_ratiodouble负债率负债总额 / 月收入delinquency_timesint历史逾期次数recent_30d_queriesint最近 30 天征信查询次数loan_amountdouble申请贷款金额labelint是否违约1 表示坏客户0 表示好客户DWD 层的清洗逻辑主要做四件事按 apply_id 去重、过滤掉年龄和收入为空或明显异常的数据、统一性别和职业的取值编码、把数值型字段的空值填充为默认值。DWS 层则是在 DWD 基础上做特征衍生比如是否高负债率标记、是否有逾期记录标记、收入与申请额度的比值。2.3 ETL 清洗与特征宽表构建ETL 这层直接写 Spark SQL 每次都重跑全量虽然简单但浪费资源。项目中更常见的做法是用 PySpark 读 Hive 表处理后写回新的 Hive 表用分区字段控制增量。核心代码在下面每一步都有对应的作用from pyspark.sql import SparkSession from pyspark.sql import functions as F spark SparkSession.builder \ .appName(credit_etl_dws) \ .enableHiveSupport() \ .config(spark.sql.shuffle.partitions, 120) \ .getOrCreate() # 读取 ODS 层原始申请表 df_raw spark.sql(SELECT * FROM ods_credit_apply WHERE pt 20250101) # 第一步按申请单号去重保留最新一条 df_dedup df_raw.dropDuplicates([apply_id]) # 第二步过滤异常数据年龄限定在 18~70 岁之间 df_clean df_dedup \ .filter((F.col(age) 18) (F.col(age) 70)) \ .filter(F.col(income).isNotNull()) # 第三步衍生风控特征 df_dws df_clean \ .withColumn( debt_ratio_flag, F.when(F.col(debt_ratio) 0.5, 1).otherwise(0) ) \ .withColumn( delinquency_flag, F.when(F.col(delinquency_times) 0, 1).otherwise(0) ) \ .withColumn( loan_income_ratio, F.col(loan_amount) / F.when(F.col(income) 0, 1).otherwise(F.col(income)) ) # 第四步写入 DWS 特征宽表 df_dws.write \ .mode(overwrite) \ .saveAsTable(dws_credit_feature)这里有几个参数需要解释。spark.sql.shuffle.partitions控制的是 shuffle 阶段的分区数默认值是 200但我调成 120 是因为在测试环境里 executor 数量少分区开太多反而增加调度开销。pt 20250101是分区过滤条件跑增量时只读当天数据避免全表扫描。loan_income_ratio这个衍生特征的意思是贷款金额对收入的倍数这个值越高坏账风险越大是风控模型里信息量很高的一个特征。写完 DWS 表之后建议用df_dws.cache()缓存一次再跑后续的count()和describe()用行动操作触发缓存后续模型训练读同一个表会快不少。这也是 Spark 里一个常见提速手段。3. Spark MLlib 信贷评分模型特征工程、训练调参与评估指标3.1 特征工程的处理步骤与关键点建模之前特征工程要处理三件事特征向量组装、数值标准化、训练集测试集切分。在 Spark MLlib 里这几步都是 Transform 阶段的操作不产生真正的计算直到调用 fit 才触发。from pyspark.ml.feature import VectorAssembler, StandardScaler from pyspark.ml.classification import LogisticRegression from pyspark.ml.evaluation import BinaryClassificationEvaluator from pyspark.ml import Pipeline # 特征列清单与 DWS 宽表字段一一对应 feature_cols [ age, income, debt_ratio, delinquency_times, recent_30d_queries, debt_ratio_flag, delinquency_flag, loan_income_ratio ] # 向量组装把多列合并成稠密向量 assembler VectorAssembler( inputColsfeature_cols, outputColfeatures_raw ) # 标准化让每个特征均值为 0、方差为 1 scaler StandardScaler( inputColfeatures_raw, outputColfeatures, withMeanTrue, withStdTrue ) # 切分数据集 train_df, test_df df_dws.randomSplit([0.8, 0.2], seed42)标准化里的withMeanTrue值得注意。Spark 的 StandardScaler 默认只做方差缩放不做均值中心化因为稀疏向量减均值会破坏稀疏性。但对于信贷特征这种稠密向量把均值中心化打开能让逻辑回归收敛更快对训练是有益的。如果特征里混了类别型变量比如 gender、occupation需要先用 StringIndexer 转成数值索引再塞进 VectorAssembler。这套源码里的特征列已经全部是数值型所以省掉了这一步。3.2 逻辑回归与 GBT 两种模型训练实现信贷评分里最经典的是逻辑回归因为它可解释性强算出来的系数能直接转成评分卡权重。这里用 Pipeline 把特征工程和模型训练串起来方便后面做交叉验证和调参。# 逻辑回归模型 lr LogisticRegression( featuresColfeatures, labelCollabel, maxIter50, regParam0.01, elasticNetParam0.2, familybinomial ) # 构建 Pipeline pipeline Pipeline(stages[assembler, scaler, lr]) # 训练 lr_model pipeline.fit(train_df) # 预测测试集 lr_pred lr_model.transform(test_df) # 打印逻辑回归的系数用于评分卡转换 lr_coefs lr_model.stages[-1].coefficients lr_intercept lr_model.stages[-1].intercept print(fIntercept: {lr_intercept:.4f}) for col, coef in zip(feature_cols, lr_coefs): print(f{col}: {coef:.4f})maxIter50是迭代上限数据量过大时如果 50 轮不收敛可以再往上加。regParam0.01是 L2 正则化强度防止系数膨胀过拟合。elasticNetParam0.2表示 20% 的 L1 惩罚加 80% 的 L2 惩罚这个组合在处理相关性高的特征时比纯 L2 更稳。除了逻辑回归项目里还提供了 GBT 分类器做对比实验。GBT 在特征非线性关系比较强的场景下效果更好但缺点是调参成本高、训练时间长。核心变化就是把 Pipeline 的最后一段替换掉from pyspark.ml.classification import GBTClassifier # 梯度提升树模型 gbt GBTClassifier( featuresColfeatures, labelCollabel, maxDepth5, maxIter20, stepSize0.1, subsamplingRate0.8 ) pipeline_gbt Pipeline(stages[assembler, scaler, gbt]) gbt_model pipeline_gbt.fit(train_df) gbt_pred gbt_model.transform(test_df)GBT 的maxDepth5控制单棵树深度太深容易过拟合太浅欠拟合对于 10 万级样本量 5~6 层是比较常规的选择。subsamplingRate0.8让每棵树只用 80% 的样本这相当于加了随机性能抑制过拟合。另外featureImportances属性可以输出每个特征的重要性排序毕业设计答辩时常用来解释特征筛选的依据。3.3 模型评估AUC、KS 的计算与解释风控模型不能只看准确率因为坏样本占比通常不到 5%预测全当好客户准确率也有 95%毫无意义。所以项目用 AUC 和 KS 两个指标来评估。# 二元分类评估器 evaluator BinaryClassificationEvaluator( labelCollabel, rawPredictionColprediction, metricNameareaUnderROC ) auc evaluator.evaluate(lr_pred) print(fLogistic Regression AUC: {auc:.4f}) # 手动计算 KS按预测概率分箱累加好坏样本占比的差值 from pyspark.sql.window import Window import pyspark.sql.functions as F pred_sorted lr_pred.select( F.col(label).cast(double).alias(label), F.col(probability).alias(prob) ).withColumn( prob_pos, F.col(prob).getItem(1) ).orderBy(F.desc(prob_pos)) # 等频分箱 cdf pred_sorted.withColumn( bin, F.ntile(10).over(Window.orderBy(F.desc(prob_pos))) ).groupBy(bin).agg( F.sum(label).alias(bad_cnt), F.count(label).alias(total_cnt) ).withColumn( bad_pct, F.col(bad_cnt) / F.sum(bad_cnt).over(Window.partitionBy()) ).withColumn( good_pct, (F.col(total_cnt) - F.col(bad_cnt)) / F.sum(F.col(total_cnt) - F.col(bad_cnt)).over(Window.partitionBy()) ).withColumn( ks_value, F.abs(F.col(bad_pct) - F.col(good_pct)) ) ks cdf.agg(F.max(ks_value)).collect()[0][0] print(fKS: {ks:.4f})AUC 一般在 0.75 以上说明模型有区分能力0.85 以上就算很好的评分模型。KS 超过 0.4 通常意味着模型区分度足够进入生产流程。实际跑的时候会看到 LR 的 AUC 在 0.78~0.82 之间GBT 可能略高一点但 LR 的稳定性更好。这两个指标在论文和答辩 PPT 里各放一张图解释清楚含义基本上评委就不会质疑模型有效性。4. Hadoop集群搭建与Spark作业调优避坑4.1 从伪分布式到集群的建栈路径拿到这套源码如果直接在本地装完就跑大概率会遇到环境和资源不匹配的问题。本地开发用伪分布式没问题Hadoop 集群搭建的完整路径是先单机伪分布式再扩成真正多节点集群。伪分布式模式下NameNode 和 DataNode 在同一个进程里跑主要用来调代码逻辑和验证数据流。Hadoop 和 Zookeeper 整合是集群搭建里最容易出问题的一步。Zookeeper 的 tickTime 参数默认 2000 毫秒如果服务器负载高心跳超时就会导致 NameNode 误判紧接着触发自动切换频繁切换集群就不可用。伪分布式阶段可以不开 HA但进入多节点集群时HDFS HA 依赖 Zookeeper这一步绕不开。我的习惯是先单独把 Zookeeper 集群起来用zkServer.sh status确认三个节点里有一个 leader然后再启动 HDFS 和 YARN。Spark 集群搭建分两种模式一种是 Standalone简单直接适合学习另一种是 Spark on YARN和生产环境一致资源由 YARN 统一调度。毕业设计建议直接上 YARN 模式因为面试时问得最多的是“Spark 作业提交到 YARN 上资源怎么分配”没有实际操作经验会答不细。部署完用下面的命令验证# 启动 HDFS 和 YARN start-dfs.sh start-yarn.sh # 提交一个 Spark 自带的 Pi 计算任务验证 YARN 模式 spark-submit \ --master yarn \ --deploy-mode client \ --class org.apache.spark.examples.SparkPi \ $SPARK_HOME/examples/jars/spark-examples_*.jar 10这一步能跑通说明 Hadoop 和 Spark 的部署没有问题。如果 Pi 任务卡在提交阶段优先去 YARN 的 ResourceManager 界面看 application 日志十有八九是内存配置或队列资源不足。4.2 Spark 作业参数的经典设置Spark 作业跑不动大多数情况不是代码的问题而是参数没给够。我给一套比较稳妥的 baseline4 台 8G 内存的测试集群可以直接用spark-submit \ --master yarn \ --deploy-mode cluster \ --name credit_risk_train \ --executor-memory 4g \ --driver-memory 2g \ --executor-cores 2 \ --num-executors 3 \ --conf spark.sql.shuffle.partitions120 \ --conf spark.memory.fraction0.6 \ --conf spark.yarn.executor.memoryOverhead512 \ --jars hbase-client.jar,hbase-server.jar,hbase-common.jar \ credit_spark_train.py--executor-memory 4g是每个 executor 的堆内存YARN 还会额外分配spark.yarn.executor.memoryOverhead指定的 512M 作为 off-heap 使用所以每个容器实际申请的内存是 4.5G 左右。spark.memory.fraction0.6表示 60% 的堆内存用于执行和存储剩下 40% 保留给用户代码。如果数据量大且 join 频繁把spark.sql.shuffle.partitions调大一点否则部分分区数据会积压在一个 task 上形成数据倾斜。4.3 常见问题排查与注意要点以下五条是跑这套系统时最高频的踩坑事件按现象到原因再到解决写现象一作业提交后一直停留在 ACCEPTED不进 RUNNING。原因YARN 队列分配的容器资源比申请的少或者yarn.nodemanager.resource.memory-mb配置低于单个容器的内存需求。解决先看 ResourceManager 界面把--executor-memory调小或者调整yarn.nodemanager.resource.memory-mb让资源总量满足申请。现象二Executor 抛java.lang.OutOfMemoryError: Java heap space。原因--executor-memory不够或者spark.memory.fraction设置太高导致用户代码可用堆内存不足。解决把 executor 内存从 4g 提到 6g同时把spark.memory.fraction降到 0.5给用户代码留更多空间。现象三读写 Hive 表时提示分区目录不存在。原因Spark 和 Hive 的元数据缓存不一致或者 Hive 表的 location 被手动删过但元数据没刷新。解决执行MSCK REPAIR TABLE table_name修复分区元数据同一条命令能处理大量缺失分区。现象四任务偶发失败日志里出现Connection refused。原因某个 DataNode 挂掉或网络抖动Spark 任务重试时找不到 block。解决检查 HDFS 的健康状态hdfs dfsadmin -report确认所有 DataNode 在线。如果只是瞬时抖动直接在 spark-submit 里加--conf spark.task.maxFailures8提高重试次数。现象五训练出的模型 AUC 和测试集不一致差异很大。原因数据集切分时没用固定随机种子每次切分结果不同。解决randomSplit([0.8, 0.2], seed42)里固定 seed保证每一次复现都拿到同样的结果。这一点毕业设计里特别重要答辩时现场重跑如果指标飘忽不定会很影响可信度。5. 评分结果落地与查询演示从模型到业务的闭环5.1 结果表设计与存储选择模型训练完成后要把每个客户的风险评分写回存储层供业务系统或者演示页面查询。项目里的 HBase 结果表设计是rowkey 用user_id反转加时间戳前缀避免热点写入列族cf下存score、risk_level、model_version、predict_date四个字段。-- 如果选择 Hive 表存储评分结果结构如下 CREATE TABLE dws_credit_score ( user_id STRING, score DOUBLE, risk_level STRING, model_version STRING, predict_date STRING ) PARTITIONED BY (pt STRING) STORED AS PARQUET;risk_level的映射逻辑按分数区间划分。A 级表示低风险分数不低于 80B 级表示中等风险分数在 60 到 80 之间C 级表示高风险分数低于 60。评分越低风险越高。这个映射在现场演示时用可视化图展示比单纯报一个分数直观得多。5.2 评分查询接口的服务实现HBase 查询接口用 Java 写比较顺但毕业设计里如果只想演示效果直接用一个轻量级查询脚本就能替代# 从 HBase 读取评分结果 import happybase conn happybase.Connection(hbase-master, port9090) table conn.table(credit_score) # 按用户 ID 查询 row table.row(buser_20250101_10001, columns[bcf:score, bcf:risk_level]) print(fScore: {row[bcf:score]}, Risk Level: {row[bcf:risk_level]}) conn.close()真实部署环境里接口层通常走 Thrift 协议或者封装成 REST 服务避免客户端直连 HBase。这个源码里默认的演示方式是脚本查询加 Web 页面展示支撑答辩场景足够。5.3 演示验证与效果判断要判断模型结果是否真的合理不能只看一两条数据拍脑袋。常用的验证思路是拿训练集和测试集的分数分布做对比。好客户的分数应该集中在高分段坏客户集中低分段如果两个分布完全重叠说明模型特征选得有问题。# 预测结果分数按好坏样本分组看分布 from pyspark.sql import functions as F score_df lr_pred.select( F.col(label).alias(true_label), F.col(probability).getItem(1).alias(score) ) score_df.groupBy(true_label).agg( F.avg(score).alias(avg_score), F.stddev(score).alias(stddev_score) ).show()理想状态下好客户的评分均值在 0.75 以上坏客户的均值在 0.45 以下。如果差值少于 0.1就要回看特征工程部分可能是特征列放错了字段或者是标签漏标。6. 一条龙复现的验证技巧从数据到评分落地的完整演练最后分享一个我自己反复用的验证习惯也是给拿到源码的人的复现建议就是用一个全流程脚本把整条链路跑通从数据到评分落地一步不缺。# 一键复现流程脚本 #!/bin/bash set -ex # 第一步启动集群 start-dfs.sh start-yarn.sh # 第二步执行 ETL spark-submit \ --master yarn \ --deploy-mode client \ etl_job.py # 第三步训练模型 spark-submit \ --master yarn \ --deploy-mode client \ --executor-memory 4g \ train_job.py # 第四步输出评分结果到 Hive/HBase spark-submit \ --master yarn \ --deploy-mode client \ score_job.py执行顺序有讲究ETL 必须先跑训练依赖特征宽表评分依赖训练好的模型文件。所以脚本里用set -ex任何一个步骤失败立即终止不会带着脏数据往下走。每次重新跑完整流程前先清理旧输出目录和 Hive 表否则分区冲突会干扰结果。我有一次在答辩演练时因为之前手动重跑过中间步骤导致评分结果表的模型版本字段混着两个不同版本现场演示时分数对不上。从那以后我每次复现都强制走一遍clean → etl → train → score的完整脚本绝不手动跳过中间步骤。这个习惯帮我校准了不少细节问题也建议你拿到源码后先用这条完整链路跑一遍再考虑改模型和调参数希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Python项目结构设计:从脚本到工程化的完整指南

Python项目结构设计:从脚本到工程化的完整指南

项目结构这个话题,估计每个写过一段时间 Python 的人都会经历从“能跑就行”到“不得不重新理一下”的过程。我刚开始接触 Python 的那几年,代码基本是单脚本结构:一个文件写到底,函数、类、全局变量全堆在一起。说实话&#xff0…

2026/10/11 13:03:04 阅读更多 →
网络协议入门:从HTTP、TCP到DNS的原理与抓包实战

网络协议入门:从HTTP、TCP到DNS的原理与抓包实战

1. 这不是教科书里的抽象概念,而是你每天都在用的“网络普通话”“网络协议到底是什么?”——这个问题我第一次被问到,是在给某高校非计算机专业大二学生做通识课助教时。台下一位学设计的同学举手说:“老师,我天天用W…

2026/10/11 13:26:45 阅读更多 →
社会工程学:解码人类认知漏洞的安全防御指南

社会工程学:解码人类认知漏洞的安全防御指南

1. 社会工程学:不是黑客技术,而是对“人”这道防火墙的深度测绘你可能在某次安全培训里听过这个词,也可能在新闻里看到“骗子冒充IT部门骗走管理员密码”的案例——但社会工程学远不止于“骗术”或“钓鱼邮件”。它是一套系统性研究人类行为模…

2026/10/11 13:26:49 阅读更多 →

最新新闻

进程地址空间深度剖析:虚拟地址转换、堆栈增长与内存问题定位

进程地址空间深度剖析:虚拟地址转换、堆栈增长与内存问题定位

写进程地址空间第一篇文章的时候,我把虚拟内存的整体框架拆开讲了一遍:从代码段到栈,从堆到内存映射段,把一张内存布局图硬生生画了半小时。文章发出后,有同学私信问我:既然地址空间只是个“虚拟”的概念&a…

2026/10/11 14:45:43 阅读更多 →
Excel多表合并三大方案:Power Query/VBA/Python实战指南

Excel多表合并三大方案:Power Query/VBA/Python实战指南

简介:本资源是一份面向Excel初学者与办公人员的实用VBA自动化教程,聚焦解决多工作表批量合并这一高频痛点问题。文档详细讲解了如何通过一段可直接运行的VBA代码,将多个结构一致的Excel工作簿(如各部门销售表、各门店日报等&#…

2026/10/11 14:45:43 阅读更多 →
Python协同过滤旅游推荐系统:从矩阵构建到线上验证的完整文档指南

Python协同过滤旅游推荐系统:从矩阵构建到线上验证的完整文档指南

简介:这份文档面向计算机相关专业学生与旅游推荐系统开发者,围绕“信息过载”下如何满足用户个性化出行需求展开,可作为毕业设计、课程设计或推荐算法入门项目的参考模板。压缩包内仅含1个docx文件,约8.64MB,内容为完整…

2026/10/11 14:45:43 阅读更多 →
深度学习100道选择题:知识图谱的压力测试仪

深度学习100道选择题:知识图谱的压力测试仪

简介:本资源是一套系统性的深度学习基础理论自测题集,面向人工智能初学者、高校学生及备考求职者,旨在帮助读者快速检验监督学习、无监督学习、模型评估、正则化、降维、目标检测等核心概念的掌握程度。题库共100道高质量单选题,覆…

2026/10/11 14:45:43 阅读更多 →
DSSS抗窄带干扰MATLAB仿真:从扩频增益到频域置零与半解析BER

DSSS抗窄带干扰MATLAB仿真:从扩频增益到频域置零与半解析BER

简介:这是一份面向无线通信学习者与MATLAB仿真实践者的DSSS扩频通信抗窄带干扰仿真代码包,聚焦直接序列扩频系统在窄带干扰环境下的建模与性能分析,适合通信工程、电子信息类专业学生及需要理解扩频抗干扰机制的开发者参考。包内共3个文件&am…

2026/10/11 14:45:43 阅读更多 →
单链表基础三题详解:删除节点、反转链表与找中间节点

单链表基础三题详解:删除节点、反转链表与找中间节点

链表这块内容,大学里第一次接触的时候觉得简单,无非是节点加指针。可真到动手写题的时候,删除节点能删丢一半,反转链表能绕成环,找中间节点还会因为奇偶数量吵半天。单链表综合练习里的“删除指定值节点”“反转链表”…

2026/10/11 14:44:43 阅读更多 →

日新闻

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