MLlib Estimator如何知道哪些功能和目标列?

时间:2017-06-10 17:05:20

标签: apache-spark pyspark apache-spark-mllib

我尝试按照MLlib tutorial进行操作。我理解Estimators的概念。它将数据帧作为输入,并使用它来训练和返回预测模型,该模型是MLlib术语中的Transformer(将数据帧作为输入并返回另一个数据帧)。

我不清楚的是,估算工具如何知道数据框的哪些列应被视为要素,哪些列应作为目标。

让我们来看看这个例子:

from pyspark.ml.classification import LogisticRegression

# Prepare training data from a list of (label, features) tuples.
training = spark.createDataFrame([
    (1.0, Vectors.dense([0.0, 1.1, 0.1])),
    (0.0, Vectors.dense([2.0, 1.0, -1.0])),
    (0.0, Vectors.dense([2.0, 1.3, 1.0])),
    (1.0, Vectors.dense([0.0, 1.2, -0.5]))], ["label", "features"])

# Create a LogisticRegression instance. This instance is an Estimator.
lr = LogisticRegression(maxIter=10, regParam=0.01)
# Print out the parameters, documentation, and any default values.
print("LogisticRegression parameters:\n" + lr.explainParams() + "\n")

# Learn a LogisticRegression model. This uses the parameters stored in lr.
model1 = lr.fit(training)

我猜模型会将features列作为要素,并将label列视为目标。这是对的吗?如果是这种情况,是否可以更改此默认行为?

1 个答案:

答案 0 :(得分:3)

LogisticRegressionlabelColfeaturesCol Params,默认情况下为lablelfeatures。两者都可以在构造函数中设置

LogisticRegression(maxIter=10, regParam=0.01, labelCol="foo", featuresCol="bar")

或使用相应的setter方法:

lr.setLabelCol("foo").setFeaturesCol("bar")

大多数Params分类和预测算法使用相同的ml