튜토리얼

필수 데이터사이언스 방법론 가이드
카테고리는 수준별, 언어별, 분야별, 주제별 순으로 정렬되어 있습니다.

파이썬을 활용한 선형대수

작성자
sungkenh
작성일
2017-01-12 20:24
조회
439
카테고리 : [ 초급   |   Python   |   기타   |   기타 ]

1) 제목


함수

2) 작성자


컴퓨터정보통신공학과 권혁민

3) 링크 및 출처


Coding The Matrix

4) 문제 및 개요


5) 데이터


6) 해결방법 및 결과





1.1 집합에 대한 용어와 표기법


  • 집합은 수학 객체를 모아 놓은 것으로 집합에 속하는 객체는 많아야 한 번 그 집합에 나타나는 것으로 간주한다.

  • 집합은 원소를 중괄호(curly brace) 안에 열거하여 나타낸다. 예를 들어, {♡, ♠, ♣, ◇}는 전통적인 카드 한 벌의 무늬를 나타내는 집합이다.

  • 집합은 원소들 간의 순서가 없다.

  • 기호 ∈는 객체가 집합에 속하는 것을 나타내기 위해 사용한다.

  • 만약 어떤 집합 S1S1의 모든 원소가 S2S2에 속하면 S1S1S2S2에 포함되며 모든 원소가 같으면 두 집합은 같다.








1.2 카테시안 곱(Cartesian product)


  • 두 집합 AABB의 카테시안 곱(데카르트 곱)은 aAa∈AbBb∈B의 모든 쌍 (a,b)(a,b)으로 이루어진 집합이다.

  • 집합 A = {1, 2, 3}, B = {♡, ♠, ♣, ◇}에 대해, 카테시안 곱은 다음과 같다.{(1,)(2,)(3,)(1,)(2,)(3,)(1,)(2,)(3,)(1,)(2,)(3,)(1,♡)(2,♡)(3,♡)(1,♠)(2,♠)(3,♠)(1,♣)(2,♣)(3,♣)(1,◇)(2,◇)(3,◇)}








1.3 함수


  • 함수는 가능한 입력 집합 DD의 각 원소에 대해 가능한 출력을 할당하는 규칙

  • 함수 ff에 대해, ff에 의한 qq의 상(함수값)을 f(q)f(q)로 나타낸다. 만약 r=f(q)r=f(q)이면, qqff에 의해 rr로 매핑된다고 한다. 이를 기호로 qrq→r로 표현한다.








1.3.1 함수, 프로시저, 계산 문제


  • 프로시저는 계산 절차에 대한 정확한 기술. 이것은 입력(매개변수)을 받아들여 출력(리턴값)을 생성한다.






In [2]:




def mul(p,q):
return p*q










  • 계산 문제는 프로시저가 필요할 수도 있는 입력-출력에 대한 사양(스펙)(input-output specification)이다.
    • input: 1보다 큰 정수의 쌍 (p,q)(p,q)

    • output: 곱 pqpq









  • 프로시저와는 달리, 함수 또는 계산 문제는 입력을 사용하여 출력을 어떻게 계산하는지에 대한 정보를 주지 않는다. 동일한 입력-출력 사양을 만족하거나 동일한 함수를 구현하는 많은 다른 프로시저가 존재한다.

  • 때로는 동일한 프로시저가 다른 함수를 위해 사용될 수 있다.

  • 함수와는 달리, 계산 문제는 모든 입력에 대해 하나의 유일한 출력을 명시할 필요는 없다.








1.4 확률


확률이론은 무엇이 일어날 수 있는지, 그리고 그것이 일어날 가능성이 얼마나 되는지에 관한 것임








1.4.1 확률 분포


  • 유한한 정의역 ΩΩ에서 음수가 아닌 실수의 집합 R+R+로의 함수 Pr()Pr(∙)는 만약 ωΩPr(ω)=1∑ω∈ΩPr(ω)=1이면 (이산)확률분포이다.

  • 정의역의 원소는 실험결과(outcome)라고 한다. Pr()Pr(∙)에 의한 실험결과의 함수값은 실험결과의 확률이라고 한다.








