얼마 전 오랜만에 w3schools에 들어가보니 machine learning section이 새로 추가되어 있군요.
개인적으로도 결국 Python이 살아남기 위한, 그리고 프로그래밍 언어들 중에서 최고의 자리를 지킬 수 있게 해주는 것 중 가장 큰 것이 바로 Machine Learning인 듯 합니다.
하지만 일반인이 쉽게 접근하기에는 수학이 들어가서 약간 꺼려질 수 있지만 w3schools의 각 course를 이 블로그에서 찬찬히 다뤄보면서 한 번 쉽게 접근해 보려 합니다.
목적은 아주 간단한 분야에서도 쉽게 머신러닝을 적용할 수 있도록...
https://www.w3schools.com/python/python_ml_getting_started.asp
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]
x = numpy.mean(speed)
print(x)
import numpy
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
y = numpy.median(speed)
print(y)
from scipy import stats
speed = [99,86,87,88,111,86,103,87,94,78,77,85,86]
z = 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 는 이를 배우기 위하여 사전에 어느정도 숙지해야 하는 기본적인 라이브러리라고 보시면 됩니다.