真实记录:我的 Rust 机器学习库 sklearn-rs 创建全过程
·
本文基于真实的项目文件和开发过程,没有任何虚构
项目起源
作为一个 Rust 初学者,我想通过实际项目来学习。看到 Python 的 scikit-learn 很受欢迎,我决定用 Rust 写一个类似的机器学习库。
真实项目结构
我的 sklearn-rs 项目实际包含这些文件:
text
sklearn-rs/ ├── Cargo.toml # 479 字节 ├── Cargo.lock # 6,408 字节 ├── README.md # 1,639 字节 ├── LICENSE.txt # 1,082 字节 ├── .gitignore # 179 字节 ├── src/ # 源代码 ├── examples/ # 使用示例 ├── tests/ # 测试文件 └── target/ # 编译输出
核心代码实现
线性回归模型 (src/linear_model/linear_regression.rs)
我实现了完整的线性回归:
rust
pub struct LinearRegression {
pub fit_intercept: bool,
}
pub struct LinearModel {
pub coefficients: Array1<f64>,
pub intercept: f64,
}
impl Estimator for LinearRegression {
fn fit(&self, x: &Array2<f64>, y: &Array1<f64>) -> Result<LinearModel> {
// 使用正规方程求解
if self.fit_intercept {
self.fit_with_intercept(x, y)
} else {
self.fit_without_intercept(x, y)
}
}
}
评估指标 (src/metrics/mod.rs)
实现了三个核心指标:
rust
pub fn mean_squared_error(y_true: &Array1<f64>, y_pred: &Array1<f64>) -> Result<f64> pub fn mean_absolute_error(y_true: &Array1<f64>, y_pred: &Array1<f64>) -> Result<f64> pub fn r2_score(y_true: &Array1<f64>, y_pred: &Array1<f64>) -> Result<f64>
测试验证
写了 9 个完整的测试用例 (tests/linear_regression_test.rs):
rust
#[test]
fn test_linear_regression_fit() -> Result<()> {
let x = array![[1.0], [2.0], [3.0], [4.0]];
let y = array![3.0, 5.0, 7.0, 9.0]; // y = 1 + 2*x
let model = LinearRegression::default().fit(&x, &y)?;
assert_abs_diff_eq!(model.intercept, 1.0, epsilon = 0.1);
Ok(())
}
所有测试都通过了!
使用示例
创建了完整的示例 (examples/linear_regression_demo.rs):
rust
fn main() -> Result<()> {
let x = array![[1.0, 1.0], [1.0, 2.0], [2.0, 2.0], [2.0, 3.0]];
let y = array![6.0, 9.0, 11.0, 14.0]; // y = 1 + 2*x1 + 3*x2
let model = LinearRegression::default().fit(&x, &y)?;
let predictions = model.predict(&x)?;
println!("系数: {:?}", model.coefficients); // [2.0, 3.0]
println!("截距: {:.4}", model.intercept); // 1.0000
Ok(())
}
开源发布
创建开源文件
-
LICENSE.txt: MIT 许可证
-
README.md: 项目说明和使用指南
-
.gitignore: 忽略编译文件
推送到 GitHub
经历了一些 git 冲突,最终用强制推送解决了:
bash
git push -u origin main --force
项目成果
✅ 完整的线性回归实现
✅ 评估指标 (MSE, MAE, R²)
✅ 9个测试用例全部通过
✅ 中文文档支持
✅ 开源在 GitHub
项目地址:https://github.com/wf5440/sklearn-rs
学习收获
通过这个项目,我真正学会了:
-
Rust 模块系统和 trait 设计
-
错误处理和验证
-
测试驱动开发
-
项目发布和开源流程
这是一个真实的初学者项目,没有夸张的技术亮点,但每一步都是亲手实现的!
更多推荐


所有评论(0)