Previsão de Risco de Titulares de Cartão de Crédito

PandasBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como construir um modelo de classificação de aprendizado de máquina para prever o status de risco de titulares de cartões de crédito. O projeto envolve o pré-processamento dos dados, o treinamento de um modelo de suporte vetorial (SVM - Support Vector Machine) e a salvaguarda dos resultados da predição em um arquivo CSV.

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como preparar os dados realizando a codificação de rótulos (label encoding) em características não numéricas
  • Como treinar um modelo de classificação de aprendizado de máquina usando os dados de treinamento
  • Como salvar os resultados da predição em um arquivo CSV

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Pré-processar e preparar dados para tarefas de aprendizado de máquina
  • Treinar um modelo de suporte vetorial (SVM) para classificação
  • Salvar os resultados da predição em um arquivo CSV

Preparar os Dados

Nesta etapa, você aprenderá como ler os dados de treinamento e teste de arquivos CSV e realizar a codificação de rótulos (label encoding) nas características não numéricas.

  1. Abra o arquivo predict.py no seu editor de código.

  2. Na função getData(), complete as seguintes tarefas:

    • Leia os dados de treinamento do arquivo credit_risk_train.csv usando pd.read_csv().
    • Leia os dados de teste do arquivo credit_risk_test.csv usando pd.read_csv().
    • Chame a função label() para realizar a codificação de rótulos nas características não numéricas, tanto nos dados de treinamento quanto nos de teste.
    • Divida os dados de treinamento em x_train, y_train, x_test e y_test.
def getData():
    """
    Leia os dados de arquivos csv. E divida os dados de treinamento em treinamento e teste para validação.
    """
    ## passo 1. leia os dados de arquivos csv
    data = pd.read_csv(trainfile)
    test = pd.read_csv(testfile)

    ## passo 2. codificação de rótulos
    data = label(data)
    test = label(test)

    ## passo 3. divida os dados de treinamento em treinamento e teste
    x_train, y_train = data.iloc[:, :-1].to_numpy(), data.iloc[:, -1].to_numpy()
    x_test = test.iloc[:, :].to_numpy()
    y_test = None
    return x_train, y_train, x_test, y_test
  1. Na função label(), complete a implementação do processo de codificação de rótulos:
    • Itere por cada coluna nos dados.
    • Se o tipo de dados da coluna for object, crie uma instância de LabelEncoder e ajuste-a aos dados da coluna.
    • Se o nome da coluna for "RISK", armazene a instância de LabelEncoder na variável convertor.
    • Transforme os dados da coluna usando a instância de LabelEncoder e atualize a coluna nos dados.
    • Retorne os dados atualizados.
def label(data):
    """
    Use a codificação de rótulos para processar as características não numéricas.
    """
    global convertor
    for col in data.columns:
        if data[col].dtype == "object":
            le = LE()
            if col == "RISK":
                convertor = le
            le.fit(data[col])
            data[col] = le.transform(data[col])
    return data

Após concluir esta etapa, você terá os dados de treinamento e teste prontos para a próxima etapa.

✨ Verificar Solução e Praticar

Treinar o Modelo

Nesta etapa, você aprenderá como treinar um modelo de classificação de aprendizado de máquina usando os dados de treinamento.

  1. Na função predict(), complete as seguintes tarefas:
    • Crie uma instância do modelo SVC do módulo sklearn.svm.
    • Ajuste o modelo aos dados x_train e y_train usando o método fit().
def predict(model=MODEL):
    """
    Use the model to predict the result.
    """
    ## step1. get the model
    predictor = model()
    ## step2. get the data
    x_train, y_train, x_test, _ = getData()
    ## step3. train the model
    predictor.fit(x_train, y_train)
    ## step4. predict and save
    res = predictor.predict(x_test)
    save(res)

Após concluir esta etapa, o modelo estará treinado e pronto para fazer previsões nos dados de teste.

✨ Verificar Solução e Praticar

Salvar as Previsões

Nesta etapa, você aprenderá como salvar os resultados da previsão no arquivo credit_risk_pred.csv.

  1. Na função save(), complete as seguintes tarefas:
    • Use a variável convertor para transformar inversamente (inverse transform) os resultados da previsão de volta aos rótulos originais.
    • Crie um DataFrame Pandas com os resultados da previsão e salve-o no arquivo credit_risk_pred.csv usando pd.DataFrame().to_csv().
def save(result):
    """
    Save the result to csv file.
    """
    result = convertor.inverse_transform(result)
    dataframe = pd.DataFrame({"RISK": result})
    dataframe.to_csv("credit_risk_pred.csv", index=False, sep=",")

Após concluir esta etapa, os resultados da previsão serão salvos no arquivo credit_risk_pred.csv.

✨ Verificar Solução e Praticar

Executar a Previsão

Nesta etapa final, você executará o processo de previsão e verificará a saída.

  1. No bloco if __name__ == "__main__":, chame a função predict() para executar o processo de previsão.
  2. No seu terminal, execute o arquivo predict.py com o seguinte comando:
python3 predict.py
  1. Após executar o arquivo predict.py, você deverá ver a seguinte saída:
Predict done!
  1. Verifique o arquivo credit_risk_pred.csv no diretório do projeto. Ele deve conter os resultados da previsão para os dados de teste.

Parabéns! Você concluiu com sucesso o projeto de previsão de risco de titulares de cartão de crédito. Você aprendeu como:

  • Preparar os dados realizando a codificação de rótulos (label encoding) em features não numéricas
  • Treinar um modelo de classificação de aprendizado de máquina usando os dados de treinamento
  • Salvar os resultados da previsão em um arquivo CSV
✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.