Как выполнить перекрестную проверку без использования Paramgrid Builder в pyspark? - PullRequest
0 голосов
/ 10 октября 2018

Я хочу выполнить перекрестную проверку типа sklearn в pyspark без использования ParamGrid Builder .

from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.ml.evaluation import BinaryClassificationEvaluator
from pyspark.ml.regression import LinearRegression
lr = LinearRegression(regParam=0.1,elasticNet=0.2,maxIter=100)
crossval = CrossValidator(estimator=lr,
                          evaluator=BinaryClassificationEvaluator(),
                          numFolds=2)  

Можно ли выполнить перекрестную проверку таким образом, не используя paramGrid Builder?Мой пример использования - я хочу передать параметры в класс линейной регрессии как аргументы, но не как объект paramGrid.

1 Ответ

0 голосов
/ 03 июля 2019

Одним из простых решений было бы предоставить только те параметры, которые вы хотите использовать в ParamGrid:

paramGrid = ParamGridBuilder() \
  .addGrid(lr.regParam, [0.1]) \
  .addGrid(lr.elasticNet, [0.2]) \
  .addGrid(lr.maxIter, [100]) 
  .build()

crossval = CrossValidator(estimator=lr,
                estimatorParamMaps=paramGrid, 
                evaluator=BinaryClassificationEvaluator(),
                numFolds=2)  

Вы всегда можете кодировать свою собственную версию K-fold, разбивая свой набор данных на K частей с помощью:

fold1, fold2 = df.randomSplit([0.5,0.5])
folds = [fold1, fold2]
res = []
for fold in folds:
    train, test = fold.randomSplit([0.80,0.20])
    model.train(train)
    res.append(model.evaluate(test))

do_what_you_want(res)
...