균등분포


가장 단순한 예로 모든 실험결과가 동일한 가능성을 가지며 동일한 확률이 할당되는 경우를 생각해 볼 수 있다. 이러한 경우의 확률 분포를 균등(uniform)하다고 한다. 예를들어 하나의 주사위를 굴리는 경우를 모델링 하면, Ω=Ω={1,2,3,4,5,61,2,3,4,5,6}이고, Pr(1)=Pr(2)==Pr(6)Pr(1)=Pr(2)=⋯=Pr(6)이다. 6개 실험결과에 대한 확률의 합은 1이 되어야 하므로, 각 결과에 대한 확률은 1/6이어야 한다.






In [4]:




Pr = {('H', 'H'):1/4, ('H', 'T'):1/4, ('T', 'H'):1/4, ('T', 'T'):1/10}
Pr








Out[4]:


{('H', 'H'): 0.25, ('H', 'T'): 0.25, ('T', 'H'): 0.25, ('T', 'T'): 0.1}










비 균등 분포


균등 분포와 달리 실험결과가 적어도 1개 이상의 상이한 가능성을 가지면 결과가 달라지게 된다.








1.5 Lab: 파이썬 소개 - 집합, 리스트, 딕셔너리, 컴프리핸션









1.5.1 간단한 표현식


산술 연산과 숫자








  • 이항 연산자(+, -, *, /)는 일반적인 방식대로 동작한다.

  • 지수는 이항연산자 **에 의해 표현되고, 정수 나눗셈에 대한 트렁케이션(truncation)은 //로 나타낸다.

  • 나며지 연산(modulo)은 % 연산자를 사용한다.

  • 연산자 *, /, // 보다 우선순위가 높고, *,/,//는 +,-보다 우선순위가 높으며, 그룹으로 묶을 때는 괄호를 사용한다.

  • 파이썬으로 표현식을 이용하여 계산 결과를 얻을 수 있다.









cf. 트렁케이션(truncation)

영어로 잘라내다란 뜻으로 수학에서는 정수 나눗셈으로 몫의 정수 외 부분을 버린다.






In [19]:




#truncation
43//23








Out[19]:


1








In [20]:




#division
43/23








Out[20]:


1.8695652173913044








In [5]:




44+11*4-6/11








Out[5]:


87.45454545454545








In [8]:




2304811%47








Out[8]:


25








In [15]:




