PySpark ile Özellik Mühendisliği
John Hogue
Lead Data Scientist, General Mills


# min ve max değerleri tanımla ve topla max_days = df.agg({'DAYSONMARKET': 'max'}).collect()[0][0] min_days = df.agg({'DAYSONMARKET': 'min'}).collect()[0][0]# ölçeklenen veriye göre yeni bir sütun oluştur df = df.withColumn("scaled_days", (df['DAYSONMARKET'] - min_days) / (max_days - min_days))df[['scaled_days']].show(5)
+--------------------+
| scaled_days|
+--------------------+
|0.044444444444444446|
|0.017777777777777778|
| 0.12444444444444444|
| 0.08444444444444445|
| 0.09333333333333334|
+--------------------+
only showing top 5 rows
Veriyi standart normal dağılıma dönüştür

mean_days = df.agg({'DAYSONMARKET': 'mean'}).collect()[0][0] stddev_days = df.agg({'DAYSONMARKET': 'stddev'}).collect()[0][0]# Ölçeklenmiş veriden yeni bir sütun oluştur df = df.withColumn("ztrans_days", (df['DAYSONMARKET'] - mean_days) / stddev_days)df.agg({'ztrans_days': 'mean'}).collect()
[Row(avg(ztrans_days)=-3.6568525985103407e-16)]
df.agg({'ztrans_days': 'stddev'}).collect()
[Row(stddev(ztrans_days)=1.0000000000000009)]
Ölçeklenmemiş dağılım

Log-ölçekli dağılım

# log fonksiyonunu içe aktar
from pyspark.sql.functions import log
# SALESCLOSEPRICE'in log'unu yeniden hesapla
df = df.withColumn('log_SalesClosePrice', log(df['SALESCLOSEPRICE']))
PySpark ile Özellik Mühendisliği