2016-03-21 11 views
0

私はデシジョンツリーの分類のために、以下のウェブサイトから読んでいました。 http://spark.apache.org/docs/latest/mllib-decision-tree.html火花のあるスパークデシジョンツリー

私のラップトップに提供されたサンプルコードを組み込み、出力を理解しようとしました。 しかし、私は少し理解できませんでした。以下はコードです sample_libsvm_data.txtは下記にありますhttps://github.com/apache/spark/blob/master/data/mllib/sample_libsvm_data.txt

私の意見が正しいかどうかを教えてください。ここに私の意見があります。

  1. テストエラーは、トレーニングに基づいて約95%の修正があることを意味します。 データ?
  2. (最も興味があるもの)434が0.0より大きい場合、ジニ不純物に基づいて1になりますか?例えば、値が434のように与えられる:178それは私はあなたが正しいと信じて1

    from __future__ import print_function 
    from pyspark import SparkContext 
    from pyspark.mllib.tree import DecisionTree, DecisionTreeModel 
    from pyspark.mllib.util import MLUtils 
    
    if __name__ == "__main__": 
        sc = SparkContext(appName="PythonDecisionTreeClassificationExample") 
        data = MLUtils.loadLibSVMFile(sc,'/home/spark/bin/sample_libsvm_data.txt') 
        (trainingData, testData) = data.randomSplit([0.7, 0.3]) 
    
        model = DecisionTree.trainClassifier(trainingData, numClasses=2, categoricalFeaturesInfo={}, impurity='gini', maxDepth=5, maxBins=32) 
    
        predictions = model.predict(testData.map(lambda x: x.features)) 
        labelsAndPredictions = testData.map(lambda lp: lp.label).zip(predictions) 
        testErr = labelsAndPredictions.filter(lambda (v, p): v != p).count()/float(testData.count()) 
    
    print('Test Error = ' + str(testErr)) 
    print('Learned classification tree model:') 
    print(model.toDebugString()) 
    
    // =====Below is my output===== 
    Test Error = 0.0454545454545 
    Learned classification tree model: 
    DecisionTreeModel classifier of depth 1 with 3 nodes 
    If (feature 434 <= 0.0) 
        Predict: 0.0 
    Else (feature 434 > 0.0) 
        Predict: 1.0 
    

答えて

2

だろう。はい、エラー率は約5%です。したがって、テストとして保留したデータの30%に対して、アルゴリズムの時間は約95%です。あなたの出力によると(私は正しいと思いますが、私は自分でコードをテストしませんでした)、はい、観測のクラスを決定する唯一の機能は機能434であり、0より小さい場合は0、それ以外は1

0

なぜスパークMLでは、意思決定ツリーモデルをトレーニングすると、ノードあたりの最小インフォゲインまたは最小インスタンス数がツリーの成長を制御するために使用されないのですか?木を上に成長させるのはとても簡単です。