2014-10-08 18 views
2

我是机器学习的新手。我正在尝试使用MLlib的决策树。mllib的输入文件格式

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

我的CSV文件的拥有

标签的格式,文字

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

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

问候

+1

你认为MLLib的TFIDF转换吗? – Anas 2014-10-10 08:14:45

回答

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)); 
} 

}

0

文字数字是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,... 
    

火花,看看:http://spark.apache.org/docs/latest/mllib-feature-extraction.html#tf-idf,或者你可能需要使用的工具,像word2vec

好运!