- Today
- Total
hye-log
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 02 ๋ณธ๋ฌธ
๐ ๊ฐ๋ณํ์ต
[2-2] Function & Console IO
1. Function
1) ์ด๋ค ์ผ์ ์ํํ๋ ์ฝ๋์ ๋ฉ์ด๋ฆฌ
2) ์บก์ํ : ์ธํฐํ์ด์ค๋ง ์๋ฉด ํ์ธ์ ์ฝ๋ ์ฌ์ฉ
# define function
def function_name(parameter #1, ... ,):
statements #1
statements #2
return return_value
function_name(argument)
2. Console I/O
1) input() : ์ฝ์์ฐฝ์์ ๋ฌธ์์ด์ ์ ๋ ฅ ๋ฐ๋ ํจ์. string์ผ๋ก ๋ฐ์ผ๋ฏ๋ก ํ์ํ๋ฉด ํ๋ณํ ํ๊ธฐ
2) print() : ์ฝ์์ฐฝ์ ์ถ๋ ฅํ๋ ํจ์. ํ์ ์ด ๋ค๋ฅธ ๊ฐ์ ์ฝค๋ง(,)๋ก ์ฐ๊ฒฐ ๊ฐ๋ฅ
3. print formatting
# % string : "%datatype" % (variable)
print("%d %d %d" % (1, 2, 3))
>> 1, 2, 3
print("Art: %5d, Price per Unit: %8.2f" % (453, 59.058))
>> Art: 453, Price per Unit: 59.05
# format function
print("{} {} {}".format("a", "b", "c"))
>> a b c
name = "Lee Hye Jin"
age = 2n
print("My name is {0} and {1} years old".format(name, age))
>> My name is Lee Hye Jin and 2n years old
print("My name is {0:<15s} and {1:>5s} years old".format(name,age))
>> My name is Lee Hye Jin and 2n years old
# fstring
name = "Lee Hye Jin"
age = 2n
print(f"Hello, {name}. You are {age}")
>> Hello, Lee Hye Jin. You are 2n
print(f"{name:*<20}") # ์ผ์ชฝ ์ ๋ ฌ
>> Lee Hye Jin************
print((f"{name:*>20}") # ์ค๋ฅธ์ชฝ ์ ๋ ฌ
>> ************Lee Hye Jin
print((f"{name:*^20}") # ๊ฐ์ด๋ฐ ์ ๋ ฌ
>> ******Lee Hye Jin******
[2-3] Conditionals & Loops
1. condition(์กฐ๊ฑด๋ฌธ)
1) ์กฐ๊ฑด์ ๋ฐ๋ผ ํน์ ํ ๋์์ ํ๊ฒ ํ๋ ๋ช ๋ น์ด
2) ์กฐ๊ฑด์ ๋ํ๋ด๋ ๊ธฐ์ค, ์คํํด์ผ ํ ๋ช ๋ น
3) if, else, elif
# define if-else condition
if condition:
statement1
else:
statement2
4) ๋ ผ๋ฆฌ ์ฐ์ฐ์ : and, or, not
5) ์ผํญ ์ฐ์ฐ์ : ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฐธ์ผ ๊ฒฝ์ฐ์ ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ ์ค์ ํํ
value = 12
is_even = True if value % 2 == 0 else False
print(is_even)
>> True
2. loop(๋ฐ๋ณต๋ฌธ)
1) ์ ํด์ง ๋์์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ๊ฒ ํ๋ ๋ช ๋ น๋ฌธ
2) ๋ฐ๋ณต ์์ ์กฐ๊ฑด, ์ข ๋ฃ ์กฐ๊ฑด, ์ํ ๋ช ๋ น
3) for
for looper in range(0, 5): # range(0, 5) == range(5) == [0, 1, 2, 3, 4]
print("Hello")
>> Hello
>> Hello
>> Hello
>> Hello
>> Hello
4) range์ ์์ฉ
for i in range(1, 10, 2):
print(i)
>> 1
>> 3
>> 5
>> 7
>> 9
for i in range(1, 5, -1):
print(i)
>> 4
>> 3
>> 2
>> 1
5) while
i = 1
while i < 10:
print(i)
i += 1
6) break, continue
# break
for i in range(10):
if i == 5: # i๊ฐ 5๊ฐ ๋๋ฉด ๋ฐ๋ณต ์ข
๋ฃ
break
print(i)
# continue
for i in range(10):
if i == 5: # i๊ฐ 5๊ฐ ๋๋ฉด i๋ฅผ ์ถ๋ ฅํ์ง ์์(skip)
continue
print(i)
3. Debugging(๋๋ฒ๊น )
1) ์ฝ๋์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ์ฌ ์์ ํ๋ ๊ณผ์
2) ๋ฌธ๋ฒ์ ์๋ฌ - ๋ค์ฌ์ฐ๊ธฐ, ์คํ์, ๋์๋ฌธ์ ๊ตฌ๋ถ
3) ๋ ผ๋ฆฌ์ ์๋ฌ - ์ค๊ฐ ์ค๊ฐ ํ๋ฆฐํธ ๋ฌธ ์ฐ์ด์ ํ์ธ
[2-4] String & advanced function
1. string
1) ์ํ์ค ์๋ฃํ์ผ๋ก ๋ฌธ์ํ data๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
2) ์ธ๋ฑ์ฑ(indexing) : ๊ฐ๋ณ ์ฃผ์๋ฅผ ์ฌ์ฉํด ํ ๋น๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์
3) ์ฌ๋ผ์ด์ฑ(slicing) : ๋ฌธ์์ด ์ฃผ์๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ถ๊ฐ์ ๋ฐํ
4) ๋ค์ํ ๋ฌธ์์ด์ ํํ
# ์์๋ฐ์ดํ์ ์ฌ์ฉ : It's OK
print('It\'s OK')
print("It's OK")
# ๋ ์ค ์ด์ ์์ฑ : \n ๋๋ ๋ฐ์ดํ ์ธ ๋ฒ ์ฐ์ ์ฌ์ฉ
print("It's OK \n I'm Happy"
print("""It's OK
I'm Happy""")
5) raw string : ๋ฌธ์ ๊ทธ๋๋ก ์ธ์
raw_string = r'Hello \n Hyejin'
>> Hello \n Hyejin
2. call by object reference
1) ํจ์ ํธ์ถ ๋ฐฉ์
- ๊ฐ์ ์ํ ํธ์ถ(Call by Value) : ํจ์์ ์ธ์๋ฅผ ๋๊ธธ ๋ ๊ฐ๋ง ๋๊น
- ์ฐธ์กฐ์ ์ํ ํธ์ถ(Call by Reference) : ํจ์์ ์ธ์๋ฅผ ๋๊ธธ ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋๊น(์ธ์ ๊ฐ ๋ณ๊ฒฝ ์ ํธ์ถ ๊ฐ๋ ๋ณ๊ฒฝ)
- ๊ฐ์ฒด ์ฐธ์กฐ์ ์ํ ํธ์ถ(Call by Object Reference) : ๊ฐ์ฒด์ ์ฃผ์๊ฐ ํจ์๋ก ์ ๋ฌ๋๋ ๋ฐฉ์(ํ์ด์ฌ)
def spam(eggs):
eggs.append(1) # eggs = ham / eggs = [0, 1] / ham = [0, 1]
eggs = [2, 3] # eggs = [2, 3] / ham = [0, 1]
ham = [0] # ham = [0]
spam(ham)
print(ham) # ham = [0, 1]
3. scoping rule(๋ณ์์ ๋ฒ์)
- ์ง์ญ ๋ณ์(local variable) : ํจ์ ๋ด์์๋ง ์ฌ์ฉ
- ์ ์ญ ๋ณ์(global variable) : ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ์ฌ์ฉ
def calculate(x, y):
total = x + y
print('In function') # a = 5, b = 7, a+b = 12, total = 12
return total
a = 5
b = 7
total = 0
print('In program - 1') # a = 5, b = 7, a+b = 12
sum = calculate(a, b)
print('After calculation') # total = 0, sum = 12
4. recursive function(์ฌ๊ท ํจ์)
1) ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์
2) ์ฌ๊ท ์ข ๋ฃ ์กฐ๊ฑด ์กด์ฌ, ์ข ๋ฃ ์กฐ๊ฑด๊น์ง ํจ์ ํธ์ถ ๋ฐ๋ณต
def factorial(n):
if n == 1:
return 1
else:
return n + factorial(n-1)
5. function docstring
1) ํ์ด์ฌ ํจ์์ ๋ํ ์์ธ์คํ์ ์ฌ์ ์ ์์ฑ
2) ์ธ ๊ฐ์ ๋ฐ์ดํ๋ก ํจ์๋ช ์๋์ ์์ฑ
def add_binary(a, b):
"""
Returns the sum of two decimal numbers in binary digits
Parameters:
a(int): A decimal integer
b(int) : Another decimal integer
Returns:
binary_sum(str) : Binary string of the sum of a and b
"""
binary_sum = bin(a+b)[2:]
return binary_sum
6. ํจ์ ์์ฑ ๊ฐ์ด๋
1) ๊ฐ๋ฅํ ์งง๊ฒ
2) ํจ์ ์ด๋ฆ์ ํจ์์ ์ญํ , ์๋ ๋๋ฌ๋๊ฒ
3) ํ๋์ ํจ์์ ํ๋์ ์ญํ
4) ์ธ์๋ก ๋ฐ๊พผ ๊ฐ ์์ฒด๋ฅผ ๋ฐ๊พธ์ง ๋ง ๊ฒ
5) ๊ณตํต์ ์ผ๋ก ์ฌ์ฉ๋๋ ์ฝ๋, ๋ณต์กํ ์์, ๋ณต์กํ ์กฐ๊ฑด์ ํจ์๋ก
+ black ๋ชจ๋์ ์ฌ์ฉํ์ฌ PEP8 like ์์ค์ ์ค์
์ค์น : conda install black
ํ์ธ : flake8 codename.py
์ฌ์ฉ : black codename.py
* ์ข์ ํ๋ก๊ทธ๋๋จธ๋ ์ฌ๋์ด ์ดํดํ ์ ์๋ ์ฝ๋๋ฅผ ์ง ๋ค. -๋งํด ํ์ธ๋ฌ
[1] ๋ฒกํฐ๊ฐ ๋ญ์์
1. ๋ฒกํฐ
1) ์ซ์๋ฅผ ์์๋ก ๊ฐ์ง๋ ๋ฆฌ์คํธ(list) ๋๋ ๋ฐฐ์ด(array)
x = [1, 7, 2]
x = np.array([1, 7, 2])
2) n์ฐจ์ ๊ณต๊ฐ์์์ ํ ์
3) ์์ ์ผ๋ก๋ถํฐ ์๋์ ์์น๋ฅผ ํํ
4) ์ซ์๋ฅผ ๊ณฑํด์ฃผ๋ฉด ๊ธธ์ด๊ฐ ๋ณํจ
- 1๋ณด๋ค ํฌ๋ฉด ๊ธธ์ด๊ฐ ๋์ด๋จ
- 1๋ณด๋ค ์์ผ๋ฉด ๊ธธ์ด๊ฐ ์ค์ด๋ฆ
- 0๋ณด๋ค ์์ผ๋ฉด ๋ฐ๋ ๋ฐฉํฅ์ด ๋จ
5) ๋ฒกํฐ๋ผ๋ฆฌ ๊ฐ์ ๋ชจ์์ ๊ฐ์ง๋ฉด ๋ง์ , ๋บ์ , ์ฑ๋ถ๊ณฑ์ ๊ณ์ฐํ ์ ์์
2. ๋ฒกํฐ์ ๋ง์
1) ๋ ๋ฒกํฐ์ ๋ง์ ์ ๋ค๋ฅธ ๋ฒกํฐ๋ก๋ถํฐ ์๋์ ์์น์ด๋์ ํํ ์) y + x
2) ๋ ๋ฒกํฐ์ ๋บ์ ์ ๋ค๋ฅธ ๋ฒกํฐ๋ก๋ถํฐ ์๋์ ์์น์ด๋์ ํํ ์) y - x
3. ๋ฒกํฐ์ ๋ ธ๋ฆ
1) ์์ ์์๋ถํฐ์ ๊ฑฐ๋ฆฌ
2) L1 ๋ ธ๋ฆ : ๊ฐ ์ฑ๋ถ์ ๋ณํ๋์ ์ ๋๊ฐ์ ๋ชจ๋ ๋ํจ
3) L2 ๋ ธ๋ฆ : ํผํ๊ณ ๋ผ์ค ์ ๋ฆฌ๋ฅผ ์ด์ฉํ ์ ํด๋ฆฌ๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐ
![](https://blog.kakaocdn.net/dn/bebQX5/btrMC07Hqoh/bwyGaDSpZNsRrDOATqRBok/img.png)
def L1_norm(x):
x_norm = np.sum(np.abs(x))
return x_norm
def L2_norm(x):
x_norm = np.sqrt(np.sum(x*x))
return x_norm
4) ๋ ธ๋ฆ์ ์ข ๋ฅ์ ๋ฐ๋ฅธ ๊ธฐํํ์ ์ฑ์ง
- L1 ๋ ธ๋ฆ ์์ ์ : ๋ง๋ฆ๋ชจ ๋ชจ์ ์) Robust ํ์ต, Lasso ํ๊ท
- L2 ๋ ธ๋ฆ ์์ ์ : ์ ๋ชจ์ ์) Laplace ๊ทผ์ฌ, Ridge ํ๊ท
4. ๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ์ ๊ฐ๋
1) ๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฑฐ๋ฆฌ : ๋ฒกํฐ์ ๋บ์ ์ ์ด์ฉ (์์๋ ์๊ด ์์)
2) ๋ ๋ฒกํฐ ์ฌ์ด์ ๊ฐ๋ : ์ 2 ์ฝ์ฌ์ธ ๋ฒ์น -> ๋ด์ ์ด์ฉ (L2 ๋ ธ๋ฆ๋ง ๊ฐ๋ฅ)
def angle(x, y):
v = np.inner(x, y) / (L2_norm(x) * L2_norm(y))
theta = np.arccos(v)
return theta
5. ๋ด์
1) Proj(x) = ||x||cosθ
2) ์ ์ฌ์์ ๊ธธ์ด๋ฅผ ๋ฒกํฐ y์ ๊ธธ์ด ||y||๋งํผ ์กฐ์ ํ ๊ฐ
๐ ์ค๋์ ํ๊ณ
์ค์ ์ ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ์ ์์์ผ๋ก ๋ ์๊ฐ ์ ๋ ์ค ์ผ๊ณ ๊ณต๋ถํ๋ค. ์นด๋ฉ๋ผ ์ผ ์ํ๋ก ๋น๋๋ฉด ์คํฐ๋๋ ์ฒ์์ด๋ผ ๋ญ๊ฐ ๊ต์ฅํ ์ด์.. ์ ์ฌ์ ๊ทผ์ฒ์ ํฌ์ฅํ๋ฌ ๊ฑธ์ด๊ฐ๋ค์๋ค. ์ ์ฌ์๊ฐ 1์๊ฐ์ ๋ถ์กฑ..ํด..ใ -ใ ์คํ์๋ ๊ทธ๋ผ์ด๋ ๋ฃฐ๋ก ์ค์์ ๊ณต๋ถํ๊ธฐ๋ก ํด์ ์ด์ฌํ ๊ฐ์ ๋ค์๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ์๋ ๋ค์ด๋ ๋ค์ด๋ ์ค์ด๋ค์ง๊ฐ ์๋๋ค.. ์ด๋ฒ์ฃผ์ ๋ค ๋ค์ ์ ์๊ฒ ์ง? ๊ธฐ๋ณธ ๊ณผ์ ๋ฌธ์ 3๋ฌธ์ ํด๊ฒฐํ๋๋ฐ ๋ง์ง๋ง ๋ฌธ์ ์์ ๊ณ์ ์ค๋ฅ๋์ ๊ณ ์น๋ ๋ฐ ์ค๋ ๊ฑธ๋ ธ๋ค. ์ค๋ ํผ์ด์ธ์ ๋์๋ ๊ฐ๋จํ๊ฒ ์ค๋ชฐํ ํฌ๋ก ์์ํด์ ์ด๊ฒ์ ๊ฒ ์ด์ผ๊ธฐ ๋๋๋ ์๊ฐ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๋ค! ๋ด์ผ ์ค์ ์๋ ํผ์ด์ธ์ ์ดํผ์์ต๋๋ค ํ์ฌ๊ฐ ์๋๋ฐ ๋ค๋ฅธ ์บ ํผ๋ถ๋ค์ ์ด๋ป๊ฒ ์ํํ๊ณ ์๋์ง ๋ฒ์จ ๊ถ๊ธํ๋ค! ๋ด์ผ๋ ๊ฐ์ ์ง์คํด์ ๋ฃ๊ณ , ์ฌํ ๊ณผ์ ๊น์ง ๋์ ํด๋ณด๊ธฐ๐โ๏ธ
'Boostcourse > AI Tech 4๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์บ ํ AI Tech]WEEK 02_DAY 06 (1) | 2022.09.26 |
---|---|
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 05 (1) | 2022.09.23 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 04 (1) | 2022.09.22 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 03 (1) | 2022.09.21 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 01_DAY 01 (1) | 2022.09.20 |