gpt4 book ai didi

python - Spark 将数据帧列转换为 StandardScaler() 的密集向量 "Column must be of type org.apache.spark.ml.linalg.VectorUDT"

转载 作者:太空狗 更新时间:2023-10-30 02:03:05 25 4
gpt4 key购买 nike

我是 Spark 的新手,我正在尝试将 StandardScaler() 应用于 DataFrame 中的列。

+---------------+
| DF_column|
+---------------+
| 0.114285714286|
| 0.115702479339|
| 0.267893660532|
|0.0730337078652|
| 0.124309392265|
| 0.365714285714|
| 0.111747851003|
| 0.279538904899|
| 0.134670487106|
| 0.523287671233|
| 0.404011461318|
| 0.375|
| 0.125517241379|
|0.0143266475645|
| 0.313684210526|
| 0.381088825215|
| 0.411428571429|
| 0.327683615819|
| 0.153409090909|
| 0.344827586207|
+---------------+

问题是像这样应用它,给我一个错误:

requirement failed: Input column DF_column must be a vector column.

我试过使用 UDF 但还是不行。

scaler = StandardScaler(inputCol='DF_column', 
outputCol="scaledFeatures",withStd=True, withMean=False)

我做了 LIBSVM 的示例,但 TXT 文件将特征加载为向量很容易。

最佳答案

如果您有一列标量,那么 StandardScaler 就太过分了。您可以直接缩放:

from pyspark.sql.functions import col, stddev_samp

df.withColumn("scaled",
col("DF_column") / df.agg(stddev_samp("DF_column")).first()[0])

但是如果你真的想使用缩放器而不是先组装一个向量:

from pyspark.ml.feature import VectorAssembler
from pyspark.ml.feature import StandardScaler

assembler = VectorAssembler(
inputCols=["DF_column"], outputCol="features"
)

assembled = assembler.transform(df)

scaler = StandardScaler(
inputCol="features", outputCol="scaledFeatures",
withStd=True, withMean=False
).fit(assembled)

scaler.transform(assembled)

关于python - Spark 将数据帧列转换为 StandardScaler() 的密集向量 "Column must be of type org.apache.spark.ml.linalg.VectorUDT",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35882446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com