Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Target do modelo com valores não numéricos

Nesta aula, é feito o tratamento dos datasets para posterior treinamento do modelo, através da seguinte função:

def prepare_data(df):
  df.drop(['Unnamed: 0', 'id'], axis = 1, inplace=True)
  df.dropna(subset=['Arrival Delay in Minutes'], inplace=True)
  categorical_cols = ['Gender', 'Customer Type', 'Type of Travel', 'Class']
  df = pd.get_dummies(df, columns = categorical_cols)
  X = df.drop('satisfaction', axis = 1)
  y= df['satisfaction']
  return X, y

Porém, o target contém os seguintes valores: df['satisfaction'].unique() output: array(['neutral or dissatisfied', 'satisfied'], dtype=object)

Não houve a preocupação em transformar os valores do Target de string para numéricos, o que causa problemas para obter métricas de avaliação (Recall, F1, etc).

1 resposta
solução!

Olá, Adan! Como vai?

Entendo a sua preocupação com a transformação dos valores do target para numéricos, já que muitos algoritmos de Machine Learning exigem que os dados estejam em formato numérico para funcionar corretamente. Nesse caso, a coluna satisfaction possui valores categóricos ('neutral or dissatisfied' e 'satisfied') que precisam ser convertidos para números.

Uma maneira de fazer isso é utilizando a técnica de codificação de rótulos (label encoding), em que atribuímos um número inteiro para cada categoria. Poderíamos fazer algo assim:

def prepare_data(df):
    df.drop(['Unnamed: 0', 'id'], axis=1, inplace=True)
    df.dropna(subset=['Arrival Delay in Minutes'], inplace=True)
    categorical_cols = ['Gender', 'Customer Type', 'Type of Travel', 'Class']
    df = pd.get_dummies(df, columns=categorical_cols)
    
    # Transformando o target 'satisfaction' para valores numéricos
    df['satisfaction'] = df['satisfaction'].map({'neutral or dissatisfied': 0, 'satisfied': 1})
    
    x = df.drop('satisfaction', axis=1)
    y = df['satisfaction']
    return x, y

x_treino, y_treino = prepara(treino)
x_teste, y_teste = prepara(teste)

Após isso, como resultado de y_treino temos:

Tabela exibindo as 10 primeiras entradas de um conjunto de dados, mostrando as classificações de satisfação do cliente como números inteiros (0 ou 1).

Com essa modificação, o target satisfaction será convertido para 0 e 1, o que facilita a aplicação de algoritmos de classificação e a obtenção de métricas como Recall e F1-score.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado