我的程序将我的数据集分为训练集和测试集,基于训练集和测试集构建决策树,并计算混淆矩阵的准确性,敏感性和特异性。
我添加了一个 for循环,以将程序重新运行100次。这意味着我得到了100套训练和测试集。 for循环的输出为 result_df ,其中包括准确性,特异性和敏感性列。
这是for循环:
result_df<-matrix(ncol=3,nrow=100)
colnames(result_df)<-c("Acc","Sens","Spec")
for (g in 1:100 )
{
# Divide into Train and test set
smp_size <- floor(0.8 * nrow(mydata1))
train_ind <- sample(seq_len(nrow(mydata1)), size = smp_size)
train <- mydata1[train_ind, ]
test <- mydata1[-train_ind, ]
REST OF MY CODE
}
我的result_df(前20行)如下:
> result_df[1:20,]
Acc Sens Spec id
1 26 22 29 1
2 10 49 11 2
3 37 43 36 3
4 4 79 4 4
5 21 21 20 5
6 31 17 34 6
7 57 4 63 7
8 33 3 39 8
9 56 42 59 9
10 65 88 63 10
11 6 31 7 11
12 57 44 62 12
13 25 10 27 13
14 32 24 32 14
15 19 8 19 15
16 27 27 29 16
17 38 89 33 17
18 54 32 56 18
19 35 62 33 19
20 37 6 40 20
我使用ggplot()将散布图和灵敏度绘制为散点图:
我想做什么:
我想看例如数据点17的训练和测试集。
我认为我可以使用set.seed
函数来做到这一点,但是我对此函数并不熟悉。
答案 0 :(得分:0)
首先,很明显,如果在代码中存储了估算模型(例如,存储在列表中),则可以从这些模型中恢复数据。但是,事实并非如此。
使用当前代码,您所能做的就是查看最后的训练和测试集(编号100)。那是因为您一直在重新定义test
,train
,train_ind
变量。实现所需目标的最便宜的方式(就内存而言)是在每次迭代中以某种方式存储train_ind
。例如,您可以使用
train_inds <- list()[rep(1, 100)]
for (g in 1:100 )
{
smp_size <- floor(0.8 * nrow(mydata1))
train_inds[[g]] <- sample(seq_len(nrow(mydata1)), size = smp_size)
train <- mydata1[train_inds[[g]], ]
test <- mydata1[-train_ind[[g]], ]
# The rest
}
,通过这种方式,您将始终知道哪个观测值位于哪个集合中。如果您只对某一特定迭代感兴趣,则可以仅保存该迭代。
最后,set.seed
并没有帮助。如果您所做的只是运行rnorm(1)
一百次,那么可以,通过使用set.seed
,您可以稍后快速恢复第n个生成的值。但是,就您而言,您不仅将sample
用于train_ind
,还使用了# test_set_order.py
def unpack(input):
print('input is {}'.format(input))
result = []
for i in input:
result.extend(i)
return result
print(unpack({'A', 'B'}))
。模型估计函数也很可能生成随机值。