brunch

You can make anything
by writing

C.S.Lewis

by 이종우 Peter Lee Feb 13. 2019

[번역] 파이썬 기계학습 위한 Numpy 필수 가이드

ML의 핵심적인 라이브러리 Numpy 배우기!

원본 URL: https://medium.com/@sid_darthvader/an-essential-guide-to-numpy-for-machine-learning-in-python-5615e1758301



왜 이것이 당신에게 유용할까요?


우리 대부분은 (이미 이미 ML 알고리즘을 구현 한 사람들의 경우) 다양한 라이브러리 함수를 잊어 버리는 경향이 있으며 시간과 에너지의 낭비 인 완전한 논리를 사용하여 기존 함수에 대한 코드를 작성하게됩니다. 효율적으로 사용되는 도서관의 미묘한 차이를 이해한다면 그것은 필수적입니다. 따라서 Numpy는 기계 학습을위한 필수 라이브러리 중 하나가되어야합니다.


이 조항의 독자는 누구입니까?


Numpy를 이해하면 Data Pre-processing의 시작점이자 나중에 ML 알고리즘을 구현하기 때문에 가까운 장래에 Machine Learning을 배우려는 사람이거나 앞으로 시작하기에 더 많은 것을 배우기를 원하는 사람이 될 수 있습니다. Numpy for ML.


그러나이 기사를 쓰는 동안 내 주요 초점은 도서관에 대한 경험이 있지만 신속한 요점을 되풀이해야하는 사람들을 위해 Numpy를 재빨리 보충하는 역할을하는 것입니다.


우리는 무엇을 기다리고 있습니까?


Numpy는 Python 프로그래밍 언어를위한 라이브러리로 대규모의 다차원 배열과 행렬을 지원하고 이러한 배열에서 작동 할 수있는 많은 수의 수학 함수를 추가합니다.




또한 Numpy는 Machine Learning 스택의 기초를 형성합니다. 이 기사에서는 가장 많이 사용되는 낸피 오페라 멘트를 다룹니다.


1) 벡터 만들기


여기서 우리는 Numpy를 사용하여 벡터라고 부르는 1 차원 배열을 만듭니다.


#Load Library
import numpy as np

#Create a vector as a Row
vector_row = np.array([1,2,3])

#Create vector as a Column
vector_column = np.array([[1],[2],[3]])



2) 행렬 만들기


우리는 Numpy에 2-D Array를 만들고 이것을 Matrix라고 부릅니다. 그것은 2 행 3 열을 포함하고 있습니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6]])
print(matrix)


3) 스파 스 매트릭스 만들기


0이 아닌 값이 거의없는 데이터를 효율적으로 표현하고자합니다.


기계 학습의 빈번한 상황은 엄청난 양의 데이터를 가지고 있습니다. 그러나 데이터의 대부분 요소는 0입니다. 예를 들어, 열이 Amazon의 모든 제품이고 행이 주어진 사용자가 이전에 해당 항목을 구매했는지 여부를 나타내는 행렬을 상상해 볼 수 있습니다. 이제는 짐작할 수 있듯이 지금까지 한 번도 구입하지 않은 제품이 많아서 대다수의 요소가 제로가됩니다.


스파 스 매트릭스는 0이 아닌 요소 만 저장하고 다른 모든 값은 0으로 가정하여 상당한 계산 비용을 절감합니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[0,0],[0,1],[3,0]])
print(matrix)

#Create Compressed Sparse Row(CSR) matrix
matrix_sparse = sparse.csr_matrix(matrix)
print(matrix_sparse)



4) 요소 선택


벡터 또는 행렬에서 하나 이상의 요소를 선택해야하는 경우


#Load 라이브러리 numpy 를 np 로 
가져 오기 # 벡터를 행으로 생성 vector_row = np.array ([1,2,3,4,5,6]) # 행렬을 생성합니다. matrix = np.array ([[1,2, 3], [4,5,6], [7,8,9]]) 인쇄 (행렬) # 벡터 인쇄 의 세 번째 요소 선택 (vector_row [2]) # 두 번째 행의 두 번째 열 인쇄 (행렬 [1,1 ])

#Load Library
import numpy as np

#Create a vector as a Row
vector_row = np.array([ 1,2,3,4,5,6 ])

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Select 3rd element of Vector
print(vector_row[2])

#Select 2nd row 2nd column
print(matrix[1,1])

#Select all elements of a vector
print(vector_row[:])

#Select everything up to and including the 3rd element
print(vector_row[:3])

#Select the everything after the 3rd element
print(vector_row[3:])

#Select the last element
print(vector[-1])

#Select the first 2 rows and all the columns of the matrix
print(matrix[:2,:])

#Select all rows and the 2nd column of the matrix
print(matrix[:,1:2])


5) 행렬 묘사

매트릭스의 모양 크기와 크기에 대해 알고 싶을 때.


import numpy as np
#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])

#View the Number of Rows and Columns
print(matrix.shape)

#View the number of elements (rows*columns)
print(matrix.size)

#View the number of Dimensions(2 in this case)
print(matrix.ndim)


6) 요소에 연산 적용하기


배열의 여러 요소에 일부 기능을 적용하려고합니다.


