KNN性能度量实操:从混淆矩阵到ROC与PR曲线绘制指南
聊KNNK近邻的时候很多人习惯丢一个准确率完事但真到了项目里尤其是类别不平衡或者误分类代价不一样的时候光看准确率会被带偏很远。这篇文章想跟你认真聊聊KNN算法的性能度量重点是ROC曲线和PR曲线的原理与绘制。无论你是刚入门机器学习还是已经在用KNN做基线模型这篇文章都适合你——我会从最基础的混淆矩阵讲起一直写到用Python实际画出两条曲线并把我在实际项目中踩过的坑一并整理出来。你把它当一篇可复用的操作笔记来看就行。1. 为什么KNN不能只看准确率1.1 准确率的陷阱先讲一个我真实遇到过的情况。某个二分类任务正样本只有5%负样本95%。我用KNN随便跑了跑准确率显示96%。乍一听非常漂亮但仔细一想就算模型把全部样本都预测成负类准确率也有95%。这意味着那5%的正样本一个都没抓到模型其实是个“废柴”。准确率过于看重“预测对了多少”但忽略了“关心哪一类”。很多业务场景里我们关心的不是整体判对率而是某个特定类别是否被识别出来。比如在医疗初筛场景漏掉一个病患的代价远大于误报一个健康人在风控场景抓不到坏账的损失也比多拦截几个好用户更严重。这时候如果你还捧着准确率当宝贝方向大概率是错的。所以KNN性能度量要往细了走。核心思路是把预测结果和真实标签拆成一个二维的交叉表再从这张表里算出一堆更细腻的指标。这张表就是混淆矩阵。1.2 混淆矩阵一切度量的起点混淆矩阵对二分类来说就是四格表真实\预测预测为正Positive预测为负Negative真实为正Actual PositiveTP真正例FN假负例真实为负Actual NegativeFP假正例TN真负例这四个值是一切性能度量的起点。TP是你“抓到的正类”FN是你“漏掉的正类”FP是“误报的负类”TN是“正确放过的负类”。我建议你在做任何分类模型评估时第一步都是打印混淆矩阵而不是急着算分数。KNN虽然算法简单但它的预测结果同样可以套进这张表里。你只有先把TP/FN/FP/TN搞清楚后面精确率、召回率、F1、ROC、PR曲线才不会被绕晕。2. KNN性能度量的关键指标拆解2.1 精确率、召回率、F1的取舍从混淆矩阵出发最常用的两个派生指标是精确率Precision TP / (TP FP)意思是“你预测为正的里面有多少是真正的正类”。它衡量的是预测的“纯度”。高精确率意味着模型报出的正样本基本都靠谱但代价往往是漏掉一些正样本。召回率Recall TP / (TP FN)意思是“真实的正类里你捞回来了多少”。它衡量的是“查全率”。高召回率意味着尽量不漏掉正样本但代价是可能产生更多误报。这两个指标天然存在矛盾。举个例子你判断一个人是不是程序员如果你只把“写了20年代码并且戴着眼镜”的人判为程序员精确率会很高但召回率会很低如果你把“用过电脑的人都算程序员”召回率上去了精确率会惨不忍睹。F1就是精确率和召回率的调和平均公式是 2 * Precision * Recall / (Precision Recall)。它试图在两者之间找一个平衡点。但F1也有局限——当你对精确率和召回率的重视程度不同时单纯看F1还是不够。我的习惯是先看业务场景决定优化目标再看F1绝不对F1盲目崇拜。2.2 从固定指标到动态曲线上面这些指标都有一个共同点它们是在一个固定的判断阈值下算出来的。KNN本身不直接输出概率但如果我们用predict_proba拿到每个样本属于正类的概率分数那么我们可以人为设定一个阈值比如分数大于0.5判为正然后算出一组精确率和召回率。问题来了为什么阈值非要取0.5如果把阈值调低一些召回率会增加精确率会下降调高一些则反过来。所以只汇报某一阈值下的一个点信息量太单薄。更好的做法是把阈值从0到1逐步滑动在每个阈值下都算出一组评估值然后把它们连成曲线这就是ROC曲线和PR曲线的由来。这样做的意义是你不再依赖某个主观确定的阈值来评价模型而是看模型在所有可能阈值下的整体表现。这对KNN这种“可以给概率分数”的模型特别合适能更全面反映模型区分正负类的能力。3. ROC与PR曲线的原理与解读3.1 ROC曲线怎么画AUC又是什么ROC曲线的横轴是假正率FPRFalse Positive Rate表示负类样本中被误判为正类的比例纵轴是真正率TPRTrue Positive Rate也就是召回率。公式分别为FPR FP / (FP TN)TPR TP / (TP FN) Recall画法就是把阈值从1逐步降到0每次都会得到一个(FPR, TPR)点把这些点连起来就是ROC曲线。ROC曲线有两条参考线一条是从(0,0)到(1,1)的对角线代表随机猜测另一条是左上角的理想点(0,1)代表完美分类。曲线越凸向左上角说明模型区分能力越强。为了量化这个“凸的程度”我们要看曲线下方的面积也就是AUC。AUC的解释很直观随机抽一个正样本和一个负样本模型给正样本打分的概率高于给负样本打分的概率这个概率就是AUC。AUC0.5相当于瞎猜AUC1完美分类。一般来说AUC在0.7以上算有可用性0.8以上比较理想0.9以上很优秀。但AUC有一个“坏脾气”它只看排序质量不太关心概率值的绝对校准。也就是说模型把所有的预测分数整体偏高或偏低只要排序顺序对AUC依然会很高。这是它在某些任务里的局限性。3.2 PR曲线适合的场景PR曲线的横轴是召回率纵轴是精确率。画法同样是把阈值从高到低滑动每个阈值下算出(Recall, Precision)点连成曲线。和ROC曲线相比PR曲线有一个非常实用的特性当负样本远多于正样本时PR曲线能更敏感地反映模型性能的变化。为什么因为ROC曲线的横轴FPR中的分母很大负样本多FP增加一点FPR变化不明显但PR曲线的纵轴是精确率分母是TPFPFP一多精确率立刻掉下去。所以在类别严重不平衡的情况下ROC曲线可能会显得“过于乐观”PR曲线则能更早暴露问题。举个例子你做一个异常检测正常样本有99%异常只有1%。一个糟糕的模型把所有样本都判为正常它的TPR是0FPR是0ROC曲线起点附近看起来还不错。但PR曲线呢召回率是0精确率是0曲线直接塌陷在原点附近一眼就能看出模型拉胯。3.3 ROC和PR要怎么选我自己的经验法则是如果数据基本平衡或者你关心整体分类能力优先看ROC曲线和AUC。如果正样本很少或者你更关心“预测为正里面有多少是真的正”那PR曲线更贴近业务直觉。条件允许的话两条曲线一起画综合判断。因为两者从不同角度反映模型性能ROC看排序能力PR看正类预测的价值。有一种情况要特别注意如果负样本极度多ROC的AUC可能虚高而PR曲线的AP平均精确率可能会低得让你清醒。项目里真的别只看一张图交差。4. 实操用Python绘制KNN的ROC和PR曲线4.1 环境准备与模拟数据实操需要的主要库是scikit-learn、matplotlib和numpy。没有安装的话先执行pip install scikit-learn matplotlib numpy我用一个生成的模拟二分类数据集来做演示这样不必依赖外部数据文件你可以直接复制跑通。这里我故意构造一个“类别不平衡”的数据方便展示PR曲线的价值from sklearn.datasets import make_classification X, y make_classification( n_samples2000, n_features20, n_informative12, n_redundant4, n_clusters_per_class1, weights[0.85, 0.15], # 85%负类15%正类模拟不平衡 flip_y0.05, # 加入少量噪声标签 random_state42 ) print(y.mean()) # 正类比例大约 0.15如果你手头有真实数据集把它换成自己的X和y就行。注意特征最好是数值型KNN需要计算距离所以如果特征里有字符串类别型一定要先做编码和标准化。4.2 训练KNN并计算概率KNN要画ROC和PR曲线核心是拿到每个样本属于正类的概率。KNeighborsClassifier的predict_proba方法返回一个二维数组第一列是负类概率第二列是正类概率。我们取第二列作为分数。这里有一个关键点KNN的概率计算方式跟树的概率不太一样它是在k个近邻中统计正类样本的比例比如k5有3个近邻是正类正类概率就是3/5。这个概率是离散的可能只有有限的几个取值但这不影响曲线的绘制。from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, stratifyy, random_state42 ) scaler StandardScaler() X_train scaler.fit_transform(X_train) X_test scaler.transform(X_test) knn KNeighborsClassifier(n_neighbors5, weightsdistance) knn.fit(X_train, y_train) y_proba knn.predict_proba(X_test)[:, 1] y_pred knn.predict(X_test)我习惯先标准化再训练。KNN是基于距离的算法如果特征尺度差异大数值范围大的特征会主导距离计算。一个特征取值范围0-1另一个0-10000那距离基本只由后者决定KNN的性能会大打折扣。标准化之后所有特征都在同一尺度上这是画曲线的前提条件之一。4.3 绘制ROC曲线绘制ROC曲线直接调用RocCurveDisplay最省事不过我更喜欢用roc_curve拿到原始数据自己控制画图细节方便后面加各种参考线。from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt fpr, tpr, thresholds roc_curve(y_test, y_proba) roc_auc auc(fpr, tpr) plt.figure(figsize(7, 5)) plt.plot(fpr, tpr, labelfKNN ROC (AUC {roc_auc:.3f})) plt.plot([0, 1], [0, 1], k--, labelRandom guess) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel(False Positive Rate) plt.ylabel(True Positive Rate) plt.title(ROC Curve - KNN) plt.legend(loclower right) plt.grid(alpha0.3) plt.show()我加了一条黑色虚线作为随机猜测的基准。如果KNN曲线在这条线下方说明模型连随机都不如基本可以回去调参或换模型了。thresholds这个返回值很多人忽略但它其实很有用。roc_curve返回的阈值是降序排列的对应每条FPR/TPR的判定阈值。你可以拿它来选业务阈值比如“我希望FPR不超过0.1对应阈值是多少”这在落地的时候很实用。4.4 绘制PR曲线PR曲线没有现成的高层展示类我用precision_recall_curve和average_precision_score来做。AP值可以理解为PR曲线下的面积是对PR曲线的一个综合度量。from sklearn.metrics import precision_recall_curve, average_precision_score precision, recall, thresholds_pr precision_recall_curve(y_test, y_proba) ap average_precision_score(y_test, y_proba) plt.figure(figsize(7, 5)) plt.plot(recall, precision, labelfKNN PR (AP {ap:.3f})) plt.xlabel(Recall) plt.ylabel(Precision) plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.title(Precision-Recall Curve - KNN) plt.legend(loclower left) plt.grid(alpha0.3) plt.show()画PR曲线的时候曲线越是靠近右上角说明精确率和召回率同时都高模型越好。但实际不平衡场景里曲线通常都是向右下角倾斜的你会看到精确率随召回率上升而下降这是正常现象。有一点需要注意precision_recall_curve返回的precision和recall数组长度比输入样本数多1最后一个是precision1, recall0的起始点一般绘图时不会察觉到区别但如果你要索引阈值对齐就要小心长度不匹配的问题。4.5 完整代码与调参思路为了方便你直接复制运行我把上面的代码合并成一个完整脚本并加上交叉验证版曲线画法。为什么要用交叉验证画曲线因为只用一次train_test_split曲线可能对某一划分比较敏感。用交叉验证画出的曲线更稳健还能同时算出AUC的平均值和标准差。import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split, StratifiedKFold from sklearn.neighbors import KNeighborsClassifier from sklearn.preprocessing import StandardScaler from sklearn.metrics import ( roc_curve, auc, precision_recall_curve, average_precision_score ) # 生成数据 X, y make_classification( n_samples2000, n_features20, n_informative12, n_redundant4, n_clusters_per_class1, weights[0.85, 0.15], flip_y0.05, random_state42 ) scaler StandardScaler() X scaler.fit_transform(X) # 简化起见整个数据先标准化 knn KNeighborsClassifier(n_neighbors5, weightsdistance) cv StratifiedKFold(n_splits5, shuffleTrue, random_state42) tpr_list [] fpr_list [] precision_list [] recall_list [] aucs [] aps [] for train_idx, test_idx in cv.split(X, y): X_train, X_test X[train_idx], X[test_idx] y_train, y_test y[train_idx], y[test_idx] knn.fit(X_train, y_train) y_proba knn.predict_proba(X_test)[:, 1] fpr, tpr, _ roc_curve(y_test, y_proba) roc_auc auc(fpr, tpr) aucs.append(roc_auc) precision, recall, _ precision_recall_curve(y_test, y_proba) ap average_precision_score(y_test, y_proba) aps.append(ap) # 存下来用于画平均曲线 tpr_list.append(np.interp(np.linspace(0, 1, 100), fpr, tpr)) fpr_list.append(np.linspace(0, 1, 100)) precision_list.append(np.interp(np.linspace(0, 1, 100), recall[::-1], precision[::-1])) recall_list.append(np.linspace(0, 1, 100)) mean_fpr np.linspace(0, 1, 100) mean_tpr np.mean(tpr_list, axis0) mean_precision np.mean(precision_list, axis0) mean_recall np.linspace(0, 1, 100) fig, (ax1, ax2) plt.subplots(1, 2, figsize(13, 5)) ax1.plot(mean_fpr, mean_tpr, labelfKNN ROC (AUC {np.mean(aucs):.3f} ± {np.std(aucs):.3f})) ax1.plot([0, 1], [0, 1], k--, labelRandom guess) ax1.set_xlabel(False Positive Rate) ax1.set_ylabel(True Positive Rate) ax1.set_title(ROC Curve (CV)) ax1.legend() ax2.plot(mean_recall, mean_precision, labelfKNN PR (AP {np.mean(aps):.3f} ± {np.std(aps):.3f})) ax2.set_xlabel(Recall) ax2.set_ylabel(Precision) ax2.set_title(PR Curve (CV)) ax2.legend() plt.tight_layout() plt.show()这段代码的核心技巧在于用np.interp对每次交叉验证的曲线做插值统一x轴这样最后才能求平均。注意PR曲线的插值要把recall和precision都倒序因为precision_recall_curve返回的精度是随阈值下降而递减的直接插值会出问题。这个细节我当年踩过一次坑现在写出来给你避雷。5. 常见问题与排查技巧实录5.1 标签不平衡带来的曲线误判我见过不少同学拿到不平衡数据后直接看ROC曲线感觉模型很优秀然后沾沾自喜。实际上这可能是假象。之前也说过负样本基数大FPR的变化被稀释ROC曲线会偏向乐观而PR曲线对这个问题极其敏感。用一个极端例子测试把所有样本预测成正类我保证你的ROC AUC可能是0.5因为TPR1FPR1落在右上角而PR曲线的AP则会接近正样本比例比如0.15。但如果你把一个“全预测为负类”的模型加进去ROC AUC是0.5AP也是0不AP会是正样本比例下方的某个坑值。总之遇到不平衡情况我会优先看AP再看AUC。5.2 KNN的k值对曲线的影响KNN的k值不仅影响精度还直接影响ROC和PR曲线的形状。k值越小模型越容易过拟合预测概率会更“极端”比如k1时概率只有0和1k值越大预测概率越平滑但也可能把不同类别的边界磨平。你可以做个简单实验把n_neighbors分别设成1、5、15、30画出曲线对比。我实际测试的效果是k5附近AUC和AP通常较高k1时AUC可能也不难看但泛化性差k30时两条曲线都会明显下滑。这说明画曲线不仅能评估模型还能辅助选超参数。你可以用网格搜索把k、weights、p值距离度量都组合出一组ROC/PR最优的参数这比单纯看准确率选参要可靠得多。5.3 KNN的概率校准问题前面提到KNN的predict_proba本质上是k个近邻中正样本的比例。这个比例不是真正意义上的概率它的取值离散并且会受距离权重影响。如果你用了weightsdistance那么概率是加权比例会更平滑一些。这对曲线的影响是什么由于KNN的概率空间不连续ROC和PR曲线可能不是非常平滑的曲线而是有一段段折线。这是正常的不用担心。但如果你的业务需要输出可靠置信度KNN的原始概率不够好建议再用CalibratedClassifierCV做一次概率校准。from sklearn.calibration import CalibratedClassifierCV calibrated_knn CalibratedClassifierCV(knn, methodisotonic, cv3) calibrated_knn.fit(X_train, y_train) y_proba_cal calibrated_knn.predict_proba(X_test)[:, 1]校准后的概率更符合统计意义上的概率但要注意校准不一定能提升AUC或AP因为它只改变概率尺度不改变排序。所以如果你只关心曲线原始概率就够了如果关心概率值本身那就校准。5.4 绘图细节和样式调整很多人忽略图表的可读性。ROC曲线和PR曲线不只是给自己看的还要给别人汇报。我整理几个实战经验坐标轴范围一定固定为0到1否则曲线会被拉伸产生“看起来特别陡峭”的错觉。加上grid(alpha0.3)方便阅读点落在什么位置。把AUC/AP直接写进图例这是行内惯例。如果有多条模型曲线对比保持颜色区分明显推荐使用tab10或Set2色系避免红绿撞色。字体大小别用默认的图例至少fontsize10标题和坐标轴标签再大一档。这些细节看着不起眼但在评审或汇报时图表清晰度直接影响别人对你模型结论的信任度。6. 个人经验总结最后聊一点我实际操作中的体会。KNN作为经典算法在大多数深度学习盛行的场景里显得很“朴素”但它依然是很多项目的第一版基线模型。正因为它简单我们更应该把评估做扎实。ROC和PR曲线不是锦上添花的可视化而是帮你理解模型到底在哪些阈值下表现好、哪些区域会崩掉的工具。我自己现在的习惯是任何分类项目不管用什么模型先画ROC和PR两张图再打印AUC、AP、精确率、召回率、F1最后根据业务需要挑一个合适的阈值。这个流程能帮我快速判断模型是否值得继续调参也能在第一时间发现数据不平衡、标签噪声等问题。KNN虽然很少是最终上线的模型但它作为对照基准非常合适——如果你发现后面换的复杂模型连KNN的AUC和AP都打不过那多半是特征工程或者评估流程出了问题而不是模型越复杂越好。希望这篇关于KNN性能度量和ROC、PR曲线绘制的经验帖能帮你在实际项目中少走点弯路。如果有更好的画图姿势或调参心得也欢迎交流。

相关新闻

GPT Images 2.5发布,局部编辑更精准不破坏原图

GPT Images 2.5发布,局部编辑更精准不破坏原图

OpenAI本周推出GPT Images 2.5时,承诺在一项常见的编辑任务上带来更好的效果:修改图片的某一部分而不破坏其余部分。为此,开发者迎来了两款新模型Flare和Sunburst,但在选择时还需做一番功课。OpenAI为两款模型列出了相同的Token计…

2026/10/14 2:35:26 阅读更多 →
Apache OpenDAL 接入 Google Cloud Storage(GCS):能力矩阵、配置项与五种认证方式全解析

Apache OpenDAL 接入 Google Cloud Storage(GCS):能力矩阵、配置项与五种认证方式全解析

数据存储后端 【免费下载链接】opendal Apache OpenDAL: One Layer, All Storage. 项目地址: https://gitcode.com/gh_mirrors/op/opendal 点击查看 免费下载 本篇技术指南以 Apache OpenDAL 的 GCS 服务模块(opendal-service-gcs,源码位于 …

2026/10/14 2:34:26 阅读更多 →
Codex CLI 0.157.0 自动启动守护进程引发用户争议

Codex CLI 0.157.0 自动启动守护进程引发用户争议

OpenAI 的 Codex CLI 从 0.157.0 版本起默认启动一个守护进程,该进程在启动 5 分钟后自动检查更新并在后台保持运行。这一变化引发了用户对资源占用、透明度和控制权的争议,部分用户在 GitHub issue 48195 中直接将其行为与恶意软件类比。 守护进程的工作…

2026/10/14 2:34:26 阅读更多 →

最新新闻

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

很长时间里,人们对于“找人起名”的想象都非常简单: 找一位有经验的老师, 报出生时间, 老师根据经验给出几个名字。 整个服务高度依赖: “这个大师厉不厉害”。 但今天再观察国内专业起名市场,会发现它已经…

2026/10/14 3:22:34 阅读更多 →
测试复盘怎么做才有用:从追责到改进

测试复盘怎么做才有用:从追责到改进

很多团队的测试复盘,开着开着就变成了批斗会。“这个bug为什么没测出来?”“谁负责的模块?”“下次注意啊。”散会之后,问题还在,下次照样出。还有一种更常见的:复盘开了,大家轮流说了一遍“我觉…

2026/10/14 3:22:34 阅读更多 →
我的国模白月光文馨妍

我的国模白月光文馨妍

原文 免责声明 全文均为AIGI 「勿辩,辩则尔胜。」 5500亿,三个啊 它的大名是文心一言。 网友叫它 ChatPPT。 我叫它文馨妍。 发布会那天我没看。 直播没看。回放也没看。 网上说,那场发布会从头到尾没拿出一台真机,全靠李总一张嘴。 我…

2026/10/14 3:22:34 阅读更多 →
让数据先会说话:数据字典、查询契约与接口语义化

让数据先会说话:数据字典、查询契约与接口语义化

> 系列:《VeapAI 自然语言操作实战》第 2 篇(核心篇)> 相关源码:veap-cloud/veap-modules/veap-gen/(在线开发与代码生成,含 src/main/resources/vm/ 模板)、veap-cloud/veap-modules/vea…

2026/10/14 3:22:34 阅读更多 →
跑得快,也查得到:性能契约、运行时间线与排障留痕

跑得快,也查得到:性能契约、运行时间线与排障留痕

> 系列:《VeapAI 自然语言操作实战》第 4 篇(基础篇)> 相关源码:veap-ui/src/components/AiAgentEngine/(调度、状态与写回)、veap-ui/src/views/ai/aiAgentProcessInstance/(实例与节点执…

2026/10/14 3:22:34 阅读更多 →
企业级 Agent 规模化落地:从单场景试点到收藏级架构蓝图,小白程序员必备指南

企业级 Agent 规模化落地:从单场景试点到收藏级架构蓝图,小白程序员必备指南

企业部署 Agent 多从单场景开始,但规模化会面临诸多挑战,如数据权威、权限边界、运行责任等。文章提出企业级 Agent 架构需厘清与公共能力、存量系统的协同关系,明确中央与业务域权责。核心设计原则包括保留核心系统权威、增强现有架构、新增…

2026/10/14 3:21:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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