简单随机抽样

简单随机抽样分为有放回抽样和无放回抽样,这两种形式都可以通过base包中的sample()函数实现。

sample(x, size, replace = FALSE, prob =NULL)

x: 带抽取对象,若为整数则表示从1-n的整数中抽取,特别注意如果x为数据库抽取的是列而非行
size: 想要抽取的样本数量
replace: 是否为有放回,默认为FALSE,即无放回
prob: 设置个抽取样本的抽样概率,默认为无取值,即等概率抽样

实例:

sample(x=6,size=3,replace = F, prob=c(0.1,0.2,0.3,0.2,0.1,0.1))
# [1] 2 3 6

分层抽样

分层抽样可以通过sampling包中的strata()函数实现。

strata(data, stratanames=NULL, size, method=c("srswor","srswr","poisson","systematic"),pik,description=FALSE)

data: 带抽样数据
stratanames: 进行分层所依据的变量名称
size: 各层中要抽出的观测样本数
method: 选择4中抽样方法,分别为无放回、有放回、泊松、系统抽样,默认为srswor
pik: 设置各层中样本的抽样概率
description: 选择是否输出含有各层基本信息的结果

注意每一层都是无放回抽样。

library(sampling)
df=data.frame(x=c(1,2,2,3,3,4),api=c('index','index','logout','show','show','index'))sub2=strata(df, stratanames = 'x',size=c(1,2,1,1), method='srswor',description=T)
# Stratum 1
#
# Population total and number of selected units: 1 1
# Stratum 2
#
# Population total and number of selected units: 2 2
# Stratum 3
#
# Population total and number of selected units: 2 1
# Stratum 4
#
# Population total and number of selected units: 1 1
# Number of strata  4
# Total number of selected units 5
sub2
# x ID_unit Prob Stratum
# 1 1       1  1.0       1
# 2 2       2  1.0       2
# 3 2       3  1.0       2
# 4 3       4  0.5       3
# 6 4       6  1.0       4

整群抽样

cluster(data, clustername, size,method=c("srswor","srswr","poisson","systematic"),pik,description=FALSE)

data: 带抽样数据
clustername: 用来划分群的变量名称
size:需要抽取的群数
method: 选择4中抽样方法,分别为无放回、有放回、泊松、系统抽样,默认为srswor
pik: 设置各层中样本的抽样概率
description: 选择是否输出含有各层基本信息的结果

实例:

library(sampling)
df=data.frame(x=c(1,2,2,3,3,4),api=c('index','index','logout','show','show','index'))sub3=cluster(df, clustername = 'x',size=2, method='srswor',description=T)
# Number of selected clusters: 2
# Number of units in the population and number of selected units: 6 3
sub3
# x ID_unit Prob
# 1 1       1  0.5
# 2 3       4  0.5
# 3 3       5  0.5

.

训练集与测试集的分割

训练集和测试集的分割在模型训练中经常使用,因此怎样用高效的代码实现很重要。

R语言实现:

df=data.frame(x=1:10,y=paste0('n',1:10))
train_ind=sample(x=nrow(df),size=7,replace = F)
train_set=df[train_ind,]
train_set
# x   y
# 9   9  n9
# 5   5  n5
# 3   3  n3
# 7   7  n7
# 10 10 n10
# 8   8  n8
# 4   4  n4
test_set=df[-train_ind,]
test_set
# x  y
# 1 1 n1
# 2 2 n2
# 6 6 n6

python语言实现:
python语言中没有像R这么方便的索引方式,但是提供了sklearn包中的分割函数。

基础代码的实现

import pandas as pd
import numpy as np
y=["".join(('n',str(_))) for _ in range(1,11)]
df=pd.DataFrame({'x':range(1,11),'y':y})
train_ind=np.random.choice(range(10),size=7,replace=False)
test_ind=np.array(list(set(range(10))-set(train_ind)))
train_set=df.iloc[train_ind,]
#     x    y
# 3   4   n4
# 4   5   n5
# 0   1   n1
# 8   9   n9
# 9  10  n10
# 5   6   n6
# 6   7   n7
test_set=df.iloc[test_ind,]
#    x   y
# 1  2  n2
# 2  3  n3
# 7  8  n8

sklearn包的实现

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size, random_state)

test_size 为测试集占比,如果为整数就代表样本的数量
random_state 为随机数种子

x=range(1,11)
y=["".join(('n',str(_))) for _ in range(1,11)]
X_train, X_test, y_train, y_test = train_test_split(x,y, test_size=0.3, random_state=10)
X_train
# [10, 2, 7, 8, 4, 1, 6]
X_test
# [3, 9, 5]
y_train
# ['n10', 'n2', 'n7', 'n8', 'n4', 'n1', 'n6']
y_test
['n3', 'n9', 'n5']

