2 个版本
使用旧的 Rust 2015
0.1.1 | 2021 年 8 月 26 日 |
---|---|
0.1.0 | 2021 年 8 月 24 日 |
在 算法 中排名第 1310
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
感谢
- 局部和全局一致性(LGC)[周等,NIPS'04] https://dennyzhou.github.io/papers/LLGC.pdf
- CAMLP(基于置信度的标签传播)的核心模型[Yamaguchi等,SDM'16] https://epubs.siam.org/doi/pdf/10.1137/1.9781611974348.58
- yamaguchiyuto/label_propagation - 与标签传播类似的算法的实现,如 Python
依赖关系
~3.5MB
~59K SLoC