ML 1강 - 1
머신러닝 - 애플리케이션을 수정하지 않고도 데이터를 기반으로 패턴을 학습하고 결과를 예측하는 알고리즘 기법을 통칭
지도학습
분류, 회귀, 추천 시스템, 시각/음성 감지/인지
텍스트 분석, NLP
비지도 학습
클러스터링
자원 축소
강화학습
넘파이 - 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 지원해주는 패키지
넘파이의 기반 데이터 타입 = ndarray이고 넘파이에서 다차원 배열을 쉽게 생성하고 다양한 연산을 수행 가능
import numpy as np
array1 = np.array([1, 2, 3])
print('array1 type:', type(array1))
print('array1 array 형태:', array1.shape)
array2 = np.array([[1, 2, 3], [2, 3, 4]])
print('array2 type:', type(array2))
print('array2 형태:', array2.shape)
array3 = np.array([[1, 2, 3]])
print('array3 type:', type(array3))
print('array3 array 형태:', array3.shape)
array1 type: <class 'numpy.ndarray'> array1 array 형태: (3,) array2 type: <class 'numpy.ndarray'> array2 형태: (2, 3) array3 type: <class 'numpy.ndarray'> array3 array 형태: (1, 3)
ndim - 배열의 차원 알 수 있음
reshape = ndarray의 차원과 크기를 변경
import numpy as np
array1 = np.arange(10)
print('array1:\n', array1)
array2 = array1.reshape(2, 5)
print('array2:\n', array2)
array3 = array1.reshape(5, 2)
print('array3:\n', array3)
array1: [0 1 2 3 4 5 6 7 8 9] array2: [[0 1 2 3 4] [5 6 7 8 9]] array3: [[0 1] [2 3] [4 5] [6 7] [8 9]]단일 값 추출 인덱싱
import numpy as np array1 = np.arange(start=1, stop=10) print('array1:', array1) value=array1[2] print('value:', value) print(type(value))
array1: [1 2 3 4 5 6 7 8 9] value: 3 <class 'numpy.int64'>슬라이싱 - : 기호로 연속한 데이터를 슬라이싱해서 추출import numpy as np array1 = np.arange(start=1, stop=10) array3 = array1[0:3] print(array3) print(type(array3))
[1 2 3] <class 'numpy.ndarray'>:에서 시작인덱스, 종료인덱스를 생략하면?import numpy as np array1 = np.arange(start=1, stop=10) array4 = array1[:3] print(array4) array5 = array1[3:] print(array5) array6 = array1[:] print(array6)
[1 2 3] [4 5 6 7 8 9] [1 2 3 4 5 6 7 8 9]다차원 슬라이싱import numpy as np array1d = np.arange(start=1, stop=10) array2d = array1d.reshape(3, 3) print('array2d:\n', array2d) print('array2d[0:2. 0:2] \n', array2d[0:2, 0:2]) print('array2d[1:3. 0:3] \n', array2d[1:3, 0:3]) print('array2d[1:3. :] \n', array2d[1:3, :]) print('array2d[:. :] \n', array2d[:, :]) print('array2d[:2. 1:] \n', array2d[:2, 1:]) print('array2d[:2. 0] \n', array2d[:2, 0])
array2d: [[1 2 3] [4 5 6] [7 8 9]] array2d[0:2. 0:2] [[1 2] [4 5]] array2d[1:3. 0:3] [[4 5 6] [7 8 9]] array2d[1:3. :] [[4 5 6] [7 8 9]] array2d[:. :] [[1 2 3] [4 5 6] [7 8 9]] array2d[:2. 1:] [[2 3] [5 6]] array2d[:2. 0] [1 4]팬시 인덱싱 - 리스트나 ndarray로 인덱스 집합을 지정하면 해당 위치의 인덱스에 해당하는 ndarray를 반환하는 인덱싱 방식import numpy as np array1d = np.arange(start=1, stop=10) array2d = array1d.reshape(3, 3) array3 = array2d[[0, 1], 2] print('array2d[[0, 1], 2] => ', array3.tolist()) array4 = array2d[[0, 1], 0:2] print('array2d[[0, 1], 0:2] => ', array4.tolist()) array5 = array2d[[0, 1]] print('array2d[[0, 1]] => ', array5.tolist())
array2d[[0, 1], 2] => [3, 6] array2d[[0, 1], 0:2] => [[1, 2], [4, 5]] array2d[[0, 1]] => [[1, 2, 3], [4, 5, 6]]불린 인덱싱조건 필터링과 검색을 동시에 할 수 있음import numpy as np array1d = np.arange(start=1, stop=10) array3 = array1d[array1d>5] print('array1d > 5 불린 인덱싱 결과 값 :', array3)
array1d > 5 불린 인덱싱 결과 값 : [6 7 8 9]행렬 정렬np.sort()처럼 넘파이에서 sort를 호출하면 원 행렬은 그대로 유지하고 정렬된 행렬을 '반환ㄴ' ndarray.sort()는 원 행렬 자체를 정렬 형태로 변환하고 반환 값은 None
댓글
댓글 쓰기