ปรับขนาดข้อมูลด้วยฟังก์ชัน Scaler
ในแบบฝึกหัดที่แล้ว เราใช้ minmax scaling กับตัวแปรเดียว แต่ถ้ามีตัวแปรจำนวนมากที่ต้องปรับขนาด การเขียนโค้ดทีละบรรทัดสำหรับแต่ละตัวแปรคงไม่ไหวแน่ มาต่อยอดจากแบบฝึกหัดก่อนหน้าด้วยการสร้างฟังก์ชันขึ้นมาใช้งานกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Feature Engineering with PySpark
คำแนะนำการฝึกหัด
- สร้างฟังก์ชันชื่อ
min_max_scalerโดยรับพารามิเตอร์df(dataframe) และcols_to_scale(รายการคอลัมน์ที่ต้องการปรับขนาด) - ใช้ลูป
forวนซ้ำผ่านแต่ละคอลัมน์ในรายการ แล้วทำ minmax scaling - คืนค่า dataframe
dfพร้อมคอลัมน์ใหม่ที่เพิ่มเข้ามา - เรียกใช้ฟังก์ชัน
min_max_scaler()กับdfและรายการคอลัมน์cols_to_scale
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def ____(____, ____):
# Takes a dataframe and list of columns to minmax scale. Returns a dataframe.
for col in ____:
# Define min and max values and collect them
max_days = df.agg({col: 'max'}).collect()[0][0]
min_days = df.agg({____: 'min'}).collect()[0][0]
new_column_name = 'scaled_' + col
# Create a new column based off the scaled data
df = df.withColumn(____,
(df[____] - min_days) / (max_days - min_days))
return ____
df = min_max_scaler(____, ____)
# Show that our data is now between 0 and 1
df[['DAYSONMARKET', 'scaled_DAYSONMARKET']].show()