2014-10-08 21 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

好運!