1
resposta

Melhor parâmetro para escolher ao remover Outliers

Qual o melhor método para remoção outliers ? Faço a comparação primeiro do que mais vai influenciar no meu modelo? Se sim, tem alguma função ou gráfico que mostra qual dado esta influenciando mais no resultado final para o meu "target"?

1 resposta

olha, eu particularmente no dia a dia analiso os outliers com:

distplots, boxplots ou ate mesmo o df.describe(comparando a media, valores máximos e mínimos...),

e para remover costumo usar o "df.query(' ')"

df['vendas'] = df.query('vendas >= 50000')
#Documentação da função query:
#https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.query.html

e existem sim algumas formas de saber quais dados estão mais influenciando o seu target, se você estiver usando modelos de Arvores por exemplo, eles já possuem uma forma de acessar quais colunas mais importam ao modelo, "model.feature_importances_"

def plot_feature_importance(importance,names,model_type):
'''
ps: não esqueça da indentação da função plot_feature_importance 
e nem das bibilotecas para executar
'''
#cria arrays da feature importance e dos nomes
feature_importance = np.array(importance)
feature_names = np.array(names)

#criando um df
data={'feature_names':feature_names,'feature_importance':feature_importance}
fi_df = pd.DataFrame(data)

#filtrando em ordem decrescente
fi_df.sort_values(by=['feature_importance'], ascending=False,inplace=True))


#Plotando um gráfico com as importâncias
plt.figure(figsize=(10,8))
sns.barplot(x=fi_df['feature_importance'], y=fi_df['feature_names'])
#Add chart labels
plt.title(model_type + 'FEATURE IMPORTANCE')
plt.xlabel('FEATURE IMPORTANCE')
plt.ylabel('FEATURE NAMES')

# Chamando a função
plot_feature_importance(model.feature_importances_, x_treino.columns, 'Meu modelo')

caso não queira utilizar a feature importance também existe uma biblioteca chamada Shap muito boa também https://pypi.org/project/shap/