소개
이 프로젝트에서는 신용카드 소지자의 위험 상태를 예측하기 위한 머신 러닝 분류 모델을 구축하는 방법을 배우게 됩니다. 이 프로젝트는 데이터 전처리, 서포트 벡터 머신 (SVM) 모델 훈련, 그리고 예측 결과를 CSV 파일로 저장하는 과정을 포함합니다.
🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- 비수치형 특징에 대한 레이블 인코딩을 수행하여 데이터를 준비하는 방법
- 훈련 데이터를 사용하여 머신 러닝 분류 모델을 훈련하는 방법
- 예측 결과를 CSV 파일로 저장하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 머신 러닝 작업을 위해 데이터를 전처리하고 준비합니다.
- 분류를 위해 서포트 벡터 머신 (SVM) 모델을 훈련합니다.
- 예측 결과를 CSV 파일로 저장합니다.
데이터 준비
이 단계에서는 CSV 파일에서 훈련 및 테스트 데이터를 읽고, 비수치형 특징에 대해 레이블 인코딩을 수행하는 방법을 배우게 됩니다.
코드 편집기에서
predict.py파일을 엽니다.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
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
이 단계를 완료하면 다음 단계를 위해 훈련 및 테스트 데이터를 준비하게 됩니다.
모델 훈련
이 단계에서는 훈련 데이터를 사용하여 머신 러닝 분류 모델을 훈련하는 방법을 배우게 됩니다.
predict()함수에서 다음 작업을 완료합니다:sklearn.svm모듈에서SVC모델의 인스턴스를 생성합니다.fit()메서드를 사용하여x_train및y_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 파일에 저장하는 방법을 배우게 됩니다.
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 파일에 저장됩니다.
예측 실행
이 마지막 단계에서는 예측 프로세스를 실행하고 출력을 확인합니다.
if __name__ == "__main__":블록에서predict()함수를 호출하여 예측 프로세스를 실행합니다.- 터미널에서 다음 명령을 사용하여 predict.py 파일을 실행합니다:
python3 predict.py
predict.py파일을 실행한 후 다음 출력을 확인해야 합니다:
Predict done!
- 프로젝트 디렉토리에서
credit_risk_pred.csv파일을 확인합니다. 테스트 데이터에 대한 예측 결과가 포함되어 있어야 합니다.
축하합니다! 신용 카드 소지자 위험 예측 프로젝트를 성공적으로 완료했습니다. 다음을 배우셨습니다:
- 비수치형 (non-numeric) 특징에 레이블 인코딩 (label encoding) 을 수행하여 데이터를 준비합니다.
- 훈련 데이터를 사용하여 머신 러닝 분류 모델을 훈련합니다.
- 예측 결과를 CSV 파일에 저장합니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



