2 个版本

使用旧的 Rust 2015

0.1.1 2021 年 8 月 26 日
0.1.0 2021 年 8 月 24 日

算法 中排名第 1310

MIT 许可协议

9KB
145

label-propagation-rs

基于 Rust 的标签传播算法。

标签传播(LP)是一种基于图的半监督学习(SSL)。

实现了简单的 LGC 和更高级的 CAMLP。

使用方法

示例可以在 examples 目录中找到。

标签是 [0, class_n] 的连续值,而 predict_proba 的结果是标签的值。

use std::result::Result;
use std::error::Error;

extern crate label_propagation;
extern crate ndarray;
extern crate ndarray_stats;

use ndarray::prelude::*;
use label_propagation::{CAMLP, LGC};
use ndarray::Array;

pub fn main() -> Result<(), Box<dyn Error>> {
    // make graph matrix ndarray
    let graph = Array::from_shape_vec(
        (3, 3),
        vec![0.0, 0.3, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0]).unwrap();

    // node index for label
    let x = array![0, 1];
    // label
    let y = array![0, 1];

    // make model
    let mut model = CAMLP::new(graph).iter(30).beta(0.1);
    // let mut model = LGC::new(graph).iter(30).alpha(0.99);

    model.fit(&x, &y)?;

    let target = array![0, 1];
    let result = model.predict_proba(&target);
    println!("{:?}", result);

    Ok(())
}

开发

docker build -t graph .
docker run -it -v $PWD:/app graph bash

感谢

依赖关系

~3.5MB
~59K SLoC