我正在尝试标准化(mean=0,std=1)我的数据帧中的一列('age')。以下是我在Spark(Python)中的代码:
from pyspark.ml.feature import StandardScaler
from pyspark.ml.feature import VectorAssembler
from pyspark.ml import Pipeline
# Make my 'age' column an assembler type:
age_assembler = VectorAssembler(inputCols= ['age'], outputCol = "age_feature")
# Create a scaler that takes 'age_feature' as an input column:
scaler = StandardScaler(inputCol="age_feature", outputCol="age_scaled",
withStd=True, withMean=True)
# Creating a mini-pipeline for those 2 steps:
age_pipeline = Pipeline(stages=[age_assembler, scaler])
scaled = age_pipeline.fit(sample17)
sample17_scaled = scaled.transform(sample17)
type(sample17_scaled)
看起来很好。最后一行是:“sample17_缩放比例:pyspark.sql.dataframe.dataframe““
但当我运行下面的一行时,它显示新列age_scaled是“vector”类型:|——age_scaled:vector(nullable=true)
sample17_scaled.printSchema()
我如何用这个新列计算任何东西?例如,我不能计算平均数。当我尝试的时候,它说应该是“长”而不是udt。在
非常感谢!在
只使用普通聚合:
或者
^{pr2}$如果你想要
Transformer
,你可以split vector into columns。在相关问题 更多 >
编程相关推荐