使用分层的方法,如何将 Iris 数据集分为训练集和测试集?阐述分层的概念和算法,并写出相应 的 R 代码将 Iris 数据集分为训练集 (70%) 和测试集 (30%)
时间: 2024-02-16 10:04:17 浏览: 27
分层的方法是指根据数据集的特征,将数据集划分为不同层次,并且在每个层次中,训练集和测试集的比例是相同的,以保证训练集和测试集的数据分布是相似的。这样做的好处是可以提高模型的稳定性和泛化能力。
在分类问题中,通常根据数据集中每个类别的比例进行分层。具体算法如下:
1. 统计数据集中每个类别的数目;
2. 计算每个类别在训练集和测试集中所占的比例;
3. 将每个类别的数据集按照比例分为训练集和测试集。
下面是将 Iris 数据集分为训练集和测试集的 R 代码:
```R
# 导入数据集
data(iris)
# 统计每个类别的数目
n <- table(iris$Species)
# 计算每个类别在训练集和测试集中所占的比例
prop_train <- 0.7
prop_test <- 1 - prop_train
train_size <- prop_train * n
test_size <- prop_test * n
# 分层抽样
set.seed(123) # 设置随机种子,保证结果可重复
train_index <- unlist(lapply(split(1:n, iris$Species), function(x) sample(x, train_size[x])))
train_data <- iris[train_index, ]
test_data <- iris[-train_index, ]
```
在上面的代码中,首先使用 `table()` 函数统计每个类别的数目,然后计算训练集和测试集中每个类别所占的比例。最后使用 `lapply()` 函数和 `sample()` 函数对每个类别进行分层抽样,得到训练集和测试集。