ComeçarComece de graça

Ajustando features de tempo

Ao longo do curso, mencionamos os riscos de vazar informações para o seu modelo durante o treinamento. Data leakage fará com que seu modelo apresente métricas de acurácia muito otimistas, mas, quando dados reais forem processados, os resultados costumam ser bem decepcionantes.

Neste exercício, vamos garantir que DAYSONMARKET reflita apenas as informações que temos no momento de prever o valor. Ou seja, se a casa ainda está no mercado, não sabemos por quantos dias a mais ela ficará. Precisamos ajustar nosso test_df para refletir as informações disponíveis em 2017-12-10.

OBSERVAÇÃO: Este exemplo usará a função lit(). Essa função é empregada para permitir valores únicos onde normalmente se espera uma coluna inteira em uma chamada de função.

Este exercício faz parte do curso

Feature Engineering com PySpark

Ver curso

Instruções do exercício

  • Importe as seguintes funções de pyspark.sql.functions para usar depois: datediff(), to_date(), lit().
  • Converta a string de data '2017-12-10' para uma data do PySpark chamando primeiro a função literal lit() nela e depois to_date().
  • Crie test_df filtrando OFFMKTDATE maior ou igual a split_date e LISTDATE menor ou igual a split_date usando where().
  • Substitua DAYSONMARKET calculando uma nova coluna chamada DAYSONMARKET. A nova coluna deve ser a diferença entre split_date e LISTDATE; use datediff() para realizar o cálculo de datas. Inspecione a nova coluna e a original usando o código fornecido.

Exercício interativo prático

Experimente este exercício completando este código de exemplo.

from pyspark.sql.functions import ____, ____, ____

split_date = ____(____('2017-12-10'))
# Create Sequential Test set
test_df = df.____(df[____] >= ____).____(df[____] <= ____)

# Create a copy of DAYSONMARKET to review later
test_df = test_df.withColumn('DAYSONMARKET_Original', test_df['DAYSONMARKET'])

# Recalculate DAYSONMARKET from what we know on our split date
test_df = test_df.withColumn(____, ____(____, ____))

# Review the difference
test_df[['LISTDATE', 'OFFMKTDATE', 'DAYSONMARKET_Original', 'DAYSONMARKET']].show()
Editar e executar o código