3个版本

使用旧的Rust 2015

0.1.2 2018年6月27日
0.1.1 2018年6月20日
0.1.0 2018年6月20日

机器学习类别中排名第851

MIT/Apache

38KB
891 代码行

openml-rust

OpenML的Rust接口。

该包的目的是让Rust代码能够访问OpenML托管的学习数据。因此,在Rust中开发的学习算法可以轻松应用于最先进的数据集,并通过可重复的方式与现有实现进行比较。

示例

extern crate openml;

use openml::prelude::*;
use openml::{PredictiveAccuracy, SupervisedClassification};
use openml::baseline::NaiveBayesClassifier;

fn main() {
    // Load "Supervised Classification on iris" task (https://www.openml.org/t/59)
    let task = SupervisedClassification::from_openml(59).unwrap();

    println!("Task: {}", task.name());

    // run the task
    let result: PredictiveAccuracy<_> = task.run(|train, test| {
        // train classifier
        let nbc: NaiveBayesClassifier<u8> = train
            .map(|(x, y)| (x, y))
            .collect();

        // test classifier
        let y_out: Vec<_> = test
            .map(|x| nbc.predict(x))
            .collect();

        Box::new(y_out.into_iter())
    });

    println!("Classification Accuracy: {}", result.result());
}

目标

  • 获取数据集
  • 获取任务
  • 获取分割
  • 任务类型
    • 监督分类
    • 监督回归
    • 学习曲线
    • 聚类
  • 运行任务
    • [ ] 用于任务的Learner/Predictor特质
    • 任务运行器接受学习和预测的闭包
    • 数据类型策略
      • a: 负担ML模型处理动态类型
      • b: 将所有内容转换为f64
      • c: 将类型转换作为特征提取管道的一部分
      • 泛型允许在编译时选择类型
  • 使openml.org可选(手动构建任务)

未来可能目标

  • 流支持
  • 运行支持
  • 完整的OpenML API支持
  • 身份验证
  • 更多任务
    • 监督数据流分类
    • 机器学习挑战
    • 生存分析
    • 子组发现

非目标

  • 机器学习算法的实现

依赖项

~9–18MB
~235K SLoC