인공지능 개발을 위한 파이썬 첫걸음 : https://www.youtube.com/watch?v=yxO8b4ypVvw&list=PLa9dKeCAyr7iXpGqNHKXmeqB6LLo7ieS9&index=17
파이썬 사용하는 이유: 비교적 쉬운 문법이기에 초보자가 접근하기 좋음. 수많은 라이브러리 보유. 인터프리터 언어, 즉 명령어 한 줄씩 번역하는 방법을 사용하는 언어로 작성한 프로그램을 바로바로 확인 가능
구글 colab : https://colab.research.google.com/ : 웹에서 파이썬 가능. 구글 드라이브에 코드 저장.
변수(variable) : 변할 수 있는 수. 기본으로 사용
a = 2 b = 10 c = a + b #12 first = "안녕" second = "하세요" hello = first + second #안녕하세요
type(hello) #str type(c) #int d = 2.5 type(d) #float - 인공지능 대부분 실수형
string2ini = "10" type(string2ini) #str int(string2ini) type(int(string2ini)) #int float(string2ini) type(float(string2ini)) #float
여러 데이터를 다루는 인공지능에서 배열은 반드시 알아야 하는 개념
변수는 하나의 값을 넣을 수 있지만, 배열에서는 여러 값 넣을 수 있으며 특정 공간 값을 손쉽게 가져올 수 있음
list = [1, 3, 5, 7, 9, 11, 13, 15]
인공 신경망을 만들때 데이터 개수는 눈으로 세기 힘들 정도로 많기에 배열 길이 살펴볼 수 있는 방법 알아야함
len() 함수: 배열 원소의 길이(length)를 알려주는 함수
len(list) #8
배열 만든 후 뽑아서 사용하거나 그 값을 바꿀 수도 있음
list[0] #0 list[-1] #15
데이터를 나눌 때 슬라이싱 사용. 빅데이터 다룰 때 유용함
list[2:6] – 3번째 원소(인덱스 번호2) 부터 6번째 원소(인덱스 번호 5) 앞까지 가져옴
list = [1, 3, 5, 7, 9, 11, 13, 15] list[0] #1 list[2:6] #[5, 7, 9, 11] list[3:] #[7, 9, 11, 13, 15] list[:5] #[1, 3, 5, 7, 9] list[:-1] #[1, 3, 5, 7, 9, 11, 13]
pip install numpy # 넘파이 설치 import numpy # numpy 이름의 라이브러리 가져오겠다는 의미 import numpy as np # numpy 라이브러리 가져오며, 이를 호출 할 때 np라고 부르겠다는 의미
넘파이 array() 함수를 사용하면 = 배열 생성 가능
narray = np.array([1, 3, 5, 7, 9]) # array([1, 3, 5, 7, 9])
넘파이 배열 모습 살펴보기 : 배열의 형태가 인공 신경망 설계시 중요함. (ex> 형태 1×4 or 2×2 or 4×1 …)
Shape : 배열 형태 살펴볼 때 사용하는 명령어 ex>배열명.shape
narray = np.array([1, 3, 5, 7, 9]) narray.shape # (5,) - narray 배열에 5개 원소가 있다
narray = np.array([1, 3, 5, 7, 9]) # 1차원 배열 darray = np.array([[1, 3, 5, 7, 9],[2, 4, 6, 8, 10]]) # 2차원 배열 darray.shape # (2, 5) - 행렬의 가로가 2줄, 세로가 5줄임
배열명.reshape(5,2) : 배열의 형태를 5개 행과 2개 열로 바꾸겠다는 의미
배열명.reshape(10,) : 배열을 1차원 배열로 바꾸겠다는 의미
d52 = darray.reshape(5,2) # array([[ 1, 3], [ 5, 7], [ 9, 2], [ 4, 6], [ 8, 10]]) d10 = darray.reshape(10,) # array([ 1, 3, 5, 7, 9, 2, 4, 6, 8, 10])
zeros() 함수 : 0으로 이루어진 넘파이 배열 만들기
ones() 함수 : 모든 원소가 1인 행열 만들기
rand() : 0~1 사이 무작위 수로 만들어진 배열 만들기. 균일한 확률 분포로 생성
normal() : 정규분포(가우시안 분포)로 값 생성. 이때 평균과 표준편차(평균에서 얼마나 멀리 떨어진건지) 정해줄 수 있음
randint() : 특정값 사이 무작위 정수 값 생성
seed() : 랜덤함 값을 만드는 근본으로 기준을 정해주면 같은 수가 나옴
zero = np.zeros((2,5)) # 중간에 안적으면 float로 만듬(0.) / 정수형으로 하고 싶으면 int 적기 # array([[0., 0., 0., 0., 0.], [0., 0., 0., 0., 0.]]) one = np.ones((2,5)) # array([[1., 1., 1., 1., 1.], [1., 1., 1., 1., 1.]])
r = np.random.rand(3) # [0.45575788 0.26119262 0.58587353] import matplotlib.pyplot as plt # 그래프 그리기 위해 matplotlib 라이브 사용 r1000 = np.random.rand(1000) # 랜덤값 1000개 만들기 plt.hist(r1000) # 값을 히스토그램(일종의 막대그래프)로 표시 plt.grid() # 격자 무늬로 표시
rn = np.random.normal(0, 1, 3) # array([ 1.86774951, -0.32661058, -1.20004091]) rn1000 = np.random.normal(0, 1, 1000) # 정규 분포 값을 가지는 랜덤 값. 0 ~ 1사이에 1000개 생성 plt.hist(rn1000) plt.grid() # 생성 값이 0에 몰려 있어 - 정규 분포에 해당되는 걸 볼 수 있음
ni = np.random.randint(1, 100, 5) # 1~ 100중 5개를 만들겠다 # array([51, 4, 53, 9, 79])
print(np.random.rand(3)) # [0.50718305 0.81238353 0.09676265] - 랜덤으로 바뀜 print(np.random.rand(3)) # [0.78966367 0.19877442 0.96052581] np.random.seed(0) # seed() 함수에 특정 숫자를 넣어 기준 정함 print(np.random.rand(3)) # [0.5488135 0.71518937 0.60276338] print(np.random.rand(3)) # [0.5488135 0.71518937 0.60276338] - 값이 같아짐 np.random.seed(1) # seed에 1넣으면 print(np.random.rand(3)) # [4.17022005e-01 7.20324493e-01 1.14374817e-04] print(np.random.rand(3)) # [4.17022005e-01 7.20324493e-01 1.14374817e-04]
몇 번 반복 할 것인가? 배열의 원소 수 만큼 반복 진행
five = [1, 2, 3, 4, 5] len(five) # 5 - 원소개수
five = [1, 2, 3, 4, 5] for i in five: print(i, "설거지 끝") # 1 설거지 끝 2 설거지 끝 3 설거지 끝 4 설거지 끝 5 설거지 끝
range(시작 숫자, 끝 숫자, 건너뛰기) 함수는 특정 구간의 숫자를 만들어 주는 함수
rten = range(10) # 10개의 숫자를 만들기 range(0, 10) # range(0, 10) list(rten) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] five = range(1, 6, 1) list(five) # [1, 2, 3, 4, 5] nine = range(9, -1, -1) list(nine) # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] for i in range(1, 6): print(i, '번째 설거지 끝') # 1 번째 설거지 끝 2 번째 설거지 끝 3 번째 설거지 끝 4 번째 설거지 끝 5 번째 설거지 끝
num = 15 if num >= 10: print("10보다 큽니다.") num2 = 10 if num2 % 2 == 0: print("짝수") else: print("홀수")
특정한 처리 절차를 형식화해서 만들어 놓는 것
매개변수 : 입력하는 값 – 전달 인자
def number_check(num): if num % 2 == 0: print('짝수 입니다.') else: print('홀수 입니다.') number_check(9)
[모두의 인공지능 with 파이썬] 첫째마당. 인공지능 개념 이해하기
[모두의 인공지능 with 파이썬] 둘째마당. 딥러닝 이해하기
[모두의 인공지능 with 파이썬] 셋째마당 인공지능 개발을 위한 파이썬 첫걸음
[모두의 인공지능 with 파이썬] 넷째마당 딥러닝 프로그래밍 시작하기 1
[모두의 인공지능 with 파이썬] 넷째마당 딥러닝 프로그래밍 시작하기 2 – 숫자 인식 인공지능 만들기