파이썬(Python)/numpy

[Python]확률 밀도 함수 그래프 그리기 (Probability Density Function Graph, seabor, matplotlib

끄적끄적아무거나 2022. 1. 17. 23:15
반응형

 

목차

     

     

     

    [Python]확률 밀도 함수 그래프 그리기 : 필요 사항

     

    앞서 포스트에서 확률 밀도 함수(Probability Density Function, PDF)에 대해 알아보고 파이썬 Numpy를 사용해서 특정 값에 확률 값을 대입해서 데이터 리스트(Data list)를 만들어 보았습니다. 

     

    https://scribblinganything.tistory.com/454

     

    [Python]확률밀도함수란? 데이터 셋 구현하기(Probability Density Function)

    목차 확률밀도함수란(Probability Density Function, PDF)? 확률밀도함수란 연속 확률 변수를 나타내는 함수라고 합니다. 예를 들어 설명하면 어떤 통계학자가 테스트에 대한 시험을 동일 조건으로 여러

    scribblinganything.tistory.com

     

    이번에는 앞서 포스트의 연장으로 확률 밀도 함수(Probability Density Function, PDF) 값을 가지고 그래프를 그리는 방법에 대해 알아 보겠습니다.

     

    일반 그래프를 그릴 때 matplotlib을 사용해서 그리는 데 matplotlib을 기본으로 사용하여 확률 그래프를 그리기 편하게 도와주는 seaborn이라는 라이브러리를 사용하겠 습니다. seaborn을 사용하기 위해 아래와 같이 설치를 먼저 합니다.

     

    pip install seaborn

     

     

     

    [Python]확률 밀도 함수 그래프 그리기 : 실습

     

    밀도 함수를 그리기 위해 seaborn.displot()함수를 사용 합니다.

     

    입력 값으로 데이터 값과 kind 로 그래프 종류를 선택할 수 있습니다. kde는 밀도에 대한 그래프이고 hist는 histogram으로 표기한 그래프입니다. 

     

     

    예제 코드>>

    from numpy import random
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    x_list = []
    for _ in range(5):
        x_list.append(random.randint(1,10))
    
    pdf_list = random.choice(x_list, p=[0.05, 0.05, 0.2, 0.3, 0.4], size=(100))
    
    print(x_list)
    print(pdf_list)
    
    sns.displot(pdf_list, kind="kde")
    
    plt.show()

    5~8번 라인: x_list에 5개의 랜덤값을 채움

    10번 라인: 확률을 대입해 총 100개의 데이터를 만들어냄

    14번 라인: seaborn을 사용해서 해당 데이터의 확률값을 y값으로 표기 합니다. x_list 대신 수식을 넣어서 그래프를 작성할 수 있습니다.

     

     

     

    결과>>

    [8, 9, 4, 6, 1]
    [1 1 1 6 1 1 1 9 1 4 4 1 1 1 1 1 1 1 1 4 1 6 6 6 6 1 4 1 6 6 4 1 1 1 4 1 4
     4 4 4 1 9 1 1 4 1 8 8 1 1 1 1 4 4 4 8 4 1 1 6 9 1 1 4 1 6 1 9 6 1 8 8 1 6
     1 1 6 6 8 1 1 6 6 6 1 4 4 1 9 4 1 6 1 6 4 6 4 1 1 1]

     

     

    참고 사항>>

     

    참고로 distplot 함수는 향후에 대체될 함수로 사용하게 되면 아래와 같이 에러메세지가 발생합니다.

     

    FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt 
    your code to use either `displot` (a figure-level function with similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).
      warnings.warn(msg, FutureWarning)

     

    해결 책으로 앞서 예제와 같이 사용하거나 kdeplot 함수를 사용하면 됩니다.

     

     

     

     

     

     

     

    반응형