Skip to content

Commit a24a133

Browse files
committed
docs: 파이썬 문법 2 및 3 추가
- '파이썬 문법 2'의 제목을 수정하고, '파이썬 문법 3' 문서를 새로 추가하여 Pandas, Matplotlib, PyTorch의 주요 기능과 활용법을 상세히 설명합니다.
1 parent ea5dec3 commit a24a133

File tree

2 files changed

+191
-1
lines changed

2 files changed

+191
-1
lines changed

docs/머신러닝/02.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
sidebar_position: 2
3-
title: 파이썬 문법
3+
title: 파이썬 문법 2
44
description: 머신러닝 구현에 필수적인 파이썬 라이브러리인 NumPy와 Pandas의 주요 기능과 활용법
55
---
66

docs/머신러닝/03.md

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
---
2+
sidebar_position: 3
3+
title: 파이썬 문법 3
4+
description: 머신러닝의 핵심 도구인 판다스(Pandas), Matplotlib, 파이토치(PyTorch)의 주요 기술을 종합적으로 요약
5+
---
6+
7+
## I. 판다스(Pandas) 심화
8+
9+
### 1. 지난 학습 내용 복습
10+
11+
#### 넘파이(NumPy)
12+
13+
- **개념**: 행렬이나 대규모 배열 처리를 위한 파이썬 라이브러리로, 벡터 및 행렬 형태로 데이터를 표현하고 연산한다.
14+
- **데이터 구조**: 다차원 배열 객체인 ndarray를 사용하며, 딥러닝 훈련 데이터(행: 훈련 데이터, 열: 특징)를 표현하는 데 필수적이다.
15+
- **배열 생성 함수**:
16+
- `numpy.array([])`: 파이썬 리스트로부터 배열 생성
17+
- `numpy.arange(시작, 종료, 간격)`: 지정된 범위와 간격으로 배열 생성
18+
- `numpy.zeros((행, 열))`, `numpy.ones((행, 열))`: 0 또는 1로 채워진 행렬 생성
19+
- `numpy.eye(n)`: n x n 단위 행렬(대각선이 1) 생성
20+
- **데이터 조작**:
21+
- `.shape`, `.ndim`: 배열의 형상 및 차원 확인
22+
- `.reshape(행, 열)`: 배열의 형상 변환
23+
- `numpy.sort()`: 배열 정렬
24+
- `numpy.concatenate()`: 배열 결합 (axis=0: 세로, axis=1: 가로)
25+
- **인덱싱 및 슬라이싱**:
26+
- 1차원 배열: `객체[a:b]` (a부터 b-1까지)
27+
- 2차원 배열: `객체[행, 열]`, `객체[n1:n2, n3:n4]`
28+
- 조건부 슬라이싱: `배열객체[비교연산]`을 통해 조건을 만족하는 요소만 추출
29+
30+
#### 판다스(Pandas) 기초
31+
32+
- **목적**: 데이터 처리를 위한 라이브러리
33+
- **데이터 타입**: Series(1차원), DataFrame(2차원)
34+
- **선언**: `pandas.Series()`, `pandas.DataFrame()`
35+
- **유용한 함수**:
36+
- `.head(n)`, `.tail(n)`: 데이터의 처음/끝 n개 행 출력
37+
- `.describe()`: 데이터의 기초 통계 정보 요약
38+
- `.T`: 행과 열을 전치
39+
- `.sort_index(axis, ascending)`: 인덱스(행) 또는 컬럼(열) 이름을 기준으로 정렬
40+
41+
### 2. 데이터 다루기: 삽입 및 삭제
42+
43+
#### 데이터 삽입
44+
45+
- **행 추가 (Append)**: `데이터프레임.append(행데이터, ignore_index=True)`
46+
- **행 추가 (loc/iloc)**:
47+
- `데이터프레임.loc[행이름] = [행 데이터]`
48+
- `데이터프레임.iloc[index] = [행 데이터]`
49+
50+
#### 데이터 삭제
51+
52+
- **원본을 보존하며 삭제 (새 변수에 할당)**:
53+
- 행 삭제: `변수 = 데이터프레임.drop(index, axis=0)`
54+
- 열 삭제: `변수 = 데이터프레임.drop(['열이름'], axis=1)`
55+
- axis의 기본값은 0(행)이다
56+
- **원본을 직접 수정**:
57+
- `데이터프레임.drop(index, axis=0, inplace=True)`
58+
59+
### 3. 파일 입출력
60+
61+
#### 파일 읽기
62+
63+
- **CSV 파일**: `pandas.read_csv('파일명')`
64+
- **Excel 파일**: `pandas.read_excel('파일명')`
65+
- 필요 라이브러리: xlrd 또는 openpyxl 설치 필요 (`pip install xlrd openpyxl`)
66+
- xlrd는 .xls 파일만 지원한다
67+
68+
#### 파일 쓰기
69+
70+
- **CSV 파일**: `데이터프레임명.to_csv('파일명', sep='구분자')`
71+
- 구분자(sep) 예시: `,`, `\t`
72+
73+
#### openpyxl을 이용한 Excel 파일 제어
74+
75+
openpyxl 라이브러리를 사용하면 Excel 파일을 더 세밀하게 제어할 수 있다.
76+
77+
- 파일 생성 및 쓰기
78+
- 파일 읽기
79+
80+
## II. Matplotlib: 데이터 시각화
81+
82+
### 4. 핵심 개념 및 설정
83+
84+
- **개념**: 데이터 시각화를 위한 파이썬 라이브러리
85+
- **주요 모듈**: pyplot을 통해 대부분의 기능을 사용
86+
- **기본 사용법**: `.plot()` 메소드로 시각화할 데이터를 정의하고, `.show()` 메소드로 화면에 출력
87+
- **설치 및 임포트**:
88+
- 설치: `pip install matplotlib`
89+
- 임포트: `import matplotlib.pyplot as plt`
90+
- Google Colab에서는 별도 설치 없이 사용 가능하다
91+
92+
### 5. 주요 플롯 유형
93+
94+
pyplot 모듈은 다음과 같은 다양한 종류의 플롯을 지원한다.
95+
96+
- **라인 플롯 (Line Plot)**: `pyplot.plot(y)` 또는 `pyplot.plot(x, y)`
97+
- **막대 플롯 (Bar Plot)**:
98+
- 수직 막대: `pyplot.bar(x, y)`
99+
- 수평 막대: `pyplot.barh(x, y)`
100+
- `xticks`, `yticks`를 사용하여 축의 눈금 레이블을 지정할 수 있다
101+
- **파이 플롯 (Pie Plot)**: `pyplot.pie(데이터, labels=, colors=, autopct=, shadow=)`
102+
- **히스토그램 (Histogram)**: `pyplot.hist(data, bins)` (bins: 구간 수)
103+
- **박스 플롯 (Box Plot)**: `pyplot.boxplot(data)`
104+
- **산점도 플롯 (Scatter Plot)**: `pyplot.scatter(x, y, s='마커크기', c='마커색상')`
105+
106+
### 6. 공통 메소드 및 스타일링
107+
108+
플롯을 꾸미기 위한 공통 메소드는 다음과 같다.
109+
110+
- `.title('타이틀')`: 그래프 제목 설정
111+
- `.xlabel('x축 레이블')`, `.ylabel('y축 레이블')`: 각 축의 레이블 설정
112+
- `.legend(['범례1', '범례2', ...])`: 범례 표시
113+
- `.axis([xmin, xmax, ymin, ymax])`: 축의 범위 지정
114+
- `.xlim(min, max)`, `.ylim(min, max)`: 특정 축의 범위만 개별적으로 지정
115+
- `.grid(True, axis='y')`: 그리드(격자) 표시. axis는 'x', 'y' 지정 가능
116+
117+
#### 스타일 지정 (포맷 문자열)
118+
119+
plot 함수 내에서 색상, 마커, 선 스타일을 지정하는 포맷 문자열을 사용할 수 있다. (예: 'gs', 'r--')
120+
121+
| 문자 | 색상 (Color) | 마커 (Marker) | 의미 |
122+
| ---- | ------------------ | ------------- | ------------------------ |
123+
| b | blue (파란색) | o | circle (원) |
124+
| g | green (녹색) | v | triangle_down (역삼각형) |
125+
| r | red (빨간색) | ^ | triangle_up (삼각형) |
126+
| c | cyan (청록색) | s | square (네모) |
127+
| m | magenta (마젠타색) | + | plus (플러스) |
128+
| y | yellow (노란색) | . | point (점) |
129+
| k | black (검은색) | | |
130+
| w | white (흰색) | | |
131+
132+
## III. PyTorch: 딥러닝 프레임워크
133+
134+
### 1. 개념 및 주요 모듈
135+
136+
- **개념**: 딥러닝을 위한 파이썬 기반 오픈소스 라이브러리. 신경망을 생성하고 학습시키는 프레임워크로, 자연어 처리, 이미지 처리 등 다양한 분야에서 사용된다.
137+
- **주요 모듈**:
138+
- `torch`: 메인 네임스페이스
139+
- `torch.autograd`: 자동 미분 기능을 제공
140+
- `torch.nn`: 신경망 레이어나 데이터 구조를 정의
141+
- `torch.optim`: 확률적 경사 하강법(SGD) 등 최적화 알고리즘을 구현
142+
- `torch.utils.data`: 데이터 처리를 위한 유틸리티 함수 포함
143+
- `Dataset`: 샘플과 정답(레이블)을 저장
144+
- `DataLoader`: Dataset의 샘플에 쉽게 접근할 수 있도록 순회 가능한 객체(iterable)로 만들어 미니배치 학습을 지원
145+
- `torch.onnx`: 서로 다른 딥러닝 프레임워크 간 모델 공유를 위한 ONNX(Open Neural Network Exchange) 포맷으로 모델을 내보낼 때 사용
146+
147+
### 2. 텐서(Tensor)의 이해
148+
149+
- **정의**: PyTorch의 핵심 데이터 구조로, 모델의 입력, 출력, 매개변수 등을 부호화(encode)하는 데 사용된다.
150+
- **구조**: NumPy의 ndarray와 유사하며, 1차원(벡터), 2차원(행렬) 이상의 다차원 배열 형태를 가질 수 있다.
151+
152+
### 3. 텐서 문법 및 연산
153+
154+
#### 텐서 초기화
155+
156+
- **데이터로부터 생성**: `torch.tensor(데이터)`
157+
- **기존 텐서 속성 유지**:
158+
- `torch.ones_like(텐서)`: 모든 값이 1인 텐서 생성
159+
- `torch.zeros_like(텐서)`: 모든 값이 0인 텐서 생성
160+
- `torch.rand_like(텐서, dtype=자료형)`: 0과 1 사이의 난수로 채워진 텐서 생성
161+
- **형상(shape) 지정**:
162+
- `shape = (2, 3) # 2행 3열`
163+
- `torch.rand(shape)`, `torch.ones(shape)`, `torch.zeros(shape)`
164+
- **NumPy 배열로부터 변환**: `torch.from_numpy(넘파이_배열)`
165+
166+
#### 차원 및 크기 조작
167+
168+
- **정보 확인**:
169+
- `.dim()`: 차원 수 확인
170+
- `.size()` 또는 `.shape`: 텐서의 크기(형상) 확인
171+
- **크기 변경**:
172+
- `.view()`: 텐서의 크기를 변경
173+
- `텐서.view([-1, n])`: 열의 개수를 n으로 고정하고 행은 자동으로 조정
174+
- `텐서.view([n, -1])`: 행의 개수를 n으로 고정하고 열은 자동으로 조정
175+
- **차원 변경**:
176+
- Squeeze: 크기가 1인 차원을 제거. 위치를 지정하여 특정 차원만 제거 가능
177+
- Unsqueeze: 지정된 위치에 크기가 1인 차원을 추가
178+
179+
#### 주요 연산
180+
181+
PyTorch는 100개 이상의 다양한 텐서 연산을 지원한다.
182+
183+
- **집계 연산**:
184+
- `.sum(dim=)`: 합계 계산
185+
- `.mean(dim=)`: 평균 계산
186+
- dim 파라미터: 0은 열 단위, 1은 행 단위 연산. 생략 시 전체 텐서 대상
187+
- **사칙연산 및 슬라이싱**: NumPy와 동일한 방식으로 수행된다
188+
- **행렬 곱**: `행렬1.matmul(행렬2)` 또는 `행렬1 @ 행렬2`
189+
- **텐서 연결**: `torch.cat([텐서1, 텐서2, ...], dim=)`
190+
- **내용 덮어쓰기(In-place)**: 연산 메소드 뒤에 밑줄(_)을 붙이면(예: `.mul_()`), 연산 결과가 원본 텐서에 덮어씌워진다

0 commit comments

Comments
 (0)