pyspark TypeError:尝试类型转换时列不可迭代

oxalkeyp  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(195)
from pyspark.ml.regression import LinearRegression
from pyspark.ml import Pipeline
from pyspark.ml.feature import StringIndexer, VectorAssembler
from pyspark.ml.classification import LogisticRegression
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.sql.types import DoubleType
for i in range(0, len(names)):
    df2=trainingDF
    numericCols = [c for c in trainingDF.columns if c not in {names[i]}]
    assembler = VectorAssembler(inputCols=numericCols, outputCol="features") 
    df = assembler.transform(df2)
    df=df.withColumnRenamed(names[i],"label")
    lr = LinearRegression(maxIter=10, regParam=0.3, elasticNetParam=0.8)
    lrModel = lr.fit(df)
    evaluator = RegressionEvaluator()
    evaluator.setPredictionCol(names[i])
    evaluator.evaluate(df2[names[i]].cast(DoubleType()))
    rsq=evaluator.evaluate(df, {evaluator.metricName: "r2"})
    vif = round(1 / (1 - rsq), 2)
    print(vif)

我在下面的行中遇到了一个错误。我想将df2的所有列作为双精度值传递,并将它们的类型转换为双精度值。

evaluator.evaluate(df2[names[i]].cast(DoubleType()))
zujrkrfu

zujrkrfu1#

根据文档,方法evaluatepyspark.sql.DataFrame对象作为第一个参数,但您提供了一个列(df2[names[i]].cast(DoubleType())的数据类型为Column,而不是DataFrame)。

evaluate 数据集: Dataframe ,参数:可选[参数Map] =无 )→浮点

使用可选参数计算输出。

  • 1.4.0版中的新增功能
    参数:
    数据集: pyspark.sql.数据框架

包含标注/观测和预测的数据集

参数: 字典,可选*

覆盖嵌入参数的可选参数Map

退货:
*浮动

公制单位

相关问题