2304811-(2304811//47)*47








Out[15]:


25











문자열 문자열은 단일 인용부호로 둘러싸인 일련의 문자들을 말한다. 문자열을 입력하면 파이썬은 그 문자열을 그대로 반복하여 보여준다.






In [21]:




'This sentence is false'








Out[21]:


'This sentence is false'











비교, 조건, 불리언(Boolean)






In [22]:




5==4








Out[22]:


False








In [23]:




4==4








Out[23]:


True










  • 이러한 비교 결과에 대한 값은 불리언값(True 또는 False)이다. 값이 불리언인 표현식을 불리언 표현식이라고 한다.

  • 불리언 연산자, 예를들어, and, or, not은 더 복잡한 불리언 표현식을 만드는 데 사용될 수 있다.






In [27]:




True and False








Out[27]:


False








In [28]:




True and not(5==4)








Out[28]:


True










1.5.3 조건 표현식


조건 표현식을 나타내는 굼누은 다음과 같다.

<>if<>else<><표현식>if<조건>else<표현식>

조건은(condition)은 불리언 표현식이어야 한다.






In [30]:




x = -9
y = 1/2
2**(y+1/2) if x+10<0 else 2**(y-1/2)








Out[30]:


1.0










1.5.4 집합(Set)


파이썬은 복수의 값들을 묶어(그룹화하여) 처리하게 하는 간단한 자료구조를 제공하며 이러한 자료구조를 컬렉션(collection)이라 한다.

집합
  • 순서가 없는 컬렉션이며 각 원소는 집합 내에 오직 한번 만 표시된다.

  • 집합의 표현으로 중괄호({ })를 사용한다.

  • 순서가 없으므로 출력되는 순서도 입력원소와 일치하는 것이 아니다.

  • JAVA나 C와는 다르게 파이썬은 자료구조 하나에 여러개의 형식(type)을 저장할 수 있다.






In [37]:




{1+2, 3, "a"}








Out[37]:


{3, 'a'}








In [38]:




{2, 1, 3}








Out[38]:


{1, 2, 3}











집합의 크기는 그 집합 내 원소의 수를 나타내며 파이썬에서 집합의 크기는 len()이란 프로시저를 사용하여 얻는다.






In [39]:




len({'a', 'b', 'c', 'a', 'a'})








Out[39]:


3











합산하기

컬렉션 내 원소의 합은 sum()이란 프로시저를 사용하여 구한다.






In [40]:




sum({1,2,3})








Out[40]:


6











합산의 초기값을 줄때는 두 번째 인수로 그 값을 제공하면 된다.






In [41]:




sum({1,2,3}, 10)








Out[41]:


16











집합의 멤버십 테스트

집합의 원소인지에 대한 테스트는 in 연산자와 not in 연산자를 사용한다.






In [43]:




S={1,2,3}
2 in S








Out[43]:


True








In [44]:




4 in S








Out[44]:


False








In [45]:




4 not in S








Out[45]:


True











합집합과 교집합

두 집합 SSTT의 합집합(union)은 SS또는 TT(또는 양쪽 모두)에 속하는 모든 원소의 값을 포함하는 새로운 집합이다. 파이썬은 | 을 합집합 연산자로 사용한다.






In [46]:




{1,2,3}|{2,3,4}








Out[46]:


{1, 2, 3, 4}











SSTT의 교집합(intersection)은 SSTT 양쪽에 속하는 모든 원소의 값을 포함하는 새로운 집합이다. 파이썬은 & 을 교집합 연산자로 사용한다.






In [47]:




{1,2,3} & {2,3,4}








Out[47]:


{2, 3}











집합을 변경하기

변경이 가능하 값을 mutable 값이라고 한다. 집합은 변경이 가능하다. 즉, 집합의 원소는 add와 remove 메서드를 사용하여 추가하거나 삭제할 수 있다.






In [53]:




S={1,2,3}
S








Out[53]:


{1, 2, 3}








In [54]:




S.add(4)
S








Out[54]:


{1, 2, 3, 4}








In [55]:




S.remove(2)
S








Out[55]:


{1, 3, 4}











파이썬은 어떤 집합에 또 다른 컬렉션(예를 들어, 집합 또는 리스트)의 모든 원소를 추가하기 위해 update()메서드를 제공한다.






In [56]:




S.update({4,5,6})
S








Out[56]:


{1, 3, 4, 5, 6}











마찬가지로, 어떤 집합과 또 다른 컬렉션의 교집합을 취하여 다른 컬렉션에 속하지 않는 모든 원소를 그 집합에서 제거할 수 있다.






In [59]:




S.intersection_update({5,6,7,8,9})
S








Out[59]:


{5, 6}











집합 컴프리헨션

파이썬은 컴프리헨션이라고 하는 표현식을 제공하는데, 이것은 다른 컬렉션을 사용하여 새로운 컬렉션을 만드는 데 사용된다. 컴프리헨션은 값이 컬렉션인 표현식을 구성하는 데 유용하고 전통적인 수학적 표기법(조건 제시법)과 유사하여 많이 사용된다.









A={2x|x{1,2,3}}A={2x|x∈{1,2,3}}






In [63]:




A = {2*x for x in {1,2,3}}
A








Out[63]:


{2, 4, 6}











말로 풀어쓰면 집합 A의 원소는 2x인데 그 x는 집합 {1,2,3}의 원소란 뜻이다.