让缩放器真正"扩展"起来
在上一个练习中,您对单个变量做了 min-max 缩放。现在假设有很多变量需要缩放,您肯定不想为每个变量都写上百行代码。让我们在上一个练习的基础上,把它封装成一个函数。
本练习是课程的一部分
使用 PySpark 进行特征工程
练习说明
- 定义一个名为
min_max_scaler的函数,接收参数df(数据框)和cols_to_scale(需要缩放的列名列表)。 - 使用
for循环遍历列表中的每一列,并对其进行 min-max 缩放。 - 返回添加了新列的数据框
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()