我想用标准定标器 pyspark.ml.feature.StandardScaler
在我的数据窗口。
df4=spark.createDataFrame(
[
(1,1, 'X', 'a'),
(2,1, 'X', 'a'),
(3,9, 'X', 'b'),
(5,1, 'X', 'b'),
(6,2, 'X', 'c'),
(7,2, 'X', 'c'),
(8,10, 'Y', 'a'),
(9,45, 'Y', 'a'),
(10,3, 'Y', 'a'),
(11,3, 'Y', 'b'),
(12,6, 'Y', 'b'),
(13,19,'Y', 'b')
],
['id','feature', 'txt', 'cat']
)
w = Window().partitionBy(..)
我可以通过调用 .fit
& .transform
方法。但不是在电视上 w
我们通常使用的变量 F.col('feature') - F.mean('feature').over(w)
.
我可以将所有窗口化/分组的数据转换为单独的列,将其放入Dataframe中,然后在其上应用standardscaler并转换回 1D
. 还有别的方法吗?最终的目标是尝试不同的定标器,包括 pyspark.ml.feature.RobustScaler
.
1条答案
按热度按时间z2acfund1#
我最终不得不编写自己的scaler类。使用
pyspark StandardScaler
在上面的问题是不合适的,因为我们都知道它是更有效的端到端系列转换。尽管如此,我还是想出了自己的定标器。它并不真的有用Window
但是我使用groupby
.用法: