R语言中sample()的一些用法以及随机选择出测试样本和训练样本

根据样本数据随机选择20%做测试样本,80%做训练样本

# 数据划分
# 设置工作空间
# 把“数据及程序”文件夹拷贝到F盘下,再用setwd设置工作空间
setwd("F:/数据及程序/chapter6/示例程序")
# 把数据分为两部分:训练数据、测试数据
# 读入数据
Data <- read.csv("./data/model.csv")
# 数据命名
colnames(Data) <- c("time", "userid", "ele_ind", "loss_ind", "alarm_ind", "class")
# 数据分割

set.seed(1234)  # 设置随机种子,改成set.seed(5)...都行,R语言中set.seed(),该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性。如果不设定种子,生成的随机数无法重现。

> set.seed(5) #设定种子

> x<-rnorm(10) # 在设定种子的前提下生成10个随机数

> x

[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639

[8] -0.63537131 -0.28577363 0.13810822

> set.seed(5) # 设定种子

> y<-rnorm(10)

> y

[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639

[8] -0.63537131 -0.28577363 0.13810822

)# 定义序列ind,随机抽取1和2,1的个数占80%,2的个数占20%
ind <- sample(2, nrow(Data), replace = TRUE, prob = c(0.8, 0.2))
trainData <- Data[ind == 1,]
 # 训练数据
testData <- Data[ind == 2,]  # 测试数据
# 数据存储
write.csv(trainData, "./tmp/trainData.csv", row.names = FALSE)

write.csv(testData, "./tmp/testData.csv", row.names = FALSE)

。。。。。。。。。。。。。。。。完。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

> set.seed(1234)  # 设置随机种子
 set.seed()中的数字是一个标记啦,下次你还想取这个随机序列就启用set.seed(1234),后面随机函数会和上次一样生成样本。
> ind <- sample(3, nrow(Data), replace = TRUE, prob = c(0.8, 0.2,0.4))
> ind
  [1] 1 3 3 3 2 3 1 1 3 1 3 1 1 2 1 3 1 1 1 1 1 1 1 1 1 3 1 2
 [29] 3 1 1 1 1 1 1 3 1 1 2 3 1 3 1 3 1 1 3 1 1 3 1 1 3 1 1 1
 [57] 1 3 1 3 2 1 1 1 1 3 1 1 1 1 1 2 1 3 1 1 1 1 1 3 2 1 1 1
 [85] 1 2 1 1 1 2 1 2 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 3 1


其他关于sample()的小例子

> x=1:10
> sample(x=x)

 [1]  5  9  2 10  7  4  1  8  6  3


> x=1:1000
> sample(x=x,size=20)
 [1] 981 539 444 947 451 190 986 545 763 906 676 403 989 145

[15] 194 995 402 343 820 195


> x=1:10
> sample(x=x,size=5,replace=T)

[1] 9 4 2 4 4


> a=c("A","B")
> sample(x=a,size=10,replace=T)

 [1] "A" "A" "B" "B" "B" "B" "B" "A" "A" "A"




阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页