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 数据集介绍 三种坦克图片数据集,如下图所示: -![](https://www.educoder.net/api/attachments/458868) +

+ +

-![](https://www.educoder.net/api/attachments/458870) +

+ +

+ +

+ +

-![](https://www.educoder.net/api/attachments/458871) 以上有三种数据集,分别是以`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 评估模型 我们已经把模型训练好了,接下来就是评估模型了。