2016-08-03 6 views
2

私は、pysparkのSpark Pipelinesを使用して線形回帰を実行しています。線形回帰モデルが訓練されたら、どのように係数を取り出すのですか?私はPipelineModel classからメソッドを使用して試してみましたSpark PipelineModelパラメータへのアクセス方法

# Get all of our features together into one array called "features". Do not include the label! 
feature_assembler = VectorAssembler(inputCols=get_column_names(df_train), outputCol="features") 

# Define our model 
lr = LinearRegression(maxIter=100, elasticNetParam=0.80, labelCol="label", featuresCol="features", 
        predictionCol = "prediction") 

# Define our pipeline 
pipeline_baseline = Pipeline(stages=[feature_assembler, lr]) 

# Train our model using the training data 
model_baseline = pipeline_baseline.fit(df_train) 

# Use our trained model to make predictions using the validation data 
output_baseline = model_baseline.transform(df_val) #.select("features", "label", "prediction", "coefficients") 
predictions_baseline = output_baseline.select("label", "prediction") 

は、ここに私のパイプラインコードです。ここで、係数を得るために、私の試みですが、私は空のリストと空の辞書を取得します:

params = model_baseline.stages[1].params 
print 'Try 1 - Parameters: %s' %(params) 
params = model_baseline.stages[1].extractParamMap() 
print 'Try 2 - Parameters: %s' %(params) 

Out[]: 
Try 1 - Parameters: [] 
Try 2 - Parameters: {} 

は、訓練された係数を返すPipelineModelする方法はありますか?

答えて

1

あなたは間違った特性を見ています。 paramsML Pipeline parameters docsではなく推定値を参照してください(入力または出力列のようなEstimatorまたはTransformerParamsを抽出するために使用することができます

LinearRegressionModel使用coefficientsについて:。!

model.stages[-1].coefficients 
+0

パーフェクトありがとうこれは私が探していたまさにです。 (例:regParamまたはelasticNetParam)?これは新しいアプリケーションです。[CrossValidator](https://spark.apache.org/docs/2.0)を実行しています。 .0/api/python/pyspark.ml.html?highlight = crossvalidator#pyspark.ml.tuning.CrossValidator)異なるハイパーパラメータを試してみてください。最良のモデルが見つかった場合、どのモデルがどのモデルで使用されているかを知りたい。 'model.bestModel.stages [-1] .coefficients'は私に最良線形回帰モデルの係数を与えます。 –

関連する問題