# TDInsight算法/组件说明

Jarvis仅支持HDFS**存储类型**，下面介绍一下在使用这个路径的时候需要注意的问题

## 1. 路径命名规则

在每个算法模块填写输入与输出数据的路径时，对路径的命名规则有如下要求：

填写完整的HDFS路径名称 例如：hdfs\://xxx.xx.xx.xx:54310/user/hdfs/hashingtf/result

## 2. 数据格式要求

数据格式总体分为**Dense和Libsvm**两种数据格式

### 2.1 Dense数据格式

Dense数据格式每行对应一个样本，每列对应一个特征，在HDFS中每行样本的各列以**空格**连接，如：

```
10.2 12.8 3.67 ...
25.9 55.9 29.0 ...
7.89 0.89 14.5 ...
```

### 2.2 Libsvm数据格式

这是数据的一种稀疏表达方式，仅支持标准的libsvm数据格式，如下面的示例。libsvm数据格式作为输入数据时无需刻意指明，系统通过模式匹配自动识别数据是dense还是libsvm格式。每行中的元素以**空格**连接

```
1 1:0.5 3:3.1 7:1.0
0 2:0.1 3:2.3 5:2.0
2 4:0.2 7:1.1 9:0.0
```

* 标准libsvm数据格式要求：要求数据中的index必须是**从1开始计数**，且以**升序**排列；
* 特征数目：稀疏表达的数据需要指定特征数，特征列参数中指定"1-featureSize"。如“1-19”表示特征数有19维。若不确定参数数目，可以参数选择列为空

## TDInsight样例中数据访问说明

TDInsight中的Jarvis样例读写的数据支持HDFS存储形式。如果需要查看HDFS中的相关数据，可以使用hadoop命令查看

## 常用参数表

|   | 参数名                 | 参数类型    | 参数描述                       | 默认值   |   |
| - | ------------------- | ------- | -------------------------- | ----- | - |
|   | 算法操作类型(algoType)    | TEXT    | train or predict           | train |   |
|   | 输入数据路径(input)       | TEXT    | HDFS URL                   |       |   |
|   | 特征数据起始列(beginCol)   | INTEGER | 从0开始计数，默认0                 | 0     |   |
|   | 特征数据终止列(endCol)     | INTEGER | 默认:含标签length-2,无标签length-1 |       |   |
|   | 数据标签列(labelCol)     | INTEGER | 从0开始计数；默认为length-1         |       |   |
|   | 并行数(partitionNum)   | INTEGER | 即数据分区数                     | 10.0  |   |
|   | 抽样率(sampleRate)     | FLOAT   | 范围：0\~1.0                  | 1.0   |   |
|   | 预测数据路径(predictData) | TEXT    | HDFS URL                   |       |   |
|   | 输出数据路径(output)      | TEXT    | HDFS URL                   |       |   |
|   | 算法终止误差(tol)         | FLOAT   | 迭代误差小于该值时，迭代终止             |       |   |
|   | 最大迭代次数(maxIter)     | INTEGER | 算法最大迭代次数                   |       |   |
