SparkML 交叉验证仅适用于“标签”列吗?

2023-12-05

当我运行交叉验证时example使用列中具有标签的数据集not名为“label”,我在 Spark 3.1.1 上观察到 IllegalArgumentException。为什么?

下面的代码已被修改为将“label”列重命名为“target”,并且 labelCol 已设置为回归模型的“target”。此代码导致异常,而将所有内容保留在“标签”中则可以正常工作。

from pyspark.ml import Pipeline
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.evaluation import BinaryClassificationEvaluator
from pyspark.ml.feature import HashingTF, Tokenizer
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder

training = spark.createDataFrame([
    (0, "a b c d e spark", 1.0),
    (1, "b d", 0.0),
    (2, "spark f g h", 1.0),
    (3, "hadoop mapreduce", 0.0),
    (4, "b spark who", 1.0),
    (5, "g d a y", 0.0),
    (6, "spark fly", 1.0),
    (7, "was mapreduce", 0.0),
    (8, "e spark program", 1.0),
    (9, "a e c l", 0.0),
    (10, "spark compile", 1.0),
    (11, "hadoop software", 0.0)
], ["id", "text", "target"]) # try switching between "target" and "label"

tokenizer = Tokenizer(inputCol="text", outputCol="words")
hashingTF = HashingTF(inputCol=tokenizer.getOutputCol(), outputCol="features")

lr = LogisticRegression(maxIter=10, labelCol="target") #try switching between "target" and "label"

pipeline = Pipeline(stages=[tokenizer, hashingTF, lr])

paramGrid = ParamGridBuilder() \
    .addGrid(hashingTF.numFeatures, [10, 100, 1000]) \
    .addGrid(lr.regParam, [0.1, 0.01]) \
    .build()

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


cvModel = crossval.fit(training)

这是预期的行为吗?


您需要提供标签列BinaryClassificationEvaluator也。所以如果你更换线路

evaluator=BinaryClassificationEvaluator(),

with

evaluator=BinaryClassificationEvaluator(labelCol="target"),

它应该工作正常。

