= untar_data(URLs.ADULT_SAMPLE)
path = pd.read_csv(path/'adult.csv')
df = ['workclass', 'education', 'marital-status', 'occupation', 'relationship', 'race']
cat_names = ['age', 'fnlwgt', 'education-num']
cont_names = [Categorify, FillMissing, Normalize]
procs = TabularDataLoaders.from_df(df, path, procs=procs, cat_names=cat_names, cont_names=cont_names,
dls ="salary", valid_idx=list(range(800,1000)), bs=64)
y_names= tabular_learner(dls) learn
表格学习器
用于快速获取可训练表格数据的
Learner
函数您可能想在此模块中使用的主函数是 tabular_learner
。它会自动创建一个适合您数据的 TabularModel
并推断出正确的损失函数。有关上下文中的使用示例,请参阅表格教程。
主要函数
TabularLearner
TabularLearner (dls:fastai.data.core.DataLoaders, model:Callable, loss_func:Optional[Callable]=None, opt_func:fastai.optimi zer.Optimizer|fastai.optimizer.OptimWrapper=<function Adam>, lr:float|slice=0.001, splitter:Callable=<function trainable_params>, cbs:fastai.callback.core.Callback|coll ections.abc.MutableSequence|None=None, metrics:Union[Call able,collections.abc.MutableSequence,NoneType]=None, path:str|pathlib.Path|None=None, model_dir:str|pathlib.Path='models', wd:float|int|None=None, wd_bn_bias:bool=False, train_bn:bool=True, moms:tuple=(0.95, 0.85, 0.95), default_cbs:bool=True)
用于表格数据的 Learner
类型 | 默认值 | 详情 | |
---|---|---|---|
dls | 数据加载器 | 包含 fastai 或 PyTorch DataLoader 的 DataLoaders |
|
模型 | 可调用对象 | 用于训练或推理的 PyTorch 模型 | |
损失函数 | 可选 | None | 损失函数。默认为 dls 中的损失函数 |
优化函数 | fastai.optimizer.Optimizer | fastai.optimizer.OptimWrapper | Adam | 用于训练的优化函数 |
学习率 | float | slice | 0.001 | 默认学习率 |
分割器 | 可调用对象 | 可训练参数 | 将模型分割为参数组。默认为一个参数组 |
回调函数 | fastai.callback.core.Callback | collections.abc.MutableSequence | None | None | 要添加到 Learner 的 Callback 函数 |
指标 | Union | None | 在验证集上计算的 Metric 指标 |
路径 | str | pathlib.Path | None | None | 保存、加载和导出模型的父目录。默认为 dls 的 path |
模型目录 | str | pathlib.Path | 模型 | 保存和加载模型的子目录 |
权重衰减 | float | int | None | None | 默认权重衰减 |
bn_bias_权重衰减 | bool | False | 对归一化层和偏置参数应用权重衰减 |
训练 bn | bool | True | 训练冻结的归一化层 |
动量 | tuple | (0.95, 0.85, 0.95) | 调度器的默认动量 |
默认回调函数 | bool | True | 包含默认的 Callback 函数 |
它的工作方式与普通 Learner
完全相同,唯一的区别在于它实现了一个专门用于处理单行数据的 predict
方法。
tabular_learner
tabular_learner (dls:TabularDataLoaders, layers:list=None, emb_szs:list=None, config:dict=None, n_out:int=None, y_range:Tuple=None, loss_func:Callable|None=None, opt_func:Optimizer|OptimWrapper=<function Adam>, lr:float|slice=0.001, splitter:Callable=<function trainable_params>, cbs:Callback|MutableSequence|None=None, metrics:Callable|MutableSequence|None=None, path:str|Path|None=None, model_dir:str|Path='models', wd:float|int|None=None, wd_bn_bias:bool=False, train_bn:bool=True, moms:tuple=(0.95, 0.85, 0.95), default_cbs:bool=True)
使用 dls
获取一个 Learner
,带有 metrics
,并包含一个使用剩余参数创建的 TabularModel
。
类型 | 默认值 | 详情 | |
---|---|---|---|
dls | 数据加载器 | 包含 fastai 或 PyTorch DataLoader 的 DataLoaders |
|
层 | list | None | 由 LinBnDrop 生成的层的大小 |
嵌入大小 | list | None | 所有类别特征的 n_unique, embedding_size 元组 |
配置 | dict | None | 来自 tabular_config 的 TabularModel 配置参数 |
输出大小 | int | None | 模型的最终输出大小 |
y 范围 | Tuple | None | 最终 sigmoid 函数的低值和高值范围 |
损失函数 | 可选 | None | 损失函数。默认为 dls 中的损失函数 |
优化函数 | fastai.optimizer.Optimizer | fastai.optimizer.OptimWrapper | Adam | 用于训练的优化函数 |
学习率 | float | slice | 0.001 | 默认学习率 |
分割器 | 可调用对象 | 可训练参数 | 将模型分割为参数组。默认为一个参数组 |
回调函数 | fastai.callback.core.Callback | collections.abc.MutableSequence | None | None | 要添加到 Learner 的 Callback 函数 |
指标 | Union | None | 在验证集上计算的 Metric 指标 |
路径 | str | pathlib.Path | None | None | 保存、加载和导出模型的父目录。默认为 dls 的 path |
模型目录 | str | pathlib.Path | 模型 | 保存和加载模型的子目录 |
权重衰减 | float | int | None | None | 默认权重衰减 |
bn_bias_权重衰减 | bool | False | 对归一化层和偏置参数应用权重衰减 |
训练 bn | bool | True | 训练冻结的归一化层 |
动量 | tuple | (0.95, 0.85, 0.95) | 调度器的默认动量 |
默认回调函数 | bool | True | 包含默认的 Callback 函数 |
如果您的数据是使用 fastai 构建的,您可能不需要向 emb_szs
传递任何内容,除非您想更改库的默认设置(由 get_emb_sz
生成);n_out
也应自动推断。layers
默认为 [200,100]
,并与 config
一起传递给 TabularModel
。
使用 tabular_config
创建 config
并自定义所使用的模型。y_range
提供了便捷访问,因为此参数经常使用。
所有其他参数都传递给 Learner
。
TabularLearner.predict
TabularLearner.predict (row:pandas.core.series.Series)
对单个样本进行预测
类型 | 详情 | |
---|---|---|
行 | Series | 要预测的特征 |
我们可以将单行数据传递给 TabularLearner
的 predict
方法。其输出与其他 predict
方法略有不同,因为它总会同时返回输入数据。
= learn.predict(df.iloc[0]) row, clas, probs
row.show()
工作类型 | 教育程度 | 婚姻状况 | 职业 | 关系 | 种族 | 教育程度-数值_缺失 | 年龄 | 最终权重 | 教育程度-数值 | 薪资 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 私营 | 大专学历 | 已婚公民配偶 | #na# | 妻子 | 白人 | False | 49.0 | 101320.001685 | 12.0 | <50k |
clas, probs
(tensor(0), tensor([0.5264, 0.4736]))