<10-1주차 수강 클립>
03. 데이터 처리를 위한 Python (Numpy)
10. linalg 서브모듈 사용하여 선형대수 연산하기
11. ndarray 데이터를 이용하여 다양한 그래프 표현하기
12. numpy 연습문제 풀이
이번 주차는 numpy를 마무리 짓는 시간이었습니다.
numpy의 서브모듈 중 하나인 linalg를 활용해 선형대수(linear algebra) 연산을 하는 법과
ndarray 데이터를 matplotlib 모듈을 이용해 시각화 하는 법을 배우고,
이때까지 배웠던 내용을 바탕으로 연습문제까지 풀이해봤습니다 !
>>수강 인증샷<<
10. linalg 서브모듈 사용하여 선형대수 연산하기
- np.linalg.inv
역행렬(inverse matrix)을 구할 때 사용함
모든 차원의 값이 같아야 함, 즉 정방행렬(=정사각행렬)이어야 역행렬 가능
*)역행렬 존재 조건: det(A) != 0 인 정방행렬 A에 대해 inverse A가 존재함
x = np.random.rand(3, 3)
#행렬 곱(m*n n*s) 기호 -> @
x @ np.linalg.inv(x) #자기자신*역행렬 = 단위행렬(=항등행렬)
#헹렬 곱 함수 -> matmul
np.matmul(x, np.linalg.inv(x))
: m by n, n by s 사이 행렬 곱 : 1. @ 연산자 2. numpy의 matmul 함수
- np.linalg.solve
Ax = B 형태의 선형대수식의 솔루션(x)을 제공 (A: 행렬, x: (해)벡터, B: 벡터)
A = np.array([[1, 1], [2, 4]])
B = np.array([25, 64])
x = np.linalg.solve(A, B)
: 리턴값: 솔루션(x)
np.allclose(A@x, B) #검산 (실수값으로 비교)
: 선형대수식의 검산 (실수값으로 비교)
: 리턴값: True/False Boolean 타입
11. ndarray 데이터를 이용하여 다양한 그래프 표현하기
- %matplotlib inline
그래프를 그릴 때 주피터 노트북 안에서 그리겠다는 뜻
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
- 1. 그래프 데이터 생성
x = np.linspace(0, 10, 11)
y = x ** 2 + x + 2 + np.random.randn(11) #2차함수 + 노이즈(오차)
: x값: 0부터 10까지의 실수를 11개로 균등한 길이로 나눔 → 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
: y값: 2차 함수에 x의 원소를 대입한 값
- 2. 그래프 출력하기
plot함수(선 그래프), scatter(점 그래프), hist(히스토그램) 등 사용
함수의 parameter 혹은 plt의 다른 함수로 그래프의 형태 및 설정을 변경 가능함 (기본적으로 x, y에 해당하는 값이 필요)
plt.plot(x, y) #실선 그래프
plt.scatter(x, y) #점 그래프
- 3. 그래프에 주석 추가
plt.xlabel('X values')
plt.ylabel('Y values')
plt.title('X-Y relation')
: x, y 축의 라벨 및 그래프 타이틀
plt.grid(True)
: grid 추가
plt.xlim(0, 20)
plt.ylim(0, 200)
: x, y축 범위 지정
- 4. 그래프의 형태에 대한 제어
4-1. plot 함수의 세 번째 파라미터
plt.plot(x, y, '#ff00ff') #r-빨, b-파, y-노, k-검
: 그래프의 색상 변경
: 색상 코드 전달 또는 'r'(빨강), 'b'(파랑), 'y'(노랑), 'k'(검정) 등의 미리 지정된 색상 문자열 전달
plt.plot(x, y, '-.')
: 그래프의 선 스타일 변경
plt.plot(x, y, 'g^') #색상 + 모양
: 색상(g_초록) + 모양(^_삼각형) 동시에 변경
plt.plot(x, y, 'm:') #색상 + 모양
: 색상(m_보라) + 모양(:_점선) 동시에 변경
4-2. 키워드 파라미터
ex) color, linestyle, marker(x, y 각각의 포인트), markerfacecolor, markersize etc...
plt.plot(x, y, 'm:', linewidth=9)
: 그래프 두께 변경 _ linewidth에 실수값 전달
plt.plot(x, y, color='black', linestyle='--',
marker='^', markerfacecolor='blue', markersize=6)
- subplot 함수
구획을 구별하여 각각의 subplot에 그래프를 출력함
여러 개의 그래프를 한꺼번에 출력할 때 사용
plt.subplot(2, 2, 1)
plt.plot(x, y, 'r')
plt.subplot(2, 2, 2)
plt.plot(x, y, 'g')
plt.subplot(2, 2, 3)
plt.plot(y, x, 'k')
plt.subplot(2, 2, 4)
plt.plot(x, np.exp(x), 'b')
- hist함수
histogram 생성
bins로 histogram bar 개수 설정
#1. 그래프 데이터 생성
data = np.random.randint(1, 100, size=200)
#2. hist함수로 그래프 출력하기
plt.hist(data, bins=20, alpha=0.3) #bins: 막대의 개수 / alpha: 알파값(투명도)
#3. 그래프에 주석 달기
plt.xlabel('값')
plt.ylabel('개수')
plt.grid(True)
12. numpy 연습문제 풀이
1. numpy를 이용하여 로또 번호 자동 생성기를 함수로 만드시오
2. numpy를 이용하여 pi(원주율)값을 계산하시오
강의 링크: https://bit.ly/3cB3C8y
'코딩 > 머신러닝&데이터 분석 강의' 카테고리의 다른 글
[머신러닝 인강] 11-1주차: Series 연산, boolean selection, 슬라이싱 (0) | 2021.04.27 |
---|---|
[머신러닝 인강] 10-2주차: Pandas, Series의 이해 (0) | 2021.04.24 |
[머신러닝 인강] 9-2주차: ndarray 축(axis), 브로트캐스팅(broadcasting), 불린 인덱싱(boolean indexing) (0) | 2021.04.18 |
[머신러닝 인강] 9-1주차: ndarray 인덱싱, 슬라이싱, 기본 함수 (0) | 2021.04.18 |
[머신러닝 인강] 8-2주차: numpy 모듈과 ndarray 이해하기 (0) | 2021.04.10 |