• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      R语言

      • 首页
      • 博客
      • R语言
      • 使用R的caret对银行定期存款订阅进行分类

      使用R的caret对银行定期存款订阅进行分类

      • 发布者 weinfoadmin
      • 分类 R语言
      • 日期 2019年2月21日
      测试开头

      R是一种统计计算、可视化和通用计算的免费开源编程语言和软件环境。R有着活跃的社区和数据科学生态系统,R是数据工作者常使用的工具和语言。数据人网R语言栏目提供了许多R与数据科学的优质内容。

      在实际工作中,我使用R语言做过数据可视化,信用评分卡,数据分析和机器学习等事情,深感R语言功能的强大,便捷和有效。玩好数据和洞见数据,以利用数据中的模式,知识和规则,R是一个得力的帮手。

      本文源自一篇英文文章,我将其翻译,一是,因为它是一个端到端的机器学习项目,介绍了利用R解决机器学习问题的一种典型解决方案;二是,它所解决的实际问题与我当前的工作紧密相关,我当前是在金融科技行业从事数据和模型的工作,以解决风控和营销等相关问题集。

      作者: Derrick Mwiti
      原文链接:
      https://www.kdnuggets.com/2019/02/caret-r-classify-term-deposit-subscriptions-bank.html

      使用R的caret对银行定期存款订阅进行分类

      在本文中,我们将使用来自葡萄牙银行机构的直接营销活动数据来预测客户是否会订阅定期存款。我们将与R的caret包起工作来实现这一点。

      虽然不建议将此示例应用于实际的业务场景,但它可以作为解决此类问题的指南。将其应用于实际场景将需要在营销和银行部门进行一些调整和领域专业知识。

      在深入讨论之前,让我们先看看官方文档是如何描述caret包。

      caret包(_C_lassification _A_nd _RE_gression _T_raining的缩写)是一组函数,它们试图简化创建预测模型的过程。这个包包含以下工具:

      • 数据分割

      • 预处理

      • 特征选择

      • 使用重采样进行模型调优

      • 变量重要性估计
        以及其他函数。
        r中有许多不同的建模函数,有些函数有不同的模型训练和/或预测语法。这个包一开始是作为一种方法提供函数本身的统一接口,以及一种标准化常见任务(例如参数调优和变量重要性)的方法。
        当前的版本可以在CRAN上找到,项目托管在GitHub上。

      这个包类似于用Python实现机器学习函数的Scikit-learn包。在R和Python中不使用这些包也可以工作。然而,Caret和Scikit-learn简化了应用机器学习算法的过程。

      装载数据

      我们将使用Tidyverse中的read_table实用函数加载数据集。我们指定头和分号作为分隔符。

      library(tidyverse)
      df <- read_table("bank-full.csv", sep=";", header=T)

      列的完整描述可以在这里找到。我们可以快速检查数据集的头部。需要注意的重要事情是我们要预测的y列,这列指示客户是否订阅定期存款。

      使用R的caret对银行定期存款订阅进行分类

      R有一个名为DataExplorer的包,它使我们能够快速探索数据集。如果您没有本文中提到的任何包,只需使用install.packages(“package name”)命令安装它们。

      使用introduction函数,我们可以看到列、行和缺失值的数量:

      library(DataExplorer)
      introduce(df)
      使用R的caret对银行定期存款订阅进行分类

      在深入研究机器学习之前,我们有时需要绘制一些图表,以便对数据集有一个大致的了解。DataExplorer提供了一个函数来绘制所有这些图。

      plot_bar(df)

      快速浏览一下图表,我们就会发现大部分的顾客都是蓝领工人,而且已婚。

      使用R的caret对银行定期存款订阅进行分类

      one-hot编码

      我们之前注意到我们的一些列是类别的。为了在机器学习模型中使用它们,我们必须将它们转换为虚拟变量。这将涉及到将它们转换为0和1。

      为了避免虚拟变量陷阱,我们还必须去掉第一个虚拟变量。

      所以我们通常保留N-1个虚拟变量。例如,我们不需要一列同时包含男性和女性,我们想要一列,即1表示男性,0表示女性,反之亦然。

      R有几个包,可以用来将列转换为虚拟变量。在这种情况下,我们将使用fastDummies包。我们使用dummy_cols进行转换,并将remove_first_dummy指定为TRUE,以避免虚拟变量陷阱。

      library(fastDummies)
      dummy_data <- fastDummies::dummy_cols(df,remove_first_dummy = TRUE)

      接下来,我们选择将在机器学习模型中使用的列。我们通过指定要保存在变量中的列来实现这一点,然后使用这些列进行选择。

      keep <- c("age","day","balance","campaign","pdays","job_entrepreneur","job_blue-collar","job_unknown","job_retired","job_admin.","job_services", "job_self_employed","job_unemployed","job_housemaid","job_student","marital_single","marital_divorced","education_secondary","education_primary","default_yes","housing_no","loan_yes","contact_cellular","contact_telephone","month_jun","month_jul", "month_aug","month_oct","month_nov","month_dec","month_jan","month_feb","month_mar","month_apr","month_sep","poutcome_failure","poutcome_other","poutcome_success","y_yes")          
      final <- dummy_data[keep]

      如果我们检查数据集的头部,我们会注意到每一列现在都是数值的。现在,我们准备进入下一步,使用caret来构建机器学习模型。

      使用caret构建模型

      我们首先导入caret包,以便访问它的函数。正如我们在开始时看到的,caret是R中的包,它封装了大多数机器学习函数,因此更容易应用它们。

      library(caret)

      现在我们需要将数据集拆分为一个训练和测试集。caret使我们能够使用createDataPartition函数来实现这一点。这个函数创建一系列的训练和测试分区。我们首先创建一个索引,该索引将基于标签拆分数据集。我们指定70%的训练集和30%的测试集。list指定结果应该是列表还是矩阵。

      index <- createDataPartition(final$y_yes, p=0.7, list=FALSE)

      下一步是使用该索引对数据进行子集,以获得训练和测试集。

      final.training <- final[index,]
      final.test <- final[-index,]
      X_train <- final.training[, 1:38]
      y_train <-  as.factor(final.training[, 39])

      X_test <- final.test[, 1:38]
      y_test <- as.factor(final.test[, 39])

      就像Python中的Scikit-learn包一样,R中的caret库使数据适合机器学习模型变得非常容易。你所要做的就是调用train函数并指定机器学习方法。要查看所有可用的方法,可以运行以下命令names(getModelInfo())

      names(getModelInfo())
      使用R的caret对银行定期存款订阅进行分类

      现在让我们进入训练部分。由于这是一个分类问题,我们必须使用一个分类算法。在这种情况下,我们使用的是强化逻辑回归。然而,我们可以通过简单地改变方法来试验其他算法。在尝试了一些算法之后,我们可以选择精度最高的算法。我们通过使用preprocess属性对数据进行缩放和中心化来对其进行预处理。

      model_classy <- train(X_train, y_train, method='LogitBoost',preProcess=c("center", "scale"))

      如果我们能够看到模型中最重要的特性,那就太好了。caret提供了一个varImp函数,该函数的输出用于绘制特征重要性图,从而简化了这一过程。

      feature_importance <- varImp(model_classy, scale=FALSE)
      plot(feature_importance)
      使用R的caret对银行定期存款订阅进行分类

      现在让我们继续使用上面定义的模型进行预测。预测是通过从插入符号调用predict函数来完成的简单任务。一旦预测就绪,我们就可以使用confusionMatrix函数来计算混淆矩阵。这也将向我们展示模型的准确性。

      predictions<-predict(object=model_classy,X_test)
      table(predictions)
      confusionMatrix(predictions,y_test)
      使用R的caret对银行定期存款订阅进行分类

      显然,在R中应用机器学习就像使用Python的Scikit-learn一样简单。你可以从它的文档中了解caret,在这里可以找到:

      caret包官方文档
      caret包|R文档

      你热爱生命吗?那么别浪费时间,因为时间是组成生命的材料。——富兰克林

      内容推荐


      • 如何阅读论文?

      • AppDNA:基于图深度学习的APP行为分析

      • 论文管理工具,我用Zotero

      • 事件社交网络:深度用户模型的内容事件推荐

      • DeepLink:一种用户身份链接的深度学习方法

      • 制造业的机器学习:优势,挑战和机会

      • 大数据时代做着数据工作

      • 一个数据人的2018

      • MATLAB(R2016)软件安装与测试

      • 数据人的家园,数据人网

      • 代码学习法

      • R语言做深度学习

      • 用Python做监督学习

      • 使用Python和Jupyter Notebook进行数据分析

      • 为什么将数据科学应用于生产如此困难?

      • 读完《活法》,对我数据工作的几点启示

      我是数据人王路情,专注于从数据中学习。
      我们创建数据人网http://shujuren.org,它是数据人的家园,一个数据人学习,交流和分享的场所。欢迎您,大家一起来创造和分享数据知识,共建和共享数据智库,为智能化社会助力。


      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      简单小需求:如何将FPKM转换成TPM?
      2019年2月21日

      下一篇文章

      R语言画折线图?
      2019年2月27日

      你可能也喜欢

      3-1665801675
      R语言学习:重读《R数据科学(中文版)》书籍
      28 9月, 2022
      6-1652833487
      经典铁死亡,再出新思路
      16 5月, 2022
      1-1651501980
      R语言学习:阅读《R For Everyone 》(第二版)
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?