ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • KT AIVLE School DX트랙 5주차-머신러닝
    KT_Aivle_School/Python 2024. 4. 19. 21:08

    1. 선형회귀(Linear Regression)

    선형회귀는 종속 변수와 하나 이상의 독립 변수 사이의 선형 관계를 모델링하는 데 사용됩니다.

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LinearRegression
    
    # 데이터 로드
    data = pd.read_csv('airquality_simple.csv')
    
    # 데이터 분할 (독립변수 X와 종속변수 y)
    X = data.drop('TargetColumn', axis=1) # TargetColumn은 예측하고자 하는 대상 컬럼명
    y = data['TargetColumn']
    
    # 훈련 세트와 테스트 세트 분할
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
    
    # 선형회귀 모델 생성 및 훈련
    model = LinearRegression()
    model.fit(X_train, y_train)
    
    # 예측 및 평가
    predictions = model.predict(X_test)

    2. KNN(K-Nearest Neighbors)

    KNN은 분류나 회귀에 사용될 수 있으며, 가장 가까운 K개의 이웃 데이터를 보고 다수결 또는 평균으로 결과를 예측합니다.

    from sklearn.neighbors import KNeighborsClassifier
    
    # KNN 모델 생성 및 훈련
    model = KNeighborsClassifier(n_neighbors=3)
    model.fit(X_train, y_train)
    
    # 예측 및 평가
    predictions = model.predict(X_test)

    3. 결정트리(Decision Tree)

    결정트리는 분류와 회귀 문제에 사용되며, 데이터를 여러 조건에 따라 나누어 예측을 수행합니다.

    from sklearn.tree import DecisionTreeClassifier
    
    # 결정트리 모델 생성 및 훈련
    model = DecisionTreeClassifier(random_state=42)
    model.fit(X_train, y_train)
    
    # 예측 및 평가
    predictions = model.predict(X_test)

    4. 로지스틱회귀(Logistic Regression)

    로지스틱 회귀는 분류 문제, 특히 이진 분류 문제에 사용됩니다.

    from sklearn.linear_model import LogisticRegression
    
    # 로지스틱 회귀 모델 생성 및 훈련
    model = LogisticRegression()
    model.fit(X_train, y_train)
    
    # 예측 및 평가
    predictions = model.predict(X_test)

    5. 분할 교차 검증(Split Cross-Validation)

    데이터를 여러 부분으로 나누어, 일부는 훈련에 일부는 검증에 사용하여 모델의 성능을 평가합니다.

    from sklearn.model_selection import cross_val_score
    
    # 선형회귀 모델에 대한 교차 검증
    scores = cross_val_score(LinearRegression(), X, y, cv=5)

    ###6. Random Search

    Random Search는 주어진 하이퍼파라미터의 범위 내에서 무작위로 조합을 선택하여 모델을 평가하는 방법입니다. 이 방법은 대규모 하이퍼파라미터 공간에서 빠르게 좋은 결과를 찾는 데 유용할 수 있습니다.

    from sklearn.model_selection import RandomizedSearchCV
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import make_classification
    import pandas as pd
    
    # 데이터 로드
    data = pd.read_csv('airquality_simple.csv')
    X = data.drop('Target', axis=1)  # 예측 변수
    y = data['Target']  # 타겟 변수
    
    # 랜덤 포레스트 분류기 생성
    rf = RandomForestClassifier()
    
    # 하이퍼파라미터의 분포 정의
    param_dist = {
        'n_estimators': [100, 200, 300, 400, 500],
        'max_depth': [3, 5, 10, None],
        'min_samples_split': [2, 5, 10],
        'min_samples_leaf': [1, 2, 4],
        'bootstrap': [True, False]
    }
    
    # Random Search 실행
    random_search = RandomizedSearchCV(rf, param_distributions=param_dist, n_iter=10, cv=5)
    random_search.fit(X, y)
    
    print("최적 하이퍼파라미터:", random_search.best_params_)

    ###7. Grid Search

    Grid Search는 지정된 하이퍼파라미터의 모든 조합에 대해 모델을 평가하여 최적의 조합을 찾는 방법입니다. 이 방법은 하이퍼파라미터의 수가 적을 때 유용합니다.

    from sklearn.model_selection import GridSearchCV
    from sklearn.svm import SVC
    
    # SVM 분류기 생성
    svc = SVC()
    
    # 하이퍼파라미터의 그리드 정의
    param_grid = {
        'C': [0.1, 1, 10],
        'gamma': [1, 0.1, 0.01],
        'kernel': ['rbf', 'linear']
    }
    
    # Grid Search 실행
    grid_search = GridSearchCV(svc, param_grid, cv=5)
    grid_search.fit(X, y)
    
    print("최적 하이퍼파라미터:", grid_search.best_params_)

    ###8. 앙상블

    앙상블 기법은 여러 개의 학습 알고리즘을 결합하여 더 좋은 예측 성능을 얻는 방법입니다. 여기서는 랜덤 포레스트 앙상블 기법을 사용합니다.

    from sklearn.ensemble import RandomForestClassifier
    
    # 랜덤 포레스트 분류기 생성 및 학습
    rf = RandomForestClassifier(n_estimators=100, max_depth=3)
    rf.fit(X, y)
    
    # 예측
    predictions = rf.predict(X)
    
    # 성능 평가 예시
    from sklearn.metrics import accuracy_score
    print("정확도:", accuracy_score(y, predictions))
Designed by Tistory.