가상 데이터를 만들어 그래프로 그리기
데이터는 머신러닝의 기본입니다. 데이터가 있어야 머신러닝 알고리듬이 돌아갑니다. 머신러닝을 공부하기 전 단계로 가상의 데이터를 만들어 보겠습니다. random 모듈을 이용해 난수(무작위 숫자)를 만들어 가상의 데이터를 지닌 목록(list)를 만들어 보겠습니다.
import random datalen = 100 a = [ random.random()*10 for k in range(datalen) ] b = [ random.random()*10 for k in range(datalen) ] c = [ a[k]+random.random()*4.0 for k in range(datalen) ]
먼저 random모듈을 불러들입니다. 변수 a와 b 각각에는 0에서 10사이의 숫자 100개를 무작위로 만들다음 목록을 만들어 저장합니다. a의 목록에 저장된 숫자에 또 다시 0과 4사이의 난수를 더한 값들로 목록을 만든다음 변수 c에 저장합니다.
a에 저장괸 숫자의 목록과 b에 저장된 숫자의 목록으로 그래프를 그려보겠습니다. matplotlib.pyplo 모듈을 plt라는 이름으로 불러들이고, jupyter notebook의 창에서 그래프가 보이도록 %matplotlib inline을 실행한 다음, plt.plot 코드를 생행합니다.
import matplotlib.pyplot as plt %matplotlib inline plt.plot(a, b)
그래프의 점들이 선으로 연결되어 지저분하게 그려져 있습니다. 점사이를 연결하는 선들을 제거해야지 점들이 어떻게 찍혔는지 볼 수 있겠습니다. 간단한 방법으로 plot함수를 사용할떄, 두개의 입력 목록 다음에 “x”를 추가하면 됩니다.
plt.plot(a, b, "o")
점사이를 연결하는 선이 없어지고 동그라미로 찍힌 점들만 있습니다. 각각의 동그리미 점은 (a[0], b[0]), (a[1], b[1]), … 와 같이 a의 값과 b의 값으로 만든 숫자의 쌍을 그래프에 찍은 점들입니다. a[]값은 가로축의 값에 맞추고 b[]값은 세로축의 값에 맞춰 동그라미 점을 찍은 것입니다.
이왕이면 더 자세히 볼 수 있게 그래프의 크기를 키워보겠습니다. 그럴려면, 아래의 첫번째 줄 코드를 먼저 실행한다음에 plot을 실해하면 됩니다.
plt.rcParams['figure.dpi'] = 150 plt.plot(a, b, "o")
그래프가 두배 정도 더 커져서 점들을 좀더 자세히 볼 수 있습니다.그래프이 사각형안에 동그라미 점들을 대충 막 찍은 것 같습니다. a목록의 값과 b목록의 값은 서로 연관이 없다는 것을 의미합니다.
이번에는 a목록의 값과 c목록의 값으로 만든 쌍으로 그래프를 그려보겠습니다. 이번에는 동그라미모양의 점이 아닌 x표모양의 점으로 그래프를 그려 보겠습니다. “o”대신 “x”를 쓰면 됩니다.
plt.plot(a, c, "x")
점들의 사각형안에서 얼추 대각선 방향으로 늘어섰습니다. a의 값이 커지면 c값도 커지는 관계입니다. 서로 값들이 연관되어 있다는 얘기입니다.
b목록의 값과 c목록의 값으로 만든 쌍으로 그래프를 그려보면 어떨까요? 이번에는 세모모양의 점으로 그래프를 그려 보겠습니다. “^”를 쓰면 됩니다.
plt.plot(b, c, "^")
a와 b사이 처럼, b와 c사이도 아무런 연관이 없어 보입니다.
a와 c에 저장된 목록속의 숫자들은 서로 연관되어 있습니다. 어떻게 연관되어 있는지를 좀더 구체적으로 알려면 기본적인 머신러닝 알고리듬을 쓰면됩니다. 그 부분은 다음 학습자료에서 설명하겠습니다.