Predicción de Riesgo de Titulares de Tarjetas de Crédito

PandasBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderá a construir un modelo de clasificación de aprendizaje automático para predecir el estado de riesgo de los titulares de tarjetas de crédito. El proyecto implica preprocesar los datos, entrenar un modelo de máquina de vectores de soporte (SVM) y guardar los resultados de predicción en un archivo CSV.

🎯 Tareas

En este proyecto, aprenderá:

  • Cómo preparar los datos realizando codificación de etiquetas en las características no numéricas
  • Cómo entrenar un modelo de clasificación de aprendizaje automático utilizando los datos de entrenamiento
  • Cómo guardar los resultados de predicción en un archivo CSV

🏆 Logros

Después de completar este proyecto, podrá:

  • Preprocesar y preparar datos para tareas de aprendizaje automático
  • Entrenar un modelo de máquina de vectores de soporte (SVM) para la clasificación
  • Guardar los resultados de predicción en un archivo CSV

Preparar los datos

En este paso, aprenderá a leer los datos de entrenamiento y prueba desde archivos CSV y a realizar la codificación de etiquetas en las características no numéricas.

  1. Abra el archivo predict.py en su editor de código.

  2. En la función getData(), complete las siguientes tareas:

    • Lea los datos de entrenamiento desde el archivo credit_risk_train.csv utilizando pd.read_csv().
    • Lea los datos de prueba desde el archivo credit_risk_test.csv utilizando pd.read_csv().
    • Llame a la función label() para realizar la codificación de etiquetas en las características no numéricas de los datos de entrenamiento y prueba.
    • Divida los datos de entrenamiento en x_train, y_train, x_test e y_test.
def getData():
    """
    Read data from csv files. And split the train data into train and test for validation.
    """
    ## step1. read data from csv files
    data = pd.read_csv(trainfile)
    test = pd.read_csv(testfile)

    ## step2. label encoding
    data = label(data)
    test = label(test)

    ## step3. split train data into train and test
    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. En la función label(), complete la implementación del proceso de codificación de etiquetas:
    • Itere a través de cada columna en los datos.
    • Si el tipo de datos de la columna es object, cree una instancia de LabelEncoder y ajuste la instancia a los datos de la columna.
    • Si el nombre de la columna es "RISK", almacene la instancia de LabelEncoder en la variable convertor.
    • Transforme los datos de la columna utilizando la instancia de LabelEncoder y actualice la columna en los datos.
    • Devuelva los datos actualizados.
def label(data):
    """
    Use label encoding to process the non-numeric features.
    """
    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

Después de completar este paso, tendrá los datos de entrenamiento y prueba listos para el siguiente paso.

✨ Revisar Solución y Practicar

Entrenar el modelo

En este paso, aprenderá a entrenar un modelo de clasificación de aprendizaje automático utilizando los datos de entrenamiento.

  1. En la función predict(), complete las siguientes tareas:
    • Cree una instancia del modelo SVC del módulo sklearn.svm.
    • Ajuste el modelo a los datos x_train e y_train utilizando el 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)

Después de completar este paso, el modelo estará entrenado y listo para hacer predicciones en los datos de prueba.

✨ Revisar Solución y Practicar

Guardar las predicciones

En este paso, aprenderá a guardar los resultados de predicción en el archivo credit_risk_pred.csv.

  1. En la función save(), complete las siguientes tareas:
    • Utilice la variable convertor para transformar inversamente los resultados de predicción de vuelta a las etiquetas originales.
    • Cree un DataFrame de Pandas con los resultados de predicción y guárdelo en el archivo credit_risk_pred.csv utilizando 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=",")

Después de completar este paso, los resultados de predicción se guardarán en el archivo credit_risk_pred.csv.

✨ Revisar Solución y Practicar

Ejecutar la predicción

En este último paso, ejecutará el proceso de predicción y comprobará la salida.

  1. En el bloque if __name__ == "__main__":, llame a la función predict() para ejecutar el proceso de predicción.
  2. En su terminal, ejecute el archivo predict.py con el siguiente comando:
python3 predict.py
  1. Después de ejecutar el archivo predict.py, debería ver la siguiente salida:
Predict done!
  1. Compruebe el archivo credit_risk_pred.csv en el directorio del proyecto. Debería contener los resultados de predicción para los datos de prueba.

¡Felicitaciones! Ha completado con éxito el proyecto de predicción de riesgo de los titulares de tarjetas de crédito. Ha aprendido a:

  • Preparar los datos realizando codificación de etiquetas en las características no numéricas
  • Entrenar un modelo de clasificación de aprendizaje automático utilizando los datos de entrenamiento
  • Guardar los resultados de predicción en un archivo CSV
✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.