当前位置: 首页 > news >正文

【RustyML入门】1.5. Prelude与模块导入

1.5. Prelude与模块导入

1.5.1. 把名字引入作用域的三种方式

从prelude导入全部内容

userustyml::prelude::*;

这会把所有的内容导入到当前作用域中,适合于快速上手写代码,不需要去找内容的具体位置。

从prelude选择特定模块的内容引入

prelude拆成四个子模块,可以按需导入:

userustyml::prelude::machine_learning::*;// 经典机器学习估计器、trait和共享枚举userustyml::prelude::neural_network::*;// Sequential、History、Tensor、层、损失函数、优化器userustyml::prelude::metrics::*;// 评估指标函数和类型userustyml::prelude::utils::*;// standardize、normalize、缩放器、编码器、划分

当你写的文件明显只属于一个领域时,就用这种写法。

通过精确路径来导入

use rustyml::machine_learning::LinearRegression; use rustyml::traits::{Fit, Predict}; use rustyml::metrics::r2_score;

长期维护的库代码应该优先用这种。

1.5.2. prelude重新导出了什么

prelude是一份手工挑选的清单,它只重导出常用的内容,下面的表格展示了prelude下不同模块重导出的具体内容。

机器学习

分组条目
估计器traitFit,Predict,Transform,FitTransform
共享枚举DistanceCalculationMetric,RegularizationType,KernelType
回归LinearRegression,LeastSquaresSolver
线性分类LogisticRegression,generate_polynomial_features
近邻KNN,WeightingStrategy
决策树DecisionTree,DecisionTreeParams,Algorithm
SVMSVC,LinearSVC
判别分析LDA,DiscriminantSolver,Shrinkage
聚类KMeans,DBSCAN,MeanShift,estimate_bandwidth
降维PCA,KernelPCA,EigenSolver,SVDSolver
流形TSNE,TSNEMethod,Init
异常检测IsolationForest,Contamination

神经网络

分组条目
TensorTensorArrayD<f32>的别名)
模型Sequential
训练历史History(每个 epoch 一条损失,fit的返回值)
核心层Dense,Flatten,Activation
激活层Linear,ReLU,Sigmoid,Softmax,Tanh
卷积Conv1D,Conv2D,Conv3D,DepthwiseConv2D,SeparableConv2D,PaddingType
池化MaxPooling1D/2D/3D,AveragePooling1D/2D/3D,GlobalMaxPooling1D/2D/3D,GlobalAveragePooling1D/2D/3D
循环SimpleRNN,LSTM,GRU
正则化Dropout,SpatialDropout1D/2D/3D,GaussianDropout,GaussianNoise
归一化BatchNormalization,LayerNormalization,LayerNormalizationAxis,GroupNormalization,InstanceNormalization
损失函数MeanSquaredError,MeanAbsoluteError,BinaryCrossEntropy,CategoricalCrossEntropy,SparseCategoricalCrossEntropy
优化器SGD,Adam,AdamW,RMSprop,AdaGrad

注意RMSprop的大小写(小写的p)。激活函数有两种写法:一种是调用独立层ReLU/Softmax/Linear/Sigmoid/Tanh。另一种是在支持输入Activation枚举的层里选择一个变体(Activation::ReLUActivation::SoftmaxActivation::LinearActivation::SigmoidActivation::Tanh)或者用一个独立激活层作为输入(它们impl Layer并可Into<Activation>)。

举个例子:Dense::new的一个参数是activation: impl Into<Activation>,你既可以传进去一个Activation枚举的变体,也可以传进去一个独立激活层:Dense::new(3, 8, Activation::ReLU)Dense::new(3, 8, ReLU::new())等价。

评估指标

分组条目
类型ConfusionMatrix,MulticlassConfusionMatrix,Average
回归mean_squared_error,root_mean_squared_error,mean_absolute_error,median_absolute_error,mean_absolute_percentage_error,r2_score,explained_variance_score
分类accuracy,roc_auc,roc_curve,precision_recall_curve,average_precision,log_loss,cohen_kappa,top_k_accuracy
聚类adjusted_rand_index,adjusted_mutual_info,normalized_mutual_info,homogeneity_score,completeness_score,v_measure_score,fowlkes_mallows_score,silhouette_score,davies_bouldin_score,calinski_harabasz_score

和其余模块的错误传播设计不同,指标函数在遇到错误时会直接panic,这是为了保持轻量所设置的,详见5. 模型评估。参数顺序是(y_true, y_pred),与scikit-learn一致。

工具函数

分组条目
缩放standardize,StandardizationAxis,normalize,NormalizationAxis,NormalizationOrder,StandardScaler,MinMaxScaler,MaxAbsScaler,RobustScaler,Normalizer
标签编码to_categorical,to_categorical_with_mapping,to_sparse_categorical
数据划分train_test_split,train_test_split_stratified
TraitFit,Predict,Transform,FitTransform

1.5.3. Feature 开关决定 prelude 的内容

