본문 바로가기
관/핫한 머신러닝 프로젝트

파이썬 모듈을 이용한 머신러닝 공부 02. ( numpy 모듈 소개 1/5)

by 4차원 박스 2019. 11. 4.

설치법: pip명령을 사용하여 필요한 패키지 설치
     pip install numpy scipy matplotlib ipython scikit-learn pandas pillow

 

이거를 cmd 창을 켜서 붙여넣기를 하고 엔터를 하면

머신러닝을 공부할때 필요한 모듈 들을 종합적으로 다운 받을수 있다.

 

이번은 공부에 필요한 모듈을 간단히 포스팅을 나누어 소개한다.

 

scikit-learn은 numpy와 scipy를 기반으로 만들었다.
(추가적인건 여기 www.scipy-lectures.org/ 의 1장 읽기.)

여기서 머신러닝을 하기전에
알아야 할것이 함수와 클래스들의 용도와 어떤의미를 지니는지 이다.

 

사용할 것은 총5개의 모듈이다

 

먼저 넘파이부터 본다.

 

1. numpy : 머신러닝에서 입력시의 기본데이터 구조로 사용할 용도임
핵심은 다차원 행렬구조 인 ndarray 클래스 이다.

예제로보면
import numpy as np
a= np.array([0,1,2,3,4,5,6,7,8,9])
print(type(a))

이 결과는
<class 'numpy.ndarray'>이다.

리스트와 ndarray의 차이는
전자는 각각의 원소가 다른 자료형으로 변할수 있으나
후자는 c언어의 행렬같이 연속적인 메모리 배치를 가지므로 모든 원소가 같은 자료형 이다
대신 내부의 원소에 대한 접근및 반복문의 실행이 빨라진다.
또한
벡터화 연산을 지원한다.

다음은 다차원 행렬과 그정보를 알려주는 속성을 예제로 본다.

import numpy as np
a= np.array([0,1,2]) #1 x 3 array
b=np.array([[0,1,2],[3,4,5]]) #2 x 3 array
c=np.array([[0,1],[2,3]],[[5,6],[7,8]]) # 2x2x2 array

print(a.ndim)
print(a.shape)
print(b.ndim)
print(b.shape)
print(c.ndim)
print(c.shape)

이결과
1
(3,)
2
(2, 3)
3
(2, 2, 2)
맞게 등장함.

ndim 과 shape는 행렬의 차원과 크기를 나타낸다.



다차원 행렬의 인덱싱

간단하게 콤마로 접근하면된다

a라는 2*3 행렬이 있고 여기에 접근할때
a[0,0]을 하면 첫행의 첫열에 접근하게 된다.


다차원 행렬의 슬라이싱

파이썬의 슬라이싱에서 콤마를 사용하면 된다
a[0 , : ]는 첫번째 행 전체이다.
a[ : 5 ]는 처음부터 5째 행 까지 이다.
a[: , 1 ]은 두번째 열 전체이다.
a[1 , 1 : ]은 두번째 해당 행의 두번째 열부터 끝열까지 이다.


numpy의 또다른 강력한 기능은
데이터베이스 질의(query)기능을 하는 행렬 인덱싱 이라는 것 이다.

이러한 행렬인덱싱 을 사용하는 방식은 불리언(true or false 형태)과 정수형태를 사용하는 방법이 있다.
다음예시로 본다.

import numpy as np
a= np.array([0,1,2,3,4,5,6,7,8,9])
i = np.array([True,False,True,False,True,False,True,False,True,False])
print(a[i])
print(a[a%2==0])

이결과
[0 2 4 6 8] #true 값만 i에 넣어 a배열을 출력
[0 2 4 6 8] #짝수번 위치에 있는 배열값 만 등장
이렇게 등장함.

 

다음시간에 사이킷런을 알아보고 할 수 있으면 추가로 알아본다.

댓글