Pipelineモジュールを使用してpysparkにDecisionTreeClassifierを実装しています。これは、私のデータセットに対していくつかの機能エンジニアリング手順を実行するためです。 コードは、Sparkのドキュメントからの例のようになります。pysparkパイプラインモデルからのモデル解釈
from pyspark import SparkContext, SQLContext
from pyspark.ml import Pipeline
from pyspark.ml.classification import DecisionTreeClassifier
from pyspark.ml.feature import StringIndexer, VectorIndexer
from pyspark.ml.evaluation import MulticlassClassificationEvaluator
# Load the data stored in LIBSVM format as a DataFrame.
data = sqlContext.read.format("libsvm").load("data/mllib/sample_libsvm_data.txt")
# Index labels, adding metadata to the label column.
# Fit on whole dataset to include all labels in index.
labelIndexer = StringIndexer(inputCol="label", outputCol="indexedLabel").fit(data)
# Automatically identify categorical features, and index them.
# We specify maxCategories so features with > 4 distinct values are treated as continuous.
featureIndexer =\
VectorIndexer(inputCol="features", outputCol="indexedFeatures", maxCategories=4).fit(data)
# Split the data into training and test sets (30% held out for testing)
(trainingData, testData) = data.randomSplit([0.7, 0.3])
# Train a DecisionTree model.
dt = DecisionTreeClassifier(labelCol="indexedLabel", featuresCol="indexedFeatures")
# Chain indexers and tree in a Pipeline
pipeline = Pipeline(stages=[labelIndexer, featureIndexer, dt])
# Train model. This also runs the indexers.
model = pipeline.fit(trainingData)
# Make predictions.
predictions = model.transform(testData)
# Select example rows to display.
predictions.select("prediction", "indexedLabel", "features").show(5)
# Select (prediction, true label) and compute test error
evaluator = MulticlassClassificationEvaluator(
labelCol="indexedLabel", predictionCol="prediction", metricName="precision")
accuracy = evaluator.evaluate(predictions)
print("Test Error = %g " % (1.0 - accuracy))
treeModel = model.stages[2]
# summary only
print(treeModel)
の質問はどのように私は、この上のモデルの解釈を実行するのですか?パイプラインモデルオブジェクトは、DecisionTree.trainClassifierクラス における方法と同様の方法toDebugString()を持っていないとtrainclassifierは()としてトレーニングデータを取るので、私は私のパイプラインでDecisionTree.trainClassifierを使用することはできませんパラメータ。
パイプラインはフィット()メソッドに引数としてトレーニングデータを受け取り、変換のに対し()
テストデータのパイプラインを使用して、まだモデルの解釈を実行する方法はあります&属性の重要性を確認しますか?
類似しているがより複雑なやり方で、CrossValidatorModelのベストモデルから推定器のモデルを抽出できることに注意してください。 – ffmmmm