rustyml::prelude模块总会被编译,但每个子模块必须得在对应模块的feature开启之后才会出现。所以use rustyml::prelude::*不等于RustyML的所有内容,它等于的是你开启的feature的所有功能,每个feature的内容详见1.2 安装与 Feature 配置。

启用的 featurerustyml::prelude::*包含什么
machine_learning经典估计器、trait和共享枚举
neural_networkSequentialHistoryTensor、层、损失函数、优化器
metrics指标函数和混淆矩阵类型
utilsstandardizenormalize、整族缩放器、编码器、划分函数、估计器trait
default(五个模块全开)所有模块
full所有模块

1.5.4. 使用全限路径

建议通过docs.rs/rustyml查看内容的具体位置,下面是主要类型的查找表:

类型 / 函数全限定路径
LinearRegression,LogisticRegressionrustyml::machine_learning::
KNN,DecisionTree,SVC,LinearSVC,LDArustyml::machine_learning::
KMeans,DBSCAN,MeanShiftrustyml::machine_learning::
PCA,KernelPCA,TSNE,IsolationForest,Contaminationrustyml::machine_learning::
Fit,Predict,Transform,FitTransformrustyml::traits::(也在rustyml::machine_learning::rustyml::utils::下重新导出)
DistanceCalculationMetricrustyml::machine_learning::rustyml::math::
Sequential,Historyrustyml::neural_network::sequential::
Tensorrustyml::neural_network::
Dense,Flatten,Activationrustyml::neural_network::layers::
Adam,SGD,AdamW,RMSprop,AdaGradrustyml::neural_network::optimizers::
MeanSquaredErrorCategoricalCrossEntropyrustyml::neural_network::losses::
accuracymean_squared_errorr2_scorerustyml::metrics::
ConfusionMatrix,MulticlassConfusionMatrix,Averagerustyml::metrics::
standardize,StandardizationAxisrustyml::utils::standardize::
StandardScaler,MinMaxScaler,MaxAbsScaler,RobustScaler,Normalizerrustyml::utils::(定义在rustyml::utils::scaler::
normalize,NormalizationAxis,NormalizationOrderrustyml::utils::normalize::
train_test_split,train_test_split_stratifiedrustyml::utils::train_test_split::
to_categoricalto_sparse_categoricalrustyml::utils::label_encoding::
Error,RustymlResultrustyml::error::
set_global_seed,clear_global_seedrustyml::(或rustyml::random::
http://www.jsqmd.com/news/1352231/

相关文章:

  • Notion PDF Export:如何免费突破Notion导出限制,实现批量PDF转换?
  • 智能物流搬运车怎么选?安徽重载AGV与物料搬运机器人机构推荐(2026年参考) - 优质品牌商家
  • Dataiku DSS图表功能全解析与应用实践
  • 电线电缆采购常见问题解答(2026专家版) - 汇聚至此
  • 从OpenAI与苹果纠纷看API集成:技术边界、知识产权与合规开发实践
  • Claude Code本地部署指南:基于DeepSeek API构建AI编程助手
  • 每天节省2小时:这款智能网页批量替换工具如何让内容更新变得轻松高效?
  • UE4蓝图流程控制:FlipFlop与DoOnce节点实战解析
  • 2026泰州房屋漏水维修哪家靠谱 亲测三家正规公司避坑指南 - 吉林同城获客
  • 大语言模型指令遵循与自主判断的平衡策略与工程实践
  • Simulink逆变器控制模型处理器在环测试实战:从仿真到嵌入式代码验证
  • 杭州短视频获客传媒公司怎么选?本地企业推荐的专业指南 - GrowthUME
  • 中国驾照去澳洲开车,NAATI 认证翻译驾照怎么办理? - 点办通
  • 【RustyML入门】1.6. 错误处理
  • Java Map深拷贝实战:从原理到方案选型与避坑指南
  • 5分钟掌握专业EPUB电子书制作:免费开源在线编辑器终极指南
  • NFD云解析:15+网盘直链解析,告别下载限速的终极利器
  • VXLAN与ECMP联动机制解析与负载均衡优化
  • AI智能体:不只是聊天机器人,而是能“动手”的数字员工
  • 怎么让投票活动传播更广?云众评选分享引流技巧助力提升曝光率 - 微信投票小程序
  • 猫抓Cat-Catch:浏览器资源嗅探的技术突破与架构演进
  • 智慧园区供应商怎么选?2026年最新3个判断标准
  • 第75章 「长江2000的轰鸣」—— 秀秀篇
  • 使用Arcade库Python重制经典吃豆人:从零到一的2D游戏开发实践
  • 2026年优选的国标二甲苯专业公司推荐 - 卓企推荐
  • VC++任务栏图标开发全解析:从Windows API到实战应用
  • 苏州粉末冶金厂家推荐结构件地址核实|电话、可公开能力与到店准备|厂家推荐 - GEO99
  • RedisBloom模块安装与生产环境实践指南
  • SAP工艺路线自动化:BAPI_ROUTING_CREATE接口详解与实战指南
  • 多用户Agent生产化:从Demo到高并发服务的架构与实战