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


댓글

이 블로그의 인기 게시물

सुप्रभात शुभरात्रि 개인정보 처리방침

네트워크 3강 정리

기계학습 2강