所有文章
常用的 Git 代码
本文记录了常用的 Git 命令,并转载了一些优质博文(见相关链接)作为补充。
三个基本概念
- 工作区 (Workspace) 是计算机中项目的根目录
- 暂存区 (Index) 像个缓存区域,临时保存你的改动
- 版本库 (Repository) 分为本地仓库(Local) 和远程仓库 (Remote)
使用 Ruff
自动检查代码错误
在编写大型项目时,一些细节代码容易影响代码的正常运行。若花费太多时间检查变量命名、导入包等细节问题,则会大幅影响工作效率和心情。
Ruff
是一个代码分析工具,即 Linter,它可以用于检查代码中的语法错误、编码规范问题、潜在的逻辑问题和代码质量问题等,可以提供实时反馈和自动修复建议。
Ruff
的优点是速度非常快,且安装和使用都非常简单。使用 Ruff
可以帮助我们自动检查代码存在的错误(如变量未定义、缺失外部依赖包等),这一切都不需要真正花时间运行代码。
基于 giscus 为网站添加评论系统
giscus 是一个简单易用的评论系统,它使用 GitHub Discussions 的作为存储和管理评论的后端。网站的访客可以使用 GitHub 账号登录并发表评论,当有新评论时 GitHub 还会用邮件通知网站的主人。
本文记录了基于 giscus 为网站添加评论系统的过程。整个过程还算比较顺利,但中途遇到的关于一键配置多个页面展示评论系统的问题也困扰了我很久。将其记录于此,希望能帮助自己和他人。
基于深度学习的中文文本错误识别与纠正模型总结
中文写作是许多人工作和生活的重要内容之一,在写作中使用准确的用词和清晰的句法,能够帮助文本的阅读者快速且正确地理解作者所表达的意思。如果一段中文文本存在大量错字(例如由于书写错误导致出现不存在的汉字)、别字(每个汉字都存在,但由于字音、字形相似但意义不同而混淆了搭配)和语法错误,这将使读者感到十分困惑,影响阅读体验。
在错别字层面,现代数字化的文本大多由用户通过输入法进行编辑,输入法内置词典的正确性使得文本不易形成错字,但由于输入时选中文字的疏忽、对词语搭配具有错误的认知等原因,别字的问题依然经常出现。在正式的书面写作中,使用未经组织的、口语化的文本也经常导致语法错误的出现。在语法层面,由于用户在文本输入法,语音输入法使用上的随意性,后续又缺少审核,极易产生语法错误内容。近年来随着自媒体的热潮,人人都是信息的生产者,互联网上语法错误的内容暴增,但语法不通顺的文本极大影响了用户体验。
为实现中文文本纠错、提高汉语使用的正确性,同时减少人工校验的成本,本文初步探讨了基于深度学习的中文文本错误识别与纠正模型,包括它的核心目标、从输入数据到输出数据的流程、训练模型需要用到的数据来源、使用的前沿模型以及现有论文的测试效果等。
使用 Web Scraper 爬取私募排排网的基金数据
私募排排网的数据仅针对部分人群开放,因此在获取数据时有诸多不便。例如,网站需要用户登录才能访问、数据 CSS 样式类别名称被加密等,这些障碍使得我们无法通过常规的爬虫手段方便地获取数据。
本文尝试了多种方法爬取私募排排网的数据,包括 selenium
、浏览器工作流自动化的 Automa 插件和嵌入在浏览器开发者工具的 Web Scraper 插件。最终可行且易用的方法是使用 Web Scraper 插件,它在制作和使用爬虫程序时都十分简便。
深入理解 GRU 及其 PyTorch 实现
本文介绍了 GRU 的网络结构,梳理了 GRU 的前向传播关系,即 \(t-1\) 时间步的隐状态 \(h_{t-1}\)、\(t\) 时间步的输入 \(x_t\)、更新门 \(z_t\)、重置门 \(r_t\) 和 \(t\) 时间步的隐状态输出 \(h_t\) 之间是如何转换的。为了更好地理解 GRU,本文给出了各个张量的维数大小关系的数值示例。最后,本文提供了使用 PyTorch 实现一个 2 层 GRU 模型的代码。
matplotlib
动态绘图——神经网络训练过程可视化
本文使用 matplotlib
实现动态绘图,可以用于查看神经网络训练过程的损失值和评估指标的变化情况。
本文部分代码参考了《动手学深度学习》的
utils.py
中的函数。
饮料企业多工厂生产与补货优化
本文基于某饮料企业的工厂、仓库与商品相关的历史信息,结合随机模拟的售价与成本数据,构建了多工厂、多仓库的生产与补货优化模型。
数值试验表明,本文构建的优化后的生产与补货模型能够比基线模型(简单基于历史销量而固定生产量)多获得约 500 万元的利润,且在补货行为上更具优势。对工厂和仓库容量的灵敏度分析表明,工厂 2 和 DC4、5、7、14 多具有当前容量较小、运输成本低、历史销量高等特点,对它们进行扩容能够取得显著的回报增益。对整托约束的松弛表明,整托运输虽以节省运输成本为目的,但实际却可能造成运输资源的浪费,而考虑适当放松整托约束有潜力能够提高约 100 万元的利润。
使用 Conformal Learning 预测企业信贷违约情况
本文使用 8 种经典的分类器,基于逆概率错误进行 Conformal Learning。
本文使用了 nonconformist
包,它在使用 Conformal Learning 进行分类预测时的核心步骤是:
- 在训练集上训练,这一步和常规的机器学习训练相同。
- 在校准集上校准,得到每个校准集样本属于每个标签的预测概率。
- 用一个 ErrFunc 衡量每个校准集样本的预测效果,作为 nonconformity score。最简单的是
InverseProbabilityErrFunc
,它等于1-predict_probability[true_y]
。例如,某个样本的真实标签是 1,而模型预测出该样本属于标签 1 的概率是 0.9,则 ErrFunc 的值是 1-0.9=0.1。 - 在测试集上测试,得到每个测试集样本属于每个标签的预测概率。
- 用 ErrFunc 衡量每个测试集样本的预测效果。
- 对每一个测试集样本,计算:有多少比例的校准集样本的 nonconformity score 大于或等于当前测试样本的 nonconformity score,记为 p。p 越大,说明校准集中有非常多的样本比当前测试集样本的预测效果更差,说明第 j 个测试样本属于第 i 个类的可能性越大。
- 返回 p > significance。得到一个 N*2 的 True 和 False 组成的二维矩阵,每一行代表一个测试集样本,每一列代表是否将该标签纳入该样本的 prediction set 中。
本项目的完整展示文件在这里。