본문 바로가기
반치용/기타 및 저장

[파이썬 머신러닝]시작(day001)

by  반  2019. 12. 15.

 기존에 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번째까지

일단 여기까지!

댓글