๋ฐ์ํ
๋ฅ๋ฌ๋์ ๊ณต๋ถํ๊ธฐ ์ํ์ฌ ํ์ํ ์ค๋น๋ฌผ
-
- ๋ฅ๋ฌ๋์ ๊ณต๋ถํ๋ฉด์ ์ต์ํ์ผ๋ก ํ์ํ ์ค๋น๋ฌผ์ด ์๋ค๋ฉด 3๊ฐ์ง๋ฅผ ์ ์ด๋ณผ์ ์์๊ฑฐ ๊ฐ์์.
Python 3.X ๋ฒ์ , Numpy Library, Matplotlib Library ์ ๋๋ค.
Numpy Library
- Python ์์ ๊ณผํ์ ๊ณ์ฐ & ์์น๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํ ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. NumPy๋ ๊ณ ์ฑ๋ฅ์ ๋ค์ฐจ์ ๋ฐฐ์ด ๊ฐ์ฒด์ ์ด๋ฅผ ๋ค๋ฃฐ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์น ๊ณ์ฐ์ ์ํ ๋งค์ฐ ํจ๊ณผ์ ์ธ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ฉฐ, ์ด๋ ๋ฐ์ดํฐ ๋ถ์, ๋จธ์ ๋ฌ๋ ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
Matplotlib Library
- ๋ฐ์ดํฐ๋ฅผ ์ฐจํธ๋ ํ๋กฏ์ผ๋ก ์๊ฐํํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๋ผ์ธ ํ๋กฏ, ์ค์บํฐ ํ๋กฏ, ํ์คํ ๊ทธ๋จ ๋ฑ ๋ค์ํ ํ๋กฏ์ ์ง์ํ๋ฉฐ, ๊ทธ๋ํ์ ๋ํ ์์ธํ ์ค์ ์ ํ ์ ์์ต๋๋ค. ๋ํ, ๊ทธ๋ํ๋ ํ๋ฉด์ ๋ณด์ฌ์ค ์๋ ์๊ณ ์ด๋ฏธ์ง ํ์ผ๋ก ์ ์ฅํ ์๋ ์์ต๋๋ค.
Python Install - ํ์ด์ฌ ์ค์นํ๊ธฐ
-
- Python 3๊ฐ ์ค์น๊ฐ ๋์ด ์์ง ์์์๋์๋ง ์ค์น ํด์ค๋๋ค. ์ค์น๊ฐ ์ด๋ฏธ ๋์๋ ๋ถ๋ค์ Anaconda๋ก ์ค์น ํ๋๋๋ก ๋์ด ๊ฐ์๋ฉด ๋ฉ๋๋ค.
- ํ์ด์ฌ ์ต์ ๋ฒ์ ์ ์ธํฐ๋ท์์ ๋ค์ด๋ก๋ ํด์ค๋๋ค.
- https://www.python.org/downloads/
The official home of the Python Programming Language
www.python.org](https://www.python.org/downloads/)
Anaconda 3 ์ค์น
๋ฅ๋ฌ๋์ ๊ณต๋ถํ๊ณ ์ค์ต์ ํด๋ณด๊ธฐ ์ํด์๋ Anaconda๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ค์น ํด์ผ ํฉ๋๋ค.
- Anaconda๋ ๋ฐ์ดํฐ ๊ณผํ๊ณผ ๊ธฐ๊ณ ํ์ต์ ์ํ ํ์ด์ฌ ๋ฐ R ์ธ์ด์ ๋ฌด๋ฃ ์คํ์์ค ๋ฐฐํฌํ์ ๋๋ค. Anaconda๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ํธ๋ฆฌํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ์ฌ ๋ฐ์ดํฐ ๋ถ์, ๋จธ์ ๋ฌ๋, ๋ฅ๋ฌ๋ ๋ฑ์ ์์ ์ ํจ์จ์ ์ผ๋ก ์ํํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
- ์๋์ ์๋ ๋งํฌ์์ ๋ค์ด๋ก๋ ํ์๋ฉด ๋ฉ๋๋ค.
- https://www.anaconda.com/download
- [Free Download | Anaconda
Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com](https://www.anaconda.com/download)
Python Version ํ์ธ
Python์ ์ค์น ์๋ฃ ํ๋ค๋ฉด Version ํ์ธ์ ํด์ผํฉ๋๋ค. Terminal (cmd)์์
python --version
์ด๋ ๊ฒ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด, ํ์ฌ ์ค์น๋ Python์ Version์ด ์ด๋ ๊ฒ ์ถ๋ ฅ๋ฉ๋๋ค.
"Python 3.x.x" ์ด๋ ๊ฒ ๋จ๋ฉด, ํ์ด์ฌ์ด ์ ๋๋ก ์ค์น๋ ๊ฒ์ด๋ผ๊ณ ํ ์ ์์ด์.
$ python --version
Python 3.9.13
Python์ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ ๋ฐ ์ฐ์ฐ
์ฐ์ ์ฐ์ฐ
- Python์ ๊ธฐ๋ณธ์ ์ธ ์ฐ์ ์ฐ์ฐ์ ์ด๋ ๊ฒ ํ ์ ์์ต๋๋ค.
>> 10 - 2
8
>> 10 * 8 # " * " ๊ณฑ์
80
>> 7 / 5 # " / " ๋๋์
1.4
>> 9 ** 2 # " ** " ๊ฑฐ๋ญ์ ๊ณฑ
81
๋ณ์
- Python์์๋ a,x,y,z๋ฑ ์ํ๋ฒณ์ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ํฉ๋๋ค. ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๊ณ์ฐ ๋ฐ ๋ค๋ฅธ๊ฐ์ ์ ๋ ฅ ๋ฐ ๋์ ํ์ฌ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
>>> x = 7
>>> print(x) # x์ ๊ฐ์ ์ถ๋ ฅ
7
>>> x = 800 # ๋ณ์์ ๊ฐ์ ๋์
>>> print(x)
800
>>> y = 1.8 # y์ ๊ฐ ์ ์
>>> x * y
12.6
>>> type(x * y) # x * y ๊ฐ์ ์๋ฃํ ํ์
<class 'float'>
์๋ฃํ
- ๋ฐ์ดํฐ์ ์ฑ์ง์ ๋ํ๋ด๋ ํํ์ ๋๋ค.
- ์ ์(int), ์ค์(float), ๋ฌธ์์ด(str)๊ณผ ๊ฐ์ ํํ๊ฐ ์์ต๋๋ค.
- ๋ฐ์ดํฐ์ ์ฑ์ง์ ์๊ณ ์ถ์ผ๋ฉด Python์์์ type()ํจ์๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ์ ์๋ฃํ์ ์์ ์์ต๋๋ค.
>>> type(10.698)
<class 'float'>
>>> type(7)
<class 'int'>
>>> type("seoul station")
<class 'str'>
๋ฆฌ์คํธ
- ๋ค์ํ ๋ฐ์ดํฐ์ type์ ์ฐ์ฐํ๊ฒ ๋ด์์ ์์ต๋๋ค.
>>> x = [10, 20, 30, 40, 50] # ๋ฆฌ์คํธ ์์ฑ
>>> print(x) # ๋ฆฌ์คํธ ์ถ๋ ฅ
[10, 20, 30, 40, 50]
>>> x[0] # ๋ฆฌ์คํธ์ ์์ ์ฒซ๋ฒ์งธ ์์์ ์ ๊ทผ (0,1,2,3,4 ์์)
10
>>> x[-1] # ๋ฆฌ์คํธ์ ๋ค์ ์ฒซ๋ฒ์งธ ์์์ ์ ๊ทผ (-5,-4,-3,-2,-1 ์์)
50
>>> x[1] = 15 # ๋ฆฌ์คํธ์ ๋๋ฒ์งธ ์์์ ๊ฐ ๋์
>>> print(x)
[10, 15, 30, 40, 50]
- ์์์ ์ ๊ทผ์ x[0] ์ด๋ ๊ฒ ํฉ๋๋ค. "[ ]" ์์ ์๋ ์๋ฅผ ์ธ๋ฑ์ค๋ผ๊ณ ํ๋ฉฐ, 0๋ถํฐ ์์ํฉ๋๋ค.
- ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋ค์์ ๋ถํฐ ์ ๊ทผ ํ๊ณ ์ถ์ผ๋ฉด -1๋ถํฐ ๋ฆฌ์คํธ์ ๊ฐ์์ ํด๋นํ๋ ์๋งํผ ์ธ๋ฑ์ค๋ฅผ ์ ๋ ฅํ์ฌ ์ํ๋ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
์ฌ๋ผ์ด์ฑ
- Python ๋ฆฌ์คํธ ์์๋ Slicing์ด๋ผ๋ ๊ธฐ๋ฒ์ด ์์ต๋๋ค. ๋ฒ์๋ฅผ ์ง์ ํ์ฌ ์ํ๋ ๋ฒ์(๋ถ๋ถ)๋ด์ ๋ฆฌ์คํธ๋ฅผ ์ป์์ ์๋ ๊ธฐ๋ฒ์ ๋๋ค.
>>> print(x)
[10, 15, 30, 40, 50]
>>> x[0:3] # index์ 0~3 ๋ฒ์ ๋ด์ ์ ์ป๊ธฐ (3๋ฒ์งธ๋ ํฌํจX)
[10, 15, 30]
>>> x[2:] # index์ 2๋ถํฐ ๋๊น์ง ์ถ๋ ฅ
[30, 40, 50]
๋ฆฌ์คํธ ์กฐ์ ๋ฉ์๋
- ๋ฆฌ์คํธ๋ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ๋ค์ํ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
x = [10, 15, 30, 40, 50]
>>> x.append(60) # ๋ฆฌ์คํธ ๋์ 60๋ฅผ ์ถ๊ฐ
[10, 15, 30, 40, 50, 60]
>>> x.insert(0, 5) # 0๋ฒ ์ธ๋ฑ์ค์ 5์ ์ถ๊ฐ
[5, 10, 15, 30, 40, 50, 60]
>>> x.remove(5) # 5์ ์ ๊ฑฐ
[10, 15, 30, 40, 50, 60]
>>> x.pop() # ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ
[10, 15, 30, 40, 50]
๋ฆฌ์คํธ ๊ธธ์ด ํ์ธ & ์ ๋ ฌ
- len() ํจ์๋ฅผ ์ด์ฉํด ๋ฆฌ์คํธ์ ๊ธธ์ด(์์์ ๊ฐ์)๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
- sort() ๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ฆฌ์คํธ์ ์์๋ฅผ ์ ๋ ฌํ ์ ์์ต๋๋ค.
x = [10, 40, 30, 15, 50]
>>> print(len(x))
5
>>> x.sort()
>>> print(x)
[10, 15, 30, 40, 50]
๋์ ๋๋ฆฌ
- ํค(key)์ ๊ฐ(value) ์์ ์์๋ก ๊ฐ๋ ๋ฐ์ดํฐ ํ์ ์ด๊ณ , ์ฌ์ ์ฒ๋ผ ๋จ์ด์ ์๋ฏธ๋ฅผ ๊ฐ์ด ์ ์ฅํฉ๋๋ค. ์ค๊ดํธ({})๋ฅผ ์ด์ฉํ์ฌ ์์ฑํ๋ฉฐ, ํค์ ๊ฐ์ ์์ ์ฝ๋ก (:)์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
>>> bigbread = {'weight' : 60} # dictionary ์์ฑ
>>> bigbread['weight'] # element(์์)์ ์ ๊ทผ
60
>>> bigbread['ballspeed'] = 110 # new element ์ถ๊ฐ
>>> print(me)
{'weight: 60, 'ballspeed': 110}
Bool
- Python์ Bool์ด๋ผ๋ ์๋ฃํ์ด ์์ต๋๋ค. ์ด Bool ์๋ฃํ์ True(์ฐธ) & False(๊ฑฐ์ง), ๋ ๊ฐ์ค ํ๋๋ฅผ ์ทจํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ and, or, not ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
>>> hungry = True # ๋ฐฐ๊ณ ํ๋ค
>>> sleepy = False # ์กธ๋ฆฌ์ง ์๋ค
>>> type(hungry)
<class 'bool'>
>>> not hungry
False
>>> hungry and sleepy
False
>>> hungry or sleepy
True
IF๋ฌธ
- ์กฐ๊ฑด์ ๋ฐ๋ผ์ if / else ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
# ๊ธฐ๋ณธ if๋ฌธ
>>> num = 10
>>> if num > 5:
print("์ซ์๋ 5๋ณด๋ค ํฝ๋๋ค")
# if-else ๋ฌธ
>>> if num > 20:
print("์ซ์๋ 20๋ณด๋ค ํฝ๋๋ค")
>>> else:
print("์ซ์๋ 20๋ณด๋ค ํฌ์ง ์์ต๋๋ค")
# if-elif-else ๋ฌธ
>>> if num > 20:
print("์ซ์๋ 20๋ณด๋ค ํฝ๋๋ค")
>>> elif num == 20:
print("์ซ์๋ 20์
๋๋ค")
>>> else:
print("์ซ์๋ 20๋ณด๋ค ์์ต๋๋ค")
# ์ค์ฒฉ if๋ฌธ
>>> num = 12
>>> if num > 10:
print("์ซ์๋ 10๋ณด๋ค ํฝ๋๋ค")
if num > 20:
print("๊ทธ๋ฆฌ๊ณ ์ซ์๋ 20๋ณด๋ค ํฝ๋๋ค")
else:
print("ํ์ง๋ง ์ซ์๋ 20๋ณด๋ค ํฌ์ง ์์ต๋๋ค")
For๋ฌธ
- ์ ํ ๋ฒ์ ๋๋ ์ํ์ค(๋ฆฌ์คํธ, ํํ, ๋ฌธ์์ด ๋ฑ)๋ฅผ ์ํํ๋ฉด์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ฐ๋ณต (๋ฃจํ) ์ฒ๋ฆฌ์๋ for๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
# ๋ฒ์์ ๋ํ ์ํ
>>> for i in range(5):
print(i)
# ๋ฆฌ์คํธ์ ๋ํ ์ํ
>>> fruits = ["apple", "banana", "cherry"]
>>> for fruit in fruits:
print(fruit)
# ๋ฌธ์์ด์ ๋ํ ์ํ
>>> for letter in 'Python':
print(letter)
# ์ค์ฒฉ๋ for๋ฌธ
>>> for i in range(3):
for j in range(3):
print(i, j)
ํจ์
- ํน์ ์์ ์ ์ํํ๋ ์ฝ๋์ ์งํฉ์ ์๋ฏธํฉ๋๋ค.
# ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ์ด ์๋ ํจ์
>>> def say_hello():
print("์๋
ํ์ธ์")
# ํจ์ ํธ์ถ
>>> say_hello()
"์๋
ํ์ธ์"
# ๋งค๊ฐ๋ณ์๊ฐ ์๋ ํจ์
>>> def greet(name):
print(f"์๋
ํ์ธ์, {name}๋")
# ํจ์ ํธ์ถ
>>> greet("๋ฏผ์")
"์๋
ํ์ธ์, ๋ฏผ์๋"
# ๋ฐํ๊ฐ์ด ์๋ ํจ์
>>> def add_numbers(a, b):
return a + b
# ํจ์ ํธ์ถ
>>> result = add_numbers(5, 10)
print(result)
15
# ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๋งค๊ฐ๋ณ์
>>> def power(base, exponent=2):
return base ** exponent
# ํจ์ ํธ์ถ
>>> print(power(3)) # ์ถ๋ ฅ: 9 (3์ ์ ๊ณฑ)
>>> print(power(3, 3)) # ์ถ๋ ฅ: 27 (3์ 3์น)
ํด๋์ค (Class)
- Python์์๋ Class๋ผ๋ ๊ฒ์ ์ ์ ํ ์ ์๋๋ฐ, Class๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํด ๋๋ ์ค๊ฐ๋ ์ ๊ฐ๋ ์ผ๋ก ์๊ณ ์์ผ๋ฉด ๋ฉ๋๋ค.
- ๊ฐ๋ฐ์(์ฌ์ฉ์)๊ฐ ์ ์ํ๋๋๋ก ๋ฐ๋ผ์ ๋
์์ ์ธ ์๋ฃํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ฌ๊ธฐ์ ์ค๋ช ํ๋ ๊ฐ์ฒด๋ Class์ instance(์์ฑ, method(๋ฐฉ๋ฒ))์ ์๋ฏธํฉ๋๋ค.
# ํด๋์ค ์ ์ ์์
class Car:
def __init__(self, color, brand): # ์์ฑ์
self.color = color
self.brand = brand
def drive(self): # Method 1
print(f"{self.brand} car is driving")
def stop(self): # Method 2
print(f"{self.brand} car has stopped")
# ๊ฐ์ฒด ์์ฑ
my_car = Car("Red", "Hyundai")
your_car = Car("Blue", "KIA")
# ๊ฐ์ฒด์ ์ํ (์์ฑ)
print(my_car.color) # ์ถ๋ ฅ: Red
# ๊ฐ์ฒด์ ํ๋ (๋ฉ์๋)
my_car.drive() # ์ถ๋ ฅ: Hyundai car is driving
- Class๋ฅผ ์ ์ํ ๋, __init__ ์ด๋ผ๋ Method๊ฐ ์๋๋ฐ, ๋ณดํต class๋ฅผ ์ด๊ธฐํ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ํฉ๋๋ค.
- ์ด ์ด๊ธฐํ์ฉ Method๋ฅผ ๋ณดํต ์์ฑ์๋ผ๊ณ ํ๊ณ , ๋ณดํต Class์ instance๋ฅผ ๋ง๋ค๋, ํ๋ฒ๋ง ๋ถ๋ฆฝ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ , Python์์์ Method๋ก ์ฒซ๋ฒ์งธ Instance๋ก ๋ํ๋ด๋ ค๋ฉด self๋ก ๋ช ์ํ๋๊ฒ์ด ๋ณดํต์ ๋๋ค.
๋ฐ์ํ
'๐ฅ๏ธ Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DL] Neural Networks (์ ๊ฒฝ๋ง) (0) | 2024.03.17 |
---|---|
[DL] Perceptron (ํผ์ ํธ๋ก ) (0) | 2024.03.12 |
[DL] Matplotlib ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐํ์ฌ ์์๋ณด๊ธฐ (0) | 2024.03.05 |
[DL] Gradient Vanishing, Exploding - ๊ธฐ์ธ๊ธฐ ์์ค, ํญํ (0) | 2024.01.26 |
[DL] Numpy & ํ๋ ฌ์ ๋ฐํ์ฌ ์์๋ณด๊ธฐ (0) | 2023.09.03 |