流数据机器学习框架 CapyMOA

环境准备:

pip install capymoa

使用 HoeffdingTree 对流数据做在线分类:

复制代码
from capymoa.streams import FileStream
from capymoa.learners import HoeffdingTreeClassifier
from capymoa.evaluation import ProgressiveEvaluator

# 1. 构造流:假设 data/stream.csv 第一列为标签,后续列为特征
stream = FileStream(path="data/stream.csv", target_idx=0)

# 2. 选择学习器
learner = HoeffdingTreeClassifier()

# 3. 评估器:预训练 200 条样本,然后每 500 条测试一次
evaluator = ProgressiveEvaluator(pretrain_size=200, test_size=500)

# 4. 在线学习---评估循环
for X, y in stream:  
    # 在测试集上评估
    y_pred = learner.predict(X)
    evaluator.add_result(y_true=y, y_pred=y_pred)
    # 以当前样本更新模型
    learner.partial_fit(X, y, classes=stream.target_values)

# 5. 输出最终性能
print(f"在线准确率:{evaluator.get_accuracy():.4f}")
  • 深度学习流 :可通过 capymoa.learners.PyTorchOnlineLearner 将 PyTorch 模型接入流学习,结合自定义 nn.Module 实现 Transformer、CNN 等在线更新。

  • 概念漂移检测:结合 CapyMOA 的漂移检测模块(如 ADWIN),自动检测并重置模型,以应对数据分布变化。