[英]How to convert an array of values so that each value is closer the mean, but with a similarly shaped distribution (i.e. reduce the stdev) in PySpark
我希望我已經用正確的術語描述了我需要做的工作。 本質上,我需要“壓縮”一系列值,以便所有值都更接近平均值,但它們的值應該相對於它們與平均值的距離減少(或增加)......
數據框如下所示:
>>> df[['population', 'postalCode']].show(10)
+----------+----------+
|population|postalCode|
+----------+----------+
| 1464| 96028|
| 465| 96015|
| 366| 96016|
| 5490| 96101|
| 183| 96068|
| 569| 96009|
| 366| 96054|
| 90| 96119|
| 557| 96006|
| 233| 96116|
+----------+----------+
only showing top 10 rows
>>> df.describe().show()
+-------+------------------+------------------+
|summary| population| postalCode|
+-------+------------------+------------------+
| count| 1082| 1082|
| mean|23348.511090573014| 93458.60813308688|
| stddev|21825.045923603615|1883.6307236060127|
+-------+------------------+------------------+
總體均值符合我的目的,但我需要它周圍的方差更小......
希望這是有道理的,非常感謝在 pyspark 或 node.js 中執行此工作的任何幫助。
總體思路是:
在偽代碼中,如果您的值存儲在變量x
:
x.scaled = new.mean + (x - mean(x)) * new.SD/sd(x)
或者,對於特定情況,例如 SD=1000 並且平均值沒有變化:
x.scaled = mean(x) + (x - mean(x)) * 1000/sd(x)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.