ㅅㅇ
matplotlib_ 02_2 각종 그래프 그리기 _ 산점도 (Scatter Plot) 본문
matplotlib_ 02_2 각종 그래프 그리기 _ 산점도 (Scatter Plot)
SO__OS 2022. 6. 16. 01:00Pandas_ 02_2 각종 그래프 그리기 _ 산점도 (Scatter Plot)
1. 산점도(산포도)
- X와 Y축을 가지는 좌표평면상 관측값들을 점을 찍어 표시하는 그래프
- 변수(Feature)간의 상관성(상관관계. ex. x축에 따라 y축이 증가)이나,
관측값들 간의 군집 분류(ex. 두 개의 그룹으로 나눠, 뭉쳐져 있다.)를 확인할 수 있다.
- cf) line plot는 값의 위치보다 시간, 순서 등 변화 흐름에 따른 값 보고 싶을 때. 목적이 아예 다르다.
- scatter() 메소드 사용
x = np.arange(1,1000,50)
y = np.arange(1,1000,50)
plt.scatter(x,y)
- 1번인수 : x값, 2번인수 y값
- x와 y값들을 모두 매개변수로 전달해야 한다.
- x,y 의 인수는 스칼라 실수나 리스트 형태의 객체들을 넣는다.
- 리스트
- 튜플
- numpy 배열 (ndarray)
- 판다스 Series
- x와 y의 원소의 수는 같아야 한다.
2. 산점도 (Scatter Plot) 그리기
ex1 # 상관성을 보이는 그래프
import numpy as np
x = np.arange(1,1000,50) # 1 ~ 1000-1 +50
y = np.arange(1,1000,50)
plt.figure(figsize=(7,7))
plt.scatter(x,y) # x와 y 같은 인덱스의 값끼리 묶어서 점을 찍는다.
plt.show()
ex2 # 이러한 그래프는 변수간의 상관성이 없다라고 말할 수 있다.
x = np.arange(1,1000,50) # 1 ~ 1000-1 +50
y2 = np.random.randint(100,300,20) # 100 ~ 300-1 사이에서 임의의 정수 20개 (난수)를 추출.
plt.scatter(x, y2)
plt.show()
3. 설정
scatter() 의 매개변수로
1) marker (마커) : 점의 모양
- marker란 점의 모양을 말하며 미리정의된 값으로 변경할 수있다.
- scatter() 메소드의 marker 매개변수를 이용해 변경한다.
https://matplotlib.org/stable/api/markers_api.html
2) s : 마커의 크기
- 리스트형태(리스트, 튜플)로 지정
3) alpha : 하나의 마커에 대한 투명도
- 0 ~ 1 사이 실수를 지정 (default 1)
ex1 마커 설정
- 중복되어 찍혔기 때문에 점이 30개로 안 보이는데, 이 정도를 투명도 설정으로 알 수 있다.
plt.figure(figsize=(10,10))
plt.scatter(x=np.random.randint(1,5,30), y=np.random.randint(1,5,30),
marker = 'v',
color = 'red',
s = 100, # maker size
alpha = 0.1 # 투명도 0~1
)
plt.scatter(x=np.random.randint(5,10,30), y=np.random.randint(5,10,30), marker = '*')
# 군집 분류를 알 수 있는 그래프
4. 두 컬럼(변수) 간의 상관관계를 계산
두 컬럼(변수) 간의 관계에는 한쪽의 값이 증가할 때 다른 쪽 값은 증가 or 감소 or 관계없음 이 있다.
관계는 즉, 패턴이다. 패턴을 아는 것은 중요하다. -> 패턴이 있어야 예측이 가능하다.( 머신러닝딥러닝, 통계분석 ... )
(1) 정상적 판단 : 산점도(scatter plot)
- x 와 y 의 관계를 파악
- 시각적으로 판단이 어려울 때도 있다.
(2) 정량적 판단 : 상관계수 계산
- 두 변수의 관계를 넘파이와 판다스 메소드를 통해 구할 수 있다.
- 상관관계 : 양의 상관관계(비례. 증감이 같은 것), 음의 상관관계(반비례. 증감이 반대인 것)
- 상관계수 계산법
(넘파이) np.corrcoef ( df[컬럼명], df[컬럼명] )
(판다스) df [ [ '컬럼명', '컬럼명' ] ].corr()
- 음수 : 음의 상관관계, 양수 : 양의 상관관계, 0 : 관계없다. = > 상관계수 : -1 ~ +1 실수
- (+)(-)1에 가까울 수록 관계성이 커진다. 0에 가까울수록(퍼질수록) 관계성이 약해진다.
< 보통 상관성(절대적 기준 아님.) >
절대치 1 ~ 0.7 : 아주 강한 상관관계
0.7 ~ 0.3 : 강한 상관관계
0.3 ~ 0.1 : 약한 상관관계
0.1 ~ 0 : 상관성(관계)이 없다.
4.1 상관계수 계산 _ numpy
import numpy as np
np.corrcoef(df['경보 발령횟수'], df['관측일수'])
# 0.6 : 양의 상관관계(양수) - > 강한 관계성을 가진다. 비례.
4.2 상관계수 계산 _ pandas
import pandas as pd
df[['경보 발령횟수', '관측일수']].corr()
'AI_STUDY > 데이터 시각화 Matplotlib Seaborn Pandas' 카테고리의 다른 글
matplotlib_ 02_4 각종 그래프 그리기 _ 파이차트 (Pie Chart) (0) | 2022.06.16 |
---|---|
matplotlib_ 02_3 각종 그래프 그리기 _ 막대그래프(Bar plot) (0) | 2022.06.16 |
matplotlib_ 02_1 각종 그래프 그리기 _ 선 그래프 (line Graph) (0) | 2022.06.15 |
matplotlib_ 01 개요 & 설정값 (0) | 2022.06.15 |
matplotlib_ 00 한글처리 (0) | 2022.06.14 |