【发布时间】:2016-08-10 09:17:38
【问题描述】:
我正在修改 PySpark 文档中的一些交叉验证代码,并试图让 PySpark 告诉我选择了什么模型:
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.evaluation import BinaryClassificationEvaluator
from pyspark.mllib.linalg import Vectors
from pyspark.ml.tuning import ParamGridBuilder, CrossValidator
dataset = sqlContext.createDataFrame(
[(Vectors.dense([0.0]), 0.0),
(Vectors.dense([0.4]), 1.0),
(Vectors.dense([0.5]), 0.0),
(Vectors.dense([0.6]), 1.0),
(Vectors.dense([1.0]), 1.0)] * 10,
["features", "label"])
lr = LogisticRegression()
grid = ParamGridBuilder().addGrid(lr.regParam, [0.1, 0.01, 0.001, 0.0001]).build()
evaluator = BinaryClassificationEvaluator()
cv = CrossValidator(estimator=lr, estimatorParamMaps=grid, evaluator=evaluator)
cvModel = cv.fit(dataset)
在 PySpark shell 中运行它,我可以获得线性回归模型的系数,但我似乎找不到交叉验证过程选择的 lr.regParam 的值。有什么想法吗?
In [3]: cvModel.bestModel.coefficients
Out[3]: DenseVector([3.1573])
In [4]: cvModel.bestModel.explainParams()
Out[4]: ''
In [5]: cvModel.bestModel.extractParamMap()
Out[5]: {}
In [15]: cvModel.params
Out[15]: []
In [36]: cvModel.bestModel.params
Out[36]: []
【问题讨论】:
-
Spark Scala API 中的相关问题:stackoverflow.com/questions/31749593/…
-
pyspark 在这里回答:stackoverflow.com/questions/39529012/…
-
确保标记答案(下面的wernerchao 对我有用)。
-
我会相信你的话,虽然这个项目现在对我来说已经是遥远的记忆......
标签: pyspark modeling cross-validation apache-spark-mllib apache-spark-ml