diff --git a/docs/7.集成方法-随机森林和AdaBoost.md b/docs/7.集成方法-随机森林和AdaBoost.md
index 8d1bd3bf..b55edbba 100644
--- a/docs/7.集成方法-随机森林和AdaBoost.md
+++ b/docs/7.集成方法-随机森林和AdaBoost.md
@@ -93,15 +93,15 @@
 #### 开发流程
 
 ```
-收集数据：提供的文本文件。
-准备数据：转换样本集。
-分析数据：手工检查数据。
-训练算法：在数据上，利用 random_forest() 函数进行优化评估，返回模型的综合分类结果。
-测试算法：在采用自定义 n_folds 份随机重抽样 进行测试评估，得出综合的预测评分。
-使用算法：本例没有完成此步骤，若你感兴趣可以构建完整的应用程序，从案例进行封装，就可以构造一个实际运行的类似系统
+收集数据：提供的文本文件
+准备数据：转换样本集
+分析数据：手工检查数据
+训练算法：在数据上，利用 random_forest() 函数进行优化评估，返回模型的综合分类结果
+测试算法：在采用自定义 n_folds 份随机重抽样 进行测试评估，得出综合的预测评分
+使用算法：若你感兴趣可以构建完整的应用程序，从案例进行封装，也可以参考我们的代码
 ```
 
-> 收集数据：提供的文本文件。
+> 收集数据：提供的文本文件
 
 样本数据：sonar-all-data.txt
 
@@ -139,17 +139,17 @@ def loadDataSet(filename):
 
 > 训练算法：在数据上，利用 random_forest() 函数进行优化评估，返回模型的综合分类结果
 
-* 数据随机化
+* 样本数据随机无放回抽样-用于交叉验证
 
 ```python
 def cross_validation_split(dataset, n_folds):
-    """cross_validation_split(将数据集进行抽重抽样 n_folds 份，数据可以重复重复抽取，每一次list的元素是无重复的)
+    """cross_validation_split(将数据集进行抽重抽样 n_folds 份，数据可以重复重复抽取)
 
     Args:
         dataset     原始数据集
         n_folds     数据集dataset分成n_flods份
     Returns:
-        dataset_split    list集合，存放的是：将数据集进行抽重抽样 n_folds 份，数据可以重复重复抽取，每一次list的元素是无重复的
+        dataset_split    list集合，存放的是：将数据集进行抽重抽样 n_folds 份，数据可以重复重复抽取
     """
     dataset_split = list()
     dataset_copy = list(dataset)       # 复制一份 dataset,防止 dataset 的内容改变
@@ -161,13 +161,38 @@ def cross_validation_split(dataset, n_folds):
             index = randrange(len(dataset_copy))
             # 将对应索引 index 的内容从 dataset_copy 中导出，并将该内容从 dataset_copy 中删除。
             # pop() 函数用于移除列表中的一个元素（默认最后一个元素），并且返回该元素的值。
-            # fold.append(dataset_copy.pop(index))  # 无放回的方式
-            fold.append(dataset_copy[index])  # 有放回的方式
+            fold.append(dataset_copy.pop(index))  # 无放回的方式
+            # fold.append(dataset_copy[index])  # 有放回的方式
         dataset_split.append(fold)
     # 由dataset分割出的n_folds个数据构成的列表，为了用于交叉验证
     return dataset_split
 ```
 
+* 训练数据集随机化
+
+```python
+# Create a random subsample from the dataset with replacement
+def subsample(dataset, ratio):   # 创建数据集的随机子样本
+    """random_forest(评估算法性能，返回模型得分)
+
+    Args:
+        dataset         训练数据集
+        ratio           训练数据集的样本比例
+    Returns:
+        sample          随机抽样的训练样本
+    """
+
+    sample = list()
+    # 训练样本的按比例抽样。
+    # round() 方法返回浮点数x的四舍五入值。
+    n_sample = round(len(dataset) * ratio)
+    while len(sample) < n_sample:
+        # 有放回的随机采样，有一些样本被重复采样，从而在训练集中多次出现，有的则从未在训练集中出现，此则自助采样法。从而保证每棵决策树训练集的差异性
+        index = randrange(len(dataset))
+        sample.append(dataset[index])
+    return sample
+```
+
 * 特征随机化
 
 ```python
@@ -242,7 +267,7 @@ def evaluate_algorithm(dataset, algorithm, n_folds, *args):
         scores      模型得分
     """
 
-    # 将数据集进行抽重抽样 n_folds 份，数据可以重复重复抽取，每一次 list 的元素是无重复的
+    # 将数据集进行随机抽样，分成 n_folds 份，数据无重复的抽取
     folds = cross_validation_split(dataset, n_folds)
     scores = list()
     # 每次循环从 folds 从取出一个 fold 作为测试集，其余作为训练集，遍历整个 folds ，实现交叉验证
@@ -277,7 +302,7 @@ def evaluate_algorithm(dataset, algorithm, n_folds, *args):
     return scores
 ```
 
-> 使用算法：本例没有完成此步骤，若你感兴趣可以构建完整的应用程序，从案例进行封装，就可以构造一个实际运行的类似系统
+> 使用算法：若你感兴趣可以构建完整的应用程序，从案例进行封装，也可以参考我们的代码
 
 [完整代码地址](https://github.com/apachecn/MachineLearning/blob/master/src/python/7.RandomForest/randomForest.py): <https://github.com/apachecn/MachineLearning/blob/master/src/python/7.RandomForest/randomForest.py>
 
