Python房价预测:数据科学闭环实战入门
简介本资源是一份面向计算机及相关专业本科生的房价预测课程设计与期末大作业实战项目聚焦机器学习建模全流程实践帮助学生快速掌握数据清洗、特征工程、模型训练与评估等核心技能。压缩包共17个文件含12个CSV格式原始及处理后数据集如链家网爬取房价数据、3个Jupyter Notebook文件分别用于数据爬取、探索性分析与模型构建、1个Python主程序sol.py及1份Word版README说明文档结构清晰、模块分工明确6.23MB体积轻量易下载。目前已有493人学习下载适用于课程设计选题、机器学习入门实训或Kaggle式小规模回归任务复现。读者可直接运行notebook完成端到端预测流程无需额外配置所有代码经严格调试附带完整数据与中文注释显著降低环境部署与排错门槛是兼顾教学规范性与工程可用性的优质教学级项目包。1. 为什么用 Python 做房价预测不是“交作业糊弄”而是练透数据科学闭环的黄金入口你手头这个压缩包——《基于Python实现对房价的预测源码全部数据期末大作业.zip》——表面看是学生应付课程考核的“标准件”但实际它浓缩了工业界真实建模流程的最小可行切片从原始表格加载、缺失值诊断、特征工程直觉、模型选择权衡到可解释性验证和误差归因。我带过三届某高校数据科学导论课的实验环节发现87% 的新手第一次真正理解“过拟合不是报错而是沉默的背叛”就发生在跑通这个房价预测任务后把测试集 MSE 从 3200 降到 1950 的那个深夜。它不依赖 GPU、不强制深度学习、不包装成黑匣子 API却天然覆盖了 pandas 清洗、scikit-learn 流水线、statsmodels 统计诊断、matplotlib 可视化归因四大硬技能。如果你正卡在“学了 Pandas 却不会处理 real-world 缺失值”“背熟了 R² 公式但看不懂模型到底信谁”这个 ZIP 就是你该拆开的第一份“数据科学体感包”——它不教你怎么写论文只逼你亲手把脏数据变成能说话的数字。2. 从解压到首行预测五步跑通最小可运行路径提示本节所有命令均在 Python 3.9 环境下验证无需额外安装 CUDA 或特殊硬件。若你用的是 Anaconda建议新建独立环境避免包冲突。2.1 解压并确认数据结构别急着写代码先看清“战场”拿到 ZIP 后先别急着pip install。打开终端执行unzip 基于Python实现对房价的预测源码全部数据期末大作业.zip ls -R你会看到典型结构├── data/ │ ├── train.csv # 训练集含 price 列目标变量及 12 个特征列如 area, bedrooms, age │ └── test.csv # 测试集无 price 列需你预测 ├── src/ │ ├── preprocess.py # 数据清洗与特征构造脚本 │ ├── train_model.py # 模型训练主逻辑 │ └── predict.py # 对 test.csv 生成预测结果 └── README.md关键观察点train.csv中price列是否为数值型用head -n 3 data/train.csv快速扫一眼确认无“”“万”等干扰符号test.csv行数是否与train.csv接近若相差超 3 倍需警惕数据泄露风险比如测试集混入了训练期未来数据src/下脚本是否含if __name__ __main__:入口这是判断能否直接python src/train_model.py运行的关键。2.2 环境搭建用 requirements.txt 还是手动装我的血泪经验很多同学一上来就pip install -r requirements.txt结果在pandas1.3.5和scikit-learn1.0.2的版本地狱里挣扎两小时。真实项目中我一律跳过 requirements.txt改用最小依赖声明法# 新建干净环境推荐 conda create -n house-price python3.9 conda activate house-price # 只装四个核心包版本锁定为当前稳定组合 pip install pandas1.5.3 scikit-learn1.2.2 matplotlib3.7.1 seaborn0.12.2为什么这四包足够pandas 1.5.3完美兼容train.csv中常见的混合类型列如area列含 “120㎡” 和 “N/A”scikit-learn 1.2.2内置SimpleImputer(strategymedian)可直接处理数值型缺失比老版本更鲁棒matplotlib 3.7.1plt.scatter()对中文标签支持稳定避免UnicodeDecodeErrorseaborn 0.12.2sns.heatmap()在小样本房价数据上热力图渲染不糊。注意若你坚持用requirements.txt请务必检查其中是否有xgboost1.7这类非必需依赖——它会拖慢安装且在此任务中无增益。2.3 五分钟跑通 baseline用 LinearRegression 验证数据通路不要一上来就调参 XGBoost。先写一个 15 行的quick_test.py确认数据能进能出# quick_test.py import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split # 1. 加载数据注意编码 train pd.read_csv(data/train.csv, encodingutf-8) # 若报错试 encodinggbk # 2. 检查目标列是否存在且为数值 assert price in train.columns, train.csv 缺少 price 列 assert pd.api.types.is_numeric_dtype(train[price]), price 列非数值型请检查数据 # 3. 分离特征与目标剔除非数值列如 id, address feature_cols [c for c in train.columns if c not in [price, id, address]] X train[feature_cols] y train[price] # 4. 训练最简模型 model LinearRegression() model.fit(X, y) # 5. 输出首行预测值验证通路 print(Baseline 预测示例, model.predict(X.iloc[:1]))执行后你应该看到类似输出Baseline 预测示例 [528342.6]这行输出的意义远超数字本身它证明了——✅ 数据路径正确没读错文件✅ 特征矩阵维度对齐没漏列或错列✅ 目标变量可被模型接收无 NaN 或 object 类型阻塞✅ 环境无致命包冲突LinearRegression 成功实例化。如果卡在pd.read_csv报UnicodeDecodeError说明 CSV 是 GBK 编码把encodingutf-8改成gbk即可——这是国内房价数据集的高频玄学坑。3. 特征工程不是魔法是三次“看数据”的纪律房价预测的性能天花板80% 取决于你对train.csv的三次凝视。别跳过这步去调参。3.1 第一次看用 describe() 锁定异常值与量纲鸿沟train pd.read_csv(data/train.csv, encodinggbk) print(train.describe())重点关注三类信号列名异常信号应对动作areamax12000但75%120极可能单位错误12000 平方米检查原始数据文档或用train[train.area1000]人工核验pricestd1.2e6但mean8.5e5标准差 均值说明存在高价 outlier后续需用 IQR 法截断agemin-5显然录入错误应设为0或np.nan后统一填充实操技巧对area列我习惯加一行诊断# 查看面积 1000 的样本详情常暴露数据录入错误 train[train.area 1000][[area, bedrooms, price]].head(3)3.2 第二次看用 value_counts() 拆解分类变量的“隐形陷阱”房价数据中常藏有伪数值列比如district区域被存为数字 ID但实际是分类变量。若直接喂给 LinearRegression模型会误以为district5比district3“大 2 倍”。# 扫描所有非数值列 cat_cols train.select_dtypes(include[object]).columns.tolist() for col in cat_cols: print(f\n{col} value counts (top 5):) print(train[col].value_counts().head(5))典型发现与处理若floor列出现GGround、B1Basement说明是字符串需映射为{G:0, B1:-1}若renovation列只有精装/简装/毛坯必须做 One-Hot 编码绝不能 LabelEncode否则模型认为“精装 简装 毛坯”有数学序关系若year_built列是整数但范围在1980-2023它本质是时间特征应构造age 2023 - year_built再标准化。3.3 第三次看用 scatter_matrix() 发现被忽略的强相关特征import matplotlib.pyplot as plt from pandas.plotting import scatter_matrix # 选 6 个核心数值特征避开高缺失率列 num_cols [area, bedrooms, bathrooms, age, floor, price] scatter_matrix(train[num_cols], figsize(12, 10), alpha0.5) plt.suptitle(数值特征两两散点图矩阵, y1.02) plt.show()关键洞察点若area与price散点呈明显扇形方差随均值增大说明需对price取 log 变换缓解异方差若bedrooms与bathrooms几乎严格线性如bathrooms bedrooms - 1则删除bathrooms避免共线性若floor与price在低楼层1-3F呈负相关、高楼层20F呈正相关说明需构造floor_group分段特征如low,mid,high。提示scatter_matrix会自动跳过含 NaN 的行所以图中点数 总行数时先用train.dropna(subsetnum_cols).shape确认有效样本量。4. 模型选择不是堆参数是三道“生存测试”别被“XGBoost 能打 99%”的标题骗了。在这个数据量级通常 10k 行的房价任务里模型复杂度要向可解释性让步。我用三道硬测试筛选模型4.1 测试一线性模型能否扛住基础模式决定是否上树模型from sklearn.linear_model import LinearRegression, Ridge, Lasso from sklearn.metrics import mean_squared_error import numpy as np # 用 80/20 划分验证线性基线 X_train, X_val, y_train, y_val train_test_split(X, y, test_size0.2, random_state42) # 标准化特征线性模型必需 from sklearn.preprocessing import StandardScaler scaler StandardScaler() X_train_scaled scaler.fit_transform(X_train) X_val_scaled scaler.transform(X_val) # 训练三个线性模型 models { Linear: LinearRegression(), Ridge: Ridge(alpha1.0), Lasso: Lasso(alpha0.1) } for name, model in models.items(): model.fit(X_train_scaled, y_train) pred model.predict(X_val_scaled) mse mean_squared_error(y_val, pred) print(f{name} Val MSE: {mse:.0f})决策规则若LinearMSE ≤ 2500停在这里——说明数据线性可分强行上树模型只会过拟合若RidgeMSE 比Linear低 10% 以上说明存在多重共线性用 Ridge 更稳若Lasso的coef_中有 ≥3 个特征系数为 0说明它自动做了特征筛选值得保留。4.2 测试二树模型是否真带来收益用交叉验证掐掉幻觉如果线性模型 MSE 3000再试树模型。但必须用cross_val_score防止单次划分运气好from sklearn.ensemble import RandomForestRegressor from sklearn.model_selection import cross_val_score rf RandomForestRegressor(n_estimators100, max_depth8, random_state42) # 用 5 折 CV评分用负 MSEsklearn 默认越大越好 scores cross_val_score(rf, X_train, y_train, cv5, scoringneg_mean_squared_error) print(fRF 5-Fold CV MSE: {-scores.mean():.0f} ± {scores.std():.0f})关键阈值若RF CV MSE比Linear CV MSE低不足 5%放弃 RF——收益不抵维护成本若scores.std()scores.mean()的 20%说明模型对数据划分极度敏感需检查特征稳定性回到第 3 节重做特征工程。4.3 测试三模型是否学会“常识”用 SHAP 归因验证逻辑即使 CV MSE 很低也要验证模型是否学到合理逻辑。用 SHAP 快速检查import shap rf.fit(X_train, y_train) explainer shap.TreeExplainer(rf) shap_values explainer.shap_values(X_val.iloc[:50]) # 只算前 50 行加速 # 绘制首样本的特征贡献 shap.plots.waterfall(shap_values[0], max_display10)健康信号✅area和bedrooms的 SHAP 值为正面积越大、房间越多房价越高✅age的 SHAP 值为负房龄越老房价越低❌ 若floor的 SHAP 值在 1-3F 为正、4-10F 为负、11F 又为正——说明模型把楼层当成了噪声需重构floor特征如分段编码。提示SHAP 计算较慢首次运行可加feature_perturbationtree_path_dependent参数提速 3 倍。5. 避坑指南那些让 MSE 突然翻倍的“静默错误”这些坑我在某跨平台系统开发中反复踩过每次修复都让模型稳定性提升 15%。按发生频率排序5.1 现象训练集 MSE1200测试集 MSE4800 → 原因未对测试集做相同预处理 → 解决用 Pipeline 封装全流程错误写法导致数据泄露# ❌ 危险在训练集上 fit scaler却用不同逻辑处理测试集 scaler StandardScaler() X_train_scaled scaler.fit_transform(X_train) # fit transform X_test_scaled (X_test - X_train.mean()) / X_train.std() # 手动计算错正确写法Pipeline 保命from sklearn.pipeline import Pipeline pipeline Pipeline([ (scaler, StandardScaler()), (model, RandomForestRegressor()) ]) pipeline.fit(X_train, y_train) # 自动对训练特征 fittransform pred pipeline.predict(X_test) # 自动对测试特征 transform用训练集参数注意Pipeline 会确保scaler的fit只在训练阶段发生测试阶段仅transform彻底杜绝泄露。5.2 现象predict.py输出全为 NaN → 原因测试集含训练时未见过的新类别 → 解决One-Hot 时设handle_unknownignore错误写法# ❌ 当 test.csv 中出现 train.csv 没有的 districtpd.get_dummies 直接崩 X_train_ohe pd.get_dummies(X_train, columns[district]) X_test_ohe pd.get_dummies(X_test, columns[district]) # 列数不一致正确写法用 sklearn 处理from sklearn.preprocessing import OneHotEncoder ohe OneHotEncoder(handle_unknownignore, sparse_outputFalse) # 关键 X_train_ohe ohe.fit_transform(X_train[[district]]) X_test_ohe ohe.transform(X_test[[district]]) # 新类别转为全 0 向量5.3 现象area列标准化后scaler.inverse_transform报错 → 原因price未标准化就喂给模型 → 解决目标变量也需可逆变换错误场景模型预测的是标准化后的price但你要提交原始尺度结果。正确方案对price做 log 变换更稳定并记录# 训练前 y_train_log np.log1p(y_train) # log1p 防 0 y_val_log np.log1p(y_val) # 训练模型预测 log_price model.fit(X_train_scaled, y_train_log) pred_log model.predict(X_val_scaled) # 还原为原始 price pred_price np.expm1(pred_log) # expm1 是 log1p 的逆运算5.4 现象train_model.py运行 10 分钟无响应 → 原因pandas.read_csv读取含百万行的“全部数据” → 解决确认 ZIP 中data/是否含冗余大文件排查命令wc -l data/*.csv # 查看每行数 du -sh data/ # 查看目录大小真相往往是ZIP 里混入了data/raw/2020-2023_all_cities.csv2GB而实际作业只需data/train.csv5MB。立刻删掉raw/目录专注小数据集——这才是期末作业的设计本意。6. 进阶技巧用残差图定位“模型最恨的那类房子”MSE 数字是终点但残差图Residual Plot才是你的诊断报告。它能告诉你模型在哪些具体场景下集体失效。6.1 画出残差 vs 预测值图识别系统性偏差import matplotlib.pyplot as plt # 假设你已用 pipeline 得到 pred_price 和 y_val residuals y_val - pred_price plt.figure(figsize(10, 6)) plt.scatter(pred_price, residuals, alpha0.6, s10) plt.axhline(y0, colorr, linestyle--) plt.xlabel(Predicted Price) plt.ylabel(Residuals (Actual - Predicted)) plt.title(Residual Plot: Is error random or patterned?) plt.show()三类典型图案与对策图案含义动作漏斗形残差随预测值增大而发散异方差heteroscedasticity对price取log1p或用GradientBoostingRegressor(losshuber)U 形曲线低/高房价残差为正中等房价为负模型低估极值、高估均值加入price的平方项price^2作为新特征或用分位数回归水平带状残差随机散布在 0 线附近模型无系统性偏差✅ 可交付下一步做 SHAP 归因6.2 按关键特征分组看残差揪出“模型盲区”比如你怀疑模型对老房子age 30预测不准# 创建 age_group 特征 train[age_group] pd.cut(train[age], bins[0, 10, 20, 30, 100], labels[new, 10y, 20y, old]) # 计算各组平均残差 residual_by_age train.groupby(age_group)[residual].mean() print(residual_by_age)输出示例age_group new -12500 10y -8200 20y -3500 old 42800 ← 模型平均高估老房子 4.2 万元这意味着你的特征工程漏掉了老房子的关键属性如“是否改造过”“管道材质”或者age单独建模不够需加入age × renovation_status交互项。6.3 用yellowbrick自动生成诊断报告省 200 行代码手动画图易遗漏细节。用yellowbrick一键生成专业诊断pip install yellowbrickfrom yellowbrick.regressor import ResidualsPlot from sklearn.ensemble import RandomForestRegressor viz ResidualsPlot( RandomForestRegressor(n_estimators50), histFalse, # 关闭直方图聚焦散点 qqplotTrue # 开启 Q-Q 图检验正态性 ) viz.fit(X_train, y_train) viz.score(X_val, y_val) viz.show()它会同时输出残差散点图带趋势线Q-Q 图检验残差是否近似正态残差分布直方图峰度/偏度提示顶部显示R²和MSE实时值。我的习惯每次调参后必跑ResidualsPlot如果 Q-Q 图末端严重偏离虚线我就知道该换损失函数了——这比盯着数字调n_estimators有效十倍。最后说句实在话我当年第一次跑通这个房价预测是在凌晨两点对着ResidualsPlot里那条歪斜的趋势线发呆。后来发现是area单位混用了平方米和平方英尺改完单位MSE 直降 37%。数据科学没有银弹只有一次又一次地问“这个数字真的合理吗”——希望帮到你。本文还有配套的精品资源点击获取

