R语言中常用的抽样函数
简单随机抽样
简单随机抽样分为有放回抽样和无放回抽样,这两种形式都可以通过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语言中常用的抽样函数相关推荐
- c语言中常用的字符函数以及字符串函数
文章目录 前言 一.常用字符串函数 1.strlen() 2.strcpy() 3.strcat() 4.strcmp() 5.strstr() 6.memcpy() 6.memmove() 二.qs ...
- c/c++语言中常用的math函数
在实用math库函数之前,需要引用头文件 include<math.h> 常用库函数如下: 1.fabs(double X) 该函数用于对double型取绝对值 如果用于float会损失精 ...
- mysql sql总计函数_请问select SQL 语言中常用的合计函数有哪些?
1.sql中sum和count的区别 ----sql聚合函数 (1)首先,sum是对一个字段求和,hive中字段的类型一般是string或者是int,如果是int当然没有问题,如果是string类型但 ...
- C语言中常用字符串处理函数(总结大全)
目录 字符串处理函数 1.char *gets(char *s); 2. char *fgets(char *s, intsize, FILE *stream); 3. int puts(const ...
- C语言中常用的数学函数
① double exp(double x); (求e的x次幂) ② double pow(double x, double y); (求x的y次幂) ③ double sqrt(double x); ...
- bind merge r 和join_R语言中的数据合并函数(merge,cbind和rbind)的使用
R语言中的数据合并函数(merge,cbind和rbind)的使用-R语言中用cbind() 和rbind() 构建分块矩阵 1.merge函数 两个数据框拥有相同的时间或观测值,但这些列却不尽相同. ...
- r语言中正定矩阵由于误差不正定_R语言之数据处理(一)
在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...
- 技巧 | 如何使用R语言的常用工具包绘制双变量填充地图
之前本号转载了DataCharm公众号的一篇推送: 转载 | 双变量映射地图可视化绘制方法 这篇推送使用了biscale工具包绘制了双变量填充地图.近来,小编发现使用常用的绘图工具包也能很便捷的绘制这 ...
- c语言中有裁剪字符串的函数吗,C语言中的字符串截取函数
/*======================================================== 子数整数 源程序名 num.??? (pas,c,cpp) 可执行文件名 num. ...
- R语言字符串拼接(paste()函数)
R语言中常使用paste()函数进行字符串拼接,paste()函数可以将任意数量的参数组合在一起. 1. 语法 代码 参数 paste(-, sep = " ", collapse ...
最新文章
- rabbitmq消费固定个数消息_SpringBoot+RabbitMQ (保证消息100%投递成功并被消费)
- Windows 10 系统安装教程
- KPI在小型产品团队中的实践
- (上)python3 selenium3 从框架实现代码学习selenium让你事半功倍
- linux下安装chrome
- UVA 11806 Cheerleaders (容斥原理)
- PASCAL VOC 2012 dataset、 云盘分享
- C与指针——指针(一)
- 打印机无法访问计算机,WIN7无法访问共享打印机及文件的解决办法
- QQ守卫农场辅助--QQ守卫农场外挂
- java毕业生设计学生管理部门信息共享交流系统计算机源码+系统+mysql+调试部署+lw
- 国美易卡运用人工智能实现线上线下消费场景
- 火狐插件 打开html 死机,Firefox火狐Flash插件卡死问题完美解决方法(转载)
- 计算机课程收获ppt模板,大学计算机实验心得收获.ppt
- 基带、射频,到底是什么?
- 【嵌入式底层知识修炼】基于通用消抖算法,拓展通用非阻塞Key按键识别算法
- linux磁盘分区题目,Linux练习例题(附答案)
- 手机拍摄全景图并且使用Threejs实现VR全景,超简单WebVR
- scrollTop兼容性问题
- Default encoder for format image2 (codec png) is probably disabled. Please choose an encoder manuall
热门文章
- JScrollBar().setValue(0)设置滚动条位置失效问题
- 如何玩转抖音吸粉引流,老路子新热点照样1000+
- Pycharm处理 E501 line too long 警告
- 你绝没看如此详细的PDF去水印教程
- 基于c++的电子宠物
- Linux排查CPU使用率100%
- 国内主流API市场分析报告
- iphone7 无法连接计算机看照片,教你iphone7一键导出照片至电脑方法及iPhone7连接电脑itunes没反应怎么办...
- 华为云、百度、斗鱼的技术专家聚到一起在探讨什么?
- 爱欲与文明(一)快乐原则与现实原则