배열을 읽고 그래프로 설명하기
인공지능응용 · 3주차
이번 주 목표 · 표의 행·열을 코드의 shape와 연결하고, 계산 결과를 읽을 수 있는 그래프로 만듭니다.
실행: Colab에서 내 Drive에 사본을 저장한 뒤 Code Cell의 ▶ 또는 Shift+Enter로 위에서부터 실행하세요. ⟦직접 입력⟧ 표시가 있는 Text Cell은 더블클릭해서 수정합니다.
Python에서 NumPy로 넘어가기
Python의 list·dict는 값을 묶고, for·if는 반복과 조건에 따라 값을 처리할 때 사용합니다. NumPy는 같은 계산을 배열 전체에 적용하게 합니다. scores=[72,85,90]에서 [v for v in scores if v>=80]과 np.array(scores)[np.array(scores)>=80]은 모두 85와 90을 고릅니다. 앞 표현은 하나씩 조건을 검사하고, 뒤 표현은 Boolean Mask를 만듭니다. dict는 {"voltage":220,"current":1.5}처럼 이름으로 값을 찾을 때 사용합니다.
1. 값 하나에서 묶음으로
점수 하나는 수이고 여러 점수는 리스트로 묶을 수 있습니다. NumPy 배열은 같은 종류의 값을 일정한 모양으로 담아 수치 연산합니다. shape=(4,5)는 값 20개가 4행 5열에 놓였다는 뜻입니다. ndim은 축 개수, size는 전체 원소 수입니다.
값 하나에서 묶음으로
리스트 [1,2]*2는 이어 붙인 [1,2,1,2]가 되지만 배열에 2를 곱하면 각 원소가 두 배가 됩니다. 배열의 연산 의미를 리스트에서 그대로 가져오지 마세요.
2. 선택과 모양 변경
data[1,2]는 0부터 센 두 번째 행, 세 번째 열입니다. data[1:3,1:4]는 두 행과 세 열을 선택합니다. 끝 인덱스는 포함하지 않습니다. reshape는 원소 수를 유지하므로 20개를 3×7로 바꿀 수 없습니다.
선택과 모양 변경
score>=80은 값 자체가 아니라 각 위치가 조건을 만족하는지 나타내는 bool 배열입니다. score[score>=80]은 그 위치의 실제 값을 꺼냅니다. 조건과 선택 결과를 각각 출력해 보세요.
3. 같은 기호가 다른 계산을 한다
A*B는 같은 위치끼리 곱합니다. A@B는 행과 열의 내적을 모아 Matrix Multiplication(행렬곱)을 만듭니다. (m,n)@(n,p)의 결과는 (m,p)입니다. 최대값과 그 위치도 구분하세요. max는 값, argmax는 인덱스를 반환합니다.
같은 기호가 다른 계산을 한다
Inverse Matrix(역행렬)은 정사각행렬이라고 언제나 존재하지 않습니다. 선형 방정식은 일반적으로 inv(A)@b보다 solve(A,b)를 사용합니다. 이번 과제에서 Inverse Matrix 자체를 확인할 때는 A@inv(A)가 단위행렬에 가까운지 allclose로 검사하세요.
4. 그래프는 계산의 마지막 설명
먼저 x와 y의 길이를 맞추고 선을 그린 뒤 제목·축 이름·단위·Legend(범례)를 추가합니다. 여러 지표의 단위가 다르면 subplot으로 나누세요. 최고값의 위치는 argmax로 찾고 annotate로 표시하면 그래프에서 최댓값이 어디인지 쉽게 확인할 수 있습니다.
그래프는 계산의 마지막 설명
훈련 loss 감소와 accuracy 증가는 관련이 있지만 항상 같이 움직이지 않습니다. loss는 예측의 확신 정도에도 반응하고 accuracy는 정답 여부만 셉니다. 주어진 예시 곡선을 보편적인 법칙으로 해석하지 마세요.
학습 내용 확인
- 코드에 넣을 값은 무엇이며, 결과 배열의 각 행·열은 무엇을 뜻하나요? 물리량을 계산한다면 단위도 확인했나요?
- 조건을 하나 바꿨을 때 다시 실행해야 하는 부분을 찾을 수 있나요?
- 실행 결과가 예상과 맞나요? 다르다면 출력값이나 그래프를 보고 이유를 설명할 수 있나요?
실습 자료
- AI_Applications_Week03_PythonArraysPlots.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- HW2_python_basic.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- L03_python_basic_l1.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- L04_python_basic_l2.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- L05_python_basic_l3.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- L06_python_basic_l4.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- L07_python_numpy.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드
- L08_python_matplotlib.ipynbColab 노트북 미리보기 · Colab 노트북 다운로드