ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PlayData - Day 53] 트리 알고리즘
    [플레이데이터] 2023. 3. 9. 17:37

    1. K-Digital Training 과정

    • 빅데이터 기반 지능형SW 및 MLOps 개발자 양성과정 19기 (Day 53)

    2. 목차

    1. 결정 트리
    2. 교차 검증과 그리드 서치
    3. 트리의 앙상블

    3. 수업 내용

     

    5-1.ipynb
    0.63MB
    5-2.ipynb
    0.23MB
    5-3.ipynb
    0.01MB

     

    세 가지 특성을 가진 와인 데이터셋을 가지고 이진 분류를 하고자 함

    앞선 챕터에서 배운 로지스틱 회귀로 분류 실시

     

    로지스틱 회귀로 와인 분류하기

    데이터를 불러온 후 데이터 형태 확인하기 : pandas의 메서드 이용

     

    1. head() 함수: 처음 5개의 샘플 확인

    import pandas as pd
    
    wine = pd.read_csv('https://bit.ly/wine_csv_data')
    
    wine.head()                           # 레드와인 0, 화이트와인 1

     

    2. info() 함수: 데이터프레임 각 열의 데이터 타입과 누락된 데이터 정보 확인

    wine.info()

    각 열(Column)의 데이터타입(Dtype)은 모두 float 타입이고, null 데이터가 없는 것을 확인할 수 있다.

     

    3. describe() 함수

    wine.describe()

    각 컬럼별 평균, 표준편차, 최소, 최대, 사분위수를 확인할 수 있다.

     

    • pandas 데이터프레임을 numpy 배열로 변환하고 훈련 세트와 테스트 세트로 나누기
    data = wine[['alcohol', 'sugar', 'pH']].to_numpy()
    target = wine['class'].to_numpy()
    
    from sklearn.model_selection import train_test_split
    
    train_input, test_input, train_target, test_target = train_test_split(
        data, target, test_size=0.2, random_state=42)
    # test_size=0.2, 즉 테스트 세트의 비율 20%
    
    print(train_input.shape, test_input.shape)
    >>> (5197, 3) (1300, 3)
    
    # 세트가 잘 나누어진 것을 확인할 수 있다.

     

    • 표준화 작업(스케일링, Scaling)
    # 표준화 작업
    
    from sklearn.preprocessing import StandardScaler
    
    ss = StandardScaler()
    ss.fit(train_input)
    
    train_scaled = ss.transform(train_input)
    test_scaled = ss.transform(test_input)
    
    # 표준 점수로 세가지 특성 데이터의 스케일을 다 맞추어 주었다.
    
    # 표준화 작업을 마친 데이터로 로지스틱 회귀 훈련, 평가
    
    from sklearn.linear_model import LogisticRegression
    
    lr = LogisticRegression()
    lr.fit(train_scaled, train_target)
    
    print('훈련', lr.score(train_scaled, train_target))
    print('테스트', lr.score(test_scaled, test_target))
    
    >>> 
    훈련 0.7808350971714451
    테스트 0.7776923076923077
    
    # 테스트 세트보다 훈련 세트의 정확도가 조금 더 높으나, 전반적으로 낮다. 과소적합.

     

    설명하기 쉬운 모델과 어려운 모델

    print(lr.coef_, lr.intercept_)
    
    >>> [[ 0.51270274  1.6733911  -0.68767781]] [1.81777902]

    위의 결과로 로지스틱 회귀모델을 설명하려면?

    ['alcohol',         'sugar',      'pH'               ]

    [ 0.51270274, 1.6733911, -0.68767781]

    • 알콜도수와 당도가 높을수록 화이트와인일 가능성이 높고, pH가 높을수록 레드와인일 가능성이 높다

    이 숫자의 의미를 쉽게 설명할 수 있도록 하려면 결정 트리를 이용하자.

     

    결정 트리

    ...업데이트중

    댓글

Designed by Tistory.