Numpy의 vectorize 클래스는 함수를 배열 또는 배열의 여러 요소에 적용 할 수있는 함수로 변환합니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Create a function that adds 100 to something
add_100 =lambda i: i+100

#Convert it into a vectorized function
vectorized_add_100= np.vectorize(add_100)

#Apply function to all elements in matrix
print(vectorized_add_100(matrix))


7) 최대 값과 최소값 찾기


우리는 Numpy의 최대 및 최소 기능을 사용합니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Return the max element
print(np.max(matrix))

#Return the min element
print(np.min(matrix))

#To find the max element in each column
print(np.max(matrix,axis=0))

#To find the max element in each row
print(np.max(matrix,axis=1))


8) 평균, 분산 및 표준 편차 계산


배열에 대한 설명적인 통계를 계산할 때.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Mean
print(np.mean(matrix))

#Standard Dev.
print(np.std(matrix))

#Variance
print(np.var(matrix))


9) 배열 고쳐 쓰기


요소를 변경하지 않고 배열을 바꿀 때 (행과 열 수 변경).


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Reshape
print(matrix.reshape(9,1))

#Here -1 says as many columns as needed and 1 row
print(matrix.reshape(1,-1))

#If we provide only 1 value Reshape would return a 1-d array of that length

print(marix.reshape(9))

#We can also use the Flatten method to convert a matrix to 1-d array

print(matrix.flatten())


10) 벡터 또는 행렬 전치


매트릭스의 행과 열을 바꾸는 것으로 전환합니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Transpose the matrix
print(matrix.T)


11) 행렬의 행렬 및 순위 찾기


행렬의 순위는 행 또는 열에 걸쳐있는 벡터 공간의 차원 수입니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Calculate the Determinant
print(np.linalg.det(matrix))

#Calculate the Rank
print(np.linalg.matrix_rank(matrix))


12) 행렬의 대각선 구하기


행렬의 대각 원소 만 추출해야하는 경우


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Print the Principal diagonal
print(matrix.diagonal())

#Print the diagonal one above the Principal diagonal
print(matrix.diagonal(offset=1))

#Print the diagonal one below Principal diagonal
print(matrix.diagonal(offset=-1))


13) 행렬의 궤적 계산


행렬 추적은 행렬의 주 대각선에있는 요소의 합계입니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Print the Trace
print(matrix.trace())


14) 고유 값과 고유 벡터 찾기


고유 벡터는 기계 학습 라이브러리에서 널리 사용됩니다. 매트릭스로 표현되는 선형 변환이 주어지면, 고유 벡터는 그 변환이 적용될 때 스케일이 아니라 방향 만 변화시키는 벡터입니다.


Av = Kv


여기서 A는 정사각형 행렬이고, K는 고유 값을 포함하고, v는 고유 벡터를 포함한다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

# Calculate the Eigenvalues and Eigenvectors of that Matrix
eigenvalues ,eigenvectors=np.linalg.eig(matrix)
print(eigenvalues)
print(eigenvectors)


15) 도트 산출


#Load Library
import numpy as np

#Create vector-1
vector_1 = np.array([ 1,2,3 ])

#Create vector-2
vector_1 = np.array([ 4,5,6 ])

#Calculate Dot Product
print(np.dot(vector_1,vector_2))

#Alternatively you can use @ to calculate dot products
print(vector_1 @ vector_2)



16) 행렬 더하기, 빼기 및 곱하기


#Load Library
import numpy as np

#Create Matrix-1
matrix_1 = np.array([[1,2,3],[4,5,6],[7,8,9]])

#Create Matrix-2
matrix_2 = np.array([[7,8,9],[4,5,6],[1,2,3]])

#Add the 2 Matrices
print(np.add(matrix_1,matrix_2))

#Subtraction
print(np.subtract(matrix_1,matrix_2))

#Multiplication(Element wise, not Dot Product)
print(matrix_1*matrix_2)


17) 매트릭스 반전하기


이 값은 Square Matrix의 역수를 계산할 때 사용됩니다.


#Load Library
import numpy as np

#Create a Matrix
matrix = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(matrix)

#Calculate its inverse
print(np.linalg.inv(matrix))


18) 무작위 값 생성하기


Numpy는 난수 생성을위한 다양한 수단을 제공합니다.


또한 예측 가능하고 반복 가능한 결과를 얻으려면 동일한 난수를 반환하는 것이 때때로 유용 할 수 있습니다. 의사 난수 생성기의 '시드'(정수)를 설정하면됩니다. 동일한 시드를 사용하는 무작위 프로세스는 항상 동일한 결과를 산출합니다.


#Load Library
import numpy as np

#Set seed
np.random.seed(1)

#Generate 3 random integers b/w 1 and 10
print(np.random.randint(0,11,3))

#Draw 3 numbers from a normal distribution with mean 1.0 and std 2.0
print(np.random.normal(1.0,2.0,3))


따라서이 도구는 Python으로 기계 학습 여행을 시작하기 위해 필요한 표준 Numpy 작업을 모두 포함합니다. 다른 사람들에게 이것은이 도메인의 기존 지식에 대한 좋은 회상 이었으면합니다.


작가의 이전글 [번역] ML을 이용한 신용카드 사기 감지 방법
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari