기존에 R 위주로 데이터 분석을 하고있었으나 계속 파이썬이랑 머신러닝을 하고싶었다. 상황상 전혀 못하고 있다가, 저번 주 서버에 Jupyter hub을 세팅하자마자 같은 연구실의 송규선 선생님이 파이썬 머신러닝을 가져온 책(파이썬 머신러닝 완벽 가이드)이 맘에 들어서, 따로 하나 주문해서 과정을 시작해 본다.
내가 한 세팅 과정은 책에서 나와있는 과정과 다르므로, 다음에 따로 작성할 날이 올 것 같다.
책에서는 윈도우 기반이고, 나는 어디서나 접속하기 위해 리눅스 서버상에 원격으로 접속하여 코딩할 수 있도록 jupyter hub를 세팅했고, 조금 더 사용이 편한 jupyter lab 형태로 사용할 예정이다. ( jupyter notebook으로 시작해도 아무런 문제가 없다. )
만약 이 글을 따라서 해 볼 생각이라면 생략되는 부분이 많을 것이므로 책을 가지고 있는게 나을 것이라 생각한다. (환경세팅 하다가 뻗을수도 있다.)
1. 넘파이 개요 따라가기
실제 코드등을 적으면 안될 것 같으니 메인 코드는 뺴고 요약만 적겠음.
import numpy as np
코딩을 처음 접하는 사람들은 이게 뭔지도 모를 것 같다.
기본적으로 코딩은 일련의 문제를 해결하는 과정이다.
예를들자면, '네모난 색종이를 잘라서 삼각형을 만들어야 한다.'라는 상황을 해결하기 위해서는 여러가지 해결 방법이 있을 것이다.
1. 자를 대고 대각선 방향으로 칼을 그어서 자른다.
2. 자를 대고 대각선을 연필으로 자를 곳을 표시한 뒤 가위로 자른다.
3. 그 외의 온갖 방법
도구들을 강조해놓은 것이 보일 것이다. 어쩌면 붉은색 진한 글자들을 보면서 감을 잡았을지도 모른다.
내가 종이를 잘라야 할 때 마다 도구(자,칼,연필,가위 등)를 만들어 쓴다면 얼마나 귀찮고, 낭비가 심할까... 프로그래밍을 통해 컴퓨터에게 일을 떠넘기기 좋아하는 개발자들은 게으르기 때문에 이럴 때 쓸 도구 상자를 만들어 두었다. 프로그래밍 언어마다 라이브러리, 패키지 등으로 불리는 '공구상자'이다.
위의 코드에서는 numpy라는 이름의 공구상자다. 즉, 우리는 다른사람이 만들어둔 공구박스를 무료로 가져다 쓸 것이다. 다만 우리의 조수랑(파이썬) 일 할 때 매번 numpy 가져와. 라고 하기 귀찮으니
import numpy : 공구박스 가져와줘
as np : 그리고 이제부터는 numpy를 np라고 부를테니까 앞으로 내가 np에서 뭐 꺼내달라고 하면 numpy에서 꺼내줘
정도로 이해할 수 있다.
my_array = np.array([1,2,3,4,5,6])
통번역 : 이제부터 my_array 는 "np.array([1,2,3,4,5,6])" 야.
np.array() : 넘파이에서 array()라는 녀석 가져와줘
- np는 앞에서 numpy라고 했다. 즉, 파이썬은 numpy.array() 라는 녀석을 가져오라는 명령을 들은 것이다.
- array() : 괄호 안에 있는 내용을 재료로 배열을 만들어주는 함수
- [1,2,3,4,5,6] : 1,2,3,4,5,6 이 연속으로 들어간 형태
의역 : 1,2,3,4,5,6을 하나로 묶어서, numpy에서 정한 배열 형태로 만들고 거기에다가 my_array라는 이름표를 붙여놔줘
이후 코드들은 변수의 형태, 배열의 차원등을 알아내거나 변경하거나 등을 하는 코드들이다.
일일이 설명하다간 진도를 못나갈 것 같아서 자세한 설명은 pass 해야 할 것 같다.
힌트가 될만한 주요 키워드들만 남기고 진행해야겠다. 이 책은 초보를 위한 책은 아닌 것 같다. 다른 프로그래밍 언어나 파이썬 기초가 되어있는 사람들을 대상으로 낸 책 같다. 파이썬 기본기를 다른 곳에서 시작하고 해야 할 것 같다.
혹은 구글링을 엄청 열심히 하거나...
주요 내용 요약
my_array.ndim : 행렬의 차원 표시
my_array.dtype : 데이터 평태 표시
float_array = my_array.astype('float64') : float 64형태로 변환 (형변환, 변수 형태 변환)
편리하게 행렬 생성
np.arange(10) : 0~9 까지 연속된 수를 생성
np.arange(start=1,stop=10) : 1에서 9까지 연속된 수를 생성
= np.arange(1,10)
np.ones((2,2),dtype="int32") : 1으로 채워진 2행 2열 행렬
np.zeros((2,2),dytpe="int32") : 0으로 채워진 2행 2열 행렬
array1.reshape(x,y) : 행렬 크기 변경
인덱싱
array1[3,2] : 4행 3열
array1[[0,1],2] : 1행+2행 , 3열
array1[array1>=1] : 1이상인 값
array1>=1 : 행렬값 반환
슬라이싱
array1[1:3] : 2번째에서 3번째까지
일단 여기까지!
'반치용 > 기타 및 저장' 카테고리의 다른 글
[파이썬 머신러닝] day 002 - numpy 이어서 + pandas (판다스) (0) | 2019.12.16 |
---|---|
[논문]Network Decomposition into Fixed Points of DegreePeeling-필링(Peeling) 관련 (0) | 2019.12.16 |
파이썬 시각화 (0) | 2019.12.15 |
Wiki docs 추천 (0) | 2019.12.11 |
온라인 코딩 공부 모음 (저장용. 펌+추가) (0) | 2019.11.25 |
댓글