为什么Spark Mllib需要Vector才能正常工作?

问题描述 投票:-1回答:1

例如,为什么Spark的Mllib ETL函数MinMaxScaler需要组装向量,而不是仅仅使用数据帧中的列,我对此感到困惑。即而不是能够做到这一点:

scaler = MinMaxScaler(inputCol="time_since_live", outputCol="scaledTimeSinceLive")
main_df = scaler.fit(main_df).transform(main_df)

我需要这样做:

assembler = VectorAssembler(inputCols=['time_since_live'],outputCol='time_since_liveVect')
main_df = assembler.transform(main_df)
scaler = MinMaxScaler(inputCol="time_since_liveVect", outputCol="scaledTimeSinceLive")
main_df = scaler.fit(main_df).transform(main_df)

这似乎是不必要的步骤,因为我最终创建了一个带有一个输入列的向量来运行MinMaxScaler。为什么需要将其设置为矢量格式,而不仅仅是数据框列?

apache-spark pyspark apache-spark-mllib
1个回答
0
投票

在机器学习和模式识别中,此类特征的集合始终表示为向量,它被称为“特征向量”。 wiki read on feature and feature vector

因此所有主要的ml库都是API的构建,可与特征向量一起使用

现在,问题变得越来越多,我们应该在哪里进行向量转换步骤,应该在客户端代码中(现在已经存在)还是应该在API内,并且客户端代码应该能够调用API只需列出功能列即可。恕我直言,我们可以同时使用这两种方法,如果您有空闲时间,可以添加一个新的API来接受列列表而不是特征向量,并发出拉取请求。让我们看看Spark社区对此有何看法

© www.soinside.com 2019 - 2024. All rights reserved.