这是 Pyspark 的。我是这个领域的新手,请多多包涵。
为了缩放功能,我了解到必须先将它们转换为向量,然后在这些向量列上使用MinMaxScaler()。通常,您可以一次拍摄一个或多个矢量列,然后将其值写入另一列-使用以下方法:
new_df = VectorAssembler(inputCols = ["colA", "colB"], outputCol = "colC").transform(df)
因此,我了解这将在数据帧colC
中添加另一个名为df
的列。但是,与此相关的问题是,colC
中的colA
和colB
的值都作为向量。
在这里,出现两个问题:
colC
包含colC
和colA
的值作为矢量,只要MinMaxScaler()能够完成工作,我就是以后可以分开。前者做到了,但后者却没有。我不知道如何分开他们。至少我还没有找到方法。这就是我的意思:https://spark.apache.org/docs/2.1.0/ml-features.html#minmaxscaler(在Python中寻找其示例)所以在那里,当您执行colB
时,它显示为:
scaledData.select("features", "scaledFeatures").show()
如何将+--------------+--------------+
| features|scaledFeatures|
+--------------+--------------+
|[1.0,0.1,-1.0]| [0.0,0.0,0.0]|
| [2.0,1.1,1.0]| [0.5,0.1,0.5]|
|[3.0,10.1,3.0]| [1.0,1.0,1.0]|
+--------------+--------------+
中的值分成两个单独的列?正则表达式? 别看scaledFeatures
。一样,只是没有缩放。
features
的向量化缩放值为colC
和 new 列,colA
的向量化了标定值为colD
。#2的问题是colB
和colC
现在具有vectroized值。因此,原本应该只是数字的列中的每个值现在都放在方括号中-它们都已向量化。
类似这样的东西(这是我自己的数据集-并非来自上面的示例):
colD
我该如何取消?我无法在此df上执行+-------------------------------+---------------------------------+
| [0.5043343370745506]| [0.0912011325868883]|
| [0.5037868418651337]| [0.0912011325868883]|
| [0.5039693402682727]| [0.0912011325868883]|
| [0.5036955926635642]| [0.0912011325868883]|
| [0.5039693402682727]| [0.0912011325868883]|
| [0.5039693402682727]| [0.0912011325868883]|
| [0.5040605894698421]| [0.0912011325868883]|
| [0.5038780910667031]| [0.0912011325868883]|
| [0.5027831006478694]| [0.0912011325868883]|
| [0.5035130942604252]| [0.0912011325868883]|
+-------------------------------+---------------------------------+
。它只是抛出一个空表。
谢谢。
错误:
df.describe().show()