你好!
我在python中使用火花2.1.1
(python 2.7中執行jupyter筆記本)
線性回歸和試圖讓網格搜索參數。
我的代碼是這樣的:
從pyspark.ml。優化進口CrossValidator ParamGridBuilder pyspark。毫升=進口管道管道管道(階段= [sql_transformer、彙編、lr]) paramGrid = ParamGridBuilder () .addGrid (lr)。解算器,[“l-bfgs”、“正常”]).build()求值程序= RegressionEvaluator () crossval = CrossValidator(估計量=管道,estimatorParamMaps = paramGrid numFolds = 3) cvModel = crossval.fit cvModel.avgMetrics(火車)
出[]> [887.3183210064692,787.3183297841774]
我的問題是:我如何能找到,這組參數查詢裝備指標對應?
我如何可以得到參數的最佳訓練模型?
匹配的指標參數的設置:
“paramGrid”是一個參數列表地圖;“avgMetrics”指標的列表。這兩個列表有相同的訂單,所以你可以壓縮在一起:
郵政編碼(cvModel。avgMetrics paramGrid)
找到最好的一組參數:
如果你有CrossValidatorModel(配件CrossValidator後),然後你可以得到最好的模型稱為bestModel。然後,您可以使用extractParamMap得到最好的模型的參數:
bestPipeline = cvModel。bestModel bestLRModel = bestPipeline。階段[2]bestParams = bestLRModel.extractParamMap ()
上麵的代碼,bestParams還顯示了一個空列表嗎?任何想法嗎?
試著這段代碼,但extractParamMap(),它顯示了一些參數,但不能顯示paramGrid內的最佳參數。
這在Apache火花tripwire已得到改進https://issues.apache.org/jira/browse/spark - 10931該參數的值複製到Python包裝器Scala類型。extractParamMap()提取所有參數;你必須在其中尋找網格的參數你真正關心的。