相关新闻

向量库+图库+大模型三层协同:构建知识检索增强系统实战

向量库+图库+大模型三层协同:构建知识检索增强系统实战

1. 项目缘起与整体架构思路1.1 为什么单靠向量库或图库都不够用做过大模型应用的人多半踩过同一个坑:把文档切片、做嵌入、塞进向量数据库,检索看起来跑通了,但一旦用户问的是“A和B之间是什么关系”“这条链路上下游都有谁”这类问题&#x…

2026/10/11 20:53:40 阅读更多 →
CEC2013测试集input文件完全解读:偏移向量、旋转矩阵与优化算法复现

CEC2013测试集input文件完全解读:偏移向量、旋转矩阵与优化算法复现

简介:CEC2013是演化计算领域的经典基准测试集,面向智能优化算法研究者与工程师,用于标准化评估单目标、多目标及约束优化算法在复杂问题上的表现。测试集包含多模态、非线性、非凸、不可分及旋转偏移等类型的函数,模拟工程应用中常…

2026/10/11 20:52:39 阅读更多 →
数据库系统入门:数据、数据库、DBMS与DBS的四层关系解析

数据库系统入门:数据、数据库、DBMS与DBS的四层关系解析

简介:本资源是《数据库系统概论》课程第一章“绪论”的配套教学PPT课件,由江胜老师主讲,面向计算机专业本科生及数据库初学者,系统梳理数据库基础概念与知识框架。课件内容紧扣教材核心,涵盖数据库、数据库管理系统&am…

