diff --git "a/docs/cn/Pipeline \347\273\204\344\273\266/ONNX/ONNX \346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictor).md" "b/docs/cn/Pipeline \347\273\204\344\273\266/ONNX/ONNX \346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictor).md"
index c3b0cac33..c85cded15 100644
--- "a/docs/cn/Pipeline \347\273\204\344\273\266/ONNX/ONNX \346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictor).md"
+++ "b/docs/cn/Pipeline \347\273\204\344\273\266/ONNX/ONNX \346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictor).md"
@@ -26,6 +26,8 @@ Python 类名:OnnxModelPredictor
组件使用的是 ONNX 1.11.0 版本,当有 GPU 时,自动使用 GPU 进行推理,否则使用 CPU 进行推理。
+在 Windows 下运行时,如果遇到 ```UnsatisfiedLinkError```,请下载 [Visual C++ 2019 Redistributable Packages](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 并重启,然后重新运行。
+
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/Pipeline \347\273\204\344\273\266/PyTorch/TorchScript \346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictor).md" "b/docs/cn/Pipeline \347\273\204\344\273\266/PyTorch/TorchScript \346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictor).md"
index 1471a8214..33d51aac7 100644
--- "a/docs/cn/Pipeline \347\273\204\344\273\266/PyTorch/TorchScript \346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictor).md"
+++ "b/docs/cn/Pipeline \347\273\204\344\273\266/PyTorch/TorchScript \346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictor).md"
@@ -22,7 +22,9 @@ Python 类名:TorchModelPredictor
- 输出列的数量需要与模型输出结果匹配。
- 输出类型可以是 Alink ```Tensor``` 类型或者 Alink 支持的类型,如果从模型预测输出的结果转换到指定类型失败那么将报错;暂不支持列表或字典类型。
-组件使用的是 PyTorch 1.8.1 版本,当有 GPU 时,自动使用 GPU 进行推理,否则使用 CPU 进行推理。
+组件使用的是 PyTorch 1.8.1 CPU 版本,如果需要使用 GPU 功能,可以自行替换插件文件。
+
+在 Windows 下运行时,如果遇到 ```UnsatisfiedLinkError```,请下载 [Visual C++ 2015 Redistributable Packages](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 并重启,然后重新运行。
## 参数说明
diff --git "a/docs/cn/Pipeline \347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/Redis\350\241\250\346\237\245\346\211\276 (LookupRedis).md" "b/docs/cn/Pipeline \347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/Redis\350\241\250\346\237\245\346\211\276 (LookupRedis).md"
index 425683b4b..ce72d605a 100644
--- "a/docs/cn/Pipeline \347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/Redis\350\241\250\346\237\245\346\211\276 (LookupRedis).md"
+++ "b/docs/cn/Pipeline \347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/Redis\350\241\250\346\237\245\346\211\276 (LookupRedis).md"
@@ -18,10 +18,9 @@ Python 类名:LookupRedis
| selectedCols | 选择的列名 | 计算列对应的列名列表 | String[] | ✓ | | |
| clusterMode | Not available! | Not available! | Boolean | | | false |
| databaseIndex | Not available! | Not available! | Long | | | |
-| redisIP | Not available! | Not available! | String | | | |
+| pipelineSize | Not available! | Not available! | Integer | | | 1 |
| redisIPs | Not available! | Not available! | String[] | | | |
| redisPassword | Not available! | Not available! | String | | | |
-| redisPort | Not available! | Not available! | Integer | | | 6379 |
| reservedCols | 算法保留列名 | 算法保留列 | String[] | | | null |
| timeout | Not available! | Not available! | Integer | | | |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictBatchOp).md"
index 09285fe5c..a7b4eedbf 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictBatchOp).md"
@@ -26,6 +26,8 @@ Python 类名:OnnxModelPredictBatchOp
组件使用的是 ONNX 1.11.0 版本,当有 GPU 时,自动使用 GPU 进行推理,否则使用 CPU 进行推理。
+在 Windows 下运行时,如果遇到 ```UnsatisfiedLinkError```,请下载 [Visual C++ 2019 Redistributable Packages](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 并重启,然后重新运行。
+
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictBatchOp).md"
index cc1630885..820c7397f 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictBatchOp).md"
@@ -22,7 +22,9 @@ Python 类名:TorchModelPredictBatchOp
- 输出列的数量需要与模型输出结果匹配。
- 输出类型可以是 Alink ```Tensor``` 类型或者 Alink 支持的类型,如果从模型预测输出的结果转换到指定类型失败那么将报错;暂不支持列表或字典类型。
-组件使用的是 PyTorch 1.8.1 版本,当有 GPU 时,自动使用 GPU 进行推理,否则使用 CPU 进行推理。
+组件使用的是 PyTorch 1.8.1 CPU 版本,如果需要使用 GPU 功能,可以自行替换插件文件。
+
+在 Windows 下运行时,如果遇到 ```UnsatisfiedLinkError```,请下载 [Visual C++ 2015 Redistributable Packages](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 并重启,然后重新运行。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/MetaPath\346\270\270\350\265\260 (MetaPathWalkBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/MetaPath\346\270\270\350\265\260 (MetaPathWalkBatchOp).md"
index 3650fa01f..3d3134377 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/MetaPath\346\270\270\350\265\260 (MetaPathWalkBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/MetaPath\346\270\270\350\265\260 (MetaPathWalkBatchOp).md"
@@ -5,8 +5,9 @@ Python 类名:MetaPathWalkBatchOp
## 功能介绍
- MataPathWalk是描述随机游走的一种算法。在给定的图上,每次迭代过程中,点都会按照一定的metaPath转移到它的邻居上,
- 转移到每个邻居的概率和连接这两个点的边的Type相关。通过这样的随机游走可以获得固定长度的随机游走序列,这可以类比自然语言中的句子。
+MataPathWalk [1] 是描述随机游走的一种算法。在给定的图上,每次迭代过程中,点都会按照一定的metaPath转移到它的邻居上,转移到每个邻居的概率和连接这两个点的边的Type相关。通过这样的随机游走可以获得固定长度的随机游走序列,这可以类比自然语言中的句子。
+
+[1] Dong et al. metapath2vec: Scalable Representation Learning for Heterogeneous Networks. KDD2017.
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/\351\232\217\346\234\272\346\270\270\350\265\260 (RandomWalkBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/\351\232\217\346\234\272\346\270\270\350\265\260 (RandomWalkBatchOp).md"
index 278a94624..46359e906 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/\351\232\217\346\234\272\346\270\270\350\265\260 (RandomWalkBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\345\233\276/\351\232\217\346\234\272\346\270\270\350\265\260 (RandomWalkBatchOp).md"
@@ -5,10 +5,12 @@ Python 类名:RandomWalkBatchOp
## 功能介绍
-RandomWalk是deepwalk中描述随机游走的一种算法。
+RandomWalk是deepwalk [1] 中描述随机游走的一种算法。
在给定的图上,每次迭代过程中,点都会转移到它的邻居上,转移到每个邻居的概率和连接这两个点的边的权重相关。
通过这样的随机游走可以获得固定长度的随机游走序列,这可以类比自然语言中的句子。
+[1] Bryan Perozzi et al. DeepWalk: online learning of social representations. KDD 2014.
+
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\350\256\255\347\273\203 (ItemCfTrainBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\350\256\255\347\273\203 (ItemCfTrainBatchOp).md"
index f0f4ac56c..78cd75023 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\350\256\255\347\273\203 (ItemCfTrainBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\350\256\255\347\273\203 (ItemCfTrainBatchOp).md"
@@ -5,9 +5,8 @@ Python 类名:ItemCfTrainBatchOp
## 功能介绍
-ItemCF 是一种被广泛使用的推荐算法,用给定打分数据训练一个推荐模型,
-用于预测user对item的评分、对user推荐itemlist,或者对item推荐userlist。
-
+ItemCF 是一种被广泛使用的协同过滤算法,用给定打分数据训练一个推荐模型,
+用于预测user对item的评分、对user喜欢的itemlist,或者对item推荐可能的userlist等。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\357\274\232ItemsPerUser\346\216\250\350\215\220 (ItemCfItemsPerUserRecommBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\357\274\232ItemsPerUser\346\216\250\350\215\220 (ItemCfItemsPerUserRecommBatchOp).md"
index f9843d508..3634df503 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\357\274\232ItemsPerUser\346\216\250\350\215\220 (ItemCfItemsPerUserRecommBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/ItemCf\357\274\232ItemsPerUser\346\216\250\350\215\220 (ItemCfItemsPerUserRecommBatchOp).md"
@@ -93,11 +93,11 @@ public class ItemCfItemsPerUserRecommBatchOpTest {
```
### 运行结果
-user|prediction_result
-----|-----------------
-1|{"item":"[3]","score":"[0.23533936216582085]"}
-2|{"item":"[3]","score":"[0.38953648389671724]"}
-2|{"item":"[3]","score":"[0.38953648389671724]"}
-4|{"item":"[2]","score":"[0.17950184794838112]"}
-4|{"item":"[2]","score":"[0.17950184794838112]"}
-4|{"item":"[2]","score":"[0.17950184794838112]"}
+user| prediction_result
+----|------------------------------
+1| MTable(1,2)(item,score)
3 | 0.2353
+2| MTable(1,2)(item,score)
3 | 0.3895
+2| MTable(1,2)(item,score)
3 | 0.3895
+4| MTable(1,2)(item,score)
2 | 0.1795
+4| MTable(1,2)(item,score)
2 | 0.1795
+4| MTable(1,2)(item,score)
2 | 0.1795
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/UserCf\350\256\255\347\273\203 (UserCfTrainBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/UserCf\350\256\255\347\273\203 (UserCfTrainBatchOp).md"
index bb85eca89..2042ad80f 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/UserCf\350\256\255\347\273\203 (UserCfTrainBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\216\250\350\215\220/UserCf\350\256\255\347\273\203 (UserCfTrainBatchOp).md"
@@ -5,9 +5,8 @@ Python 类名:UserCfTrainBatchOp
## 功能介绍
-UserCF 是一种被广泛使用的推荐算法,用给定打分数据训练一个推荐模型,
-用于预测user对item的评分、对user推荐itemlist,或者对item推荐userlist。
-
+UserCF 是一种被广泛使用的协同过滤算法,用给定打分数据训练一个推荐模型,
+用于预测user对item的评分、对user推荐itemlist,或者对item推荐userlist等。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleBatchOp).md"
index 571df831f..1f16ea163 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleBatchOp).md"
@@ -5,8 +5,7 @@ Python 类名:StratifiedSampleBatchOp
## 功能介绍
-
-本算子是对每个类别按照比例进行分层随机抽样。
+分层采样组件。给定输入数据,本算法根据用户指定的不同类别的采样比例进行随机采样。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\211\215N\344\270\252\346\225\260 (FirstNBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\211\215N\344\270\252\346\225\260 (FirstNBatchOp).md"
index 4caa76cd7..37fa6577d 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\211\215N\344\270\252\346\225\260 (FirstNBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\211\215N\344\270\252\346\225\260 (FirstNBatchOp).md"
@@ -32,8 +32,6 @@ df = pd.DataFrame([
["9.1,9.1,9.1"],
["9.2,9.2,9.2"]
])
-
-
# batch source
inOp = BatchOperator.fromDataframe(df, schemaStr='Y string')
@@ -76,8 +74,6 @@ public class FirstNBatchOpTest {
```
### 运行结果
-
-
|Y|
|---|
|0,0,0|
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\212\240\346\235\203\351\207\207\346\240\267 (WeightSampleBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\212\240\346\235\203\351\207\207\346\240\267 (WeightSampleBatchOp).md"
index 870ee6687..3890b7d44 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\212\240\346\235\203\351\207\207\346\240\267 (WeightSampleBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\212\240\346\235\203\351\207\207\346\240\267 (WeightSampleBatchOp).md"
@@ -5,8 +5,7 @@ Python 类名:WeightSampleBatchOp
## 功能介绍
-
-- 本算子是按照数据点的权重对数据按照比例进行加权采样,权重越大的数据点被采样的可能性越大。
+本算子是按照数据点的权重对数据按照比例进行加权采样,权重越大的数据点被采样的可能性越大。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\233\272\345\256\232\346\235\241\346\225\260\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleWithSizeBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\233\272\345\256\232\346\235\241\346\225\260\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleWithSizeBatchOp).md"
index 99feb9ac3..de04929dd 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\233\272\345\256\232\346\235\241\346\225\260\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleWithSizeBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\233\272\345\256\232\346\235\241\346\225\260\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleWithSizeBatchOp).md"
@@ -5,8 +5,7 @@ Python 类名:StratifiedSampleWithSizeBatchOp
## 功能介绍
-
-本算子对输入数据的每个类别进行指定个数的分层随机抽样。
+固定条数分层随机采样组件。给定输入数据,本算法根据用户指定的不同类别的采样个数进行随机采样。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvBatchOp).md"
index 3b2704eb5..20597d066 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvBatchOp).md"
@@ -60,7 +60,8 @@ public class ColumnsToCsvBatchOpTest {
@Test
public void testColumnsToCsvBatchOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
BatchOperator > data = new MemSourceBatchOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonBatchOp).md"
index 0b7510b91..89b3391bc 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonBatchOp).md"
@@ -56,7 +56,8 @@ public class ColumnsToJsonBatchOpTest {
@Test
public void testColumnsToJsonBatchOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
BatchOperator > data = new MemSourceBatchOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
@@ -73,6 +74,6 @@ public class ColumnsToJsonBatchOpTest {
### 运行结果
|row|json|
- |---|----|
- | 1 |{"f0":"1.0","f1":"2.0"}|
- | 2 |{"f0":"4.0","f1":"8.0"}|
+|---|----|
+| 1 |{"f0":"1.0","f1":"2.0"}|
+| 2 |{"f0":"4.0","f1":"8.0"}|
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvBatchOp).md"
index f5fa4fcc0..92a339f47 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvBatchOp).md"
@@ -58,7 +58,8 @@ public class ColumnsToKvBatchOpTest {
@Test
public void testColumnsToKvBatchOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
BatchOperator > data = new MemSourceBatchOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
@@ -75,7 +76,7 @@ public class ColumnsToKvBatchOpTest {
### 运行结果
|row|kv|
- |---|---|
- |1|f0:1.0,f1:2.0|
- |2|f0:4.0,f1:8.0|
+|---|---|
+|1|f0:1.0,f1:2.0|
+|2|f0:4.0,f1:8.0|
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleBatchOp).md"
index 589a393f4..64a6353d2 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleBatchOp).md"
@@ -58,7 +58,8 @@ public class ColumnsToTripleBatchOpTest {
@Test
public void testColumnsToTripleBatchOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
BatchOperator > data = new MemSourceBatchOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorBatchOp).md"
index e1d642537..a137fe148 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorBatchOp).md"
@@ -6,7 +6,7 @@ Python 类名:ColumnsToVectorBatchOp
## 功能介绍
将数据格式从 Columns 转成 Vector
-
+数据格式可以为数值类型,如int,float,long,double,也可以为能够转换为数值类型的字符串。
## 参数说明
@@ -37,7 +37,6 @@ op = ColumnsToVectorBatchOp()\
.setSelectedCols(["f0", "f1"])\
.setReservedCols(["row"])\
.setVectorCol("vec")\
- .setVectorSize(5)\
.linkFrom(data)
op.print()
@@ -58,7 +57,8 @@ public class ColumnsToVectorBatchOpTest {
@Test
public void testColumnsToVectorBatchOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
BatchOperator > data = new MemSourceBatchOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
@@ -66,7 +66,6 @@ public class ColumnsToVectorBatchOpTest {
.setSelectedCols("f0", "f1")
.setReservedCols("row")
.setVectorCol("vec")
- .setVectorSize(5)
.linkFrom(data);
op.print();
}
@@ -74,9 +73,9 @@ public class ColumnsToVectorBatchOpTest {
```
### 运行结果
-
-|row|vec|
- |---|-----|
- |1|$5$1.0 2.0|
- |2|$5$4.0 8.0|
+
+row|vec
+---|---
+1|1.0 2.0
+1|4.0 8.0
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleBatchOp).md"
index 0c7bb9b1d..343f770e0 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleBatchOp).md"
@@ -5,10 +5,7 @@ Python 类名:SampleBatchOp
## 功能介绍
-
-- 本算子对数据进行随机抽样,每个样本都以相同的概率被抽到。
-
-
+本算子对数据进行随机抽样,每个样本都以相同的概率被抽到。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\350\257\273\345\205\245 (AkSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\350\257\273\345\205\245 (AkSourceBatchOp).md"
index 3d21db8f8..c8a19c6f3 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\350\257\273\345\205\245 (AkSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\350\257\273\345\205\245 (AkSourceBatchOp).md"
@@ -7,6 +7,18 @@ Python 类名:AkSourceBatchOp
## 功能介绍
从文件系统读Ak文件。Ak文件格式是Alink 自定义的一种文件格式,能够将数据的Schema保留输出的文件格式。
+### 分区选择
+Export2FileSinkStreamOp组件能将数据分区保存,AkSourceBatchOp可以选择分区读取。
+分区目录名格式为"分区名=值",例如: month=06/day=17;month=06/day=18。
+Alink将遍历目录下的分区名和分区值,构造分区表:
+
+month | day
+---|---
+06 | 17
+06 | 18
+
+使用SQL语句查找分区,例如:AkSourceBatchOp.setPartitions("day = '17'"),分区选择语法参考[《Flink SQL 内置函数》](https://www.yuque.com/pinshu/alink_tutorial/list_sql_function),分区值为String类型。
+
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\350\257\273\345\205\245 (CsvSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\350\257\273\345\205\245 (CsvSourceBatchOp).md"
index 88b66c89a..9546e601a 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\350\257\273\345\205\245 (CsvSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\350\257\273\345\205\245 (CsvSourceBatchOp).md"
@@ -6,6 +6,16 @@ Python 类名:CsvSourceBatchOp
## 功能介绍
读CSV文件。支持从本地、hdfs、http读取
+### 分区选择
+分区目录名格式为"分区名=值",例如: city=beijing/month=06/day=17;city=hangzhou/month=06/day=18。
+Alink将遍历目录下的分区名和分区值,构造分区表:
+
+city | month | day
+---|---|---
+beijing | 06 | 17
+hangzhou | 06 | 18
+
+使用SQL语句查找分区,例如:CsvSourceBatchOp.setPartitions("city = 'beijing'"),分区选择语法参考[《Flink SQL 内置函数》](https://www.yuque.com/pinshu/alink_tutorial/list_sql_function),分区值为String类型。
## 参数说明
@@ -17,6 +27,7 @@ Python 类名:CsvSourceBatchOp
| handleInvalidMethod | 处理无效值的方法 | 处理无效值的方法,可取 error, skip | String | | "ERROR", "SKIP" | "ERROR" |
| ignoreFirstLine | 是否忽略第一行数据 | 是否忽略第一行数据 | Boolean | | | false |
| lenient | 是否容错 | 若为true,当解析失败时丢弃该数据;若为false,解析失败是抛异常 | Boolean | | | false |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| quoteChar | 引号字符 | 引号字符 | Character | | | "\"" |
| rowDelimiter | 行分隔符 | 行分隔符 | String | | | "\n" |
| skipBlankLine | 是否忽略空行 | 是否忽略空行 | Boolean | | | true |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\350\257\273\345\205\245 (LibSvmSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\350\257\273\345\205\245 (LibSvmSourceBatchOp).md"
index 783f56dcf..e2b92d515 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\350\257\273\345\205\245 (LibSvmSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\350\257\273\345\205\245 (LibSvmSourceBatchOp).md"
@@ -12,6 +12,7 @@ Python 类名:LibSvmSourceBatchOp
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| startIndex | 起始索引 | 起始索引 | Integer | | | 1 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\350\257\273\345\205\245 (TsvSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\350\257\273\345\205\245 (TsvSourceBatchOp).md"
index 7bf8ecc2b..f5a311952 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\350\257\273\345\205\245 (TsvSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\350\257\273\345\205\245 (TsvSourceBatchOp).md"
@@ -14,6 +14,7 @@ Python 类名:TsvSourceBatchOp
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
| schemaStr | Schema | Schema。格式为"colname coltype[, colname2, coltype2[, ...]]",例如"f0 string, f1 bigint, f2 double" | String | ✓ | | |
| ignoreFirstLine | 是否忽略第一行数据 | 是否忽略第一行数据 | Boolean | | | false |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| skipBlankLine | 是否忽略空行 | 是否忽略空行 | Boolean | | | true |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\350\257\273\345\205\245 (TextSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\350\257\273\345\205\245 (TextSourceBatchOp).md"
index ae253b03d..915d5f044 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\350\257\273\345\205\245 (TextSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\350\257\273\345\205\245 (TextSourceBatchOp).md"
@@ -5,8 +5,7 @@ Python 类名:TextSourceBatchOp
## 功能介绍
-
-按行读取文件数据
+按行读取文件数据。
## 参数说明
@@ -14,6 +13,7 @@ Python 类名:TextSourceBatchOp
| --- | --- | --- | --- | --- | --- | --- |
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
| ignoreFirstLine | 是否忽略第一行数据 | 是否忽略第一行数据 | Boolean | | | false |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| textCol | 文本列名称 | 文本列名称 | String | | | "text" |
## 代码示例
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceBatchOp).md"
index 8dba64418..98e8777df 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceBatchOp).md"
@@ -5,12 +5,24 @@ Python 类名:ParquetSourceBatchOp
## 功能介绍
-读parquet文件数据。支持从本地、hdfs、http读取
+读parquet文件数据。支持从本地、hdfs、http读取,可以递归读取目录下全部文件,如果是分区目录,可以对分区进行选择。
+
+### 分区选择
+分区目录名格式为"分区名=值",例如: city=beijing/month=06/day=17;city=hangzhou/month=06/day=18。
+Alink将遍历目录下的分区名和分区值,构造分区表:
+
+city | month | day
+---|---|---
+beijing | 06 | 17
+hangzhou | 06 | 18
+
+使用SQL语句查找分区,例如:ParquetSourceBatchOp.setPartitions("city = 'beijing'"),分区选择语法参考[《Flink SQL 内置函数》](https://www.yuque.com/pinshu/alink_tutorial/list_sql_function),分区值为String类型。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
## 代码示例
@@ -19,10 +31,10 @@ Python 类名:ParquetSourceBatchOp
### Python 代码
```python
filePath = 'https://alink-test-data.oss-cn-hangzhou.aliyuncs.com/iris.parquet'
-parquetSource = ParquetSourceStreamOp()\
+parquetSource = ParquetSourceBatchOp()\
.setFilePath(filePath)
parquetSource.print()
-StreamOperator.execute()
+
```
### Java 代码
```java
@@ -39,6 +51,28 @@ public class ParquetSourceStreamOpTest {
ParquetSourceBatchOp source = new ParquetSourceBatchOp()
.setFilePath(new FilePath(parquetName, new HttpFileReadOnlyFileSystem()));
source.print();
+
+ //选择分区示例
+ new ParquetSourceBatchOp()
+ .setFilePath(filepath)
+ .setPartitions("year>'9'")
+ .print();
+
+ new ParquetSourceBatchOp()
+ .setFilePath(filepath)
+ .setPartitions("city = 'beijing'")
+ .print();
+
+ new ParquetSourceBatchOp()
+ .setFilePath(filepath)
+ .setPartitions("year < '7' OR year > '9'")
+ .print();
+
+ new ParquetSourceBatchOp()
+ .setFilePath(new FilePath(parquetName2))
+ .setPartitions("year BETWEEN '9' AND '10'")
+ .print();
+
}
}
```
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/\345\206\205\345\255\230\346\225\260\346\215\256\350\257\273\345\205\245 (MemSourceBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/\345\206\205\345\255\230\346\225\260\346\215\256\350\257\273\345\205\245 (MemSourceBatchOp).md"
index d4954ae3a..9dfb88074 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/\345\206\205\345\255\230\346\225\260\346\215\256\350\257\273\345\205\245 (MemSourceBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/\345\206\205\345\255\230\346\225\260\346\215\256\350\257\273\345\205\245 (MemSourceBatchOp).md"
@@ -5,7 +5,7 @@ Python 类名:MemSourceBatchOp
## 功能介绍
-从内存中读取数据生成表
+从内存中读取数据生成表。
MemSourceBatchOp支持多个构造函数
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkBatchOp).md"
index 7a1ae0d5b..c2b0b93ef 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkBatchOp).md"
@@ -5,7 +5,7 @@ Python 类名:CsvSinkBatchOp
## 功能介绍
-写CSV文件。支持写到本地、hdfs。
+将输入数据写出到CSV文件。支持写到本地、hdfs。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
@@ -14,6 +14,7 @@ Python 类名:CsvSinkBatchOp
| fieldDelimiter | 字段分隔符 | 字段分隔符 | String | | | "," |
| numFiles | 文件数目 | 文件数目 | Integer | | | 1 |
| overwriteSink | 是否覆写已有数据 | 是否覆写已有数据 | Boolean | | | false |
+| partitionCols | 分区列 | 创建分区使用的列名 | String[] | | | null |
| quoteChar | 引号字符 | 引号字符 | Character | | | "\"" |
| rowDelimiter | 行分隔符 | 行分隔符 | String | | | "\n" |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkBatchOp).md"
index 37777ce3e..ec9816d39 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkBatchOp).md"
@@ -17,6 +17,7 @@ Python 类名:LibSvmSinkBatchOp
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
| vectorCol | 向量列名 | 向量列对应的列名 | String | ✓ | | |
| overwriteSink | 是否覆写已有数据 | 是否覆写已有数据 | Boolean | | | false |
+| partitionCols | 分区列 | 创建分区使用的列名 | String[] | | | null |
| startIndex | 起始索引 | 起始索引 | Integer | | | 1 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkBatchOp).md"
index beb3a32c3..7615aa935 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkBatchOp).md"
@@ -14,11 +14,12 @@ Python 类名:TsvSinkBatchOp
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
| numFiles | 文件数目 | 文件数目 | Integer | | | 1 |
| overwriteSink | 是否覆写已有数据 | 是否覆写已有数据 | Boolean | | | false |
+| partitionCols | 分区列 | 创建分区使用的列名 | String[] | | | null |
## 代码示例
-** 以下代码仅用于示意,可能需要修改部分代码或者配置环境后才能正常运行!**
### Python 代码
+** 以下代码仅用于示意,可能需要修改部分代码或者配置环境后才能正常运行!**
```python
df = pd.DataFrame([
["0L", "1L", 0.6],
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/Text\346\226\207\344\273\266\345\257\274\345\207\272 (TextSinkBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/Text\346\226\207\344\273\266\345\257\274\345\207\272 (TextSinkBatchOp).md"
index 013e7810a..8a9b6b473 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/Text\346\226\207\344\273\266\345\257\274\345\207\272 (TextSinkBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/Text\346\226\207\344\273\266\345\257\274\345\207\272 (TextSinkBatchOp).md"
@@ -13,6 +13,7 @@ Python 类名:TextSinkBatchOp
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
| numFiles | 文件数目 | 文件数目 | Integer | | | 1 |
| overwriteSink | 是否覆写已有数据 | 是否覆写已有数据 | Boolean | | | false |
+| partitionCols | 分区列 | 创建分区使用的列名 | String[] | | | null |
## 代码示例
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\345\215\241\346\226\271\351\200\211\346\213\251\345\231\250 (ChiSqSelectorBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\345\215\241\346\226\271\351\200\211\346\213\251\345\231\250 (ChiSqSelectorBatchOp).md"
index 8ec8bc40d..be2e8ebd7 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\345\215\241\346\226\271\351\200\211\346\213\251\345\231\250 (ChiSqSelectorBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\345\215\241\346\226\271\351\200\211\346\213\251\345\231\250 (ChiSqSelectorBatchOp).md"
@@ -6,7 +6,7 @@ Python 类名:ChiSqSelectorBatchOp
## 功能介绍
-针对table数据,进行特征筛选
+针对table数据,进行特征筛选。计算features和label列两两的卡方值,取最大的n个feature作为结果。
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTBatchOp).md"
index 71c08c23d..145f0106d 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTBatchOp).md"
@@ -6,7 +6,13 @@ Python 类名:DCTBatchOp
## 功能介绍
-对数据进行离散余弦变换。
+DCT(Discrete Cosine Transform), 又叫做离散余弦变换,是对数据进行离散余弦变换,可以用来做视频编码,图像压缩等,经过变换后数据会有更好的聚集性。
+输入是vector列,vector的size为n, 那经过变换后的输出变成size为n的vector。
+
+### 算法原理
+DCT变换就是输入信号为实偶函数的DFT变换
+
+
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\345\205\250\350\241\250\347\273\237\350\256\241 (VectorSummarizerBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\345\205\250\350\241\250\347\273\237\350\256\241 (VectorSummarizerBatchOp).md"
index bf4d025eb..cd605bcaf 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\345\205\250\350\241\250\347\273\237\350\256\241 (VectorSummarizerBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\345\205\250\350\241\250\347\273\237\350\256\241 (VectorSummarizerBatchOp).md"
@@ -6,7 +6,33 @@ Python 类名:VectorSummarizerBatchOp
## 功能介绍
-针对vector数据,进行全表统计
+* 全表统计用来计算整表的统计量, 包含count(个数),numValidValue(有效值个数), numMissingValue(缺失值个数), sum(求和), mean(均值), standardDeviation(标准差), variance(方差), min(最小值), max(最大值), normL1(L1范数), normL2(L2范数)。
+
+* 只支持vector列
+
+* 只支持java接口
+
+### 使用方式
+* 打印统计结果.
+
+```java
+test.lazyPrintVectorSummary();
+```
+
+* 获取相应的统计值
+
+```java
+ summary = summarizer.linkFrom(source).collectVectorSummary()
+ print(summary.sum('f_double'))
+ print(summary.mean('f_double'))
+ print(summary.variance('f_double'))
+ print(summary.standardDeviation('f_double'))
+ print(summary.min('f_double'))
+ print(summary.max('f_double'))
+ print(summary.normL1('f_double'))
+ print(summary.normL2('f_double'))
+ print(summary.numValidValue('f_double'))
+ print(summary.numMissingValue('f_double'))
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\347\233\270\345\205\263\347\263\273\346\225\260 (VectorCorrelationBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\347\233\270\345\205\263\347\263\273\346\225\260 (VectorCorrelationBatchOp).md"
index b21f2e381..cf0bcd99d 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\347\233\270\345\205\263\347\263\273\346\225\260 (VectorCorrelationBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\345\220\221\351\207\217\347\233\270\345\205\263\347\263\273\346\225\260 (VectorCorrelationBatchOp).md"
@@ -6,7 +6,22 @@ Python 类名:VectorCorrelationBatchOp
## 功能介绍
-针对vector数据,计算相关系数
+
+* 相关系数算法用于计算一个矩阵中每一列之间的相关系数,范围在[-1,1]之间。计算的时候,count数按两列间同时非空的元素个数计算,两两列之间可能不同。
+
+* 支持Pearson和Spearman两种相关系数
+
+* 只支持Vector类型列。如果想计算数字类型列,请参考CorrelationBatchOp
+
+
+### 使用方式
+* 通过collectCorrelation()获取CorrelationMetric.
+```python
+corr = corrOp.collectCorrelation()
+print(corr)
+print(corr.getCorrelation())
+print(corr.getCorrelation()[1][1])
+```
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\347\233\270\345\205\263\347\263\273\346\225\260 (CorrelationBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\347\233\270\345\205\263\347\263\273\346\225\260 (CorrelationBatchOp).md"
index f9b9f9137..d5ced92b0 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\347\233\270\345\205\263\347\263\273\346\225\260 (CorrelationBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\347\273\237\350\256\241\345\210\206\346\236\220/\347\233\270\345\205\263\347\263\273\346\225\260 (CorrelationBatchOp).md"
@@ -6,7 +6,20 @@ Python 类名:CorrelationBatchOp
## 功能介绍
-相关系数算法用于计算一个矩阵中每一列之间的相关系数,范围在[-1,1]之间。计算的时候,count数按两列间同时非空的元素个数计算,两两列之间可能不同。
+* 相关系数算法用于计算一个矩阵中每一列之间的相关系数,范围在[-1,1]之间。计算的时候,count数按两列间同时非空的元素个数计算,两两列之间可能不同。
+
+* 支持Pearson和Spearman两种相关系数
+
+* 只支持数字类型列。如果想计算vector列,请参考VectorCorrelationBatchOp
+
+### 使用方式
+* 通过collectCorrelation()获取CorrelationMetric.
+```python
+corr = corrOp.collectCorrelation()
+print(corr)
+print(corr.getCorrelation())
+print(corr.getCorrelation()[1][1])
+```
## 参数说明
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassBatchOp).md"
index 690763a37..db16a8508 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassBatchOp).md"
@@ -5,99 +5,107 @@ Python 类名:EvalBinaryClassBatchOp
## 功能介绍
-二分类评估是对二分类算法的预测结果进行效果评估。
-支持Roc曲线,LiftChart曲线,K-S曲线,Recall-Precision曲线绘制。
+对二分类算法的预测结果进行效果评估。
-流式的实验支持累计统计和窗口统计,除却上述四条曲线外,还给出Auc/Kappa/Accuracy/Logloss随时间的变化曲线。
+### 算法原理
-给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。
+在有监督二分类问题的评估中,每条样本都有一个真实的标签和一个由模型生成的预测。 这样每调样本点实际上可以划分为以下 4 个类别中的一类:
-#### 混淆矩阵
-
+ - True Positive(TP):标签为正类,预测为正类;
+ - True Negative(TN):标签为负类,预测为负类;
+ - False Positive(FP):标签为负类,预测为正类;
+ - False Negative(FN):标签为正类,预测为负类。
-#### Roc曲线
+通常,用 $TP, TN, FP, FN$ 分别表示属于各自类别的样本数。
+基于这几个数量,可以定义大部分的二分类评估指标。
-横坐标:FPR
+#### 精确率
-纵坐标:TPR
+$Precision = \frac{TP}{TP + FP}$
-#### AUC
+#### 召回率、敏感性
-Roc曲线下面的面积
+$Recall = \frac{TP}{TP + FN} = Sensitivity$
-#### K-S
+#### F-measure
-横坐标:阈值
+$F1=\frac{2TP}{2TP+FP+FN}=\frac{2\cdot Precision \cdot Recall}{Precision+Recall}$
-纵坐标:TPR和FPR
+#### 准确率
-#### KS
+$Accuracy=\frac{TP + TN}{TP + TN + FP + FN}$
-K-S曲线两条纵轴的最大差值
+#### 特异性
-#### Recall-Precision曲线
+$Specificity=\frac{TN}{FP+TN}$
-横坐标:Recall
+#### Kappa
-纵坐标:Precision
+$p_a =\frac{TP + TN}{TP + TN + FP + FN}$
-#### PRC
+$p_e = \frac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)}$
-Recall-Precision曲线下面的面积
+$kappa = \frac{p_a - p_e}{1 - p_e}$
-#### 提升曲线
+#### 混淆矩阵
-横坐标:$$ \dfrac{TP + FP}{total} $$
+
-纵坐标:TP
+二分类模型除了给出每条样本的预测标签之外,通常还会给出每条样本预测为正类的概率$p$,而预测标签是根据这个概率与阈值的关系确定的。
+通常情况下,阈值会设为 0.5,概率大于 0.5 的预测为正类,小于 0.5 的预测为负类。
+有一些评估指标会考虑这个阈值从 0 到 1 变化时,各个指标的变化情况,计算更加复杂的指标。
-#### Precision
-$$ Precision = \dfrac{TP}{TP + FP} $$
+#### LogLoss
+$LogLoss = -\frac{1}{n}\sum_{i}[y_i \log(y'_i) + (1-y_i) \log(1 - y'_i)]$
-#### Recall
-$$ Recall = \dfrac{TP}{TP + FN} $$
+这里,$y_i\in [0,1]$表示样本$i$的真实标签(正类为 1,负类为0),$y'_i$表示样本$i$预测为正类的概率。
+#### ROC(receiver operating characteristic)曲线
-#### F-Measure
-$$ F1=\dfrac{2TP}{2TP+FP+FN}=\dfrac{2\cdot Precision \cdot Recall}{Precision+Recall} $$
+阈值从 0 到 1 变化时, 横坐标:$FPR = FP / (FP + TN)$ 和纵坐标:$TPR = TP / (TP + FN)$构成的曲线。
+#### AUC (Area under curve)
-#### Sensitivity
-$$ Sensitivity=\dfrac{TP}{TP+FN} $$
+ROC 曲线下的面积。
+#### K-S 曲线
-#### Accuracy
-$$ Accuray=\dfrac{TP + TN}{TP + TN + FP + FN} $$
+阈值从 0 到 1 变化时,横坐标阈值和纵坐标$TPR$和$FPR$构成的曲线。
+#### KS 指标
-#### Specificity
-$$ Specificity=\dfrac{TN}{FP+T} $$
+K-S 曲线 中,两条曲线在纵轴方向上的最大差值。
+#### Precision-Recall 曲线
-#### Kappa
-$$ p_a =\dfrac{TP + TN}{TP + TN + FP + FN} $$
+阈值从 0 到 1 变化时,横坐标 Precision 和纵坐标 Recall 构成的曲线。
-$$ p_e = \dfrac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)} $$
+#### PRC 指标
-$$ kappa = \dfrac{p_a - p_e}{1 - p_e} $$
+Precision-Recall 曲线下的面积。
+#### 提升曲线(Lift Chart)
-#### Logloss
-$$ logloss=- \dfrac{1}{N}\sum_{i=1}^N \sum_{j=1}^My_{i,j}log(p_{i,j}) $$
+阈值从 0 到 1 变化时,横坐标$\frac{TP + FP}{N}$和纵坐标$TP$构成的曲线。
+
+### 使用方式
+
+该组件通常接二分类预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,通过参数 `predictionDetailCol` 指定预测详细信息列(包含有预测概率)。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
| predictionDetailCol | 预测详细信息列名 | 预测详细信息列名 | String | ✓ | 所选列类型为 [STRING] | |
| positiveLabelValueString | 正样本 | 正样本对应的字符串格式。 | String | | | null |
-
-
## 代码示例
### Python 代码
```python
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\233\236\345\275\222\350\257\204\344\274\260 (EvalRegressionBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\233\236\345\275\222\350\257\204\344\274\260 (EvalRegressionBatchOp).md"
index 5af9231b9..aca9650bb 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\233\236\345\275\222\350\257\204\344\274\260 (EvalRegressionBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\233\236\345\275\222\350\257\204\344\274\260 (EvalRegressionBatchOp).md"
@@ -5,62 +5,70 @@ Python 类名:EvalRegressionBatchOp
## 功能介绍
-回归评估是对回归算法的预测结果进行效果评估,支持下列评估指标。
+对回归算法的预测结果进行效果评估,支持下列评估指标。
-#### SST 总平方和(Sum of Squared for Total)
-$$ SST=\sum_{i=1}^{N}(y_i-\bar{y})^2 $$
+### 算法原理
+对于每条样本$i$,$y_i$表示样本的真实标签,$f_i$表示回归模型预测的值。样本总数记为$N$。
+支持计算下面的评估指标:
-#### SSE 误差平方和(Sum of Squares for Error)
-$$ SSE=\sum_{i=1}^{N}(y_i-f_i)^2 $$
+#### SST 总平方和(Sum of Squared for Total)
+$SST=\sum_{i=1}^{N}(y_i-\bar{y})^2$
-#### SSR 回归平方和(Sum of Squares for Regression)
-$$ SSR=\sum_{i=1}^{N}(f_i-\bar{y})^2 $$
+#### SSE 误差平方和(Sum of Squares for Error)
+$SSE=\sum_{i=1}^{N}(y_i-f_i)^2$
-#### R^2 判定系数(Coefficient of Determination)
-$$ R^2=1-\dfrac{SSE}{SST} $$
+#### SSR 回归平方和(Sum of Squares for Regression)
+$SSR=\sum_{i=1}^{N}(f_i-\bar{y})^2$
-#### R 多重相关系数(Multiple Correlation Coeffient)
-$$ R=\sqrt{R^2} $$
+#### R^2 判定系数(Coefficient of Determination)
+$R^2=1-\dfrac{SSE}{SST}$
+
+#### R 多重相关系数(Multiple Correlation Coeffient)
+
+$R=\sqrt{R^2}$
#### MSE 均方误差(Mean Squared Error)
-$$ MSE=\dfrac{1}{N}\sum_{i=1}^{N}(f_i-y_i)^2 $$
+$MSE=\dfrac{1}{N}\sum_{i=1}^{N}(f_i-y_i)^2$
-#### RMSE 均方根误差(Root Mean Squared Error)
-$$ RMSE=\sqrt{MSE} $$
+#### RMSE 均方根误差(Root Mean Squared Error)
+$RMSE=\sqrt{MSE}$
#### SAE/SAD 绝对误差(Sum of Absolute Error/Difference)
-$$ SAE=\sum_{i=1}^{N}|f_i-y_i| $$
+$SAE=\sum_{i=1}^{N}|f_i-y_i|$
#### MAE/MAD 平均绝对误差(Mean Absolute Error/Difference)
-$$ MAE=\dfrac{1}{N}\sum_{i=1}^{N}|f_i-y_i| $$
-
-#### MAPE 平均绝对百分误差(Mean Absolute Percentage Error)
-$$ MAPE=\dfrac{100}{N}\sum_{i=1}^{N}|\dfrac{f_i-y_i}{y_i}| $$
+$MAE=\dfrac{1}{N}\sum_{i=1}^{N}|f_i-y_i|$
+#### MAPE 平均绝对百分误差(Mean Absolute Percentage Error)
-#### count 行数
+$MAPE=\dfrac{100}{N}\sum_{i=1}^{N}|\dfrac{f_i-y_i}{y_i}|$
#### explained variance 解释方差
-$$ explained Variance=\dfrac{SSR}{N} $$
+$\mathrm{ExplainedVariance}=\dfrac{SSR}{N}$
+
+### 使用方式
+
+该组件通常接回归预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,通过参数 `predictionCol` 指定预测结果列。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
| predictionCol | 预测结果列名 | 预测结果列名 | String | ✓ | | |
-
-
## 代码示例
### Python 代码
```python
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassBatchOp).md"
index 6712960b8..4e7901a6c 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassBatchOp).md"
@@ -5,62 +5,77 @@ Python 类名:EvalMultiClassBatchOp
## 功能介绍
-多分类评估是对多分类算法的预测结果进行效果评估。
-支持Roc曲线,LiftChart曲线,K-S曲线,Recall-Precision曲线绘制。
+对多分类算法的预测结果进行效果评估。
-流式的实验支持累计统计和窗口统计,除却上述四条曲线外,还给出Auc/Kappa/Accuracy/Logloss随时间的变化曲线。
+### 算法原理
-给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。
+在多分类问题的评估中,每条样本都有一个真实的标签和一个由模型生成的预测。
+但与二分类问题不同,多分类算法中,总的类别数是大于2的,因此不能直接称作正类和负类。
-#### 混淆矩阵
-
+在计算评估指标时,可以将某个类别选定为正类,将其他值都看作负类,这样可以计算每个类别(per-class)的指标。
+进一步地,将每个类别各自的指标进行平均,可以得到模型总体的指标。
+这里的"平均"有三种做法:
-#### Precision
-$$ Precision = \dfrac{TP}{TP + FP} $$
+ - Macro 平均:直接对各个类别的同一个指标求数值平均值,作为总体指标;
+ - 加权平均:以样本中各个类别所占的比例为权重,对各个类别的同一个指标求加权平均值,作为总体指标;
+ - Micro 平均:将各个类别看作正类时的 $TP, TN, FN$ 相加,得到总的 $TP, TN, FN$ 值,然后计算指标。在 Micro 平均时,micro-F1, micro-precision, micro-recall 都等于 accuracy。
+所支持的每类别指标与平均指标见下:
-#### Recall
-$$ Recall = \dfrac{TP}{TP + FN} $$
+#### 精确率
+$Precision = \frac{TP}{TP + FP}$
-#### F-Measure
-$$ F1=\dfrac{2TP}{2TP+FP+FN}=\dfrac{2\cdot Precision \cdot Recall}{Precision+Recall} $$
+#### 召回率、敏感性
+$Recall = \frac{TP}{TP + FN} = Sensitivity$
-#### Sensitivity
-$$ Sensitivity=\dfrac{TP}{TP+FN} $$
+#### F-measure
+$F1=\frac{2TP}{2TP+FP+FN}=\frac{2\cdot Precision \cdot Recall}{Precision+Recall}$
-#### Accuracy
-$$ Accuray=\dfrac{TP + TN}{TP + TN + FP + FN} $$
+#### 准确率
+$Accuracy=\frac{TP + TN}{TP + TN + FP + FN}$
-#### Specificity
-$$ Specificity=\dfrac{TN}{FP+T} $$
+#### 特异性
+$Specificity=\frac{TN}{FP+TN}$
#### Kappa
-$$ p_a =\dfrac{TP + TN}{TP + TN + FP + FN} $$
-$$ p_e = \dfrac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)} $$
+$p_a =\frac{TP + TN}{TP + TN + FP + FN}$
+
+$p_e = \frac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)}$
+
+$kappa = \frac{p_a - p_e}{1 - p_e}$
-$$ kappa = \dfrac{p_a - p_e}{1 - p_e} $$
+#### 混淆矩阵
+
+
+二分类模型除了给出每条样本$i$的预测标签之外,通常还会给出每条样本预测为为各个类别$j$的概率$p_{i,j}$。
+通常情况下,每条样本最大概率对应的类别为该样本的预测标签。
-#### Logloss
-$$ logloss=- \dfrac{1}{N}\sum_{i=1}^N \sum_{j=1}^My_{i,j}log(p_{i,j}) $$
+#### LogLoss
+$LogLoss=- \frac{1}{n}\sum_{i} \sum_{j=1}^M y_{i,j}log(p_{i,j})$
+
+### 使用方式
+
+该组件通常接多分类预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,通过参数 `predictionCol` 和 `predictionDetailCol` 指定预测结果列和预测详细信息列(包含有预测概率)。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
| predictionCol | 预测结果列名 | 预测结果列名 | String | | | |
| predictionDetailCol | 预测详细信息列名 | 预测详细信息列名 | String | | 所选列类型为 [STRING] | |
-
-
## 代码示例
### Python 代码
```python
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\346\240\207\347\255\276\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiLabelBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\346\240\207\347\255\276\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiLabelBatchOp).md"
index ff75e66f9..a12e6edfc 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\346\240\207\347\255\276\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiLabelBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\346\240\207\347\255\276\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiLabelBatchOp).md"
@@ -5,35 +5,55 @@ Python 类名:EvalMultiLabelBatchOp
## 功能介绍
-多label分类评估是对多label分类算法的预测结果进行效果评估,支持下列评估指标。
+对多标签分类算法的预测结果进行效果评估。
-#### subsetAccuracy
-
+### 算法原理
-#### hammingLoss
-
+在多标签分类问题中,每个样本点 $i$ 所属标签集合记为 $L_i$,模型预测给出的预测集合记为 $P_i$;样本点总数记为 $N$。
-#### accuracy
-
+#### Precision
-#### microPrecision
-
+$\frac{1}{N} \sum_{i=0}^{N-1} \frac{\left|P_i \cap L_i\right|}{\left|P_i\right|}$
-#### microRecall
-
+#### Recall
-#### microF1
-
+$\frac{1}{N} \sum_{i=0}^{N-1} \frac{\left|L_i \cap P_i\right|}{\left|L_i\right|}$
-#### precision
-
+#### Accuracy
-#### recall
-
+$\frac{1}{N} \sum_{i=0}^{N - 1} \frac{\left|L_i \cap P_i \right|}{\left|L_i\right| + \left|P_i\right| - \left|L_i \cap P_i \right|}$
-#### f1
-$$ explained Variance=\dfrac{SSR}{N} $$
+#### Hamming Loss, HL
+$\frac{1}{N \cdot \left|L\right|} \sum_{i=0}^{N - 1} \left|L_i\right| + \left|P_i\right| - 2\left|L_i \cap P_i\right|$
+
+#### Subset Accuracy, SA
+
+$\frac{1}{N}\sum_{i=0}^{N-1}I[L_i =P_i]$
+
+这里 $I[\cdot]$ 是指示函数,内部条件满足时值为1,其他时候为0。
+
+#### F1 Measure
+
+$\frac{1}{N} \sum_{i=0}^{N-1} 2 \frac{\left|P_i \cap L_i\right|}{\left|P_i\right| \cdot \left|L_i\right|}$
+
+#### Micro Precision
+
+$\frac{TP}{TP + FP}=\frac{\sum_{i=0}^{N-1} \left|P_i \cap L_i\right|}{\sum_{i=0}^{N-1} \left|P_i \cap L_i\right| + \sum_{i=0}^{N-1} \left|P_i - L_i\right|}$
+
+#### Micro Recall
+
+$\frac{TP}{TP + FN}=\frac{\sum_{i=0}^{N-1} \left|P_i \cap L_i\right|}{\sum_{i=0}^{N-1} \left|P_i \cap L_i\right| + \sum_{i=0}^{N-1} \left|L_i - P_i\right|}$
+
+#### Micro F1
+
+$2 \cdot \frac{TP}{2 \cdot TP + FP + FN}=2 \cdot \frac{\sum_{i=0}^{N-1} \left|P_i \cap L_i\right|}{2 \cdot \sum_{i=0}^{N-1} \left|P_i \cap L_i\right| + \sum_{i=0}^{N-1} \left|L_i - P_i\right| + \sum_{i=0}^{N-1} \left|P_i - L_i\right|}$
+
+### 使用方式
+
+该组件通常接多标签分类预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,参数 `predictionCol` 和 `predictionCol` 指定预测结果列。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\346\216\222\345\272\217\350\257\204\344\274\260 (EvalRankingBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\346\216\222\345\272\217\350\257\204\344\274\260 (EvalRankingBatchOp).md"
index 4d4eb28cb..4d7bea412 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\346\216\222\345\272\217\350\257\204\344\274\260 (EvalRankingBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\346\216\222\345\272\217\350\257\204\344\274\260 (EvalRankingBatchOp).md"
@@ -5,50 +5,56 @@ Python 类名:EvalRankingBatchOp
## 功能介绍
-排序评估是对推荐排序算法的预测结果进行效果评估,支持下列评估指标。
+对推荐排序算法的预测结果进行效果评估。
-#### hitRate
-
+### 算法原理
-#### averageReciprocalHitRank
-
+在排序问题中,可以忽略顺序,将问题看作多标签分类问题。这样多标签分类评估中的指标都能使用。
-#### map (Mean Average Precision)
-
+在考虑顺序时,假设有$M$个用户,每个用户的真实标签集合为 $D_i = \left\{d_0, d_1, ..., d_{N-1}\right\}$,模型推荐的集合为 $R_i = \left[r_0, r_1, ..., r_{Q-1}\right]$,按相关程序递减排序。
+定义$rel_D(r)$在满足$r\in D$时为1,否则为0。
+那么,还可以支持以下评估指标。
-#### ndcgArray (Normalized Discounted Cumulative Gain)
-$$ MSE=\dfrac{1}{N}\sum_{i=1}^{N}(f_i-y_i)^2 $$
+#### Hit Rate
+$HitRate=\frac{1}{M}\sum_{i=0}^{M-1} \sum_{j=0}^{\left|D\right| - 1}rel_{\{d_0\}}(R_i(j))$
-#### subsetAccuracy
-
+#### Average Reciprocal Hit Rank
-#### hammingLoss
-
+$ARHR=\frac{1}{M}\sum_{i=0}^{M-1} \sum_{j=0}^{\left|D\right| - 1}\frac{1}{j+1}rel_{\{d_0\}}(R_i(j))$
-#### accuracy
-
+#### Precision at k
-#### microPrecision
-
+$p(k)=\frac{1}{M} \sum_{i=0}^{M-1} {\frac{1}{k} \sum_{j=0}^{\min(\left|D\right|, k) - 1} rel_{D_i}(R_i(j))}$
-#### microRecall
-
+这里 $k$ 是一个参数。
-#### microF1
-
+#### Recall at k
-#### precision
-
+$recall(k)=\frac{1}{M} \sum_{i=0}^{M-1} {\frac{1}{N} \sum_{j=0}^{\min(\left|D\right|, k) - 1} rel_{D_i}(R_i(j))}$
-#### recall
-
+这里 $k$ 是一个参数。
-#### f1
-$$ explained Variance=\dfrac{SSR}{N} $$
+#### MAP (Mean Average Precision)
+$MAP=\frac{1}{M} \sum_{i=0}^{M-1} {\frac{1}{\left|D_i\right|} \sum_{j=0}^{Q-1} \frac{rel_{D_i}(R_i(j))}{j + 1}}$
+
+#### NDCG at k (Normalized Discounted Cumulative Gain)
+
+$NDCG(k)=\frac{1}{M} \sum_{i=0}^{M-1} {\frac{1}{IDCG(D_i, k)}\sum_{j=0}^{n-1} \frac{rel_{D_i}(R_i(j))}{\ln(j+2)}},$
+
+其中,$n = \min\left(\max\left(|R_i|,|D_i|\right),k\right)$, $IDCG(D, k) = \sum_{j=0}^{\min(\left|D\right|, k) - 1} \frac{1}{\ln(j+2)}$。
+
+这里 $k$ 是一个参数。
+
+### 使用方式
+
+该组件通常接推荐排序预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,参数 `predictionCol` 和 `predictionCol` 指定预测结果列。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
@@ -56,8 +62,6 @@ $$ explained Variance=\dfrac{SSR}{N} $$
| labelRankingInfo | Object列列名 | Object列列名 | String | | | "object" |
| predictionRankingInfo | Object列列名 | Object列列名 | String | | | "object" |
-
-
## 代码示例
### Python 代码
```python
diff --git "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\350\201\232\347\261\273\350\257\204\344\274\260 (EvalClusterBatchOp).md" "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\350\201\232\347\261\273\350\257\204\344\274\260 (EvalClusterBatchOp).md"
index e358d0bd9..928ced2f2 100644
--- "a/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\350\201\232\347\261\273\350\257\204\344\274\260 (EvalClusterBatchOp).md"
+++ "b/docs/cn/\346\211\271\347\273\204\344\273\266/\350\257\204\344\274\260/\350\201\232\347\261\273\350\257\204\344\274\260 (EvalClusterBatchOp).md"
@@ -5,68 +5,111 @@ Python 类名:EvalClusterBatchOp
## 功能介绍
-聚类评估是对聚类算法的预测结果进行效果评估,支持下列评估指标。
+对聚类算法的预测结果进行效果评估。
-#### Compactness(CP), CP越低意味着类内聚类距离越近
-$$ \overline{CP_i}=\dfrac{1}{|C_i|}\sum_{x \in C_i}\|x_i-u_i\| $$
+### 算法原理
-$$ \overline{CP}=\dfrac{1}{k}\sum_{i=1}^{k}\overline{CP_k} $$
+在下面的指标中,用 $C_i$ 表示第 $i$ 个簇, $u_i$ 表示$C_i$ 的中心,$k$ 表示簇的总数。
+#### Compactness(CP)
-#### Seperation(SP), SP越高意味类间聚类距离越远
-$$ SP=\dfrac{2}{k^2-k}\sum_{i=1}^{k}\sum_{j=i+1}^{k}\|u_i-u_j\| $$
+$\overline{CP_i}=\dfrac{1}{|C_i|}\sum_{x \in C_i}\|x_i-u_i\|$
+$\overline{CP}=\dfrac{1}{k}\sum_{i=1}^{k}\overline{CP_k}$
-#### Davies-Bouldin Index(DB), DB越小意味着类内距离越小 同时类间距离越大
-$$ DB=\dfrac{1}{k}\sum_{i=1}^{k}max(\dfrac{\overline{CP_i}+\overline{CP_j}}{\|u_i-u_j\|}), i \not= j $$
+CP越低意味着类内聚类距离越近。
+#### Separation (SP)
+$SP=\dfrac{2}{k^2-k}\sum_{i=1}^{k}\sum_{j=i+1}^{k}\|u_i-u_j\|$
-#### Calinski-Harabasz Index(VRC), VRC越大意味着聚类质量越好
-$$ SSB=\sum_{i=1}^{k}n_i\|u_i-u\|^2 $$
+SP越高意味类间聚类距离越远。
-$$ SSW=\sum_{i=1}^{k}\sum_{x \in C_i}\|x_i-u_i\| $$
+#### Davies-Bouldin Index (DB)
-$$ VRC=\dfrac{SSB}{SSW}*\dfrac{N-k}{k-1} $$
+$DB=\dfrac{1}{k}\sum_{i=1}^{k}\max_{i \not=j}(\dfrac{\overline{CP_i}+\overline{CP_j}}{\|u_i-u_j\|})$
+DB越小意味着类内距离越小,同时类间距离越大。
-#### Purity, Putity在[0,1]区间内,越接近1表示聚类结果越好
-$$ Purity(\Omega, C)=\dfrac{1}{N}\sum_{k}\underset jmax|\omega_k \cap c_j| $$
+#### Calinski-Harabasz Index (Variance Ratio Criterion, VRC)
+用 $u$ 表示数据集整体的中心点,
-#### Normalized Mutual Information(NMI), NMI在[0,1]区间内, 越接近1表示聚类结果越好
-$$ H(\Omega)=-\sum_{k}\dfrac{\omega_k}{N}log\dfrac{\omega_k}{N} $$
+$SSB=\sum_{i=1}^{k}n_i\|u_i-u\|^2,$
-$$ H(C)=-\sum_{j}\dfrac{c_j}{N}log\dfrac{c_j}{N} $$
+$SSW=\sum_{i=1}^{k}\sum_{x \in C_i}\|x_i-u_i\|,$
-$$ I(\Omega, C)=\sum_k\sum_j\dfrac{|\omega_k \cap c_j|}{N}log \dfrac{N|\omega_k \cap c_j|}{|\omega_k||c_j|} $$
+$\mathrm{VRC}=\dfrac{SSB}{SSW}*\dfrac{N-k}{k-1}$
-$$ NMI=\dfrac{2 * I(\Omega, C)}{H(\Omega) + H(C)} $$
+VRC越大意味着聚类质量越好。
-#### Rand Index(RI), RI在[0,1]区间内,越接近1表示聚类结果越好
-$$ TP+FP=\sum_{j}(_{2}^{c_j}) $$
+另有一部分聚类评价指标称作外部指标(external criterion)。
+这些指标在评估时除了有每个样本点所属的簇之外,还假设每个样本点有类别标签。
-$$ TP+FN=\sum_{k}(_{2}^{\omega_k}) $$
+在下面的指标中,$N$表示簇的总数,用 $\omega_k$ 表示簇$k$所包含的样本点集合,$c_j$ 表示类别标签为 $j$ 的样本点集合。
-$$ TP=\sum_{k}\sum_{j}(_{2}^{N(k,j)}) $$
+#### Purity
-$$ TP+TN+FP+FN=(_{2}^{N}) $$
+$Purity(\Omega, C)=\dfrac{1}{N}\sum_{k}\max_{j}|\omega_k \cap c_j|$
-$$ RI=\dfrac{TP+TN}{TP+TN+FP+FN} $$
+取值在 $[0,1]$ 区间内,越接近1表示同一个簇内相同类别的数据点越多,聚类结果越好。
+#### Normalized Mutual Information (NMI), NMI在[0,1]区间内, 越接近1表示聚类结果越好
+
+$H(\Omega)=-\sum_{k}\dfrac{\omega_k}{N}log\dfrac{\omega_k}{N},$
+
+$H(C)=-\sum_{j}\dfrac{c_j}{N}log\dfrac{c_j}{N},$
+
+$I(\Omega, C)=\sum_k\sum_j\dfrac{|\omega_k \cap c_j|}{N}\log \dfrac{N|\omega_k \cap c_j|}{|\omega_k||c_j|},$
+
+$\mathrm{NMI}=\dfrac{2 * I(\Omega, C)}{H(\Omega) + H(C)}$
+
+取值在 $[0,1]$ 区间内, 越接近1表示聚类结果越好。
+
+#### Rand Index (RI)
+
+对于任意一对样本点:
+ - 如果标签相同并且属于相同的簇,则认为是 TP (True Positive);
+ - 如果标签不同并且属于不同的簇,则认为是 TN (True Negative);
+ - 如果标签相同并且属于不同的簇,则认为是 FN (False Negative);
+ - 如果标签不同并且属于相同的簇,则认为是 FP (False Positive)。
+
+用 $TP, TN, FN, FP$ 分别表示属于各自类别的样本点对的个数,$N(k,j)$ 表示簇 $k$ 内类别为 $j$ 的样本点个数,那么有:
+
+$TP+FP=\sum_{j}\binom{c_j}{2},$
+
+$TP+FN=\sum_{k}\binom{\omega_k}{2},$
+
+$TP=\sum_{k}\sum_{j}\binom{N(k,j)}{2},$
+
+$TP+TN+FP+FN= \binom{N}{2},$
+
+$RI=\dfrac{TP+TN}{TP+TN+FP+FN}$
+
+取值在 $[0,1]$ 区间内,越接近1表示聚类结果越好。
#### Adjusted Rand Index(ARI), ARI在[-1,1]区间内,越接近1表示聚类结果越好
-$$ Index=TP $$
-$$ ExpectedIndex=\dfrac{(TP+FP)(TP+FN)}{TP+TN+FP+FN} $$
+$\mathrm{Index}=TP,$
+
+$\mathrm{ExpectedIndex}=\dfrac{(TP+FP)(TP+FN)}{TP+TN+FP+FN},$
-$$ MaxIndex=\dfrac{TP+FP+TP+FN}{2} $$
+$\mathrm{MaxIndex}=\dfrac{TP+FP+TP+FN}{2},$
-$$ ARI=\dfrac{Index - ExpectedIndex}{MaxIndex - ExpectedIndex} $$
+$ARI=\dfrac{\mathrm{Index} - \mathrm{ExpectedIndex}}{\mathrm{MaxIndex} - \mathrm{ExpectedIndex}}$
+E
+取值在 $[-1,1]$ 区间内,越接近1表示聚类结果越好。
+### 使用方式
+
+该组件通常接聚类算法的输出端。
+
+使用时,需要通过 `predictionCol` 指定预测结果类。 通常还需要通过 `vectorCol` 指定样本点的坐标,这样才能计算评估指标。否则,只能输出样本点所属簇等基本信息。
+另外,可以根据需要指定标签列 `labelCol`,这样可以计算外部指标。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| predictionCol | 预测结果列名 | 预测结果列名 | String | ✓ | | |
@@ -74,8 +117,6 @@ $$ ARI=\dfrac{Index - ExpectedIndex}{MaxIndex - ExpectedIndex} $$
| labelCol | 标签列名 | 输入表中的标签列名 | String | | | null |
| vectorCol | 向量列名 | 输入表中的向量列名 | String | | 所选列类型为 [DENSE_VECTOR, SPARSE_VECTOR, STRING, VECTOR] | null |
-
-
## 代码示例
### Python 代码
```python
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictStreamOp).md"
index ce54ee83c..6cb8e29c8 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/ONNX/ONNX\346\250\241\345\236\213\351\242\204\346\265\213 (OnnxModelPredictStreamOp).md"
@@ -26,6 +26,8 @@ Python 类名:OnnxModelPredictStreamOp
组件使用的是 ONNX 1.11.0 版本,当有 GPU 时,自动使用 GPU 进行推理,否则使用 CPU 进行推理。
+在 Windows 下运行时,如果遇到 ```UnsatisfiedLinkError```,请下载 [Visual C++ 2019 Redistributable Packages](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 并重启,然后重新运行。
+
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictStreamOp).md"
index 2fbeb66d0..2d26fa502 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/PyTorch/PyTorch\346\250\241\345\236\213\351\242\204\346\265\213 (TorchModelPredictStreamOp).md"
@@ -22,7 +22,9 @@ Python 类名:TorchModelPredictStreamOp
- 输出列的数量需要与模型输出结果匹配。
- 输出类型可以是 Alink ```Tensor``` 类型或者 Alink 支持的类型,如果从模型预测输出的结果转换到指定类型失败那么将报错;暂不支持列表或字典类型。
-组件使用的是 PyTorch 1.8.1 版本,当有 GPU 时,自动使用 GPU 进行推理,否则使用 CPU 进行推理。
+组件使用的是 PyTorch 1.8.1 CPU 版本,如果需要使用 GPU 功能,可以自行替换插件文件。
+
+在 Windows 下运行时,如果遇到 ```UnsatisfiedLinkError```,请下载 [Visual C++ 2015 Redistributable Packages](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) 并重启,然后重新运行。
## 参数说明
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\350\256\255\347\273\203 (FtrlTrainStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\350\256\255\347\273\203 (FtrlTrainStreamOp).md"
index 3c2792b9b..a4610476d 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\350\256\255\347\273\203 (FtrlTrainStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\350\256\255\347\273\203 (FtrlTrainStreamOp).md"
@@ -5,7 +5,20 @@ Python 类名:FtrlTrainStreamOp
## 功能介绍
-该组件是一个在线学习的组件,支持在线实时训练模型。
+Ftrl 是一个经典的在线学习算法,支持在线实时训练模型,并按照用户指定的频率输出模型。该算法支持稀疏和稠密两种训练数据。
+
+### 算法原理
+Ftrl 算法的参数更新公式如下:
+![](https://img.alicdn.com/imgextra/i3/O1CN01XoxaWa1k1Nm634hef_!!6000000004623-2-tps-735-64.png)
+该更新公式使得每一个维度上的特征更新学习率都是单独考虑,而不是使用全局学习率,保证累积加和限定了新的迭代结果W不要离“已迭代过的解”太远。具体细节请参阅文献[1]。
+### 算法使用
+Ftrl 在点击率预估,推荐等领域应用广泛。
+
+- 备注 :该组件训练的时候 FeatureCols 和 VectorCol 是两个互斥参数,只能有一个参数来描述算法的输入特征。
+
+### 文献
+[1] McMahan, H. Brendan, et al. "Ad click prediction: a view from the trenches." Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. 2013.
+
## 参数说明
@@ -15,14 +28,16 @@ Python 类名:FtrlTrainStreamOp
| vectorSize | 向量长度 | 向量的长度 | Integer | ✓ | | |
| alpha | 希腊字母:阿尔法 | 经常用来表示算法特殊的参数 | Double | | | 0.1 |
| beta | 希腊字母:贝塔 | 经常用来表示算法特殊的参数 | Double | | | 1.0 |
-| featureCols | 特征列名数组 | 特征列名数组,默认全选 | String[] | | 所选列类型为 [BIGDECIMAL, BIGINTEGER, BYTE, DOUBLE, FLOAT, INTEGER, LONG, SHORT] | null |
-| l1 | L1 正则化系数 | L1 正则化系数,默认为0。 | Double | | [0.0, +inf) | 0.0 |
-| l2 | 正则化系数 | L2 正则化系数,默认为0。 | Double | | [0.0, +inf) | 0.0 |
+| featureCols | 特征列名数组 | 特征列名数组,默认全选 | String[] | | | null |
+| l1 | L1 正则化系数 | L1 正则化系数,默认为0.1。 | Double | | [0.0, +inf) | 0.1 |
+| l2 | 正则化系数 | L2 正则化系数,默认为0.1。 | Double | | [0.0, +inf) | 0.1 |
+| miniBatchSize | Batch大小 | 表示单次ftrl单次迭代更新使用的样本数量,建议是并行度的整数倍. | Integer | | | 512 |
| timeInterval | 时间间隔 | 数据流流动过程中时间的间隔 | Integer | | | 1800 |
-| vectorCol | 向量列名 | 向量列对应的列名,默认值是null | String | | 所选列类型为 [DENSE_VECTOR, SPARSE_VECTOR, STRING, VECTOR] | null |
+| vectorCol | 向量列名 | 向量列对应的列名,默认值是null | String | | | null |
| withIntercept | 是否有常数项 | 是否有常数项,默认true | Boolean | | | true |
-
-
+| modelStreamFilePath | 模型流的文件路径 | 模型流的文件路径 | String | | | null |
+| modelStreamScanInterval | 扫描模型路径的时间间隔 | 描模型路径的时间间隔,单位秒 | Integer | | | 10 |
+| modelStreamStartTime | 模型流的起始时间 | 模型流的起始时间。默认从当前时刻开始读。使用yyyy-mm-dd hh:mm:ss.fffffffff格式,详见Timestamp.valueOf(String s) | String | | | null |
## 代码示例
@@ -56,7 +71,6 @@ models = FtrlTrainStreamOp(model) \
.setBeta(0.1) \
.setL1(0.1) \
.setL2(0.1)\
- .setVectorSize(4)\
.setWithIntercept(True) \
.linkFrom(trainData1).print()
StreamOperator.execute()
@@ -103,7 +117,6 @@ public class FtrlTrainTestTest {
.setBeta(0.1)
.setL1(0.1)
.setL2(0.1)
- .setVectorSize(4)
.setWithIntercept(true)
.linkFrom(trainData1).print();
StreamOperator.execute();
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\351\242\204\346\265\213 (FtrlPredictStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\351\242\204\346\265\213 (FtrlPredictStreamOp).md"
index 1866d62e9..b49a2ea91 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\351\242\204\346\265\213 (FtrlPredictStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\345\234\250\347\272\277\351\242\204\346\265\213 (FtrlPredictStreamOp).md"
@@ -5,7 +5,7 @@ Python 类名:FtrlPredictStreamOp
## 功能介绍
-实时更新ftrl 训练得到的模型流,并使用实时的模型对实时的数据进行预测。
+实时更新 ftrl 训练得到的模型流,并使用实时的模型对实时的数据进行预测。
## 参数说明
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\346\250\241\345\236\213\350\277\207\346\273\244 (FtrlModelFilterStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\346\250\241\345\236\213\350\277\207\346\273\244 (FtrlModelFilterStreamOp).md"
index a0c24f82e..6cc0f7b0b 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\346\250\241\345\236\213\350\277\207\346\273\244 (FtrlModelFilterStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\345\234\250\347\272\277\345\255\246\344\271\240/Ftrl\346\250\241\345\236\213\350\277\207\346\273\244 (FtrlModelFilterStreamOp).md"
@@ -5,7 +5,7 @@ Python 类名:FtrlModelFilterStreamOp
## 功能介绍
-该组件是对ftrl 实时训练出来的模型进行实时过滤,将指标不好的模型丢弃掉,仅保留达到用户要求的模型。
+该组件是对ftrl 实时训练出来的模型进行实时过滤,将指标不好的模型丢弃掉,仅保留达到用户要求的模型。目前支持AUC,Accuracy,logLoss三种指标的过滤。
## 参数说明
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleStreamOp).md"
index a6cf19d04..c150eeb18 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\345\210\206\345\261\202\351\232\217\346\234\272\351\207\207\346\240\267 (StratifiedSampleStreamOp).md"
@@ -5,8 +5,7 @@ Python 类名:StratifiedSampleStreamOp
## 功能介绍
-
-分层采样是对每个类别进行随机抽样。
+分层采样组件。给定输入数据,本算法根据用户指定的不同类别的采样比例进行随机采样。
## 参数说明
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\213\206\345\210\206 (SplitStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\213\206\345\210\206 (SplitStreamOp).md"
index 4ec11a554..33c92f33c 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\213\206\345\210\206 (SplitStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\213\206\345\210\206 (SplitStreamOp).md"
@@ -5,7 +5,7 @@ Python 类名:SplitStreamOp
## 功能介绍
-将数据集按比例拆分为两部分
+数据拆分组件。本算法将输入数据按比例拆分为两部分。
## 参数说明
@@ -74,11 +74,7 @@ public class SplitStreamOpTest {
```
### 运行结果
-f1|f2|f3
+f1 |f2 |f3
---|---|---
-Nevada|2003|3.2000
-Ohio|2000|1.5000
-Ohio|2001|1.7000
-Ohio|2002|3.6000
Nevada|2001|2.4000
-Nevada|2002|2.9000
+Nevada|2003|3.2000
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvStreamOp).md"
index a325269fb..aa8c36b64 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254CSV (ColumnsToCsvStreamOp).md"
@@ -61,7 +61,8 @@ public class ColumnsToCsvStreamOpTest {
@Test
public void testColumnsToCsvStreamOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
StreamOperator > data = new MemSourceStreamOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonStreamOp).md"
index af4bfdfb5..357dc9b81 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254JSON (ColumnsToJsonStreamOp).md"
@@ -58,7 +58,8 @@ public class ColumnsToJsonStreamOpTest {
@Test
public void testColumnsToJsonStreamOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
StreamOperator > data = new MemSourceStreamOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvStreamOp).md"
index 24523ace1..d04bc519b 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254KV (ColumnsToKvStreamOp).md"
@@ -57,7 +57,8 @@ public class ColumnsToKvStreamOpTest {
@Test
public void testColumnsToKvStreamOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
StreamOperator > data = new MemSourceStreamOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleStreamOp).md"
index 59190e7a7..d046ed7f3 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\344\270\211\345\205\203\347\273\204 (ColumnsToTripleStreamOp).md"
@@ -60,7 +60,8 @@ public class ColumnsToTripleStreamOpTest {
@Test
public void testColumnsToTripleStreamOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
StreamOperator > data = new MemSourceStreamOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorStreamOp).md"
index 29f5a57c5..6ecf2cb16 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\346\225\260\346\215\256\346\240\274\345\274\217\350\275\254\346\215\242/\345\210\227\346\225\260\346\215\256\350\275\254\345\220\221\351\207\217 (ColumnsToVectorStreamOp).md"
@@ -6,7 +6,7 @@ Python 类名:ColumnsToVectorStreamOp
## 功能介绍
将数据格式从 Columns 转成 Vector
-
+数据格式可以为数值类型,如int,float,long,double,也可以为能够转换为数值类型的字符串。
## 参数说明
@@ -37,7 +37,6 @@ op = ColumnsToVectorStreamOp()\
.setSelectedCols(["f0", "f1"])\
.setReservedCols(["row"])\
.setVectorCol("vec")\
- .setVectorSize(5)\
.linkFrom(data)
op.print()
@@ -60,7 +59,8 @@ public class ColumnsToVectorStreamOpTest {
@Test
public void testColumnsToVectorStreamOp() throws Exception {
List df = Arrays.asList(
- Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
+ Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0),
+ Row.of("2", "{\"f0\":\"4.0\",\"f1\":\"8.0\"}", "$3$0:4.0 1:8.0", "f0:4.0,f1:8.0", "4.0,8.0", 4.0, 8.0)
);
StreamOperator > data = new MemSourceStreamOp(df,
"row string, json string, vec string, kv string, csv string, f0 double, f1 double");
@@ -68,7 +68,6 @@ public class ColumnsToVectorStreamOpTest {
.setSelectedCols("f0", "f1")
.setReservedCols("row")
.setVectorCol("vec")
- .setVectorSize(5)
.linkFrom(data);
op.print();
StreamOperator.execute();
@@ -77,9 +76,9 @@ public class ColumnsToVectorStreamOpTest {
```
### 运行结果
-
-|row|vec|
-|---|-----|
-|1|$5$1.0 2.0|
-|2|$5$4.0 8.0|
+
+row|vec
+---|---
+1|1.0 2.0
+1|4.0 8.0
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\347\261\273\345\236\213\350\275\254\346\215\242 (TypeConvertStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\347\261\273\345\236\213\350\275\254\346\215\242 (TypeConvertStreamOp).md"
index 6a57f35ab..0ee606e4f 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\347\261\273\345\236\213\350\275\254\346\215\242 (TypeConvertStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\347\261\273\345\236\213\350\275\254\346\215\242 (TypeConvertStreamOp).md"
@@ -5,12 +5,10 @@ Python 类名:TypeConvertStreamOp
## 功能介绍
+类型转换是用来列类型进行转换的组件。本组件可一次性转化多个列到指定的数据类型,但是这些列的数据类型只能为同一种,并且为JDBC Type。
-类型转换是用来列类型进行转换的组件
+组件支持的目标类型为 STRING, VARCHAR, FLOAT, DOUBLE, INT, BIGINT, LONG, BOOLEAN。
-组件可一次性转化多个列到指定的数据类型,但是这些列的数据类型只能为同一种,并且为JDBC Type。
-
-支持的目标类型为 STRING, VARCHAR, FLOAT, DOUBLE, INT, BIGINT, LONG, BOOLEAN。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
@@ -50,14 +48,50 @@ StreamOperator.execute()
```
+### Java 代码
+```java
+import org.apache.flink.types.Row;
+
+import com.alibaba.alink.operator.stream.StreamOperator;
+import com.alibaba.alink.operator.stream.source.MemSourceStreamOp;
+import com.alibaba.alink.operator.stream.dataproc.TypeConvertStreamOp;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class TypeConvertStreamOpTest {
+ @Test
+ public void testTypeConvertStreamOp() throws Exception {
+ List inputData = Arrays.asList(
+ Row.of("Ohio", 2000L, 1.5),
+ Row.of("Ohio", 2001L, 1.7),
+ Row.of("Ohio", 2002L, 3.6),
+ Row.of("Nevada", 2001L, 2.4),
+ Row.of("Nevada", 2002L, 2.9),
+ Row.of("Nevada", 2003L,3.2)
+ );
+ StreamOperator> memSourceStreamOp = new MemSourceStreamOp(inputData, "f1 string, f2 bigint, f3 double");
+ new TypeConvertStreamOp()
+ .setSelectedCols("f2")
+ .setTargetType("double")
+ .linkFrom(memSourceStreamOp)
+ .print();
+
+ StreamOperator.execute();
+ }
+}
+```
+
### 运行结果
```
-['f1', 'f2', 'f3']
-['Ohio', 2000.0, 1.5]
-['Ohio', 2001.0, 1.7]
-['Ohio', 2002.0, 3.6]
-['Nevada', 2001.0, 2.4]
-['Nevada', 2002.0, 2.9]
-['Nevada', 2003.0, 3.2]
+f1 |f2 |f3
+---|---|---
+Ohio|2000.0000|1.5000
+Ohio|2001.0000|1.7000
+Ohio|2002.0000|3.6000
+Nevada|2001.0000|2.4000
+Nevada|2002.0000|2.9000
+Nevada|2003.0000|3.2000
```
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleStreamOp).md"
index 6eb3e4839..217a39716 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\244\204\347\220\206/\351\232\217\346\234\272\351\207\207\346\240\267 (SampleStreamOp).md"
@@ -5,8 +5,7 @@ Python 类名:SampleStreamOp
## 功能介绍
-
-- 随机采样是对数据进行随机抽样,每个样本都以相同的概率被抽到。
+随机采样组件。本算法是对数据进行随机抽样,每个样本都以相同的概率被抽到。
## 参数说明
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (AkSourceStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (AkSourceStreamOp).md"
index a2fa6c25b..b8c3602de 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (AkSourceStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/AK\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (AkSourceStreamOp).md"
@@ -7,6 +7,18 @@ Python 类名:AkSourceStreamOp
## 功能介绍
以流式的方式读Ak文件。Ak文件格式是Alink 自定义的一种文件格式,能够将数据的Schema保留输出的文件格式。
+### 分区选择
+Export2FileSinkStreamOp组件能将数据分区保存,AkSourceStreamOp可以选择分区读取。
+分区目录名格式为"分区名=值",例如: month=06/day=17;month=06/day=18。
+Alink将遍历目录下的分区名和分区值,构造分区表:
+
+ month | day
+---|---
+06 | 17
+06 | 18
+
+使用SQL语句查找分区,例如:AkSourceStreamOp.setPartitions("day = '17'"),分区选择语法参考[《Flink SQL 内置函数》](https://www.yuque.com/pinshu/alink_tutorial/list_sql_function),分区值为String类型。
+
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (CsvSourceStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (CsvSourceStreamOp).md"
index ebdb3f823..ab3da8bb8 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (CsvSourceStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/CSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (CsvSourceStreamOp).md"
@@ -5,7 +5,18 @@ Python 类名:CsvSourceStreamOp
## 功能介绍
-读CSV文件数据
+读CSV文件数据。
+
+### 分区选择
+分区目录名格式为"分区名=值",例如: city=beijing/month=06/day=17;city=hangzhou/month=06/day=18。
+Alink将遍历目录下的分区名和分区值,构造分区表:
+
+city | month | day
+---|---|---
+beijing | 06 | 17
+hangzhou | 06 | 18
+
+使用SQL语句查找分区,例如:CsvSourceStreamOp.setPartitions("city = 'beijing'"),分区选择语法参考[《Flink SQL 内置函数》](https://www.yuque.com/pinshu/alink_tutorial/list_sql_function),分区值为String类型。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
@@ -16,6 +27,7 @@ Python 类名:CsvSourceStreamOp
| handleInvalidMethod | 处理无效值的方法 | 处理无效值的方法,可取 error, skip | String | | "ERROR", "SKIP" | "ERROR" |
| ignoreFirstLine | 是否忽略第一行数据 | 是否忽略第一行数据 | Boolean | | | false |
| lenient | 是否容错 | 若为true,当解析失败时丢弃该数据;若为false,解析失败是抛异常 | Boolean | | | false |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| quoteChar | 引号字符 | 引号字符 | Character | | | "\"" |
| rowDelimiter | 行分隔符 | 行分隔符 | String | | | "\n" |
| skipBlankLine | 是否忽略空行 | 是否忽略空行 | Boolean | | | true |
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (LibSvmSourceStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (LibSvmSourceStreamOp).md"
index 921464538..fdb2af180 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (LibSvmSourceStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/LibSvm\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (LibSvmSourceStreamOp).md"
@@ -12,6 +12,7 @@ Python 类名:LibSvmSourceStreamOp
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| startIndex | 起始索引 | 起始索引 | Integer | | | 1 |
## 代码示例
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TsvSourceStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TsvSourceStreamOp).md"
index c33620ccc..9d700f538 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TsvSourceStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/TSV\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TsvSourceStreamOp).md"
@@ -14,6 +14,7 @@ Python 类名:TsvSourceStreamOp
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
| schemaStr | Schema | Schema。格式为"colname coltype[, colname2, coltype2[, ...]]",例如"f0 string, f1 bigint, f2 double" | String | ✓ | | |
| ignoreFirstLine | 是否忽略第一行数据 | 是否忽略第一行数据 | Boolean | | | false |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| skipBlankLine | 是否忽略空行 | 是否忽略空行 | Boolean | | | true |
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TextSourceStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TextSourceStreamOp).md"
index 24f20a55b..47d064510 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TextSourceStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/Text\346\226\207\344\273\266\346\225\260\346\215\256\346\272\220 (TextSourceStreamOp).md"
@@ -12,6 +12,7 @@ Python 类名:TextSourceStreamOp
| --- | --- | --- | --- | --- | --- | --- |
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
| ignoreFirstLine | 是否忽略第一行数据 | 是否忽略第一行数据 | Boolean | | | false |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
| textCol | 文本列名称 | 文本列名称 | String | | | "text" |
## 代码示例
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceStreamOp).md"
index 28f9e7033..0ed6788b3 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\205\245/parquet\346\226\207\344\273\266\350\257\273\345\205\245 (ParquetSourceStreamOp).md"
@@ -5,12 +5,24 @@ Python 类名:ParquetSourceStreamOp
## 功能介绍
-读parquet文件数据。支持从本地、hdfs、http读取
+读parquet文件数据。支持从本地、hdfs、http读取,可以递归读取目录下全部文件,如果是分区目录,可以对分区进行选择。
+
+### 分区选择
+分区目录名格式为"分区名=值",例如: city=beijing/month=06/day=17;city=hangzhou/month=06/day=18。
+Alink将遍历目录下的分区名和分区值,构造分区表:
+
+city | month | day
+---|---|---
+beijing | 06 | 17
+hangzhou | 06 | 18
+
+使用SQL语句查找分区,例如:ParquetSourceStreamOp.setPartitions("city = 'beijing'"),分区选择语法参考[《Flink SQL 内置函数》](https://www.yuque.com/pinshu/alink_tutorial/list_sql_function),分区值为String类型。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| filePath | 文件路径 | 文件路径 | String | ✓ | | |
+| partitions | 分区名 | 1)单级、单个分区示例:ds=20190729;2)多级分区之间用" / "分隔,例如:ds=20190729/dt=12; 3)多个分区之间用","分隔,例如:ds=20190729,ds=20190730 | String | | | null |
## 代码示例
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkStreamOp).md"
index dc0bea535..766265966 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/CSV\346\226\207\344\273\266\345\257\274\345\207\272 (CsvSinkStreamOp).md"
@@ -5,7 +5,7 @@ Python 类名:CsvSinkStreamOp
## 功能介绍
-写CSV文件
+将输入数据写出到CSV文件。
## 参数说明
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkStreamOp).md"
index 9d027cf01..3522218fe 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/LibSvm\346\226\207\344\273\266\345\257\274\345\207\272 (LibSvmSinkStreamOp).md"
@@ -5,7 +5,6 @@ Python 类名:LibSvmSinkStreamOp
## 功能介绍
-
写出LibSvm格式文件,支持写出到本地文件和HDFS文件。
## 参数说明
@@ -23,13 +22,8 @@ Python 类名:LibSvmSinkStreamOp
## 代码示例
### Python 代码
+** 以下代码仅用于示意,可能需要修改部分代码或者配置环境后才能正常运行!**
```python
-from pyalink.alink import *
-
-import pandas as pd
-
-useLocalEnv(1)
-
df_data = pd.DataFrame([
['1:2.0 2:1.0 4:0.5', 1.5],
['1:2.0 2:1.0 4:0.5', 1.7],
@@ -45,6 +39,7 @@ StreamOperator.execute()
```
### Java 代码
+** 以下代码仅用于示意,可能需要修改部分代码或者配置环境后才能正常运行!**
```java
import org.apache.flink.types.Row;
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkStreamOp).md"
index a80604a85..b6df00099 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\346\225\260\346\215\256\345\257\274\345\207\272/TSV\346\226\207\344\273\266\345\257\274\345\207\272 (TsvSinkStreamOp).md"
@@ -5,8 +5,7 @@ Python 类名:TsvSinkStreamOp
## 功能介绍
-
-写Tsv文件,Tsv文件是以tab为分隔符
+本组件将输入数据写出到Tsv文件,Tsv文件以tab为分隔符。
## 参数说明
@@ -19,13 +18,8 @@ Python 类名:TsvSinkStreamOp
## 代码示例
### Python 代码
+** 以下代码仅用于示意,可能需要修改部分代码或者配置环境后才能正常运行!**
```python
-from pyalink.alink import *
-
-import pandas as pd
-
-useLocalEnv(1)
-
df = pd.DataFrame([
["0L", "1L", 0.6],
["2L", "2L", 0.8],
@@ -54,6 +48,7 @@ StreamOperator.execute()
```
### Java 代码
+** 以下代码仅用于示意,可能需要修改部分代码或者配置环境后才能正常运行!**
```java
import org.apache.flink.types.Row;
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTStreamOp).md"
index 41e6a13bb..79864e3c0 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\347\211\271\345\276\201\345\267\245\347\250\213/\347\246\273\346\225\243\344\275\231\345\274\246\345\217\230\346\215\242 (DCTStreamOp).md"
@@ -6,7 +6,15 @@ Python 类名:DCTStreamOp
## 功能介绍
-对数据进行离散余弦变换。
+DCT(Discrete Cosine Transform), 又叫做离散余弦变换,是对数据进行离散余弦变换,可以用来做视频编码,图像压缩等,经过变换后数据会有更好的聚集性。
+输入是vector列,vector的size为n, 那经过变换后的输出变成size为n的vector。
+
+### 算法原理
+DCT变换就是输入信号为实偶函数的DFT变换
+
+
+
+
## 参数说明
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassStreamOp).md"
index 1eb0434f0..9da51a493 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\344\272\214\345\210\206\347\261\273\350\257\204\344\274\260 (EvalBinaryClassStreamOp).md"
@@ -5,91 +5,102 @@ Python 类名:EvalBinaryClassStreamOp
## 功能介绍
-二分类评估是对二分类算法的预测结果进行效果评估。
-支持Roc曲线,LiftChart曲线,K-S曲线,Recall-Precision曲线绘制。
+对二分类算法的预测结果进行效果评估。
-流式的实验支持累计统计和窗口统计,除却上述四条曲线外,还给出Auc/Kappa/Accuracy/Logloss随时间的变化曲线。
+### 算法原理
-给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。
+在有监督二分类问题的评估中,每条样本都有一个真实的标签和一个由模型生成的预测。 这样每调样本点实际上可以划分为以下 4 个类别中的一类:
-#### 混淆矩阵
-
+- True Positive(TP):标签为正类,预测为正类;
+- True Negative(TN):标签为负类,预测为负类;
+- False Positive(FP):标签为负类,预测为正类;
+- False Negative(FN):标签为正类,预测为负类。
-#### Roc曲线
+通常,用 $TP, TN, FP, FN$ 分别表示属于各自类别的样本数。
+基于这几个数量,可以定义大部分的二分类评估指标。
-横坐标:FPR
+#### 精确率
-纵坐标:TPR
+$Precision = \frac{TP}{TP + FP}$
-#### AUC
+#### 召回率、敏感性
-Roc曲线下面的面积
+$Recall = \frac{TP}{TP + FN} = Sensitivity$
-#### K-S
+#### F-measure
-横坐标:阈值
+$F1=\frac{2TP}{2TP+FP+FN}=\frac{2\cdot Precision \cdot Recall}{Precision+Recall}$
-纵坐标:TPR和FPR
+#### 准确率
-#### KS
+$Accuracy=\frac{TP + TN}{TP + TN + FP + FN}$
-K-S曲线两条纵轴的最大差值
+#### 特异性
-#### Recall-Precision曲线
+$Specificity=\frac{TN}{FP+TN}$
-横坐标:Recall
+#### Kappa
-纵坐标:Precision
+$p_a =\frac{TP + TN}{TP + TN + FP + FN}$
-#### PRC
+$p_e = \frac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)}$
-Recall-Precision曲线下面的面积
+$kappa = \frac{p_a - p_e}{1 - p_e}$
-#### 提升曲线
+#### 混淆矩阵
-横坐标:$$ \dfrac{TP + FP}{total} $$
+
-纵坐标:TP
+二分类模型除了给出每条样本的预测标签之外,通常还会给出每条样本预测为正类的概率$p$,而预测标签是根据这个概率与阈值的关系确定的。
+通常情况下,阈值会设为 0.5,概率大于 0.5 的预测为正类,小于 0.5 的预测为负类。
+有一些评估指标会考虑这个阈值从 0 到 1 变化时,各个指标的变化情况,计算更加复杂的指标。
-#### Precision
-$$ Precision = \dfrac{TP}{TP + FP} $$
+#### LogLoss
+$LogLoss = -\frac{1}{n}\sum_{i}[y_i \log(y'_i) + (1-y_i) \log(1 - y'_i)]$
-#### Recall
-$$ Recall = \dfrac{TP}{TP + FN} $$
+这里,$y_i\in [0,1]$表示样本$i$的真实标签(正类为 1,负类为0),$y'_i$表示样本$i$预测为正类的概率。
+#### ROC(receiver operating characteristic)曲线
-#### F-Measure
-$$ F1=\dfrac{2TP}{2TP+FP+FN}=\dfrac{2\cdot Precision \cdot Recall}{Precision+Recall} $$
+阈值从 0 到 1 变化时, 横坐标:$FPR = FP / (FP + TN)$ 和纵坐标:$TPR = TP / (TP + FN)$构成的曲线。
+#### AUC (Area under curve)
-#### Sensitivity
-$$ Sensitivity=\dfrac{TP}{TP+FN} $$
+ROC 曲线下的面积。
+#### K-S 曲线
-#### Accuracy
-$$ Accuray=\dfrac{TP + TN}{TP + TN + FP + FN} $$
+阈值从 0 到 1 变化时,横坐标阈值和纵坐标$TPR$和$FPR$构成的曲线。
+#### KS 指标
-#### Specificity
-$$ Specificity=\dfrac{TN}{FP+T} $$
+K-S 曲线 中,两条曲线在纵轴方向上的最大差值。
+#### Precision-Recall 曲线
-#### Kappa
-$$ p_a =\dfrac{TP + TN}{TP + TN + FP + FN} $$
+阈值从 0 到 1 变化时,横坐标 Precision 和纵坐标 Recall 构成的曲线。
-$$ p_e = \dfrac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)} $$
+#### PRC 指标
-$$ kappa = \dfrac{p_a - p_e}{1 - p_e} $$
+Precision-Recall 曲线下的面积。
+#### 提升曲线(Lift Chart)
-#### Logloss
-$$ logloss=- \dfrac{1}{N}\sum_{i=1}^N \sum_{j=1}^My_{i,j}log(p_{i,j}) $$
+阈值从 0 到 1 变化时,横坐标$\frac{TP + FP}{N}$和纵坐标$TP$构成的曲线。
+### 使用方式
+
+该组件通常接二分类预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,通过参数 `predictionDetailCol` 指定预测详细信息列(包含有预测概率)。
+另外,需要指定参数 `timeInterval`,表示对数据按时间窗口来进行划分。
+在输出结果中既包含各个时间窗口内的统计指标,也包含此前所有数据的统计指标。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
@@ -98,8 +109,6 @@ $$ logloss=- \dfrac{1}{N}\sum_{i=1}^N \sum_{j=1}^My_{i,j}log(p_{i,j}) $$
| positiveLabelValueString | 正样本 | 正样本对应的字符串格式。 | String | | | null |
| timeInterval | 时间间隔 | 流式数据统计的时间间隔 | Double | | | 3.0 |
-
-
## 代码示例
### Python 代码
```python
diff --git "a/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassStreamOp).md" "b/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassStreamOp).md"
index e687fe561..7a0313ca7 100644
--- "a/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassStreamOp).md"
+++ "b/docs/cn/\346\265\201\347\273\204\344\273\266/\350\257\204\344\274\260/\345\244\232\345\210\206\347\261\273\350\257\204\344\274\260 (EvalMultiClassStreamOp).md"
@@ -5,54 +5,71 @@ Python 类名:EvalMultiClassStreamOp
## 功能介绍
-多分类评估是对多分类算法的预测结果进行效果评估。
-支持Roc曲线,LiftChart曲线,K-S曲线,Recall-Precision曲线绘制。
+对多分类算法的预测结果进行效果评估。
-流式的实验支持累计统计和窗口统计,除却上述四条曲线外,还给出Auc/Kappa/Accuracy/Logloss随时间的变化曲线。
+### 算法原理
-给出整体的评估指标包括:AUC、K-S、PRC, 不同阈值下的Precision、Recall、F-Measure、Sensitivity、Accuracy、Specificity和Kappa。
+在多分类问题的评估中,每条样本都有一个真实的标签和一个由模型生成的预测。
+但与二分类问题不同,多分类算法中,总的类别数是大于2的,因此不能直接称作正类和负类。
-#### 混淆矩阵
-
+在计算评估指标时,可以将某个类别选定为正类,将其他值都看作负类,这样可以计算每个类别(per-class)的指标。
+进一步地,将每个类别各自的指标进行平均,可以得到模型总体的指标。
+这里的"平均"有三种做法:
-#### Precision
-$$ Precision = \dfrac{TP}{TP + FP} $$
+- Macro 平均:直接对各个类别的同一个指标求数值平均值,作为总体指标;
+- 加权平均:以样本中各个类别所占的比例为权重,对各个类别的同一个指标求加权平均值,作为总体指标;
+- Micro 平均:将各个类别看作正类时的 $TP, TN, FN$ 相加,得到总的 $TP, TN, FN$ 值,然后计算指标。在 Micro 平均时,micro-F1, micro-precision, micro-recall 都等于 accuracy。
+所支持的每类别指标与平均指标见下:
-#### Recall
-$$ Recall = \dfrac{TP}{TP + FN} $$
+#### 精确率
+$Precision = \frac{TP}{TP + FP}$
-#### F-Measure
-$$ F1=\dfrac{2TP}{2TP+FP+FN}=\dfrac{2\cdot Precision \cdot Recall}{Precision+Recall} $$
+#### 召回率、敏感性
+$Recall = \frac{TP}{TP + FN} = Sensitivity$
-#### Sensitivity
-$$ Sensitivity=\dfrac{TP}{TP+FN} $$
+#### F-measure
+$F1=\frac{2TP}{2TP+FP+FN}=\frac{2\cdot Precision \cdot Recall}{Precision+Recall}$
-#### Accuracy
-$$ Accuray=\dfrac{TP + TN}{TP + TN + FP + FN} $$
+#### 准确率
+$Accuracy=\frac{TP + TN}{TP + TN + FP + FN}$
-#### Specificity
-$$ Specificity=\dfrac{TN}{FP+T} $$
+#### 特异性
+$Specificity=\frac{TN}{FP+TN}$
#### Kappa
-$$ p_a =\dfrac{TP + TN}{TP + TN + FP + FN} $$
-$$ p_e = \dfrac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)} $$
+$p_a =\frac{TP + TN}{TP + TN + FP + FN}$
+
+$p_e = \frac{(TN + FP) * (TN + FN) + (FN + TP) * (FP + TP)}{(TP + TN + FP + FN) * (TP + TN + FP + FN)}$
+
+$kappa = \frac{p_a - p_e}{1 - p_e}$
-$$ kappa = \dfrac{p_a - p_e}{1 - p_e} $$
+#### 混淆矩阵
+
+
+二分类模型除了给出每条样本$i$的预测标签之外,通常还会给出每条样本预测为为各个类别$j$的概率$p_{i,j}$。
+通常情况下,每条样本最大概率对应的类别为该样本的预测标签。
-#### Logloss
-$$ logloss=- \dfrac{1}{N}\sum_{i=1}^N \sum_{j=1}^My_{i,j}log(p_{i,j}) $$
+#### LogLoss
+$LogLoss=- \frac{1}{n}\sum_{i} \sum_{j=1}^M y_{i,j}log(p_{i,j})$
+
+### 使用方式
+
+该组件通常接多分类预测算法的输出端。
+
+使用时,需要通过参数 `labelCol` 指定预测标签列,通过参数 `predictionCol` 和 `predictionDetailCol` 指定预测结果列和预测详细信息列(包含有预测概率)。
## 参数说明
+
| 名称 | 中文名称 | 描述 | 类型 | 是否必须? | 取值范围 | 默认值 |
| --- | --- | --- | --- | --- | --- | --- |
| labelCol | 标签列名 | 输入表中的标签列名 | String | ✓ | | |
@@ -60,8 +77,6 @@ $$ logloss=- \dfrac{1}{N}\sum_{i=1}^N \sum_{j=1}^My_{i,j}log(p_{i,j}) $$
| predictionDetailCol | 预测详细信息列名 | 预测详细信息列名 | String | | | |
| timeInterval | 时间间隔 | 流式数据统计的时间间隔 | Double | | | 3.0 |
-
-
## 代码示例
### Python 代码
```python