< 返回版块

0x5F3759DF 发表于 2020-12-03 22:52

Tags:ai,ml, machine learning, artificial intelligence, 人工智能, 机器学习

The rusty-machine

一种拆包即用的机器学习模块。


结构

这个模块包括两个基本模组:学习和线性代数。

学习

这个学习模组包括所有的机器学习模组。包括算法,模组和相关工具。

目前支持的机器学习方法包括:

  • 线性回归
  • 逻辑回归
  • 广义线性模型
  • K-Means集群分析
  • 神经网络
  • 高斯过程回归
  • 支撑向量机
  • 高斯混合模型
  • 单纯倍氏分频器
  • 聚类算法

线性代数

线性代数模组重新导出了一些线性代数库中的结构体和特征。这个模组提供了一种使用该库中常用线性代数的简便方法。


用法

各个模组的特定用法已经在各模组的特定文档中说明了,这个部分会着重描述该库的通用流程。

这个被包括在学习模块中的模组需要实现 SupModel 或者UnSupModel。它们都会提供 train 和一个 predict 功能,此功能为这个模组提供了接口。

你需要用你选择的选项将该模组实例化,然后用训练数据进行训练,再用测试数据进行预测。目前,交叉验证,数据处理和其他很多功能需要用户自己处理。

这里是高斯过程回归的一个用法示例:

use rusty_machine::linalg::Matrix;
use rusty_machine::linalg::Vector;
use rusty_machine::learning::gp::GaussianProcess;
use rusty_machine::learning::gp::ConstMean;
use rusty_machine::learning::toolkit::kernel;
use rusty_machine::learning::SupModel;

// 首先获取一些数据。

// 一些示例训练数据。
let inputs = Matrix::new(3,3,vec![1.,1.,1.,2.,2.,2.,3.,3.,3.]);
let targets = Vector::new(vec![0.,1.,0.]);

// 一些示例测试数据。
let test_inputs = Matrix::new(2,3, vec![1.5,1.5,1.5,2.5,2.5,2.5]);

// 现在设置好我们的模组
// 这几乎是rusty-machine 中最复杂的模组了!

// 设置平方指数核函数,长度参数 2,宽度参数 1。
let ker = kernel::SquaredExp::new(2., 1.);

// 零函数
let zero_mean = ConstMean::default();

// 用核函数,平均值, 噪声0.5来构建一个高斯过程。
let mut gp = GaussianProcess::new(ker, zero_mean, 0.5);


// 现在我们可以训练并且用这个模组进行预测了。

// 训练模组!
gp.train(&inputs, &targets).unwrap();

// 使用测试数据来测试预测。
let outputs = gp.predict(&test_inputs).unwrap();

如果我们使用了 let mut gp = GaussianProcess::default();代码会更为简单。 相反地,你也可以用合适的特征自定义核函数和平均函数。

你还会注意到代码最上方有一些 use 声明。 我们可以通过使用 prelude来移除他们:

use rusty_machine::prelude::*;

let _ = Matrix::new(2,2,vec![2.0;4]);

评论区

写评论
苦瓜小仔 2020-12-04 00:27

赞👍👍👍

1 共 1 条评论, 1 页