ComeçarComece de graça

Removendo colunas com poucas observações

Depois de fazer bastante feature engineering, vale a pena dar um passo atrás e olhar o que você criou. Se você usou alguma técnica de automação nos seus recursos categóricos, como explodir valores ou OneHot Encoding, pode descobrir que agora tem centenas de novos recursos binários. Embora seleção de features seja assunto para outro curso inteiro, há alguns passos rápidos que você pode seguir para reduzir a dimensionalidade do seu conjunto de dados.

Neste exercício, vamos remover colunas que tenham menos de 30 observações. Trinta é um número mínimo comum de observações para significância estatística. Qualquer valor menor que isso e os relacionamentos causam overfitting por pura coincidência!

OBSERVAÇÃO: Os dados estão disponíveis no dataframe df.

Este exercício faz parte do curso

Feature Engineering com PySpark

Ver curso

Instruções do exercício

  • Usando o for fornecido que itera pela lista de colunas binárias, calcule a sum dos valores na coluna usando a função agg. Use collect() para executar o cálculo imediatamente e salve o resultado em obs_count.
  • Compare obs_count com obs_threshold; a instrução if deve ser verdadeira se obs_count for menor ou igual a obs_threshold.
  • Remova as colunas que foram adicionadas à lista cols_to_remove usando drop(). Lembre-se de que * permite descompactar a lista.
  • Imprima as dimensões iniciais e finais dos dataframes do PySpark usando count() para o número de registros e len() em df.columns ou new_df.columns para encontrar o número de colunas.

Exercício interativo prático

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

obs_threshold = 30
cols_to_remove = list()
# Inspect first 10 binary columns in list
for col in binary_cols[0:10]:
  # Count the number of 1 values in the binary column
  obs_count = df.____({col: ____}).____()[0][0]
  # If less than our observation threshold, remove
  if ____ ____ ____:
    cols_to_remove.append(col)
    
# Drop columns and print starting and ending dataframe shapes
new_df = df.____(*____)

print('Rows: ' + str(df.____()) + ' Columns: ' + str(____(df.____)))
print('Rows: ' + str(new_df.____()) + ' Columns: ' + str(____(new_df.____)))
Editar e executar o código