【问题标题】:input file format for mllibmllib 的输入文件格式
【发布时间】:2014-12-02 13:18:00
【问题描述】:

我是机器学习的新手。我正在尝试使用 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 来实现。

问候

【问题讨论】:

  • 你考虑过 MLLib 的 TFIDF 转换吗?

标签: apache-spark apache-spark-mllib


【解决方案1】:

你需要像这样写一个映射器来解析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));
}

}

【讨论】:

    【解决方案2】:

    文本转数字是bag of wordstf-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 这样的工具

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-30
      • 2016-10-18
      • 1970-01-01
      • 2017-11-15
      • 2016-01-11
      • 2015-11-05
      • 2017-10-31
      • 2014-05-17
      相关资源
      最近更新 更多