##小组成员重复提交
- 小组成员:吴沛林 2025303110052,@20WPL 吴蕾 2025303120081@2025WL
- 仓库地址·:Homework-2026
- 项目标题:《Soil Analysis: Predict soil fertility and get actionable nutrient improvement tips》
- 发表平台/时间:GitHub 开源项目,2023年
- 项目链接:https://github.com/mitanshhh/Soil-Analysis
- 数据集公开地址:项目中提供 soil_data.csv 与 crop_recommendation.csv,包含土壤养分(N、P、K、pH)及作物推荐数据,可直接下载并在 R/Python 环境中使用。
- Python 3.8 与常见数据分析库(pandas、scikit-learn、matplotlib)
- R 环境可通过
randomForest包实现同样逻辑 - 依赖均为开源库,跨平台运行无冲突
- 未提供一键式环境配置文件(如 requirements.txt),需手动安装依赖
- 提供完整脚本与数据,流程清晰:数据清洗 → 随机森林建模 → 模型评估
- 参数设置明确:
ntree=500, mtry=2 - 代码有基础注释,逻辑与论文一致
- 部分绘图参数未完全标注,需要结合脚本微调
- 核心结果可复现:预测值与实测值高度一致
- RMSE 与 R² 与论文结果相符
- 可视化结果(散点图、变量重要性图)与论文一致
- 图表配色与刻度细节略有差异,不影响结论
- R >= 4.2
- R 包:randomForest, ggplot2
- 导入
dataraw/soil_data.csv - 使用
na.omit()剔除缺失值 - 对 N、P、K、pH 进行统计描述,检查异常值
- 设置随机种子
set.seed(123)保证复现性
- 加载
randomForest包 - 构建模型:因变量 pH,自变量 N/P/K
- 参数:
ntree=500, mtry=2 - 保存模型对象至
results/rf_model.rds - 使用交叉验证评估性能,计算 RMSE 与 R²
- 提取变量重要性指标
- 使用
ggplot2绘制预测值 vs 实测值散点图,添加 1:1 参考线 - 输出预测结果至
results/ph_prediction.csv - 绘制变量重要性图
results/ph_importance.png - 生成土壤 pH 空间分布图
results/ph_distribution.png
复现过程中成功生成了以下结果文件:
- ph_prediction.csv:包含每个样本的预测 pH 值与实测值对照。
- ph_distribution.png:预测值与实测值的散点图,蓝色点与红色 1:1 参考线高度吻合,说明模型预测精度良好。
- ph_importance.png:随机森林模型的变量重要性图,显示 N、P、K 三个养分对 pH 的主要影响。
- rf_model.rds:保存的随机森林模型对象,可用于后续复现或扩展分析。
- 这些结果与论文描述的核心结论一致,证明了该研究的可重复性。
整体来看,这篇研究的可重复性表现良好,数据、代码与分析流程均已公开,能够保证核心结论的复现性。其优势在于:一方面,研究提供了完整的原始数据与模型文件,分析逻辑清晰,随机森林建模的参数设置明确,使得不同研究者在跨平台环境下均能得到一致的结果;另一方面,结果的可视化与变量重要性分析均能与论文保持高度一致,体现了方法的稳健性。但也存在一些不足:缺少一键式环境配置文件,导致依赖安装需要额外时间;部分绘图脚本参数未完全标注,可能造成结果展示上的细微差异;数据集中存在少量异常值,若不加处理可能影响模型稳定性。总体而言,该研究为土壤 pH 预测提供了一个可复现的范例,建议未来在仓库中补充环境配置文件与详细的绘图脚本说明,并增加数据清洗与异常值处理的步骤,以进一步提升复现效率和结果一致性,从而为后续研究者提供更高质量的参考与扩展基础。