MLlib Estimator 如何知道特征和目标列是啥?

Posted

技术标签:

【中文标题】MLlib Estimator 如何知道特征和目标列是啥?【英文标题】:How does an MLlib Estimator know what are the features and target columns?MLlib Estimator 如何知道特征和目标列是什么? 【发布时间】:2017-06-10 17:05:20 【问题描述】:

我尝试关注这个MLlib tutorial。我理解估计器的概念。它将数据帧作为输入,并使用它来训练并返回预测模型,该模型是 MLlib 术语中的 Transformer(将数据帧作为输入并返回另一个数据帧的东西)。

我不清楚的是 Estimator 如何知道数据框中的哪些列应被视为特征以及应将哪些列视为目标。

让我们看一下这个例子:

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】:

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

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

或者使用相应的setter方法:

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

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

【讨论】:

以上是关于MLlib Estimator 如何知道特征和目标列是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MLLIB / ApacheSpark 中为 RandomForrest 模型上的特征分配标签

MLlib特征变换方法

如何封装不同 的分箱算法为一个spark Estimator?

如何从提升树 Estimator 迁移到 TensorFlow 决策森林

如何从提升树 Estimator 迁移到 TensorFlow 决策森林

你知道吗?常用的数据挖掘分析工具Mahout和MLlib