야나두 딥러닝에서 딥러닝 원리에 필요한 알고리즘만 모아 놓았다. 리스트, if, for 함수, 클래스가 많이 쓰인다. 다른 것도 있지만, 이번에 교육 할 때는 필요한 원리만 이야기 하는 것이 좋을 것 같다. 왜냐하면, 기초적인 개념을 많이 아는 것도 좋지만, 정보가 너무 많으면 수강생들이 많이 헤깔리기 때문이다.
보다 기초적인 개념을 알려며, 백문이 불여일견 인 것 처럼 백문이 불여일타 가 되어야 한다. 즉 기초적인 코딩도 훈련의 일종이다. 하긴 훈련을 아무리 많이 하여도 실전을 하지 않으면, 나중에 잊어 버린다. 이번에는 누가 봐도 잘 알 수 있게 끔 가능 한한 쉽게 하려고 노력 하였다.
파이썬 기초 |
리스트
리스트는 자료형 데이터 이고 항목을 넣고 빼거나 수정 할 수 있다. 아래는 "농협", "국민", "신한", "우리", "하나", "기업" 은행 지점 수 이고, 리스트로 지점수와 은행 명을 저장 하였다.
list = [1149, 1055, 872, 880, 765, 612]
"농협"의 지점수를 index를 이용해서 본다. 파이썬은 R 과 다르게 처음 시작 index는 0으로 시작한다.
list[0]
1149
"국민", "신한" 은행의 지점수를 보자. 아래와 같은 명령어를 쳤을때, "국민"은행만 나온다. Index를 1:3 까지 해야 2개은행의 지점수가 나온다.
list[1:2]
[1055]
list[1:3]
[1055, 872]
"기업"은행의 은행 지점수를 보려면, 아래와 같이 마지막 index를 넣어야 한다. index 요소가 6개인데, 0부터 시작하므로, 마지막에 5로 넣어야 한다.
list[5]
612
리스트 원소의 갯수 세기
len(list)
6
sum(list)
5333
데이터 프레임
데이터 프레임은 행과 열로 이루어진 데이터 구조로 엑셀에서 보는 데이터 구조와 비슷 하다. 사람들이 보았을때 가장 익숙한 구조를 보인다.
은행명은 리스트 형태로 하고, 지점수는 앞에 list 변수 만들었으므로 그대로 활용해도 된다.
import pandas as pd
df = pd.DataFrame( {'은행명': ['농협', '국민', '신한', '우리', '하나', '기업'],
'지점수': list}
)
df
df['지점수'][0]
1149
데이터 프레임도 일반 list와 같이 데이터 요소를 0부터 시작 해야 한다.
데이터 프레임의 구조를 보면 아래와 같이 6행 2열로 되어 있다.
df.shape
(6, 2)
for 문
코드를 반복 하면서 실행 하는 것으로, 딥러닝 경사 하강법을 이용하여, 최소가 되는 손실 값을 찾을때 루프문을 이용 한다. print 문에서 중괄호 {} 는 값을 받는 것이다. 값을 받을때는 .format을 이용한다.
# 은행명
name = ['농협', '국민', '신한', '우리', '하나', '기업']
# 지점갯수
list = [1149, 1055, 872, 880, 765, 612]
for i in range(len(name)):
n_name = name[i]
cnt = list[i]
print('{}은행의 지점수는 {}개 입니다.'.format(n_name, cnt))
농협은행의 지점수는 1149개 입니다.
국민은행의 지점수는 1055개 입니다.
신한은행의 지점수는 872개 입니다.
우리은행의 지점수는 880개 입니다.
하나은행의 지점수는 765개 입니다.
기업은행의 지점수는 612개 입니다.
for i in range(2, 10):
for j in (range(1,10)):
print(i*j, end =" ")
print('')
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
if 문
if 문은 조건식에 따라 실행 여부가 결정 되는 명령어 이다. 아래는 은행 지점수 800개 이상인 은행만 보여 준다.
for i in range(len(name)):
n_name = name[i]
cnt = list[i]
# 은행 지점수 조건문 걸기
if cnt >= 800:
print('{}은행의 지점수는 {}개 입니다.'.format(n_name, cnt))
농협은행의 지점수는 1149개 입니다.
국민은행의 지점수는 1055개 입니다.
신한은행의 지점수는 872개 입니다.
우리은행의 지점수는 880개 입니다.
함수
파이썬에서는 평균을 나타내는 함수가 없다.def를 이용하여, 만들수 있다.
def mean(x):
result = sum(x)/len(x) # 지점 갯수 합 나누기 갯수
return result
# 함수 호출 하기 은행 지점수 평균
mean(list)
888.8333333333334
클래스
위키백과의 클래스의 정의를 보면 아래와 같이 표현한다.
클래스(class)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀이다. 객체를 정의 하기 위한 상태(멤버변수)와 메서드(함수)로 구성된다.[1
템플릿을 사용하면 객체를 클래스로 정의할 때 멤버의 자료형을 미리 정하지 않고 객체를 사용할 때 결정할 수 있다. 이를 통해 클래스나 멤버의 중복 정의를 하지 않아도 되므로 효율적으로 코딩이 가능하다.
클래스는 아래 예제가 좋은 것 같아서 한다. 그런데, 클래스에서 함수를 만들때, 반드시 self를 만드는데, self 가 없으면, 클래스 내부의 함수인지, 클래스 밖에 있는지 알수 없다. 아래는 체질량 지수 계산 하고, 그 결과를 보여주는 알고리즘이다.
bmi 체질량 지수 |
class body_mass:
def __init__(self):
self.bmi_r = None
# bmi 체질량 지수 계산
def bmi(self, kg, cm):
bmi = kg/(cm/100)**2
return bmi
# bmi 체질량 지수 판정
def decision(self, bmi_r):
if bmi_r < 20:
print("bmi 지수는 {} 미만이므로 정상입니다.".format(bmi_r))
elif bmi_r < 24 :
print("bmi 지수는 {}이므로 정상입니다." .format(bmi_r))
elif bmi_r <= 29:
print("bmi 지수는 {}이므로 과체중입니다." .format(bmi_r))
elif bmi_r > 29 :
print("bmi 지수는 {} 이상 이므로 비만입니다." .format(bmi_r))
# 클래스 인스탄스를 객체 생성
class_bmi = body_mass()
# 키를 입력 한다.
height = 167
# 몸무게를 입력한다.
weight = 77
클래스 인스턴스에 메서드(함수)를 호출 한다.
bmi = class_bmi.bmi(weight,height)
bmi
27.60945175517229
class_bmi.decision(bmi_r)
bmi 지수는 27.60945175517229이므로 과체중입니다.
여기 까지 딥러닝 알고리즘에 꼭 필요한 파이썬 기초 부분을 알아 보았다.
댓글 없음:
댓글 쓰기