参考来源:

1.sklearn官网https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split

2.https://blog.csdn.net/u014460433/article/details/52756752

R语言中常用的抽样函数相关推荐

  1. c语言中常用的字符函数以及字符串函数

    文章目录 前言 一.常用字符串函数 1.strlen() 2.strcpy() 3.strcat() 4.strcmp() 5.strstr() 6.memcpy() 6.memmove() 二.qs ...

  2. c/c++语言中常用的math函数

    在实用math库函数之前,需要引用头文件 include<math.h> 常用库函数如下: 1.fabs(double X) 该函数用于对double型取绝对值 如果用于float会损失精 ...

  3. mysql sql总计函数_请问select SQL 语言中常用的合计函数有哪些?

    1.sql中sum和count的区别 ----sql聚合函数 (1)首先,sum是对一个字段求和,hive中字段的类型一般是string或者是int,如果是int当然没有问题,如果是string类型但 ...

  4. C语言中常用字符串处理函数(总结大全)

    目录 字符串处理函数 1.char *gets(char *s); 2. char *fgets(char *s, intsize, FILE *stream); 3. int puts(const ...

  5. C语言中常用的数学函数

    ① double exp(double x); (求e的x次幂) ② double pow(double x, double y); (求x的y次幂) ③ double sqrt(double x); ...

  6. bind merge r 和join_R语言中的数据合并函数(merge,cbind和rbind)的使用

    R语言中的数据合并函数(merge,cbind和rbind)的使用-R语言中用cbind() 和rbind() 构建分块矩阵 1.merge函数 两个数据框拥有相同的时间或观测值,但这些列却不尽相同. ...

  7. r语言中正定矩阵由于误差不正定_R语言之数据处理(一)

    在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...

  8. 技巧 | 如何使用R语言的常用工具包绘制双变量填充地图

    之前本号转载了DataCharm公众号的一篇推送: 转载 | 双变量映射地图可视化绘制方法 这篇推送使用了biscale工具包绘制了双变量填充地图.近来,小编发现使用常用的绘图工具包也能很便捷的绘制这 ...

  9. c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数

    /*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...

  10. R语言字符串拼接(paste()函数)

    R语言中常使用paste()函数进行字符串拼接,paste()函数可以将任意数量的参数组合在一起. 1. 语法 代码 参数 paste(-, sep = " ", collapse ...

最新文章

  1. rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)
  2. Windows 10 系统安装教程
  3. KPI在小型产品团队中的实践
  4. (上)python3 selenium3 从框架实现代码学习selenium让你事半功倍
  5. linux下安装chrome
  6. UVA 11806 Cheerleaders (容斥原理)
  7. PASCAL VOC 2012 dataset、 云盘分享
  8. C与指针——指针(一)
  9. 打印机无法访问计算机,WIN7无法访问共享打印机及文件的解决办法
  10. QQ守卫农场辅助--QQ守卫农场外挂
  11. java毕业生设计学生管理部门信息共享交流系统计算机源码+系统+mysql+调试部署+lw
  12. 国美易卡运用人工智能实现线上线下消费场景
  13. 火狐插件 打开html 死机,Firefox火狐Flash插件卡死问题完美解决方法(转载)
  14. 计算机课程收获ppt模板,大学计算机实验心得收获.ppt
  15. 基带、射频,到底是什么?
  16. 【嵌入式底层知识修炼】基于通用消抖算法,拓展通用非阻塞Key按键识别算法
  17. linux磁盘分区题目,Linux练习例题(附答案)
  18. 手机拍摄全景图并且使用Threejs实现VR全景,超简单WebVR
  19. scrollTop兼容性问题
  20. Default encoder for format image2 (codec png) is probably disabled. Please choose an encoder manuall

热门文章

  1. JScrollBar().setValue(0)设置滚动条位置失效问题
  2. 如何玩转抖音吸粉引流,老路子新热点照样1000+
  3. Pycharm处理 E501 line too long 警告
  4. 你绝没看如此详细的PDF去水印教程
  5. 基于c++的电子宠物
  6. Linux排查CPU使用率100%
  7. 国内主流API市场分析报告
  8. iphone7 无法连接计算机看照片,教你iphone7一键导出照片至电脑方法及iPhone7连接电脑itunes没反应怎么办...
  9. 华为云、百度、斗鱼的技术专家聚到一起在探讨什么?
  10. 爱欲与文明(一)快乐原则与现实原则