这个项目能做什么

River 是一个专注于在线机器学习的开源 Python 库,即从数据流中一次一个观测地学习。它被介绍为 creme 和 scikit-multiflow 项目合并的成果,其既定目标是成为一个用户友好的流式数据机器学习库。 核心接口是增量的:模型暴露 learn_one 和 predict_one,因此随着每个样本到达,预测和更新可以交错进行,而无需重新访问过去的数据。一个快速入门示例使用由 StandardScaler 后接 LogisticRegression 组成的流水线,在内置的 Phishing 数据集上训练逻辑回归,同时与模型一起更新 Accuracy 指标。 安装通过 pip(pip install river)进行,并为 Linux、macOS 和 Windows 发布了 wheel。该项目面向 Python 3.11 及以上版本。核心在线接口不依赖 pandas;小批量接口(learn_many、predict_many、predict_proba_many、transform_many)构建在 pandas 之上,并通过 river[pandas] 额外项选择启用。可以从 GitHub 安装开发版本,这需要 Cython 和 Rust。 涵盖的算法族包括具有多种优化器的线性模型、决策树和随机森林、近似最近邻、异常检测、漂移检测、推荐系统、时间序列预测、bandit、因子分解机、不平衡学习、聚类、bagging/boosting/stacking 和主动学习。其他在线实用工具包括特征提取和选择、在线统计和指标、预处理、内置数据集、渐进式模型验证和模型流水线。 README 明确说明了在线学习何时适用:当模型应该从新数据中学习而不重新访问过去时,当对概念漂移的鲁棒性很重要时,或者当开发应该类似于基于事件的生产环境时。它还指出,River 强调清晰性和用户体验而非性能,在处理单个样本时速度很快,并与 Python 生态系统的其余部分集成。 文档托管在 riverml.xyz,并附有软件包发布、awesome-online-machine-learning 列表、2022 年 GAIA 演讲和关于在线聚类的 KDD'22 论文的链接。该项目采用 BSD 3-clause 许可,有公开路线图,并欢迎讨论、问题和贡献。有一篇 JMLR 论文可供引用。