반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Vision
- logistic regression
- CPP
- Regularization
- SVM
- cs231n
- 추천 시스템
- Kaggle
- petal to metal
- 인공지능
- 그래픽스
- Computer Vision
- pre-trained
- Support Vector Machine
- 신경망
- 머신러닝
- recommender system
- 컴퓨터 비전
- SGD
- Unsupervised learning
- 파이썬
- OpenGL
- 로지스틱 회귀
- 컴퓨터 그래픽스
- 딥러닝
- 백준
- neural network
- C++
- CNN
- 비용함수
Archives
- Today
- Total
kwan's note
Assignment - Basic Linear Algebra -list만 사용하여 행렬 연산하기 본문
ML and AI/Python for ML
Assignment - Basic Linear Algebra -list만 사용하여 행렬 연산하기
kwan's note 2021. 1. 10. 00:57반응형
출처: 부스트코스-머신러닝을 위한 파이썬
수강일시:2021.01.09
이번 강의에서는 간단한 선형대수의 수식들을 python code로 작성하는 것을 목적으로 진행됩니다.
문제와 풀이로 나누어서 작성하였습니다.
모든 답안은 한줄로 작성하였습니다.
조건: numpy등 외부모듈/ 함수를 이용하지 않고 한줄로 작성하기.
vector_size_check | vector 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함 |
vector_addition | vector간 덧셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음 |
vector_subtraction | vector간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 vector의 갯수와 크기는 일정하지 않음 |
scalar_vector_product | 하나의 scalar 값을 vector에 곱함, 단 입력되는 vector의 크기는 일정하지 않음 |
matrix_size_check | matrix 간 덧셈 또는 뺄셈 연산을 할 때, 연산이 가능한 사이즈인지를 확인하여 가능 여부를 True 또는 False로 반환함 |
is_matrix_equal | 비교가 되는 n개의 matrix가 서로 동치인지 확인하여 True 또는 False를 반환함 |
matrix_addition | matrix간 덧셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음 |
matrix_subtraction | matrix간 뺄셈을 실행하여 결과를 반환함, 단 입력되는 matrix의 갯수와 크기는 일정하지 않음 |
matrix_transpose | matrix의 역행렬을 구하여 결과를 반환함, 단 입력되는 matrix의 크기는 일정하지 않음 |
scalar_matrix_product | 하나의 scalar 값을 matrix에 곱함, 단 입력되는 matrix의 크기는 일정하지 않음 |
is_product_availability_matrix | 두 개의 matrix가 입력 되었을 경우, 두 matrix의 곱셈 연산의 가능 여부를 True 또는 False로 반환함 |
matrix_product | 곱셈 연산이 가능한 두 개의 matrix의 곱셈을 실행하여 반환함 |
답안:
def vector_size_check(*vector_variables):
return all(len(vector_variables[0])==len(vector_variables[i]) for i in range (len(vector_variables)))
print(vector_size_check([1,2,3], [2,3,4], [5,6,7])) # Expected value: True
print(vector_size_check([1, 3], [2,4], [6,7])) # Expected value: True
print(vector_size_check([1, 3, 4], [4], [6,7])) # Expected value: False
def vector_addition(*vector_variables):
return [sum(vectors) for vectors in zip(*vector_variables)]
print(vector_addition([1, 3], [2, 4], [6, 7])) # Expected value: [9, 14]
print(vector_addition([1, 5], [10, 4], [4, 7])) # Expected value: [15, 16]
def vector_subtraction(*vector_variables):
return [vectors[0]*2-sum(vectors) for vectors in zip(*vector_variables)]
print(vector_subtraction([1, 3], [2, 4])) # Expected value: [-1, -1]
print(vector_subtraction([1, 5], [10, 4], [4, 7])) # Expected value: [-13, -6]
def scalar_vector_product(alpha, vector_variable):
return [alpha*vector_variable[vectors] for vectors in range(len(vector_variable))]
print(scalar_vector_product(5,[1,2,3])) # Expected value: [5, 10, 15]
print(scalar_vector_product(3,[2,2])) # Expected value: [6, 6]
print(scalar_vector_product(4,[1])) # Expected value: [4]
def matrix_size_check(*matrix_variables):
return all(len(matrix_variables[0])==len(matrix_variables[i]) and len(matrix_variables[0][k])==len(matrix_variables[i][k]) for k in range(len(matrix_variables[0])) for i in range (len(matrix_variables)))
matrix_x = [[2, 2], [2, 2], [2, 2]]
matrix_y = [[2, 5], [2, 1]]
matrix_z = [[2, 4], [5, 3]]
matrix_w = [[2, 5], [1, 1], [2, 2]]
matrix_a = [[1,2,3], [4,5,6]]
print(matrix_size_check(matrix_x, matrix_y, matrix_z)) # Expected value: False
print(matrix_size_check(matrix_y, matrix_z)) # Expected value: True
print(matrix_size_check(matrix_x, matrix_w)) # Expected value: True
print(matrix_size_check(matrix_x, matrix_a)) # Expected value: False
print(matrix_size_check(matrix_y, matrix_a)) # Expected value: False
def is_matrix_equal(*matrix_variables):
return all(len(matrix_variables[0])==len(matrix_variables[i]) and matrix_variables[0][k]==matrix_variables[i][k] for k in range(len(matrix_variables[0])) for i in range (len(matrix_variables)))
matrix_x = [[2, 2], [2, 2]]
matrix_y = [[2, 5], [2, 1]]
print (is_matrix_equal(matrix_x, matrix_y, matrix_y, matrix_y)) # Expected value: False
print (is_matrix_equal(matrix_x, matrix_x)) # Expected value: True
def matrix_addition(*matrix_variables):
return [[sum(i) for i in zip(*value)] for value in zip(*matrix_variables)]
matrix_x = [[2, 2], [2, 2]]
matrix_y = [[2, 5], [2, 1]]
matrix_z = [[2, 4], [5, 3]]
print (matrix_addition(matrix_x, matrix_y)) # Expected value: [[4, 7], [4, 3]]
print (matrix_addition(matrix_x, matrix_y, matrix_z)) # Expected value: [[6, 11], [9, 6]]
def matrix_subtraction(*matrix_variables):
return [[2*i[0]-sum(i) for i in zip(*value)] for value in zip(*matrix_variables)]
matrix_x = [[2, 2], [2, 2]]
matrix_y = [[2, 5], [2, 1]]
matrix_z = [[2, 4], [5, 3]]
print (matrix_subtraction(matrix_x, matrix_y)) # Expected value: [[0, -3], [0, 1]]
print (matrix_subtraction(matrix_x, matrix_y, matrix_z)) # Expected value: [[-2, -7], [-5, -2]]
def matrix_transpose(matrix_variable):
return [[i for i in value] for value in zip(*matrix_variable)]
matrix_w = [[2, 5], [1, 1], [2, 2]]
print(matrix_transpose(matrix_w))
def scalar_matrix_product(alpha, matrix_variable):
return [[alpha*value for value in matrix_variable[i]] for i in range(len(matrix_variable))]
matrix_x = [[2, 2], [2, 2], [2, 2]]
matrix_y = [[2, 5], [2, 1]]
matrix_z = [[2, 4], [5, 3]]
matrix_w = [[2, 5], [1, 1], [2, 2]]
print(scalar_matrix_product(3, matrix_x)) #Expected value: [[6, 6], [6, 6], [6, 6]]
print(scalar_matrix_product(2, matrix_y)) #Expected value: [[4, 10], [4, 2]]
print(scalar_matrix_product(4, matrix_z)) #Expected value: [[8, 16], [20, 12]]
print(scalar_matrix_product(3, matrix_w)) #Expected value: [[6, 15], [3, 3], [6, 6]]
def is_product_availability_matrix(matrix_a, matrix_b):
return len([column for column in zip(*matrix_a)]) == len(matrix_b)
matrix_x= [[2, 5], [1, 1]]
matrix_y = [[1, 1, 2], [2, 1, 1]]
matrix_z = [[2, 4], [5, 3], [1, 3]]
matrix_w = [[2, 5], [1, 1], [2, 2]]
print(is_product_availability_matrix(matrix_y, matrix_z)) # Expected value: True
print(is_product_availability_matrix(matrix_z, matrix_x)) # Expected value: True
print(is_product_availability_matrix(matrix_z, matrix_w)) # Expected value: False
print(is_product_availability_matrix(matrix_x, matrix_x)) # Expected value: True
def matrix_product(matrix_a, matrix_b):
return [[sum(a*b for a,b in zip(rowa,colb)) for colb in zip(*matrix_b)] for rowa in matrix_a]
matrix_x= [[2, 5], [1, 1]]
matrix_y = [[1, 1, 2], [2, 1, 1]]
matrix_z = [[2, 4], [5, 3], [1, 3]]
print(matrix_product(matrix_y, matrix_z)) # Expected value: [[9, 13], [10, 14]]
print(matrix_product(matrix_z, matrix_x)) # Expected value: [[8, 14], [13, 28], [5, 8]]
print(matrix_product(matrix_x, matrix_x)) # Expected value: [[9, 15], [3, 6]]
반응형
'ML and AI > Python for ML' 카테고리의 다른 글
Pandas(판다스) 기본연산 활용하기 (1) | 2021.01.16 |
---|---|
Numpy(넘파이) 기본연산 활용하기 (0) | 2021.01.10 |
Machine Learning Overview-머신러닝 기본 용어 (0) | 2021.01.10 |
pythonic code(파이써닉 코드) (0) | 2021.01.04 |
머신러닝을 위한 파이썬 강의 (0) | 2021.01.04 |