본문 바로가기
programming/AI

머신러닝 산점도 두 가지 이상 데이터의 상관관계를 점으로 표현 Machine Learning Scatter Plot

by 개코 - 개발과 코딩 2021. 8. 14.

산점도는 좌표평면에 흝어진 값들을 점으로 표시한 것이다. 이 점으로 표현된 값들이 두 가지 이상의 데이터에 대한 상관관계를 알 수 있다. 산점도가 왜 필요할까? 몸무게와 키의 관계, 거리와 도착시간의 관계, 연봉과 세금의 관계 등 다양하다. 또한 두 데이터의 상관관계에 따른 평균값을 구할 수 있다.

머신러닝 산점도 Scatter Plot
머신러닝 산점도 Scatter Plot

 

산점도 Scatter Plot

머신러닝에 산점도가 무슨 상관일까 싶겠지만, 산점도 또한 확률과 통계의 부분이다.

머신러닝에 유리하고 좀 더 정확한 값을 찾으려면 많은 데이터가 필요하다.

그렇기에 빅데이터에도 관계가 있다.

평균치에 가까운 값으로 갈수록 정확도가 높아질 수 있다.

이런 여러가지 많은 데이터의 상관관계를 찾고 평균을 구하여 어떤 결과를 도출하기 위해 필요한 것이 산점도 Scatter Plot 이다.

 

산점도 Scatter Plot 활용

좌표평면은 x 축과 y 축으로 구분된다.

x 축의 어떤 데이터와 y 축의 어떤 데이터를 기준으로 좌표평면에 점을 찍으면 산점도 Scatter Plot 이 된다.

예를 들어 ) 목적지까지의 거리와 도착시간, 연봉과 세금의 관계, 키와 몸무게 등 세상사 모든 데이터는 산점도와 연관이 되어 있다.

이런 데이터들은 주로 소비패턴에도 사용되며 카드사 또는 보험사 등 많은 산업군에서 사용된다.

 

파이썬으로 표현하기

먼저 산점도인 Scatter Plot 를 표현하기 위해 샘플데이터를 만들어 본다.

데이터를 산점도 Scatter Plot 으로 히스토그램으로 표현하기 위해 Matplotlib 라이브러리를 사용한다.

Matplotlib.scatter() 함수를 사용하면 산점도를 시각화하여 볼 수 있다.

먼저 데이터를 준비해 보자

vX = [15, 17, 18, 17, 12, 117, 12, 19, 14, 111, 112, 19, 16]
vY = [100, 87, 88, 89, 112, 87, 104, 88, 95, 79, 78, 86, 87]

print("X축 vX : ", type(vX), len(vX), vX)
print("Y축 vY : ", type(vY), len(vY), vY)

같은 갯수의 두 리스트 데이터가 있다.

어떤 데이터인지는 모르겠지만 대충 만들어 보았다.

 

샘플로 만들어진 두 데이터를 scatter() 함수를 이용하여 산점도를 그려보는 시각화를 해 본다.

import matplotlib.pyplot as plt

print('----------------------------------------------------------------------------------------------------')

vX = [15, 17, 18, 17, 12, 117, 12, 19, 14, 111, 112, 19, 16]
vY = [100, 87, 88, 89, 112, 87, 104, 88, 95, 79, 78, 86, 87]

print("X축 vX : ", type(vX), len(vX), vX)
print("Y축 vY : ", type(vY), len(vY), vY)

plt.scatter(vX, vY)
plt.show()

print('----------------------------------------------------------------------------------------------------')

산점도라고 부르기 부끄러운 그래프가 나왔지만 어쨌든 두 데이터의 관계를 좌표평면에 점으로 표현할 수 있는 것을 알 수 있다.

여기서 알 수 있는 것은 X축의 데이터 값의 20에 대해 Y축의 값이 몰려있다는 것을 알 수 있다.

 

임의로 데이터를 만들어 그려보자

NumPy.random.normal() 함수를 사용하여 산점도를 그려본다.

NumPy 라이브러리를 이용한 normal( 평균, 표준편차, 갯수) 은 정규분포 Normal Distribution을 만드는 함수이다.

이것을 이용하여 산점도 Scatter Plot 을 그려본다.

import numpy
import matplotlib.pyplot as plt

print('----------------------------------------------------------------------------------------------------')

vX = numpy.random.normal(20, 10, 100)
vY = numpy.random.normal(200, 100, 100)

print("X축 vX : ", type(vX), len(vX), vX)
print("Y축 vY : ", type(vY), len(vY), vY)

plt.scatter(vX, vY)
plt.show()

print('----------------------------------------------------------------------------------------------------')

NumPy.random.normal() 함수를 이용하여 각각 정규분포 데이터를 100개씩 만들었다.

이것을 Matplotlib 라이브러리를 이용한 scatter() 함수를 이용해 산점도 Scatter Plot 를 좌표평면에 그려본다.

상관관계가 부끄러울 정도다.

하지만, 여기서 알 수 있는 것은

X축의 값이 10에서 30, Y축의 값이 100에서 300사이에 몰려있는 것을 알 수 있다.

여기서 평균에 가까운 값은 X축의 20, Y축의 200의 값들을 분석해 보면 통계적인 요소를 알 수 있을 것이다.

추가적인 설명

산점도에 대한 설명을 잘 설명해 주고 있고 있어서 공유해 본다.

기본 개념은 알고 넘어가도록 하자.

산점도는 Scatter Plot 이라고 하니 단어도 눈으로 확인하고 넘어가자.

머신러닝을 공부하다보면 단어 때문에 난해한 경우들이 많다.

반응형

댓글