R实现数据抽样

训练集与测试集
     x为输入变量,y为输出变量。利用训练集中的x,y建立模型。

将测试集中的x带入模型,来预测测试集目标输出变量y的值,设为y’,将训练集的x带入模型,来预测训练集目标输出变量y的值,设为y’’。那么y’’与y的误差评价了模型的拟合程度,即自己对自己的契合程度;而y’与y的误差则评价了模型的推广程度,即与别人的契合程度。当我们说一个模型相对较好时,往往指该模型的拟合程度和推广程度综合最优。
用到的软件包及函数:

软件包 函数 函数意义
base(无需加载,默认含有) sample() 简单随机抽样
Sampling(需下载) stratr() 分层抽样
Sampling(需下载) cluster() 整群抽样
简单随机抽样

常选取70%的客户(数据)用于调研(建模),剩下30%用来测试。
用set.seed()这个函数设置随机种子,随机数的产生需要有一个随机的种子,因为用计算机产生的随机数是通过递推的方法得来的,必须有一个初始值。用同一台电脑,且在初始值和递推方法相同的情况下,可以产生相同的随机序列。 set.seed(100), set.seed(100), set.seed(33),前两组产生的样本相同。

clients<-read.csv(“clients.csv”)
set.seed(100)
select<-sample(1:nrow(clients),length(clients$client_id)*0.7,
replace=FALSE) #默认replace=FALSE不放回抽样
train_clinet<-clients[select,] #选取训练集数据
test_clinet<-clients[-select,] #剩下的测试集数据

附:
sample(x, size, replace = FALSE, prob =NULL)
x: 带抽取对象
size: 想要抽取的样本数量
replace: 是否为有放回,默认为FALSE,即无放回
prob: 设置个抽取样本的抽样概率,默认为无取值,即等概率抽样

分层抽样

按照变量bad_ind做分层抽样,

accepts <- read.csv(“accepts.csv”)
library(sampling)
fc<-prop.table(table(acceptsKaTeX parse error: Expected 'EOF', got '#' at position 32: … #̲计算各层的占比 n<-roun…bad_ind) #查看抽样结果是否正确
select<-getdata(accepts,sample_accepts_stra) #得到抽样数据
train<-accepts[selectKaTeX parse error: Expected 'EOF', got '#' at position 40: … #̲整理训练数据集 test<-a…ID_unit,] #从总数据集中减去训练数据集,得到测试数据集

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

整群抽样

cluster(data, clustername, size, method=c(“srswor”,“srswr”,“poisson”,“systematic”),
pik,description=FALSE)
clustername: 用来划分群的变量名称
size:需要抽取的群数

发布了30 篇原创文章 · 获赞 0 · 访问量 332

猜你喜欢

转载自blog.csdn.net/hua_chang/article/details/105036555