얼마 전 오랜만에 w3schools에 들어가보니 machine learning section이 새로 추가되어 있군요.

 

개인적으로도 결국 Python이 살아남기 위한, 그리고 프로그래밍 언어들 중에서 최고의 자리를 지킬 수 있게 해주는 것 중 가장 큰 것이 바로 Machine Learning인 듯 합니다.

하지만 일반인이 쉽게 접근하기에는 수학이 들어가서 약간 꺼려질 수 있지만 w3schools의 각 course를 이 블로그에서 찬찬히 다뤄보면서 한 번 쉽게 접근해 보려 합니다.

 

목적은 아주 간단한 분야에서도 쉽게 머신러닝을 적용할 수 있도록...

 

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

 

Python Machine Learning

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

Data Set

가장 처음 소개하는 용어는 데이터 셋입니다.

어렵게 생각할 필요없이 '분석할 자료'라고 보면 됩니다.

단순한 수들의 파이썬 리스트도 될 수 있고 아니면 엑셀이나 CSV파일로 표현되는 표도 될 수 있습니다.

만약 표를 이용한다면 가장 중요한 사항은 columm(열) row(행) 개념이 정확히 갖춰져 있어야 합니다.

Data Type

분석하고자 하는 DATA(자료)의 종류를 W3schools에서는 세가지 타입으로 설명하고 있습니다.

Numerical : 숫자로 표현되는 자료들의 모임입니다.

Categorical : 위 표의 Carname, Color 등으로 단순 구분이 되는 자료들입니다.

Ordinal : 순서(order) 또는 등급(grade)으로 나뉠 수 있습니다. 각각의 값(value)들은 같은 열(column)의 다른 행(row)의 값들과 비교됨으로서 그 가치를 갖는다고 보시면 됩니다.

 

Mean, Median, and Mode

(평균, 중앙값, 최빈값(가장 많이 관측되는 수))

 

일단은 각 단어의 뜻에 집중하면서 실제 파이썬 코드로 확인해 봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import numpy
 
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
 
= numpy.mean(speed)
 
print(x)
 
 
import numpy
 
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
 
= numpy.median(speed)
 
print(y)
 
 
from scipy import stats
 
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
 
= stats.mode(speed)
 
print(z)
cs

위에서부터 순서대로 평균, 중앙값 그리고 최빈값입니다.

 

평균은 다 아실테고 중앙값은 리스트 안의 숫자중에서 가장 중앙에 위치하는 값으로 예를 들어 [1,2,3,4,5,6,100] 의 리스트가 있다면 평균과 중앙값이 큰 차이가 날 수 있습니다. 중앙값은 '4'이겠지요. 그리고 최빈값의 경우에는 숫자의 출현 빈도수를 확인하는 함수로 조금 접근방식이 다르다고 볼 수 있습니다.(실제 최빈값의 경우에는 위에 설명한 Data Type의 Categorical Type에 대해서 효율적이라 볼 수 있습니다.)

 

여기서 사용되는 라이브러리는 numpy와 scipy입니다. 실제 많이 들어본 tensorflow, pytorch, keras등은 머신러닝을 전문적으로 수행하기 위한 라이브러리라면 numpy와 scipy 는 이를 배우기 위하여 사전에 어느정도 숙지해야 하는 기본적인 라이브러리라고 보시면 됩니다.

+ Recent posts