使用机器学习算法时,通常需要把数据分为训练集和测试集,本文介绍R语言的三种实现方法,并通过示例进行学习。

使用R内置方法

依据sample函数生成指定概率的true和false的向量,然后利用该向量过滤数据集得到训练集和测试集,语法如下:

# 设置随机种子,使得示例可以重复
set.seed(1)# df是要分割的数据集
# 使用 70% 数据集作为训练集,30% 作为测试集
sample <- sample(c(TRUE, FALSE), nrow(df), replace=TRUE, prob=c(0.7,0.3))
train  <- df[sample, ]
test   <- df[!sample, ]

下面示例把iris数据分为训练集和测试集:

# 设置随机种子,使得示例可以重复
set.seed(1)data(iris)# 使用 70% 数据集作为训练集,30% 作为测试集
sample <- sample(c(TRUE, FALSE), nrow(iris), replace=TRUE, prob=c(0.7,0.3))
train  <- iris[sample, ]
test   <- iris[!sample, ]dim(iris)
# 150   5dim(train)
# 106   5dim(test)
# 44  5

从输出可以看到,总共150条记录,训练集大概包括 106 / 150 = 70.6% 。

使用caTools包

使用caTools包提供了sample.split函数,可以轻松进行数据分离。
subset函数返回满足条件的向量、矩阵或数据帧的子集,subset(x, subset, ...) 其中subset参数指定过滤条件:

library(caTools)# 设置随机种子,使得示例可以重复
set.seed(1)# df是要分割的数据集
# 使用 70% 数据集作为训练集,30% 作为测试集
sample <- sample.split(df$any_column, SplitRatio = 0.7)
train  <- subset(df, sample == TRUE)
test   <- subset(df, sample == FALSE)

我们用这种方法对iris数据集进行划分:

# 设置随机种子,使得示例可以重复
data(iris)
set.seed(2)# df是要分割的数据集
# 使用 70% 数据集作为训练集,30% 作为测试集
sample <- sample.split(iris$Species, SplitRatio = 0.7)train  <- subset(iris, sample == TRUE)
test   <- subset(iris, sample == FALSE)dim(iris)
# 150   5dim(train)
# 105   5dim(test)
# 45  5

运行结果与上面示例差不多,需要说明的是sample.split函数,其语法如下:sample.split( Y, SplitRatio = 2/3, group = NULL )

其中Y为x向量类型,因此需要随意指定数据集的一列生成向量,SplitRatio有默认值。

使用dplyr包

下面我们来看看如何使用dplyr包实现同样功能。

library(dplyr)# 设置随机种子,使得示例可以重复
set.seed(1)df <- iris# 依据数据集总行数生成序号
df$id <- 1:nrow(df)# 使用 70% 数据集作为训练集,30% 作为测试集
train <- df %>% dplyr::slice_sample(prop = 0.70)# 反向连接生成测试机
test  <- dplyr::anti_join(df, train, by = 'id')dim(iris)
# 150   5dim(train)
# 105   5dim(test)
# 45   5

生成结果与上面一致,我们说明下slice_sample()函数,用于随机选择行,语法如下:

slice_sample(.data, ..., n, prop, weight_by = NULL, replace = FALSE)

  • prop 用于指定概率
  • n 指定数量
  • replace 是否放回抽样,默认不放回

