본문 바로가기

코딩/머신러닝&데이터 분석 강의

[머신러닝 인강] 10-1주차: linalg 서브모듈, 그래프 표현

<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

반응형