0
평균을 빼고 각 열의 stddev로 나눠서 스파크 데이터 프레임의 여러 열 값을 표준화하려고합니다. 나는 내가 함께 할 수 있다고 생각DataFrame API 만 사용하여 Spark DataFrame의 여러 열 값 정규화
+------------------------------+------------------------------+
|(A - (avg(A)/stddev_pop(A)))|(B - (avg(B)/stddev_pop(B)))|
+------------------------------+------------------------------+
| -1.414213562| -1.414213562|
| -0.707106781| -0.707106781|
| 0| 0|
| 0.707106781| 0.707106781|
| 1.414213562| 1.414213562|
+------------------------------+------------------------------+
: I가 바라고 있어요
+------------------------------+------------------------------+
|(A - (avg(A)/stddev_pop(A)))|(B - (avg(B)/stddev_pop(B)))|
+------------------------------+------------------------------+
| null| null|
+------------------------------+------------------------------+
: 나에게 결과를 제공
from pyspark.sql import Row
from pyspark.sql.functions import stddev_pop, avg
df = spark.createDataFrame([Row(A=1, B=6), Row(A=2, B=7), Row(A=3, B=8),
Row(A=4, B=9), Row(A=5, B=10)])
exprs = [x - (avg(x))/stddev_pop(x) for x in df.columns]
df.select(exprs).show()
: 다음 코드는 내가 지금까지 가지고있어 StandardScaler 클래스를 mllib에서 사용할 수 있지만 가능한 경우 데이터 프레임 API 만 사용하여이 작업을 수행하고 싶습니다.
대답 here 덕분으로
가능한 복제 [각 그룹에 대한 스파크 SQL에서 Z 점수를 만드는 방법] (http://stackoverflow.com/questions/ 36807937/how-to-create-z-score-in-spark-sql-for-each-group) –
@LostInOverflow 확실히 가까운 편이지만 여러 개의 열을 정규화해야했습니다. – MarkNS