โ์ฒซ๋ฒ์งธ ์ํด๋ฆฌ ๋ธ๋ก๊ทธ
๐AI๊ฐ๋ฐ์ ์์ด ์ค์๋๊ฐ ๋๊ณ , ์ฌ์ฉ์ด ๋ง์ 'ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ'์ ๋ํด ์์๋ณด์.
1. NumPy (Numerical Python)
[๊ฐ๋ ]
๐NumPy๋ ํ์ด์ฌ์์ ์์น ๊ณ์ฐ(Numerical Computation)์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋๋ก ๋ง๋ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ค์ฐจ์ ๋ฐฐ์ด(ndarray) ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก, ๋ฒกํฐ๋ ํ๋ ฌ ๊ณ์ฐ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํฉ๋๋ค. AI, ๋จธ์ ๋ฌ๋, ๋ฐ์ดํฐ๋ถ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ๋๋ถ๋ถ์ NumPy ๋ฐฐ์ด์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
[ํน์ง]
โข ๋ค์ฐจ์ ๋ฐฐ์ด(ndarray): C ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋์ด, ๋ฐ๋ณต๋ฌธ ์์ด ๋น ๋ฅธ ๊ณ์ฐ ๊ฐ๋ฅ
โข ๋ฒกํฐํ ์ฐ์ฐ(Vectorization): ๋ฐ๋ณต๋ฌธ ๋์ ์ํ์ ์ฐ์ฐ์ผ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ โ ์ฝ๋ ๊ฐ๊ฒฐํ & ์๋ ํฅ์
โข ๋ธ๋ก๋์บ์คํ (Broadcasting): ํฌ๊ธฐ๊ฐ ๋ค๋ฅธ ๋ฐฐ์ด ๊ฐ์ ์ฐ์ฐ์ ์๋์ผ๋ก ํ์ฅ
โข ์ ํ๋์, ํต๊ณ, ๋์ ๋ฑ ๋ค์ํ ์ํ ํจ์ ๋ด์ฅ
โข ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํธํ์ฑ: pandas, scikit-learn, PyTorch, TensorFlow ๋ฑ์ด ๋ชจ๋ NumPy๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋
# NumPy ๋ถ๋ฌ์ค๊ธฐ
import numpy as np
# 1์ฐจ์, 2์ฐจ์ ๋ฐฐ์ด ๋ง๋ค๊ธฐ
a = np.array([1, 2, 3])
b = np.array([[1, 2, 3], [4, 5, 6]])
โ
NumPy ๊ณต์ ์ฌ์ดํธ
โ
NumPy ๊ณต์ ๋ฌธ์
2. pandas
[๊ฐ๋ ]
๐pandas๋ ํ์ด์ฌ์์ ๋ฐ์ดํฐ ๋ถ์๊ณผ ์ ์ฒ๋ฆฌ(Data Wrangling)๋ฅผ ์ํด ์ฌ์ฉ๋๋ ๋ํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ํ(Row)๊ณผ ์ด(Column) ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง DataFrame ๊ฐ์ฒด๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ค๋ฃจ๋ฉฐ, ์์ ์ฒ๋ผ ์ง๊ด์ ์ผ๋ก ํํฐ๋งยท๊ทธ๋ฃนํยท์ ๋ ฌ ๋ฑ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
[ํน์ง]
โข DataFrame ๊ตฌ์กฐ ์ ๊ณต: ์์ ์ํธ์ ๊ฐ์ 2์ฐจ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ
โข ๋ฐ์ดํฐ ์ ์ถ๋ ฅ(IO): CSV, Excel, SQL, JSON ๋ฑ ๋ค์ํ ํฌ๋งท์ ์ฝ๊ฒ ์ฝ๊ณ ์ ์ฅ ๊ฐ๋ฅ
โข ๊ฒฐ์ธก์น ์ฒ๋ฆฌ / ๊ทธ๋ฃนํ / ํผ๋ฒํ ์ด๋ธ ๋ฑ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ ๋ด์ฅ
โข ์๊ณ์ด(Time Series) ๋ถ์ ์ง์
โข ๋ค๋ฅธ AI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฐ๋ ์ฉ์ด (NumPy, scikit-learn ๋ฑ๊ณผ ํจ๊ป ์ฌ์ฉ)
#pandas ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
# ๊ฐ๋จํ DataFrame ์์ฑ
data = {
"์ด๋ฆ": ["ํ๊ธธ๋", "๊น์ฒ ์", "์ด์ํฌ"],
"๋์ด": [25, 32, 29],
"์ ์": [85, 90, 88]
}
df = pd.DataFrame(data)
โ
pandas ๊ณต์ ์ฌ์ดํธ
โ
pandas ๊ณต์ ๋ฌธ์
3. Matplotlib / Plotly
[๊ฐ๋ ]
๐AI๋ ๋ฐ์ดํฐ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์๊ฐํ(Visualization)ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๋ ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- Matplotlib: ๊ฐ์ฅ ์ค๋๋๊ณ ๋ฒ์ฉ์ ์ธ 2D/3D ๊ทธ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Plotly: ์น ๊ธฐ๋ฐ์ ๋ํํ(Interactive) ๊ทธ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ์ค/ํธ๋ฒ/ํด๋ฆญ์ด ๊ฐ๋ฅํ ์๊ฐํ ์ ๊ณต
[ํน์ง]
Matplotlib
โข ๋ผ์ธ, ๋ฐ, ํ์คํ ๊ทธ๋จ, ์ค์บํฐ ๋ฑ ๊ฑฐ์ ๋ชจ๋ ์ข ๋ฅ์ ๊ทธ๋ํ ํํ ๊ฐ๋ฅ
โข ์ธ๋ฐํ ์ปค์คํฐ๋ง์ด์ง (ํฐํธ, ์คํ์ผ, ์์ ์กฐ์ ๋ฑ)
โข ๋ ผ๋ฌธ, ๋ณด๊ณ ์์ฉ ๊ณ ํด์๋ ๊ทธ๋ํ ์ ์์ ์ ํฉ
Plotly
โข ์น ๊ธฐ๋ฐ ์ธํฐ๋ํฐ๋ธ ์๊ฐํ (์คยทํดํยทํด๋ฆญ ๋ฑ ์ง์)
โข Plotly Express๋ก ๊ฐ๋จํ ํ ์ค ๊ทธ๋ํ ์์ฑ ๊ฐ๋ฅ
โข Dash ํ๋ ์์ํฌ์ ๊ฒฐํฉํ๋ฉด ์น ๋์๋ณด๋ ๊ตฌํ ๊ฐ๋ฅ
#matplot ๋ถ๋ฌ์ค๊ธฐ
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 30]
plt.plot(x, y, marker='o', color='blue')
plt.title("Matplotlib ๊ธฐ๋ณธ ์ ๊ทธ๋ํ")
plt.xlabel("X์ถ ๊ฐ")
plt.ylabel("Y์ถ ๊ฐ")
plt.grid(True)
plt.show()
#plotly ๋ถ๋ฌ์ค๊ธฐ
import plotly.express as px
import pandas as pd
df = pd.DataFrame({
"๊ณผ๋ชฉ": ["๊ตญ์ด", "์์ด", "์ํ", "๊ณผํ", "์ฌํ"],
"์ ์": [85, 90, 78, 92, 88]
})
fig = px.bar(df, x="๊ณผ๋ชฉ", y="์ ์", color="๊ณผ๋ชฉ", title="Plotly ๋ง๋ ๊ทธ๋ํ ์์")
fig.show()
โ
Matplotlib ๊ณต์ ๋ฌธ์
โ
Plotly ๊ณต์ ์ฌ์ดํธ
4. scikit-learn (sklearn)
[๊ฐ๋ ]
๐scikit-learn์ ์ ํต์ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ(Machine Learning Algorithm)์ ์ํ ๋ํ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ถ๋ฅ(Classification), ํ๊ท(Regression), ํด๋ฌ์คํฐ๋ง(Clustering), ์ฐจ์ ์ถ์(Dimension Reduction), ๋ชจ๋ธ ๊ฒ์ฆ(Validation) ๋ฑ AI ๊ธฐ์ด ์คํ์ ํ์ํ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ ๊ณตํฉ๋๋ค.
[ํน์ง]
โข ์ผ๊ด๋ API ์ค๊ณ: ๋ชจ๋ ๋ชจ๋ธ์ด fit(), predict(), transform() ํจํด์ผ๋ก ์๋
โข ๋ค์ํ ML ์๊ณ ๋ฆฌ์ฆ ๋ด์ฅ: SVM, RandomForest, KNN, NaiveBayes, KMeans ๋ฑ
โข ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋ฐ ๋ชจ๋ธ ํ๊ฐ ๋๊ตฌ ์ ๊ณต (์ค์ผ์ผ๋ง, ๊ต์ฐจ๊ฒ์ฆ, ํ์ดํ๋ผ์ธ ๋ฑ)
โข ๊ฐ๋จํ ์ฝ๋๋ก ๋น ๋ฅธ ํ๋กํ ํ์ ์ ์ ๊ฐ๋ฅ
โข GPU ์์ด๋ ์คํ ๊ฐ๋ฅ(๊ฐ๋ฒผ์)
#sklearn ๋ถ๋ฌ์ค๊ธฐ
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
โ
scikit-learn ๊ณต์ ์ฌ์ดํธ
โ
scikit-learn ๊ณต์ ๋ฌธ์
5. PyTorch
[๊ฐ๋ ]
๐PyTorch๋ ํ์ด์ค๋ถ(๋ฉํ)์์ ๊ฐ๋ฐํ ๋ฅ๋ฌ๋(Deep Learning) ํ๋ ์์ํฌ์ ๋๋ค.
์ฐ์ฐ ๊ทธ๋ํ๋ฅผ ๋์ ์ผ๋ก(dynamic) ์์ฑํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ณ ์์ด ๊ฐ๋ฐ์ ์นํ์ ์ด๊ณ ๋๋ฒ๊น ์ด ์ฝ๋ค๋ ์ ์์ ์ฐ๊ตฌยท๊ฐ๋ฐ ๋ถ์ผ์์ ๋งค์ฐ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
[ํน์ง]
โข ๋์ ๊ทธ๋ํ(Dynamic Graph): ์คํ ์์ ์ ๊ทธ๋ํ๋ฅผ ๊ตฌ์ฑ โ ์ฝ๋ ํ๋ฆ์ด ์์ฐ์ค๋ฝ๊ณ ์ ์ฐํจ
โข ์๋ ๋ฏธ๋ถ(Autograd): ํ ์ ์ฐ์ฐ ์ ์๋์ผ๋ก ๋ฏธ๋ถ ๊ณ์ฐ
โข GPU ๊ฐ์ ์ง์: CUDA ๊ธฐ๋ฐ GPU ์ฐ์ฐ ์ง์
โข ๋ฅ๋ฌ๋ ๋ชจ๋ธ ๊ตฌ์ถ ๋ฐ ํ๋ จ์ด ๊ฐ๊ฒฐ (torch.nn, torch.optim, torch.utils.data)
โข ์ํ๊ณ ํ์ฅ์ฑ: TorchVision(์ด๋ฏธ์ง), TorchText(์์ฐ์ด), PyTorch Lightning(ํ๋ จ ๋จ์ํ) ๋ฑ ํ๋ถํ ํ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข ์ฐ๊ตฌ์ฉยทํ๋กํ ํ์ ๊ฐ๋ฐ์ ์ ํฉ
#torch ๋ถ๋ฌ์ค๊ธฐ
import torch
import torch.nn as nn
import torch.optim as optim
โ
PyTorch ๊ณต์ ์ฌ์ดํธ
โ
PyTorch ๊ณต์ ๋ฌธ์
6. TensorFlow + Keras
[๊ฐ๋ ]
๐TensorFlow๋ ๊ตฌ๊ธ์ด ๊ฐ๋ฐํ ๋ฒ์ฉ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ก, ๋๊ท๋ชจ ๋ถ์ฐ ํ์ต๊ณผ ์ฐ์ ๋ฐฐํฌ์ ์ ํฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. Keras๋ TensorFlow์ ์์ API๋ก, ๋ณต์กํ ๋ชจ๋ธ์ ์ฝ๊ฒ ๊ตฌ์ฑํ๊ณ ๋น ๋ฅด๊ฒ ์คํํ ์ ์๊ฒ ํด์ค๋๋ค.
[ํน์ง]
โข ์ ์ + ์ฆ์ ์คํ ๊ทธ๋ํ(Eager Execution): ์คํ ํจ์จ๊ณผ ๋๋ฒ๊น ํธ์์ฑ ๋์ ์ ๊ณต
โข GPU/TPU/๋ถ์ฐ ํ์ต ์๋ฒฝ ์ง์
โข Keras ๊ณ ์์ค API๋ก ์ ๊ฒฝ๋ง ์ค๊ณ๊ฐ ๊ฐ๋จ (Sequential, Functional API)
โข TensorBoard๋ฅผ ํตํ ํ์ต ์๊ฐํ ๋ฐ ๋ก๊ทธ ๊ด๋ฆฌ
โข TensorFlow Lite, JS ๋ฑ ๋ค์ํ ๋ฐฐํฌ ํ๊ฒฝ ์ง์ (๋ชจ๋ฐ์ผยท์น๊น์ง ๊ฐ๋ฅ)
"TensorFlow = ๋๊ท๋ชจ ์์ฐ์ฉ ํ๋ ์์ํฌ" / "Keras = ๋น ๋ฅธ ๊ฐ๋ฐ์ฉ ์ธํฐํ์ด์ค"
#tensorflow์ keras ๋ถ๋ฌ์ค๊ธฐ
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
โ
TensorFlow ๊ณต์ ์ฌ์ดํธ
โ
Keras ๊ณต์ ๋ฌธ์
์ ๋ ๋์ถฉ ์ ๋ฆฌ๋ ํด๋จ๋๋ฐ ๋ค์ ํ๋ฒ ๋ณต์ตํ ์ ์์ด์ ์ข์์ต๋๋ค~
ํ ์ ํ๋ก์ฐ๋ ํ์ดํ ์น๋ฅผ ๋ง์ด ์ด์ฉํด๋ดค๋๋ฐ, ๋๋จธ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌ๊ฐ ๋์ด์์ด์ ๋๊ฒ ์ ์ฉํ ๊ธ์ด์์ต๋๋ค!
numpy, pandas ๊ทธ๋ฆฌ๊ณ matplotlib๋ ๋ฐ์ดํฐ ๋ถ์ ๊ณต๋ถํ ๋ ์ ๋ง ๋ง์ด ์ฌ์ฉํ์์ต๋๋ค. tensorflow๋ ์์ ์๋ ๋ง์ด๋ค ์ฌ์ฉํ๊ฑธ๋ก ์๊ณ ์๋๋ฐ ์์๋ ๊ฑฐ์ ์์ด๋ค๋ ๋ง์ ๋ค์๋๊ฑฐ ๊ฐ์๋ฐ ์๋ชจ๋ฅด๊ฒ ๋ค์. scikit-learn์ ๊ฒฝ์ฐ AI๋ฅผ ๊ณต๋ถํ๋๋ฐ ์ ๋ง ํ์์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
ํ์ด์ฌ ๋ฐฐ์ธ ๋ ๋ดค์๋ numpy, pandas ๊ฐ์ ๊ฐ๋ ์ด ์ธ์ ์ฐ์ด๋ ํ๋๋ฐ, ์ฌ๊ธฐ์ ๋ง์ด ์ฐ์ด๋ค์. PyTorch์ TensorFlow๋ ์ด๋ฒ์ ์ฒ์ ์ ํ๋๋ฐ, ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฆฌ๋ฅผ ํด์ผ๊ฒ ์ด์
์์ ์ ๊ณต๋ถํด๋ณธ ๋ถ์ผ์ธ๋ฐ ๋ค์ ํ๋ฒ ๋ณด๊ฒ ๋์ด ์์๋ ๋ด์ฉ๋ค๋ ๋ณต์ตํ๊ณ ์ข์ ํ์ต์ด์์ต๋๋ค
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ๋ฆฌํด๋๋ ํ ๋์ ๋ณด๊ธฐ ํธํ์ต๋๋ค. tensorflow์ keras๋ฅผ ์ ๋๋ก ์ ํด๋ณธ ์ ์ด ์์ด์ ๊ผญ ๋ค๋ค๋ณด๊ณ ์ถ๋ค์.
๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋
๊ณผ ํน์ง์ด ๋ช
ํํ๊ฒ ๊ตฌ๋ถ๋์ด ์๊ณ , ์ฝ๋ ์์์ ํจ๊ป ์ค์ ์ฌ์ฉ ํ๋ฆ์ ๋ณด์ฌ์ค ์ ์ด ํนํ ์ข์ ๊ฒ ๊ฐ์์ ใ
ใ
!!
๋จ์ํ ๋์ดํ๋ ์์ค์ ๋์ด โ์ ์ค์ํ์ง, ์ธ์ ์ฌ์ฉํ๋์งโ๋ฅผ ์ง์ด์ค์ ํ์ต ๋ฐฉํฅ์ ์ก๋ ๋ฐ ๋์์ด ๋ ๊ฒ ๊ฐ์์ ๐๐ป
์ข์ ๊ธ ๊ฐ์ฌํฉ๋๋ค!! โบ๏ธ
ํ์ด์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ์ ๋ฐ๋ฅธ ํน์ง๋ค์ ์ ๋ฆฌํ ์ ์์ด์ ์ข์์ต๋๋ค! PyTorch๋ ์๊ณ ๋ง ์์ง ์ ํด๋ณธ์ ์ ์์ด์ ์์ผ๋ก ๊ณต๋ถํด๋๊ฐ๊ณ ์ถ์ด์!