Filtrando recursos altamente correlacionados
Você vai automatizar a remoção de recursos altamente correlacionados no conjunto de dados numérico ANSUR. Você calculará a matriz de correlação e filtrará colunas que tenham coeficiente de correlação maior que 0,95 ou menor que -0,95.
Como cada coeficiente de correlação aparece duas vezes na matriz (a correlação de A com B é igual à de B com A), você deve ignorar metade da matriz de correlação para remover apenas um dos dois recursos correlacionados. Use um truque com máscara para isso.
Este exercício faz parte do curso
Redução de Dimensionalidade em Python
Instruções do exercício
- Calcule a matriz de correlação de
ansur_dfe pegue o valor absoluto dessa matriz. - Crie uma máscara booleana com valores
Trueno triângulo superior direito e aplique-a à matriz de correlação. - Defina o limite do coeficiente de correlação como
0.95. - Remova do DataFrame todas as colunas listadas em
to_drop.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# Calculate the correlation matrix and take the absolute value
corr_df = ansur_df.____().____()
# Create a True/False mask and apply it
mask = np.____(np.____(corr_df, dtype=____))
tri_df = corr_df.____(mask)
# List column names of highly correlated features (r > 0.95)
to_drop = [c for c in tri_df.columns if any(tri_df[c] > ____)]
# Drop the features in the to_drop list
reduced_df = ansur_df.____(____, axis=1)
print(f"The reduced_df DataFrame has {reduced_df.shape[1]} columns.")