me

[모두의 인공지능 with 파이썬] 셋째마당. 인공지능 개발을 위한 파이썬 첫걸음
2023.11.09 / , ,

인공지능 개발을 위한 파이썬 첫걸음 : https://www.youtube.com/watch?v=yxO8b4ypVvw&list=PLa9dKeCAyr7iXpGqNHKXmeqB6LLo7ieS9&index=17


UNIT 09 인공지능 개발의 기초, 파이썬과 코랩

파이썬이란 무엇인가요?

파이썬 사용하는 이유: 비교적 쉬운 문법이기에 초보자가 접근하기 좋음. 수많은 라이브러리 보유. 인터프리터 언어, 즉 명령어 한 줄씩 번역하는 방법을 사용하는 언어로 작성한 프로그램을 바로바로 확인 가능

구글 colab : https://colab.research.google.com/ : 웹에서 파이썬 가능. 구글 드라이브에 코드 저장.


UNIT 10 파이썬 프로그래밍 시작, 천리길도 변수부터

변수를 사용해서 숫자 더하기 프로그래밍하기

변수(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

UNIT 11 인공지능 파이썬 코딩의 주춧돌 배열

배열 만들기 – […]

여러 데이터를 다루는 인공지능에서 배열은 반드시 알아야 하는 개념

변수는 하나의 값을 넣을 수 있지만, 배열에서는 여러 값 넣을 수 있으며 특정 공간 값을 손쉽게 가져올 수 있음

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]

UNIT 12 인공지능을 위한 배열, 넘파이

넘파이 설치하기 + 불러오기

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개 원소가 있다

넘파이 2차원 배열 만들기

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]

UNIT 13 인공지능을 위한 반복문

배열과 반복문(for문)

몇 번 반복 할 것인가? 배열의 원소 수 만큼 반복 진행

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() 함수 살펴보기

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 번째 설거지 끝

UNIT 14 인공지능을 위한 조건문

if문 살펴보기 / if else문 살펴보기

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 파이썬] 셋째마당 인공지능 개발을 위한 파이썬 첫걸음

[모두의 인공지능 with 파이썬] 넷째마당 딥러닝 프로그래밍 시작하기 1

[모두의 인공지능 with 파이썬] 넷째마당 딥러닝 프로그래밍 시작하기 2 – 숫자 인식 인공지능 만들기

[모두의 인공지능 with 파이썬] 넷째마당 딥러닝 프로그래밍 시작하기 3 – 전염병 예측 인공지능 만들기

[모두의 인공지능 with 파이썬] 넷째마당 딥러닝 프로그래밍 시작하기 4 – 숫자 생성 인공지능 만들기