[파이썬] 파이썬을 이용한 모델 선택과 평가 라이브러리 프로젝트

파이썬은 머신 러닝과 데이터 분석에 매우 유용한 도구이며, 다양한 모델 선택과 평가를 위한 라이브러리도 포함하고 있습니다. 이번 프로젝트에서는 파이썬을 이용해 모델을 선택하고 평가하는 라이브러리를 만들어 보려고 합니다.

프로젝트의 목표

필요한 라이브러리

프로젝트 진행

1. 데이터 로딩

머신 러닝 모델을 선택하고 평가하기 위해서는 먼저 데이터를 로딩해야 합니다. 여러 가지 방법으로 데이터를 로딩할 수 있지만, 가장 일반적인 방법인 CSV 파일을 사용해 보겠습니다.

import pandas as pd

def load_data(filename):
    data = pd.read_csv(filename)
    return data

위의 코드는 pandas 라이브러리를 사용하여 CSV 파일을 로딩하는 함수 load_data를 정의한 것입니다. filename 인자로 파일 경로를 전달받고, pd.read_csv() 함수를 사용하여 CSV 파일을 로딩한 후에 데이터를 반환합니다.

2. 모델 선택

데이터를 로딩한 후에는 다양한 머신 러닝 모델 중에서 최적의 모델을 선택해야 합니다. 이를 위해서는 여러 가지 모델을 생성하고 각 모델의 성능을 평가해야 합니다. scikit-learn 라이브러리에서 제공하는 모델 선택 기능을 사용할 수 있습니다.

from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.ensemble import RandomForestClassifier

def select_model(X, y):
    models = [
        {
            'name': 'Logistic Regression',
            'model': LogisticRegression(),
            'params': {'C': [0.001, 0.01, 0.1, 1, 10]}
        },
        {
            'name': 'Support Vector Machine',
            'model': SVC(),
            'params': {'C': [0.001, 0.01, 0.1, 1, 10], 'kernel': ['linear', 'rbf']}
        },
        {
            'name': 'Random Forest',
            'model': RandomForestClassifier(),
            'params': {'n_estimators': [10, 50, 100, 200]}
        }
    ]

    best_model = None
    best_score = 0

    for model in models:
        grid_search = GridSearchCV(model['model'], model['params'], cv=5)
        grid_search.fit(X, y)
        
        if grid_search.best_score_ > best_score:
            best_model = grid_search.best_estimator_
            best_score = grid_search.best_score_

    return best_model

위의 코드는 GridSearchCV를 사용하여 다양한 하이퍼파라미터 조합으로 모델을 생성하고, 5-fold 교차 검증을 통해 최적의 모델을 선택하는 함수 select_model를 정의한 것입니다. models 리스트에 선택할 모델과 해당 모델의 하이퍼파라미터 조합을 정의한 후에 for 문을 사용하여 각 모델을 생성하고 평가합니다. 성능이 가장 좋은 모델을 best_model 변수에 저장한 후에 반환합니다.

3. 평가

모델을 선택한 후에는 선택한 모델을 평가해야 합니다. 평가는 다양한 지표를 사용하여 수행할 수 있습니다. 가장 일반적인 평가 지표 중 하나인 정확도를 계산하는 코드를 작성해 보겠습니다.

from sklearn.metrics import accuracy_score

def evaluate_model(model, X, y):
    y_pred = model.predict(X)
    accuracy = accuracy_score(y, y_pred)
    return accuracy

위의 코드는 sklearn.metrics 모듈에서 제공하는 accuracy_score 함수를 사용하여 모델의 예측 결과와 실제 값의 정확도를 계산하는 함수 evaluate_model을 정의한 것입니다. model.predict() 함수를 사용하여 예측 결과를 얻고, accuracy_score 함수를 사용하여 정확도를 계산한 후에 반환합니다.

프로젝트 결과

위에서 정의한 함수들을 사용하여 모델을 선택하고 평가할 수 있습니다. 아래의 코드는 예시입니다.

data = load_data('data.csv')
X = data.drop('target', axis=1)
y = data['target']

best_model = select_model(X, y)
accuracy = evaluate_model(best_model, X, y)

print('Best model:', best_model)
print('Accuracy:', accuracy)

위의 코드는 data.csv 파일을 로딩한 후에 select_model 함수를 사용하여 최적의 모델을 선택하고, evaluate_model 함수를 사용하여 선택한 모델을 평가한 결과를 출력하는 예시입니다.

이처럼 파이썬을 사용하여 모델 선택과 평가를 위한 라이브러리를 만들 수 있습니다. 이 프로젝트를 통해 머신 러닝 모델에 대한 이해를 깊이 있게 할 수 있으며, 다양한 모델과 평가 지표를 사용해 볼 수 있습니다.