【RustyML入门】2.0. 经典机器学习

📅 2026/8/8 10:33:27
【RustyML入门】2.0. 经典机器学习
2. 经典机器学习在 RustyML 里凡是不属于神经网络的部分都归入经典机器学习线性模型、树、核方法、聚类和降维。这类算法训练快对数据量要求低产出的模型也能让你看懂、说清。先从它们入手。只有当问题确实需要一个深层网络时才转向第 3 章。本章的每个估计器estimator都位于rustyml::machine_learning之下共享同一份小约定。用new构造模型它会校验参数并返回Result。唯一的例外是LinearRegression::new它不会失败所以直接返回Self。用fit训练模型用predict做推理降维模型除外。降维变换器改用transform和fit_transform不用predict。把这套节奏学会一次本章的全部十四个模型都通用。动手之前先读第 1 章。先读使用ndarray准备数据因为每个模型吃进去的都是Array2f64特征矩阵。也读一下错误处理因为构造函数和fit/predict交还的都是 crate 自己的Result。第 4 章讲特征的编码与缩放。第 5 章讲你用来评判这些模型的准确率、轮廓系数和 R^2 分数。本章其余部分都是在下面这套骨架上做变化userustyml::machine_learning::LinearRegression;usendarray::array;fnmain(){// construct - fit - predict每个估计器都在重复这套节奏letmutmodelLinearRegression::new(true);letxarray![[1.0,2.0],[2.0,3.0],[3.0,4.0]];letyarray![6.0,9.0,12.0];model.fit(x,y).unwrap();letpredsmodel.predict(array![[4.0,5.0]]).unwrap();println!(prediction: {:?},preds);}各节自成一体需要哪个模型就直接翻到那一节。按顺序读会从最简单的估计器一路读到最复杂的那些。监督学习从带标签的样本中预测目标。线性回归拟合连续目标可选 L1/L2 正则化求解器可在梯度下降和闭式解之间选择。想把 fit/predict 这套流程学到手从它入手最合适。逻辑回归沿用同一套梯度机制来做二分类。K近邻跳过训练直接靠邻近度分类距离度量和加权方式都可挑选。决策树把特征空间切成一条条可读的 if/else 规则可选 ID3、C4.5、CART 三种算法之一并带剪枝。支持向量机一节覆盖两个模型核化的SVCSMO 求解器用于拟合弯曲的边界快速的LinearSVC用于宽而高维的数据。线性判别分析把每个类别建模为共享协方差的高斯分布同时完成分类与降维。聚类把无标签数据分组。KMeans用 k-means 初始化把点划入固定数量的簇。它速度快也是常见的默认选择。DBSCAN按密度找出任意形状的簇把离群点标为噪声。它事先不需要知道簇的数量。MeanShift同样能自行确定簇的数量办法是沿密度曲面往上爬。用聚类指标给这三种方法打分。降维在压缩特征的同时保住数据结构。主成分分析是去相关和压缩的默认线性方法。核主成分分析借助 RBF、多项式等核把它推广到非线性结构。t-SNE把高维数据嵌入 2 维或 3 维只为可视化服务。它学不出可复用的投影。它只提供fit_transform没有面向新样本的transform。异常检测自成一类。孤立森林通过随机切分来衡量每个点被孤立的难易程度无需任何标签就能标出离群点。