https://www.w3schools.com/python/python_ml_percentile.asp

 

Python Machine Learning Percentiles

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

Percentiles

Percentiles(백분위수)에 대한 개념을 알아봅니다.

통계를 낼 때 100%중 몇%에 속하는지를 나타내는 개념입니다.

상위 몇% 하위 몇% 라는 말로 우리가 일상 생활에서도 아주 자주 사용하는 개념입니다.

이 역시 numpy의 percentile()이라는 함수로 쉽게 계산할 수 있습니다.

1
2
3
4
5
6
7
import numpy
 
ages = [5,31,43,48,50,41,7,11,15,39,80,82,32,2,8,6,25,36,27,61,31]
 
= numpy.percentile(ages, 75)
 
print(x)
cs

위의 리스트의 값들중 하위 75%에 해당하는 값을 구해줍니다. 리스트의 각값과 비교하여 크다면 상위 작다면 하위에 속하겠지요.

Data Distribution

w3schools에서는 실제 우리가 사는 세상에서 data set들은 훨씬 크고 방대하지만 이를 정형화된 자료로 구하기는 어렵기 때문에 직접 랜덤함수를 이용 훨씬 더 큰 data set를 만드는 방법을 소개합니다.

numpy의 random.uniform()함수를 이용합니다.

1
2
3
4
5
import numpy
 
= numpy.random.uniform(0.05.0250)
 
print(x)
cs

0.0부터 5.0 사이에 250개의 소수들의 리스트를 만듭니다.

Histogram

그리고 이러한 분포에 대해서 히스토그램으로도 표현해 봅니다.

아래 코드와 같이 matplotlib 라이브러리를 사용합니다.

1
2
3
4
5
6
7
import numpy
import matplotlib.pyplot as plt
 
= numpy.random.uniform(0.05.0250)
 
plt.hist(x, 5)
plt.show()
cs

plt.hist(x, 5) 에서 x는 대상이 되는 리스트 이고 뒤의 5는 5개의 축으로 구간을 자동으로 나누어 보여주라는 명령임을 알 수 있습니다.

Normal Data Distribution

이번에는 numpy의 random.normal() 함수를 이용하여 일반적인 데이터 분포에 대하여 알아봅니다.

말 그대로 일반적인 데이터의 경우 모든 값들은 가운데에 가장 그 분포가 밀집되어 있고 양 옆으로 갈수록 그 분포의 밀집이 적어진다는 개념을 적용하였습니다.

1
2
3
4
5
6
7
import numpy
import matplotlib.pyplot as plt
 
= numpy.random.normal(5.01.0100000)
 
plt.hist(x, 100)
plt.show()
cs

어느정도 벨 모양(?)을 갖추고 있다고 합니다.

1부터 10사이에 총 10만개의 값들을 무작위로 추출하여 구역을 100칸으로 나누어 히스토그램을 만들어보니 중간값에 가장 가까운 형태로 만들어 졌습니다.

Scatter Plot

이제 히스토그램이 아닌 Scatter Plot(산점도)를 이용하여 데이터의 분포를 알아봅니다.

리스트로 이루어진, 각 데이터의 값이 하나가 아닌 하나의 데이터가 x축 y축 두가지 값을 갖게 되는 경우 이용합니다.

1
2
3
4
5
6
7
import matplotlib.pyplot as plt
 
= [5,7,8,7,2,17,2,9,4,11,12,9,6]
= [99,86,87,88,111,86,103,87,94,78,77,85,86]
 
plt.scatter(x, y)
plt.show()
cs

그리고 앞서 설명한 random.normal()함수, 즉 normal data distribution을 이용하여 마찬가지로 scatter plot을 만들어보면,

1
2
3
4
5
6
7
8
import numpy
import matplotlib.pyplot as plt
 
= numpy.random.normal(5.01.01000)
= numpy.random.normal(10.02.01000)
 
plt.scatter(x, y)
plt.show()
cs

예상했던대로 x축 y축의 가운데에 데이터가 밀집할 것이기 때문에 위와 같이 결과가 도출됩니다.

 

이제 다음부터 진짜 본격적인 머신러닝을 배우는 것 같습니다.

사실 지금까지 기본적인 개념만 그냥 쓱 본다면 이 다음부터 제대로 집중해도 될 듯 합니다.😁

+ Recent posts