如何解决Spark 3.0.1 MinMaxScaler提供混合向量类型
我在使用Spark 3.0.1时遇到了MinMaxScaler的问题,其中生成的缩放列包含Dense和Sparse向量的混合。根据{{3}},结果列应为DenseVectors。我最近从Apache Spark 2.4.0切换到了3.0.1,不记得以前看到过这种情况。
输入DataFrame的架构为:
root
|-- index: long (nullable = false)
|-- label: integer (nullable = false)
|-- features: vector (nullable = true)
并且我正在尝试使用以下代码扩展到数据:
val scaler = new MinMaxScaler()
.setInputCol("features")
.setOutputCol("scaledFeatures")
val scalerModel = scaler.fit(converted)
val scaledData: DataFrame = scalerModel.transform(converted)
scaledData.show()
scaledData.printSchema()
结果输出为:
|index|label| features| scaledFeatures|
+-----+-----+--------------------+--------------------+
| 0| 0|[0.0,0.0,...|(880,[7,17,18,19,...|
| 1| 0|[0.0,...|
| 2| 0|[0.0,...|
| 3| 0|[0.0,...|
| 4| 0|[0.0,...|[0.0,...|
| 5| 0|[0.1772,0.225...|[0.26380824772964...|
| 6| 0|[0.1896,0.147...|[0.28226887003126...|
| 7| 0|[0.195,0.2064...|[0.29030817329164...|
| 8| 0|[0.1945,0.243...|[0.28956379336013...|
| 9| 0|[0.2089,0.275...|(880,[0,2,4,5,6,7...|
| 10| 0|[0.2582,0.314...|(880,7...|
架构为
root
|-- index: long (nullable = false)
|-- label: integer (nullable = false)
|-- features: vector (nullable = true)
|-- scaledFeatures: vector (nullable = true)
MinMaxScaler中是否有错误,我的代码是否错误,或者我是否缺少有关此内容的信息?我需要将结果列设置为DenseVector,以用于将要在其上使用的下一个算法。
更新:
首先,看起来我可以使用找到的Apache Spark 3.0.1 MinMaxScaler documentation解决方案来解决这个问题。我以前使用过类似的方法,但显然不适用于更新版本的Spark。
但是,原始问题仍然存在。看着here,转换函数返回
Vectors.dense(values).compressed
和MinMaxScaler source code,compressed
以密集格式或稀疏格式返回矢量,以较少的存储空间为准。
我是否正确地假设代码或文档错误,如果是,那哪一个是错误的?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。