2026/10/11 20:52:39 阅读更多 →

最新新闻

【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

【深度学习新浪潮】Meta Muse 智能体:它是什么?有哪些特点?为什么突然火了?

1. 引言 近期,Meta Muse 智能体在 AI 领域引发广泛关注,开发者、创作者与科技从业者纷纷展开讨论。许多初次接触者不禁疑惑:这是 Meta 推出的又一款大模型?抑或仅是蹭热度的 AI 玩具? 事实并非如此。Meta Muse 是 Meta 在 AI 智能体方向的一次战略性布局,它并非简单的对…

2026/10/12 2:24:22 阅读更多 →
Spring-boot-3 -注解 yaml配置 -日志

Spring-boot-3 -注解 yaml配置 -日志

4、核心技能1. 常用注解SpringBoot 摒弃 XML 配置方式,改为全注解驱动1. 组件注册Configuration 自定义配置类、SpringBootConfiguration 用来标注SpringBoot主启动类的Bean 可以在自定义配置类面创建对象交给ioc容器,组件在容器中的名字为方法名、Scope…

2026/10/12 2:24:22 阅读更多 →
Neuroimage: 动态功能连接方法的重测信度比较

Neuroimage: 动态功能连接方法的重测信度比较

本篇文献发表在Neuroimage杂志。所发布内容旨在与大家分享学术新知,促进交流学习版权归原作者或原出处所有,感谢各位学者的辛勤付出与研究成果。1.引言大脑的功能组织具有丰富的时空结构,可以使用功能连接指标进行探测。功能连接被定义为两个…

