모두야
CH1)헬로 파이썬 본문
1.1 파이썬이란?
- 간단하고 배우기 쉬운 프로그래밍 언어이다.
- 불편한 컴파일 과정이 없다.
- 영어와 유사한 문법으로, 읽기 쉽고 성능이 뛰어나다.
- 과학 분야, 기계학습, 데이터 과학 분야에 널리 쓰인다.
- 넘파이, 사이파이(SciPy)와 같은 통계 처리 라이브러리와 함께 이용한다.
1.2 파이썬 설치하기
아나콘다(Anaconda) 배포판 이용하기
배보판 : 사용자가 설치를 한 번에 수행할 수 있도록 필요한 라이브러리를 포함해 둔 것
외부 라이브러리
- 파이썬3
- 넘파이
: 수치 계산용 라이브러리, 고도의 수학 알고리즘과 배열(행렬) 조작에 편리하다.
- matplotlib
: 그래프를 그려주는 라이브러리
: 실험 결과를 시각화 하거나 딥러닝 실행 과정의 중간 데이터를 시각적으로 표현한다.
1.3 파이썬 인터프리터
#파이썬 버전 확인
$ python --version
#파이썬 시작
$ python
산술 연산
자료형=클래스class
: (정수, 실수, 문자열) type( )함수 이용한다.
변수
: 동적 언어 (상황에 맞게 변수 자료형을 변경한다)
리스트
딕셔너리
bool
if 문
for 문
함수
파이썬 인터프리터 종료 : 리눅스,맥 - Ctrl + D / 윈도우 - Ctrl+Z+Enter
1.4 파이썬 스크립트 파일
위의 인터프티터는 대화식으로 짧은 작업을 수행하기 좋다. 하지만 긴 작업을 수행 하기 위해서는, 파이썬 프로그램을 파일로 저장하고 실행하는 방법이 있다.
1) 파일로 저장해서 열기
2) 클래스
: 사용자가 독자적인 자료형을 만들 수 있다. 클래스 안에 전용함수(메서드)와 속성을 정의한다.
class 클래스 이름:
def __init__(self,인수,...) # 생성자
def 메서드 이름1 (self,인수,...) #메서드 1
def 메서드 이름2 (self,인수,...) #메서드 2
생성자
- 클래스 정의 __init__
- 클래스를 초기화하는 방법을 정의한다.
- 클래스 인스턴스가 만들어질 때 한번만 불린다.
파이썬에서 메서드의 첫 번째 인수로 자신(self) 를 쓰는것이 특징이다.
class Man:
def __init__(self,name):
self.name = name
print("Initialized!")
def hello(self):
print("Hello" + self.name + "!")
def goodbye(self):
print("Good-bye" + self.name + "!")
m = Man("David")
m.hello()
m.goodbye
$ python man.py
Initialized!
Hello David!
Good-bye David!
Man 이라는 새로운 클래스를 정의한다. m이라는 인스턴스(객체)를 생성한다.
Man의 생성자(초기화 메서드)는 name이라는 인수를 받고, 그 인수로 인스턴스 변수인 self.name을 초기화 한다.
인스턴스 변수는 인스턴스 별로 저장되는 변수이다.
파이썬에서는 self.name처럼 self 다음에 속성 이름을 써서 인스턴스 변수를 작성하거나 접근한다.
1.5 넘파이 Numpy
넘파이의 배열 클래스 numpy.array 메서드를 이용하여 딥러닝의 배열과 행렬 계산에 이용한다.
1) 넘파이 가져오기
넘파이는 외부 라이브러리 이므로 가져와야 한다. "numpy를 np라는 이름으로 가져와라"
import numpy as np
2) 넘파이 배열 생성하기
넘파일 배열 만들때는 np.array( ) 메서드를 이용해야한다.
파이썬의 리스트를 인수로 받아 넘파이 라이브러리가 제공하는 배열 (numpy.ndarray) 를 반환한다.
>>> x = np.array([1.0,2.0,3.0])
>>> print(x)
[1. 2. 3.]
>>> type(x)
<class 'numpy.ndarray'>
3) 넘파이 산술 연산
x와 y의 원소 수가 같다. 원소 수가 다르면 오류가 발생한다.
브로드캐스트 : 원소별(element-wise) 계산을 한다.
>>> x = np.array([1.0,2.0,3.0])
>>> y = np.array([2.0,4.0,6.0])
>>> x+y # 원소별 덧셈
array([3., 6., 9.])
>>> x-y
array([-1.,-2.,-3.])
>>> x*y
array([2.,8.,18.])
>>> x/y
array([0.5,0.5,0.5])
4) 넘파이 N차원 배열
행렬의 형상 : .shape
원소의 자료형 : .dtype
>>> A=np.array([[1,2],[3,4],[5,6]])
>>> print(A)
[[1,2]
[3,4]
[5,6]]
>>>A.shape
(3,2)
>>>A.dtype
dtype('int64')
5) 브로드캐스트
형상이 다른 배열끼리도 계산할 수 있다.
>>> A=np.array([[1,2],[3,4]])
>>> B=np.array([10,20])
>>> A*B
array([[10,40],
[30,80]])
6) 원소 접근
>>> X=np.array([[51,55],[14,19],[0,4]])
>>> print(X)
[[51,55],
[14,19],
[0,4]]
>>> X[0]
array([51,55])
>>> X[0][1]
55
>>> for row in X:
print(row)
[51 55]
[14 19]
[0 4]
>>> X=X.flatten() # X를 1차원 배열로 평탄화
>>>print(X)
[51 55 14 19 0 4]
>>> X[np.array([0,2,4])] #인덱스가 0,2,4인 원소
array([51,14,0])
>>> X>15
array([True,True,False,True,False,False],dtype=bool)
>>> X[X>15] #X중 15보다 큰 원소 꺼내기
array([51,55,19])
1.6 matplotlib
그래프 그리기와 데이터 시각화를 해주는 라이브러리 이다.
1) 그래프 그리기
pyplot 모듈을 이용
import numpy as np
import matplotlib.pyplot as plt
#데이터 준비
x = np.arange(0,6,0.1) #0~6까지 0.1간격
y = np.sin(x) # sin함수
# 그래프 그리기
plt.plot(x,y)
plt.show()
x 데이터 할당, y 데이터로 넘파이 sin 함수 np.sin(x) 할당
x,y를 인수로 plt.plot 메서드를 호출하여 그래프를 그린다.
plt.show() 를 호출하여 그래프를 화면에 출력한다.
import numpy as np
import matplotlib.pyplot as plt
#데이터 준비
x = np.arange(0,6,0.1)
y1 = np.sin(x)
y2 = np.cos(x)
#그래프 그리기
plt.plot(x,y1, label='sin')
plt.plot(x,y2, linestyle='--',label='cos')
plt.xlabel('x') #x축 이름
plt.ylabel('y')
plt.title('sin&cos') #그래프 이름
plt.legend() # 범례 표시
plt.show() # 그래프 표시
2) 이미지 표시하기
pyplot의 이미지 표시해주는 메서드 imshow( )
이미지 읽어주는 matplotlib.image 모듈의 imread( ) 메서드 이용한다.
import matplotlib.pyplot as plt
from matplotlib.image import imread
img = imread('lena.png') #경로 설정/이미지 불러오기
plt.imshow(img)
plt.show()
밑바닥부터 시작하는 딥러닝 1
이어서 2장. 퍼셉트론
2021.07.08 - [밑.시.딥/1권] - CH2) 퍼셉트론
'밑.시.딥 > 1권' 카테고리의 다른 글
CH4) 신경망 학습 - (2) (0) | 2021.07.23 |
---|---|
CH4) 신경망 학습 - (1) (0) | 2021.07.15 |
CH3) 신경망 - (2) (0) | 2021.07.12 |
CH3) 신경망 - (1) (0) | 2021.07.08 |
CH2) 퍼셉트론 (0) | 2021.07.08 |