Python/Analysis

[Analysis] Naive Bayes를 이용한 데이터 분석

gangee 2022. 11. 20. 17:33

목차

    728x90
    반응형

    베이즈 정리 (Bayes' theorem)

    • 사전확률과 사후확률 사이의 관계를 조건부 확률을 이용해서 계산하는 확률이론

    나이브 베이즈 정리

    • 베이즈 정리에 기반한 통계적 분류 기법
    from sklearn.model_selection import train_test_split
    from sklearn.navie_bayes import GaussianNB
    
    import pandas as pd
    import numpy as np
    • sklearn.model_selection : scikit-learn 패키지 중 클래스를 나눌 때, 함수를 통해 train/test를 나눌 때, 모델 검증에 사용되는 서브 패키지
    • train_test_split : 배열 또는 행렬을 임의의 train 및 test 하위 집합으로 분할하는 모듈
    • sklearn.navie_bayes : scikit-learn 패키지 중 나이브 베이즈 기반 모델이 있는 섭 패키지
    • Gaussian : 연속적인 값을 지닌 데이터를 처리할 때, 각 클래스의 연속적인 값들이 가우스 분포를 가정하는 나이브 베이즈 모듈 중 하나
    tennis_data = pd.read_csv('playtennis.csv')
    • 예제 데이터인 playtennis의 데이터가 저장되어 있는 csv파일을 load해 판다스의 데이터프레임 형식으로 변수 tennis_data에 저장
    tennis_data.Outlook = tennis_data.Outlook.replace('Sunny', 0)
    tennis_data.Outlook = tennis_data.Outlook.replace('Overcast', 1)
    tennis_data.Outlook = tennis_data.Outlook.replace('Rain', 2)
    
    tennis_data.Temperature = tennis_data.Temperature.replace('Hot', 3)
    tennis_data.Temperature = tennis_data.Temperature.replace('Mild', 4)
    tennis_data.Temperature = tennis_data.Temperature.replace('Cool', 5)
    
    tennis_data.Humidity = tennis_data.Humidity.replace('High', 6)
    tennis_data.Humidity = tennis_data.Humidity.replace('Normal',7)
    
    tennis_data.Wind = tennis_data.Wind.replace('Weak', 8)
    tennis_data.Wind = tennis_data.Wind.replace('Strong', 9)
    
    tennis_data.PlayTennis = tennis_data.PlayTennis.replace('No', 10)
    tennis_data.PlayTennis = tennis_data.PlayTennis.replace('Yes', 11)
    
    tennis_data
    • tennis_data의 각 컬럼(Outlook, Temperature, ...)의 값(Sunny, Overcast, ...)을 String타입에서 int타입으로 replace해 변수 tennis_data의 각 컬럼별 저장
      -나이브 베이즈 모델에 train, test 데이터 값으로 사용하기 위한 전처리 과정
    X = np.array(pd.DataFrame(tennis_data, columns = ['Outlook', 'Temperature', 'Humidity', 'Wind']))
    y = np.array(pd.DataFrame(tennis_data, columns = ['PlayTennis']))
    • 변수 tennis_data의 컬럼의 값들을 데이터플레임 형태로 추출하고 np.array를 이용해 추출한 데이터를 배열 형태로 변환한 후 변수 X와 y에 저장
    X_train, X_test, y_train, y_test = train_test_split(X, y)
    • X와 y에 대한 데이터를 train과 test로 구분해, 임의의 개수로 각각 변수에 저장
    clf = GaussianNB()
    clf = clf.fit(X_train, y_train)
    • Gaussian 나이브베이즈 모듈을 변수 clf에 저장
    • 선언된 변수 clf에 함수 fit()을 이용해 train 변수를 가우시안 나이브 베이즈로 모델을 생성하고 학습시킴
    prediction = clf.predict(X_test)
    • 예측함수 predict() : 학습데이터를 입력하여 예측값을 계산

     

    728x90
    반응형

    'Python > Analysis' 카테고리의 다른 글

    [Analysis] MLP - 다층 퍼셉트론  (0) 2024.03.25
    [Analysis] PCA - 주성분 분석  (0) 2024.03.18
    [Analysis] Machine Learning 이란?  (0) 2023.12.27
    [Analysis] scikit-learn 선형회귀분석  (0) 2022.11.08
    [Analysis] CSV파일 활용하기  (0) 2022.10.12