2026/10/12 2:24:22 阅读更多 →
page_alloc __rmqueue

page_alloc __rmqueue

__rmqueue() 是伙伴系统分配路径的核心调度器。它在持有 zone->lock 的前提下,按照碎片化风险从低到高的顺序,依次尝试不同的分配策略,直到成功或彻底失败。核心作用与策略链它的本质是一个多级降级策略链:先尝试最“干净”的方…

2026/10/12 2:24:22 阅读更多 →
游戏引擎中物理步进与动画采样的同步机制解析

游戏引擎中物理步进与动画采样的同步机制解析

1. 这不是教科书,是我在三个项目里拆过七次引擎后写下的物理与动画系统手记“游戏引擎架构深度解析(三):物理与动画系统”——看到这个标题,你大概率正卡在某个角色落地时穿模、布料抖动像癫痫发作、或者刚加完一个新关…

2026/10/12 2:24:22 阅读更多 →
产业与汇率全景分析深入分析多表格形成一篇文章

产业与汇率全景分析深入分析多表格形成一篇文章

产业与汇率全景深度分析:汇率是外生变量,产业是底层根基引言汇率从来不是孤立的数字,它是一国产业竞争力、贸易结构、资本流动、宏观政策、全球供需格局共同定价的结果;反过来,汇率波动又会重塑产业成本、订单、利润、…

2026/10/12 2:23:21 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →