diff --git a/SUMMARY.md b/SUMMARY.md
index 360c229..f8fbc2a 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -21,7 +21,7 @@
* [4.2 SparkGraphX计算生成最短路径](/chapter4/4.2SparkGraphX计算生成最短路径.md)
* [第五章 Spark机器学习实战](/chapter5/5Spark机器学习实战简介.md)
* [5.1 Spark机器学习入门](/chapter5/5.1Spark机器学习入门.md)
- * [5.2 Spark机器学习 - 坦克卫星图片识别分类](/chapter5/5.2Spark机器学习实战.md)
+ * [5.2 Spark机器学习 - 坦克卫星图片识别分类](/chapter5/5.2Spark机器学习-坦克卫星图片识别分类.md)
diff --git a/chapter5/5.2Spark机器学习 - 坦克卫星图片识别分类.md b/chapter5/5.2Spark机器学习-坦克卫星图片识别分类.md
similarity index 87%
rename from chapter5/5.2Spark机器学习 - 坦克卫星图片识别分类.md
rename to chapter5/5.2Spark机器学习-坦克卫星图片识别分类.md
index 94582a7..9a81958 100644
--- a/chapter5/5.2Spark机器学习 - 坦克卫星图片识别分类.md
+++ b/chapter5/5.2Spark机器学习-坦克卫星图片识别分类.md
@@ -1,23 +1,30 @@
-## 5.1 Spark机器学习 - 坦克卫星图片识别分类
+## 5.2 Spark机器学习 - 坦克卫星图片识别分类
-### 5.1.1 数据集介绍
+### 5.2.1 数据集介绍
三种坦克图片数据集,如下图所示:
-
+
+
+
-
+
+
+
+
+
+
+
-
以上有三种数据集,分别是以`bmp-2`开头的`BMP-2`步兵战车的图片、以`btr-70`开头的`BTR-70`装甲输送车的图片、以`t-72`开头的`T-72`主战坦克的图片。
-#### 5.1.2 数据集处理
+#### 5.2.2 数据集处理
-##### 5.1.2.1 加载图片数据集
+##### 5.2.2.1 加载图片数据集
我们可以使用`opencv_python`计算机视觉库来读取一幅图像。
@@ -38,7 +45,7 @@ img = img.reshape(rows*columns)
```
-##### 5.1.2.2 将一维数组转换成 Spark 中的向量
+##### 5.2.2.2 将一维数组转换成 Spark 中的向量
上一步我们将图片转换成一维的数组之后了,接下来我们将一维数组转换成 Spark 中的向量。
@@ -93,7 +100,7 @@ print(type(img))
一般我们会直接将数组转换成稠密向量。
-##### 5.1.2.3 将向量与标签进行绑定并将其转换成Dataframe
+##### 5.2.2.3 将向量与标签进行绑定并将其转换成Dataframe
上面的两步,我们已经加载了图片数据并将其转换成`Spark`中的向量了,但是这样还远远不够,为什么呢?
@@ -140,7 +147,7 @@ print(type(img))
通过`pandas`构建了 `Dataframe`之后指定了列名这样做的话,就可以不用设置`featuresCol`、`labelCol`了,同时增强了代码可读性。
-#### 5.1.3 Spark 加载数据集
+#### 5.2.3 Spark 加载数据集
上面我们已经把数据集处理完毕之后,然后我们可以通过`Spark`来加载数据集。
@@ -150,7 +157,7 @@ sparkDF = spark.createDataFrame(df) # df是我们通过pandas构建的Dataframe
```
-#### 5.1.4 将数据集拆分训练集和测试集
+#### 5.2.4 将数据集拆分训练集和测试集
上面我们把图片数据集加载到`Spark`中了,之后我们要把数据集划分成两部分,一部分为训练集,另一部分为测试集。
@@ -163,7 +170,7 @@ train_df, test_df = sparkDF.randomSplit([0.7, 0.3])
```
-#### 5.1.5 创建LR分类器
+#### 5.2.5 创建LR分类器
逻辑回归是一种用于预测分类响应的流行方法。这是广义线性模型的一种特殊情况,可以预测结果的可能性。在`spark.ml`逻辑回归中,可以通过使用二项式逻辑回归来预测二进制结果,或者在使用多项式逻辑回归时可以将其预测为多类结果。使用该`family` 参数在这两种算法之间进行选择,或者将其保留为未设置状态,`Spark`会推断出正确的变体。
@@ -178,7 +185,7 @@ train_df, test_df = sparkDF.randomSplit([0.7, 0.3])
lr = LogisticRegression(family="multinomial")
```
-#### 5.1.6 训练模型
+#### 5.2.6 训练模型
上一步,我们已经把`LR`分类器构建好了并且我们把数据集划分成训练集与测试集了,接下来我们就是训练模型了。
@@ -186,7 +193,7 @@ lr = LogisticRegression(family="multinomial")
model = lr.fit(train_df)
```
-#### 5.1.7 评估模型
+#### 5.2.7 评估模型
我们已经把模型训练好了,接下来就是评估模型了。