修改目录

master
planet 6 years ago
parent 0467aab019
commit d8711d6036

@ -21,7 +21,7 @@
* [4.2 SparkGraphX计算生成最短路径](/chapter4/4.2SparkGraphX计算生成最短路径.md) * [4.2 SparkGraphX计算生成最短路径](/chapter4/4.2SparkGraphX计算生成最短路径.md)
* [第五章 Spark机器学习实战](/chapter5/5Spark机器学习实战简介.md) * [第五章 Spark机器学习实战](/chapter5/5Spark机器学习实战简介.md)
* [5.1 Spark机器学习入门](/chapter5/5.1Spark机器学习入门.md) * [5.1 Spark机器学习入门](/chapter5/5.1Spark机器学习入门.md)
* [5.2 Spark机器学习 - 坦克卫星图片识别分类](/chapter5/5.2Spark机器学习实战.md) * [5.2 Spark机器学习 - 坦克卫星图片识别分类](/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) <p align="center" >
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/458868" alt="" height="60%" width="60%" />
</p>
![](https://www.educoder.net/api/attachments/458870) <p align="center" >
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/458870" alt="" height="60%" width="60%" />
</p>
<p align="center" >
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/458871" alt="" height="60%" width="60%" />
</p>
![](https://www.educoder.net/api/attachments/458871)
以上有三种数据集,分别是以`bmp-2`开头的`BMP-2`步兵战车的图片、以`btr-70`开头的`BTR-70`装甲输送车的图片、以`t-72`开头的`T-72`主战坦克的图片。 以上有三种数据集,分别是以`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`计算机视觉库来读取一幅图像。 我们可以使用`opencv_python`计算机视觉库来读取一幅图像。
@ -38,7 +45,7 @@ img = img.reshape(rows*columns)
``` ```
##### 5.1.2.2 将一维数组转换成 Spark 中的向量 ##### 5.2.2.2 将一维数组转换成 Spark 中的向量
上一步我们将图片转换成一维的数组之后了,接下来我们将一维数组转换成 Spark 中的向量。 上一步我们将图片转换成一维的数组之后了,接下来我们将一维数组转换成 Spark 中的向量。
@ -93,7 +100,7 @@ print(type(img))
一般我们会直接将数组转换成稠密向量。 一般我们会直接将数组转换成稠密向量。
##### 5.1.2.3 将向量与标签进行绑定并将其转换成Dataframe ##### 5.2.2.3 将向量与标签进行绑定并将其转换成Dataframe
上面的两步,我们已经加载了图片数据并将其转换成`Spark`中的向量了,但是这样还远远不够,为什么呢? 上面的两步,我们已经加载了图片数据并将其转换成`Spark`中的向量了,但是这样还远远不够,为什么呢?
@ -140,7 +147,7 @@ print(type(img))
通过`pandas`构建了 `Dataframe`之后指定了列名这样做的话,就可以不用设置`featuresCol`、`labelCol`了,同时增强了代码可读性。 通过`pandas`构建了 `Dataframe`之后指定了列名这样做的话,就可以不用设置`featuresCol`、`labelCol`了,同时增强了代码可读性。
#### 5.1.3 Spark 加载数据集 #### 5.2.3 Spark 加载数据集
上面我们已经把数据集处理完毕之后,然后我们可以通过`Spark`来加载数据集。 上面我们已经把数据集处理完毕之后,然后我们可以通过`Spark`来加载数据集。
@ -150,7 +157,7 @@ sparkDF = spark.createDataFrame(df) # df是我们通过pandas构建的Dataframe
``` ```
#### 5.1.4 将数据集拆分训练集和测试集 #### 5.2.4 将数据集拆分训练集和测试集
上面我们把图片数据集加载到`Spark`中了,之后我们要把数据集划分成两部分,一部分为训练集,另一部分为测试集。 上面我们把图片数据集加载到`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`会推断出正确的变体。 逻辑回归是一种用于预测分类响应的流行方法。这是广义线性模型的一种特殊情况,可以预测结果的可能性。在`spark.ml`逻辑回归中,可以通过使用二项式逻辑回归来预测二进制结果,或者在使用多项式逻辑回归时可以将其预测为多类结果。使用该`family` 参数在这两种算法之间进行选择,或者将其保留为未设置状态,`Spark`会推断出正确的变体。
@ -178,7 +185,7 @@ train_df, test_df = sparkDF.randomSplit([0.7, 0.3])
lr = LogisticRegression(family="multinomial") lr = LogisticRegression(family="multinomial")
``` ```
#### 5.1.6 训练模型 #### 5.2.6 训练模型
上一步,我们已经把`LR`分类器构建好了并且我们把数据集划分成训练集与测试集了,接下来我们就是训练模型了。 上一步,我们已经把`LR`分类器构建好了并且我们把数据集划分成训练集与测试集了,接下来我们就是训练模型了。
@ -186,7 +193,7 @@ lr = LogisticRegression(family="multinomial")
model = lr.fit(train_df) model = lr.fit(train_df)
``` ```
#### 5.1.7 评估模型 #### 5.2.7 评估模型
我们已经把模型训练好了,接下来就是评估模型了。 我们已经把模型训练好了,接下来就是评估模型了。
Loading…
Cancel
Save