신용 카드 소지자 위험 예측

PandasBeginner
지금 연습하기

소개

이 프로젝트에서는 신용카드 소지자의 위험 상태를 예측하기 위한 머신 러닝 분류 모델을 구축하는 방법을 배우게 됩니다. 이 프로젝트는 데이터 전처리, 서포트 벡터 머신 (SVM) 모델 훈련, 그리고 예측 결과를 CSV 파일로 저장하는 과정을 포함합니다.

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 비수치형 특징에 대한 레이블 인코딩을 수행하여 데이터를 준비하는 방법
  • 훈련 데이터를 사용하여 머신 러닝 분류 모델을 훈련하는 방법
  • 예측 결과를 CSV 파일로 저장하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 머신 러닝 작업을 위해 데이터를 전처리하고 준비합니다.
  • 분류를 위해 서포트 벡터 머신 (SVM) 모델을 훈련합니다.
  • 예측 결과를 CSV 파일로 저장합니다.

데이터 준비

이 단계에서는 CSV 파일에서 훈련 및 테스트 데이터를 읽고, 비수치형 특징에 대해 레이블 인코딩을 수행하는 방법을 배우게 됩니다.

  1. 코드 편집기에서 predict.py 파일을 엽니다.

  2. getData() 함수에서 다음 작업을 완료합니다:

    • pd.read_csv()를 사용하여 credit_risk_train.csv 파일에서 훈련 데이터를 읽습니다.
    • pd.read_csv()를 사용하여 credit_risk_test.csv 파일에서 테스트 데이터를 읽습니다.
    • label() 함수를 호출하여 훈련 및 테스트 데이터의 비수치형 특징에 대해 레이블 인코딩을 수행합니다.
    • 훈련 데이터를 x_train, y_train, x_test, 및 y_test로 분할합니다.
def getData():
    """
    CSV 파일에서 데이터를 읽습니다. 그리고 검증을 위해 훈련 데이터를 훈련 및 테스트로 분할합니다.
    """
    ## step1. CSV 파일에서 데이터 읽기
    data = pd.read_csv(trainfile)
    test = pd.read_csv(testfile)

    ## step2. 레이블 인코딩
    data = label(data)
    test = label(test)

    ## step3. 훈련 데이터를 훈련 및 테스트로 분할
    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):
    """
    레이블 인코딩을 사용하여 비수치형 특징을 처리합니다.
    """
    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() 함수에서 다음 작업을 완료합니다:
    • sklearn.svm 모듈에서 SVC 모델의 인스턴스를 생성합니다.
    • fit() 메서드를 사용하여 x_trainy_train 데이터에 모델을 적합 (fit) 시킵니다.
def predict(model=MODEL):
    """
    모델을 사용하여 결과를 예측합니다.
    """
    ## step1. 모델 가져오기
    predictor = model()
    ## step2. 데이터 가져오기
    x_train, y_train, x_test, _ = getData()
    ## step3. 모델 훈련
    predictor.fit(x_train, y_train)
    ## step4. 예측 및 저장
    res = predictor.predict(x_test)
    save(res)

이 단계를 완료하면 모델이 훈련되고 테스트 데이터에 대한 예측을 수행할 준비가 됩니다.

✨ 솔루션 확인 및 연습

예측 결과 저장

이 단계에서는 예측 결과를 credit_risk_pred.csv 파일에 저장하는 방법을 배우게 됩니다.

  1. save() 함수에서 다음 작업을 완료합니다:
    • convertor 변수를 사용하여 예측 결과를 원래 레이블로 역변환 (inverse transform) 합니다.
    • 예측 결과로 Pandas DataFrame 을 생성하고 pd.DataFrame().to_csv()를 사용하여 credit_risk_pred.csv 파일에 저장합니다.
def save(result):
    """
    결과를 CSV 파일에 저장합니다.
    """
    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 파일을 확인합니다. 테스트 데이터에 대한 예측 결과가 포함되어 있어야 합니다.

축하합니다! 신용 카드 소지자 위험 예측 프로젝트를 성공적으로 완료했습니다. 다음을 배우셨습니다:

  • 비수치형 (non-numeric) 특징에 레이블 인코딩 (label encoding) 을 수행하여 데이터를 준비합니다.
  • 훈련 데이터를 사용하여 머신 러닝 분류 모델을 훈련합니다.
  • 예측 결과를 CSV 파일에 저장합니다.
✨ 솔루션 확인 및 연습

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.