如何划分机器学习的训练集和测试集相关推荐

  1. python划分数据集用pandas_用pandas划分数据集实现训练集和测试集

    1.使用model_select子模块中的train_test_split函数进行划分 数据:使用kaggle上Titanic数据集 划分方法:随机划分 # 导入pandas模块,sklearn中mo ...

  2. 【自存代码】划分数据集为训练集和测试集

    [自存代码]划分image和label为训练集和测试集 修改自这位大佬的代码:https://blog.csdn.net/weixin_47414034/article/details/1254793 ...

  3. 机器学习中训练集和测试集归一化(matlab版)

    转载自   https://blog.csdn.net/lkj345/article/details/50352385 背景介绍: 归一化后加快了梯度下降求最优解的速度,归一化有可能提高精度. 训练集 ...

  4. python机器学习 train_test_split()函数用法解析及示例 划分训练集和测试集 以鸢尾数据为例 入门级讲解

    文章目录 train_test_split()用法 获取数据 划分训练集和测试集 完整代码脚手架 train_test_split()用法 python机器学习中常用 train_test_split ...

  5. 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization

    1.26.过拟合.欠拟合及其解决方案 1.26.1.过拟合.欠拟合的概念 1.26.1.1.训练误差和泛化误差 1.26.1.2.验证数据集与K-fold验证 1.26.1.3.过拟合和欠拟合 1.2 ...

  6. iris数据集_sklearn日志(二)训练集和测试集划分

    机器学习算法需要大量的数据,这些数据一部分用于模型训练,另一部分作为测试或验证. 机器学习入坑者:sklearn日志(一)体验官方提供的标准数据集​zhuanlan.zhihu.com sklearn ...

  7. idea2020.2中@test是怎么测试的_Sklearn 划分训练集和测试集

    [从零开始学机器学习第 03 篇] 摘要:手写 Sklearn 的 train_test_split 函数. 之前两篇文章以酒吧的红酒故事引出了 kNN 分类算法,根据已倒好的酒(样本),预测新倒的酒 ...

  8. sklearn.model_selection.train_test_split随机划分训练集和测试集

    1 函数用途 train_test_split()是交叉验证中常用的函数,功能是将数组或矩阵按比例随机划分为训练集和测试集,使用方法为: X_train,X_test, y_train, y_test ...

  9. python尝试不同的随机数进行数据划分、使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征的卡方检验的p值,如果所有p值都大于0.05则训练集和测试集都具有统计显著性、数据划分合理

    python尝试不同的随机数进行数据划分.使用卡方检验依次计算不同随机数划分下训练接和测试集所有分类特征(categorical)的卡方检验的p值,如果所有p值都大于0.05则退出循环.则训练集和测试 ...

  10. Sklearn-train_test_split随机划分训练集和测试集

    sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/gene ...

最新文章

  1. Asp.net导出Excel
  2. React-Context
  3. makefile中使用变量
  4. ceph常用命令-pool相关命令
  5. Github|基于 Jittor 的 GAN 模型库
  6. 在java中通过过键盘输入_java中从键盘输入
  7. [3]java1.8线程池—ThreadPoolExecutor
  8. 视频、网络传输速率科普
  9. Java Annotation 刷课笔记(二)
  10. 用java写蒙特卡洛模拟_java实现蒙特卡洛模拟求解渗透问题
  11. 视频编解码(三):H265编码器
  12. 奥克兰计算机科学专业世界排名,2019QS世界大学学科排名出炉,新西兰最强专业看过来!...
  13. UNCTF2020web方向部分题解
  14. 关机或重新启动电脑勾选再次登录时重新打开窗口导致无法上网
  15. 上传ipa到appstore最简洁的方法
  16. FFCreator制作视频(合成视频)
  17. node 项目 ------ 图片下载(加强ajax理解)
  18. 有源器件和无源器件的区别
  19. 1周开发,7留35%,小游戏《成语消消对战》团队专访
  20. Mr.Captain东:跳动的心(CSS3)

热门文章

  1. 格雷码编码器 c语言,格雷码编码器功能实现
  2. GIS离线地图的下载与发布
  3. android实现应用商店开发,基于Android平台的应用商店客户端的设计与实现
  4. 【cofface】酷派手机升级助手Coolpad Download Assistant图文教程
  5. android 平板root,安卓平板电脑怎么root 安卓平板一键root方法_硬件教程
  6. SQL Server无法连接客户端的问题
  7. abaqus单位问题
  8. AXURE RP EXTENSION FOR CHROME:AXURE RP铬延展剂--谷歌工具插件使用配置(打开并成功预览本地.html文件)
  9. 云服务器远程桌面复制
  10. 如何用计算机放出音乐,如何录制电脑内部播放的声音及音乐 - 楼月语音聊天录音软件...