Прогнозирование риска для держателей кредитных карт

PandasBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь создавать модель машинного обучения для классификации, чтобы предсказать статус риска держателей кредитных карт. Проект включает в себя предобработку данных, обучение модели на основе методов опорных векторов (SVM) и сохранение результатов предсказания в файл CSV.

🎯 Задачи

В этом проекте вы научитесь:

  • Подготавливать данные путём кодирования меток для нечисловых признаков
  • Обучать модель машинного обучения для классификации с использованием обучающих данных
  • Сохранять результаты предсказания в файл CSV

🏆 Достижения

После завершения этого проекта вы сможете:

  • Предобрабатывать и готовить данные для задач машинного обучения
  • Обучать модель на основе методов опорных векторов (SVM) для классификации
  • Сохранять результаты предсказания в файл CSV

Подготовить данные

В этом шаге вы научитесь читать обучающие и тестовые данные из файлов CSV и выполнять кодирование меток для нечисловых признаков.

  1. Откройте файл predict.py в вашем редакторе кода.

  2. В функции getData() выполните следующие задачи:

    • Прочитайте обучающие данные из файла credit_risk_train.csv с использованием pd.read_csv().
    • Прочитайте тестовые данные из файла credit_risk_test.csv с использованием pd.read_csv().
    • Вызовите функцию label(), чтобы выполнить кодирование меток для нечисловых признаков в обучающих и тестовых данных.
    • Разделите обучающие данные на x_train, y_train, x_test и 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. В функции label() завершите реализацию процесса кодирования меток:
    • Пройдитесь по каждой колонке в данных.
    • Если тип данных колонки object, создайте экземпляр LabelEncoder и подстройте его под данные колонки.
    • Если имя колонки "RISK", сохраните экземпляр LabelEncoder в переменную convertor.
    • Преобразуйте данные колонки с использованием экземпляра LabelEncoder и обновите колонку в данных.
    • Верните обновленные данные.
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

После завершения этого шага у вас будут готовы обучающие и тестовые данные для следующего шага.

✨ Проверить решение и практиковаться

Обучить модель

В этом шаге вы научитесь обучать модель машинного обучения для классификации с использованием обучающих данных.

  1. В функции predict() выполните следующие задачи:
    • Создайте экземпляр модели SVC из модуля sklearn.svm.
    • Настройте модель на данных x_train и y_train с использованием метода 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)

После завершения этого шага модель будет обучена и готова для предсказаний на тестовых данных.

✨ Проверить решение и практиковаться

Сохранить предсказания

В этом шаге вы научитесь сохранять результаты предсказания в файл credit_risk_pred.csv.

  1. В функции save() выполните следующие задачи:
    • Используйте переменную convertor, чтобы обратно преобразовать результаты предсказания в исходные метки.
    • Создайте Pandas DataFrame с результатами предсказания и сохраните его в файл credit_risk_pred.csv с использованием 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=",")

После завершения этого шага результаты предсказания будут сохранены в файл credit_risk_pred.csv.

✨ Проверить решение и практиковаться

Запустить предсказание

В этом финальном шаге вы запустите процесс предсказания и проверите вывод.

  1. В блоке if __name__ == "__main__": вызовите функцию predict(), чтобы запустить процесс предсказания.
  2. В терминале запустите файл predict.py с помощью следующей команды:
python3 predict.py
  1. После запуска файла predict.py вы должны увидеть следующий вывод:
Predict done!
  1. Проверьте файл credit_risk_pred.csv в директории проекта. В нем должны быть результаты предсказания для тестовых данных.

Поздравляем! Вы успешно завершили проект по прогнозированию риска для держателей кредитных карт. Вы научились:

  • Подготавливать данные путём кодирования меток для нечисловых признаков
  • Обучать модель машинного обучения для классификации с использованием обучающих данных
  • Сохранять результаты предсказания в файл CSV
✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.