首页 > 解决方案 > 如何将参数仅传递给 PySpark ML Pipeline 对象的一部分?

问题描述

有谁知道如何将参数仅传递给 PySpark ML Pipeline 对象的一个​​步骤?我知道在 sklearn 的情况下,可以使用它们的名称和由“__”分隔的参数名称来设置各个步骤的参数。下面是这个 SO 问题的 sklearn 示例How to pass a parameter to only one part of a pipeline object in scikit learn?

m = Pipeline([
    ('feature_selection', SelectKBest(
        score_func=sklearn.feature_selection.f_regression,
        k=25)),
    ('model', RandomForestClassifier(
        random_state=0, 
        oob_score=True, 
        n_estimators=500,
        min_samples_leaf=5, 
        max_depth=10))])

m.fit(X, y, model__sample_weight=np.array([3,4,2,3]))

我正在 PySpark 中寻找类似的解决方案。假设这是我的管道:

tokenizer = Tokenizer(inputCol="text", outputCol="words")
hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(), outputCol="features")
lr = LogisticRegression(maxIter=10, regParam=0.001)
pipeline = Pipeline(stages=[tokenizer, hashingTF, lr])

标签: pythonmachine-learningpysparkpipelineapache-spark-ml

解决方案


推荐阅读