我尝试按照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
列视为目标。这是对的吗?如果是这种情况,是否可以更改此默认行为?
答案 0 :(得分:3)
LogisticRegression
有labelCol
和featuresCol
Params
,默认情况下为lablel
和features
。两者都可以在构造函数中设置
LogisticRegression(maxIter=10, regParam=0.01, labelCol="foo", featuresCol="bar")
或使用相应的setter方法:
lr.setLabelCol("foo").setFeaturesCol("bar")
大多数Params
分类和预测算法使用相同的ml
。