2

我是机器学习的新手。我正在尝试使用 MLlib 的决策树。

有人可以帮助我如何为多类别分类的 mllib 决策树准备输入文件。

我的 csv 文件的格式为

标签,文字

label_1, text of label 1 
label_2, text of label 2 
label_3, text of label 3 

mllib 所需的输入格式是 libsvm 或标记点。
文件格式中不允许有文本。问题是如何将文本映射到 mllib 所需的基于数字数据的文件格式,然后解释结果。我正在使用 java 来实现。

问候

4

2 回答 2

0

您需要编写这样的映射器来解析 csv 文件

public class TokensToLabeledPoints implements Function<String[], LabeledPoint> {
int responseIndex;

TokensToLabeledPoints(int index) {
    this.responseIndex = index;
}

@Override
public LabeledPoint call(String[] tokens) throws Exception {
    double y = Double.parseDouble(tokens[responseIndex]);
    double[] x = new double[tokens.length];
    for (int i = 0; i < tokens.length; ++i) {
        if (responseIndex != i) {
            x[i] = Double.parseDouble(tokens[i]);
        }
    }
    return new LabeledPoint(y, Vectors.dense(x));
}

}

于 2015-03-14T15:46:03.993 回答
0

text to numeric 是一个广泛而复杂的词袋tf-idf主题。一般来说,您需要:

  1. 创建一个没有任何类 ID 的新文件(您的原始文件 - 类信息)
  2. 创建一个词汇表(每篇文章的一组单词及其频率)
  3. 基于原始文件,词汇:

    label_1, word1, word2,...
    label_2, word1, word2,...
    label_3, word1, word2,...
    
  4. 此外,根据TfxIdf背后的频率和数学,您可能会创建特征空间(这通常会提供比词袋更好的结果)

    label_1, feature1, feature2,...
    label_2, feature1, feature2,...
    label_3, feature1, feature2,...
    

在 Spark 中,请查看:http ://spark.apache.org/docs/latest/mllib-feature-extraction.html#tf-idf ,或者您可能想要使用word2vec 之类的工具

祝你好运!

于 2016-02-13T15:21:17.847 回答