首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

「R」用purrr实现迭代

迭代方式主要有两种: 命令式编程 - for和while 函数式编程 - purrr 准备工作 purrr是tidyverse的核心r包之一,提供了一些更加强大的编程工具。...接下来我们将学习和使用purrr包,它提供的函数可以替代很多常见的for循环应用。R基础包中的apply应用函数族也可以完成类似的任务,但purrr包的函数更一致,也更容易学习。...比如我们现在想对某个数据集中的每一个分组都拟合一个线性模型,下面示例将mtcars数据集拆分为3个部分(按照气缸值分类),并对每个部分拟合一个线性模型: models = mtcars %>%...当检查多个模型时,有时候我们需要提取像R方这样的摘要统计量,要想完成这个任务,我们需要先运行summary()函数,然后提取结果中的r.squared: models %>% map(summary...这样做容易出错而且可读性差,因此最后使用命名参数: args2 = list(mean = mu, sd = sigma, n = n) args2 %>% pmap(rnorm) %>%

4.8K20

使用workflow一次完成多个模型的评价和比较

前面给大家介绍了使用tidymodels搞定二分类资料的模型评价和比较。 简介的语法、统一的格式、优雅的操作,让人欲罢不能! 但是太费事儿了,同样的流程来了4遍,那要是选择10个模型,就得来10遍!...所以个大家介绍简便方法,不用重复写代码,一次搞定多个模型!...本期目录: 加载数据和R包 数据预处理 选择模型 选择重抽样方法 构建workflow 运行模型 查看结果 可视化结果 选择最好的模型用于测试集 加载数据和R包 首先还是加载数据和R包,和前面的一模一样的操作...image-20220704144956748 使用其他指标查看模型表现: metricsets <- metric_set(accuracy, mcc, f_meas, j_index) collect_predictions...,大家可以看我之前的介绍推文~ 是不是很神奇呢,完美符合一次挑选多个模型的要求,且步骤清稀,代码美观,非常适合进行多个模型的比较。

1.5K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用tidymodels搞定二分类资料多个模型评价和比较

    前面介绍了很多二分类资料的模型评价内容,用到了很多R包,虽然达到了目的,但是内容太多了,不太容易记住。 今天给大家介绍一个很厉害的R包:tidymodels,一个R包搞定二分类资料的模型评价和比较。...给大家看看如何用优雅的方式建立、评价、比较多个模型!...本期目录: 加载数据和R包 数据划分 数据预处理 建立多个模型 logistic knn 随机森林 决策树 交叉验证 ROC曲线画一起 加载数据和R包 没有安装的R包的自己安装下~ suppressPackageStartupMessages...threshold = 0.7) %>% step_center(all_numeric()) %>% # 中心化 step_zv(all_predictors()) # 去掉零方差变量 建立多个模型...二分类资料常见的各种评价指标都有了,图也有了,还比较了多个模型,一举多得,tidymodels,你值得拥有!

    96420

    不确定性可视化太难?!一行代码搞定~~

    column indicating the sample draw transition_states(.draw, 1, 3) Example01 of ungeviz 案例二:平滑线绘制 可以对数据拟合一个平滑模型...可使用stat_smooth_draws()中是自动化完成的,其工作原理与stat_smooth()类似,但生成的是多个可能性相同的拟合线,而不是一条最佳拟合线。...+ transition_states(stat(.draw), 1, 2) + enter_fade() + exit_fade() Example02 of ungeviz 案例三:多个绘图图层和统计图层...在可视化不确定性时,提供了一些几何图形和统计数字,包括上面抽样例子中使用的geom_hpline()和geom_vpline(),以及可以绘制置信度条的stat_confidence_density(...estimate + std.error), height = 0.5) + xlim(2.6, 3.7) + theme_minimal() Example03 of ungeviz 案例四:自拟合模型后验抽样

    37920

    使用mlr3搞定二分类资料的多个模型评价和比较

    前面介绍了使用tidymodels进行二分类资料的模型评价和比较,不知道大家学会了没?...本期目录: 加载R包 建立任务 数据预处理 选择多个模型 建立benchmark_grid 开始计算 查看模型表现 结果可视化 选择最好的模型 加载R包 首先还是加载数据和R包,和之前的数据一样的。...,对数据进行预处理,为了和之前的tidymodels进行比较,这里使用的数据和预处理步骤都是和之前一样的。...选择多个模型 还是选择和之前一样的4个模型:逻辑回归、随机森林、决策树、k最近邻: # 随机森林 rf_glr >% lrn("classif.ranger...接下来就是选择10折交叉验证,建立多个模型,语法也是很简单了。

    99630

    R语言如何和何时使用glmnet岭回归

    岭回归 当回归模型的参数被学习时,岭回归使用L2正则化来加权/惩罚残差。在线性回归的背景下,它可以与普通最小二乘法(OLS)进行比较。OLS定义了计算参数估计值(截距和斜率)的函数。...当训练数据的极端变化很大时尤其如此,当样本大小较低和/或特征的数量相对于观察次数较多时这趋向于发生。 下面是我创建的一个模拟实验,用于比较岭回归和OLS在训练和测试数据上的预测准确性。...我首先设置了运行模拟的功能: 现在针对不同数量的训练数据和特征的相对比例运行模拟(需要一些时间): d purrr::cross_d(list(n_train = seq(20,200,20),...对于不同数量的训练数据(对多个特征进行平均),两种模型对训练和测试数据的预测效果如何? ? 根据假设,OLS更适合训练数据,但Ridge回归更好地归纳为新的测试数据。...这显示了综合效应:当训练观察数量较低和/或特征数目相对于训练观察数目较高时,Ridge回归更好地转移到测试数据。OLS在类似条件下的训练数据上表现略好,表明它比使用脊线正则化时更容易过度训练数据。

    5.2K10

    R 数据整理(十一: 用purrr包实现更花样的匿名函数使用)

    ,可以和apply 等使用类似: map_dbl(strsplit(s, split=",", fixed=TRUE), function(x) sum(as.numeric(x))) ## [1]...将无名函数写成“~ 表达式”格式, 表达式就是无名函数定义, 用.表示只有一个自变量时的自变量名, 用.x和.y表示只有两个自变量时的自变量名, 用..1、..2、..3这样的名字表示有多个自变量时的自变量名...取出不存在的成员会出错, 但可以用一个.default选项指定查找不到成员时的选项, 如: map_chr(od, "birth", .default=NA) ## [1] NA "...输入类型和输出类型两两搭配, purrr包提供了27种map类函数。...purrr包的pmap类函数支持对多个列表、数据框、向量等进行向量化处理。pmap不是将多个列表等作为多个自变量, 而是将它们打包为一个列表。

    2.6K30

    Hadley Wickham 采访节选(二)

    purrr的设计目的并不是说要实现base R中无法实现的功能,只是base R中的这些底层函数使用起来太不方便而且容易出错,而purrr则用一种统一、安全的方式去重新打包了这些函数。...但是话说回来,在我最近写的包里面,我都尽量不使用purrr。 (purrr包的logo) ? “ 等等,你为什么不愿意在你最近写的这个包里面用purrr呢?...最近我不是在开发Bigrquiry这个包嘛(大猫:一个使用R从Google BigQuiry提取数据的API),我发现如果我用了purrr,那么我就很难避免不用dplyr,因为purrr严重依赖dplyr...事实上,数据科学的发展如此迅猛,以至于学术界和业界的人都争先恐后在博客上把自己知道的最酷的东西写出来。...有时候我会一整天都一个人工作,有的时候则会需要参加各种会议,和不同的人交流,比如今天╮(╯▽╰)╭ “ 23333也许我现在要放你去工作了?

    69620

    irGSEA:基于秩次的单细胞基因集富集分析整合框架

    因此,在整合不同样本的情况下,即使使用相同基因集为相同细胞打分,也会产生不同的富集评分; SCSE 使用基因集所有基因的归一化的总和来量化基因集富集分数; Vision 使用随机签名的预期均值和方差对基因集富集分数进行...归一化从而校正基因集富集分数; VAM 根据经典Mahalanobis多元距离从单细胞 RNA 测序数据生成基因集富集分数; Gficf 利用通过非负矩阵分解获得的基因表达值的潜在因子的信息生物信号; Pagoda2 拟合每个细胞的误差模型...使用全局表达谱对差异分数进行标准化。 标准化这一步容易受样本构成的影响。 JASMINE 根据在单个细胞中表达基因中的基因排名和表达基因中基因集的富集度计算近似平均值。...工作流程 使用AUCell、UCell、singscore、ssgsea、JASMINE 和 viper分别对各个细胞进行评分,得到不同的富集评分矩阵。...irGSEA安装 1.irGSEA安装(基础配置) 仅使用 AUCell, UCell, singscore, ssGSEA, JASMINE和viper # install packages from

    2.6K11

    R机器学习的Tidymodel流水线编程

    Tidymodels: tidy machine learning in R 在处理数据时,有简洁的工具包,tidyverse应运而生,极大地简化数据处理流程,让数据处理变得简洁,清晰。...但是在处理完数据后,需要对数据进行建模分析,预测与拟合,这个过程随着模型的不同而变的多元化,尤其是机器学习应用。加速了模型构建的流程化与简洁化。 Caret的出现,让此项工作变得简洁明了。...更准确的说,tidymodels提供了一组用于定义模型的函数和参数。然后根据请求的建模包对模型进行拟合。 现在我们准备根据我们的数据,建一个随机森林模型。...然后set_engine()很重要,可以指定我们运行的模型的引擎,可以是glm、rf等。然后用fit()函数,加载我们要拟合的数据。...模型评估 使用metrics()函数来衡量模型的性能。它将自动选择适合给定模型类型的指标。 该函数需要一个包含实际结果(真相)和模型预测值(估计值)的tibble数据。

    55120

    非线性回归nls探索分析河流阶段性流量数据和评级曲线、流量预测可视化

    通常,使用日降雨量数据将回归模型拟合到测量的流量数据: 其中 Qi是第 i 天的预测排放量,β 是第 j 个变量的系数,x 是第 i 天的预测变量值。假设误差项 ϵi 正态分布在均值零附近。...然而,称为广义加性模型的线性回归的扩展允许将这些非线性项相对容易地拟合到数据中。对于广义加性模型,因变量取决于应用于每个预测变量的平滑函数的总和。...此外,广义加性模型可以拟合具有非正态分布的误差分布的因变量。然而,与线性或多元线性回归相比,广义加性模型由于缺乏单一模型系数而更难以解释。...该方法利用 Levenberg-Marquardt 算法和多个起始值来寻找全局最小 SSE 值。 单独的评级曲线用于使用测量的河流高度估计河流流量。...nls_multstart 将使用多个 ##起始参数和模型选择查找 ##全局最小值 stlower stupper ##适合nls rc<- nls(jorm, suors

    1.4K10

    小数据集同样重要!掌握处理它的7种方法

    本文将简要介绍在使用小数据集时可能会出现的问题。随后再讨论哪些技术可以最有效地克服这些问题。 ? 权衡偏差与方差 简而言之,权衡偏差和方差就是寻找一个完美的模型来解释数据。...过度拟合/不充分拟合/良好平衡 拥有低偏差和高方差的模型对数据拟合过度,而高偏差和低方差的模型则对数据拟合不足。...而且,在小数据集上训练的模型更可能会显示出不存在的模式,这会导致测试集的高方差及高错误。这是过度拟合的常见症状。因此,使用小数据集时,要尤为注意避免过度拟合。 那怎么才能做到这一点呢? ?...4.组合多个模型。 当把多个模型的结果组合起来时,可能得到更准确的预测。例如,与来自每个个体模型的预测相比,来自所有个体模型的预测的加权平均值计算出的最终预测,其方差显著降低,也更加具有概括性。...当更好地了解到模型对其预测有多“自信”时,就更少可能会根据模型的结果得出错误的结论。 6.扩展数据集。 当数据非常有限或数据集严重不平衡时,搜索扩展数据集的方法。可以使用这两种: • 使用合成样本。

    63820

    「R」dplyr 行式计算

    z 的和,我们县创建一个行式数据框: rf % rowwise(id) 我们然后使用 mutate() 添加一个新的列,或者使用 summarise() 仅返回一个汇总列: rf %>...它们允许你避免显式的循环和/或使用 apply() 或 purrr::map 家族函数。...这不是你通常需要考虑的事情(它会工作),但知道什么时候出错是很有用的。 分组数据框(每个组恰好有一行)和行数据框(每个组总是有一行)之间有一个重要的区别。...这意味着rowwise()和mutate()提供了一种优雅的方式,可以使用不同的参数多次调用函数,并将输出与输入一起存储。...作为替代方案,我们建议使用 purrr 的 map() 函数执行逐行操作。但是,这很有挑战性,因为您需要根据变化的参数数量和结果类型来选择映射函数,这需要相当多的 purrr 函数知识。

    6.2K20

    经验分享 | 解决NN不work的37个方法

    与训练相关的问题 如何使用这份指引 出错的原因千千万,但其中某些因素是更容易发现和修改的,所以作者给出了一个短短的列表,列出出错时他最先用来自检的一些方法: 1....从一个小数据集(2~20个样本)开始,让模型能够过拟合它,逐步增加数据,观察结果; 6. 逐步修改,比如重新引入正则化和数据增广,使用自定义的损失函数,使用更复杂的模型......检查是否和预训练模型一致 Check the preprocessing of your pretrained model 如果你使用了预训练模型,那就要确保使用时要和预训练模型训练时的设置相同,比如预训练模型训练时...作者表示自己写的损失函数出错从而导致模型表现不佳是很常见的。 19....减少正则化 Reduce regularization 过多的正则化会让模型欠拟合。减少一些正则化手段,比如 dropout,batch norm 还有权重和偏置的 L2 正则化项等等。

    1.3K20

    《驯服“过拟合”之兽:守护人工智能算法的精准与稳健》

    在收集数据时,应尽可能广泛地涵盖各种可能的情况和场景,避免数据的片面性和局限性。...例如,在一个图像识别项目中,如果只收集了特定角度、特定光照条件下的某类物体的图片,那么模型在面对其他角度和光照条件的同类物体时,就很容易出现过拟合。...例如,在处理包含多个特征的数值型数据时,将每个特征的值都映射到特定的区间内,使得模型能够更加均衡地学习各个特征的重要性,而不是被个别特征的极端值所误导。在模型设计方面,选择合适的模型复杂度至关重要。...交叉验证也是评估和预防过拟合的有力工具。通过将数据集划分为多个子集,轮流将其中一个子集作为验证集,其余子集作为训练集进行多次训练和验证,最后综合评估模型的性能。...在医疗领域,一个过拟合的疾病诊断模型可能会给出错误的诊断结果,危及患者的生命健康;在金融领域,过拟合的风险评估模型可能会导致错误的投资决策,造成巨大的经济损失。

    9000
    领券