您可以在以下位置找到用法docs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SparkML 交叉验证仅适用于“标签”列吗? 的相关文章

  • Spark中如何获取map任务的ID?

    Spark中有没有办法获取map任务的ID 例如 如果每个映射任务都调用用户定义的函数 我可以从该用户定义的函数中获取该映射任务的 ID 吗 我不确定您所说的地图任务 ID 是什么意思 但您可以使用以下方式访问任务信息TaskContext
  • 如何在SparkR中进行map和reduce

    如何使用 SparkR 进行映射和归约操作 我能找到的只是有关 SQL 查询的内容 有没有办法使用 SQL 进行映射和减少 See 写入从 SparkR map 返回的 R 数据帧 https stackoverflow com quest
  • 如何并行运行多个Spark作业?

    一个 Spark 有一个 Oracle 查询 所以我必须并行运行多个作业 以便所有查询同时触发 如何并行运行多个作业 引用官方文档作业调度 http spark apache org docs latest job scheduling h
  • Spark SQL 中的 SQL LIKE

    我正在尝试使用 LIKE 条件在 Spark SQL 中实现联接 我正在执行连接的行看起来像这样 称为 修订 Table A 8NXDPVAE Table B 4 8 NXD V 在 SQL Server 上执行联接 A revision
  • pyspark中的函数input()

    我的问题是当我输入 p 的值时 没有任何反应 它不执行 请问有办法修复它吗 import sys from pyspark import SparkContext sc SparkContext local simple App p inp
  • Spark MLlib - 训练隐式警告

    我在使用时不断看到这些警告trainImplicit WARN TaskSetManager Stage 246 contains a task of very large size 208 KB The maximum recommend
  • 如何在 Scala 中将 DataFrame 模式写入文件

    我有一个 DataFrame 它从一个巨大的 json 文件加载并从中获取架构 该架构基本上大约有 1000 列 我希望将 printSchema 的相同输出保存在文件中而不是控制台中 有任何想法吗 如果您在本地环境中工作 您可以执行以下操
  • Spark中的count和collect函数抛出IllegalArgumentException

    当我使用时抛出此异常时 我尝试在本地 Spark 上加载一个小数据集count 在 PySpark 中 take 似乎有效 我试图搜索这个问题 但没有找到原因 看来RDD的分区有问题 有任何想法吗 先感谢您 sc stop sc Spark
  • K均值||用于 Spark 上的情感分析

    我正在尝试编写基于Spark的情感分析程序 为此 我使用了 word2vec 和 KMeans 聚类 从 word2Vec 我在 100 维空间中得到了 20k 个单词 向量集合 现在我正在尝试对这个向量空间进行聚类 当我使用默认并行实现运
  • 与 aws-java-sdk 链接时读取 json 文件时 Spark 崩溃

    Let config json是一个小的 json 文件 toto 1 我编写了一个简单的代码来读取 json 文件sc textFile 因为文件可以在S3 本地或HDFS上 所以textFile很方便 import org apache
  • 为什么我必须明确告诉 Spark 要缓存什么?

    在 Spark 中 每次我们对 RDD 执行任何操作时 都会重新计算 RDD 因此 如果我们知道 RDD 将被重用 我们应该显式地缓存 RDD 比方说 Spark 决定延迟缓存所有 RDD 并使用 LRU 自动将最相关的 RDD 保留在内存
  • 使用 pySpark 在 Azure Databricks 中使用来自 EventHub 的事件

    我可以看到 Spark 连接器和使用 Azure Databricks 中的 Scala 从事件中心消费事件的指南 但是 我们如何使用 pySpark 从 azure databricks 消费事件中心中的事件 任何建议 文档详细信息都会有
  • 通过Listener获取Spark thrift服务器查询中读取的行数

    我正在尝试为我们的 ST 服务器构建一个监控系统 到目前为止 诸如记录查询 检索的行 红色和花费的时间之类的事情都很好 我已经实现了一个自定义侦听器 我能够毫无问题地检索查询和时间 侦听SparkListenerSQLExecutionSt
  • Scala Spark:将数据框中的双列转换为日期时间列

    我正在尝试编写代码来将日期时间列 date 和 last updated date 转换为 mm dd yyyy 格式以进行显示 它们实际上是 unix 时间转换为双精度数 我该怎么做呢 import org joda time impor
  • 在使用 Phoenix 4.5 的 CDH 5.4 上运行 Spark 作业时未找到 PhoenixOutputFormat

    我通过重新编译源代码设法在 Cloudera CDH 5 4 上配置 Phoenix 4 5 sqlline py效果很好 但火花有问题 spark submit class my JobRunner master yarn deploy
  • 如何解决此错误:Py4JJavaError:调用 o70.showString 时出错?

    目前我正在开发 PySpark 和 DataFrame 我创建了一个数据框 from pyspark sql import import pandas as pd spark SparkSession builder appName Dat
  • pySpark 映射多列

    我需要能够使用多列比较两个数据帧 pySpark尝试 get PrimaryLookupAttributeValue values from reference table in a dictionary to compare them t
  • 这个错误是什么意思(SimpleHttpConnectionManager 被错误使用)?

    我正在尝试从 ElasticSearch 中读取数据到 Spark conf es resource sflow sflow es nodes ES01 es query some query rdd sc newAPIHadoopRDD
  • Spark中分布式读取CSV文件

    我正在开发一个 Spark 处理框架 它读取大型 CSV 文件 将它们加载到 RDD 中 执行一些转换 最后保存一些统计数据 相关 CSV 文件平均大小约为 50GB 我正在使用 Spark 2 0 我的问题是 当我使用sparkConte
  • Pyspark 应用程序仅部分利用 dataproc 集群资源

    我的 pyspark 应用程序在 106 36 MB 数据集 817 270 条记录 上运行 UDF 使用常规 python lambda 函数大约需要 100 小时 我创建了一个 Google Dataproc 集群 其中包含 20 个工

随机推荐