👩‍💻LEARN : ML&Data/Code 10

[파이토치 튜토리얼] #1. PYTORCH 소개

파이토치 한국커뮤니티가 워낙에 잘 되어있어서 튜토리얼 중 중요한 것들은 모두 번역이 되어 있다 🥹 부지런한 한국 사람들 최고... 아래 내용은 파이토치 한국 튜토리얼에 있는 내용을 따라하며 정리한 내용들이며, 추가적으로 부가 설명이 필요한 경우 (for me..!) 추가 서술이 되어있다. 1. Pytorch Tensor 파이토치에서 텐서는 기본적인 데이터 형태이다. 2017년 cs231n에는 텐서 외에도 다른 데이터 유형이 있었는데, 이를 모두 텐서로 병합했다. 가장 기본적인 자료 형태이니만큼 텐서의 종류엔 무엇이 있는 지, 무엇을 할 수 있을 지 알아보면 좋지만 이는 나중에 다른 글로 정리할 예정이다. 이번 정리에서는 간단하게 텐서 다루는 방법만 나온다. 텐서 생성 및 유형 확인 import torch..

[자료구조와 알고리즘] #8. 힙(Heap)

#8. 힙(Heap) 힙이란 이진트리의 한 종류 (binary heap) 루트 노드가 언제나 최대값 혹은 최소값을 가짐 (최대힙 : max heap, 최소힙 : min heap) 루트, 부모가 다른 노드들보다 항상 최대/최소 재귀적으로도 어느 노드를 루트로 하는 서브트리도 모두 최대/최소힙 다만 느슨한 정렬 : 왼쪽에 있는 노드가 무조건 숫자가 작거나 무조건 크진 않음 완전 이진 트리여야 함 연산의 정의 (in case of 최대힙) __init__() : 빈 최대 힙을 생성 insert(item) : 새로운 원소 삽입 remove() : 최대 원소 (root node)를 반환 및 삭제 데이터 표현의 설계 배열을 이용한 이진 트리의 표현 (1부터 시작) class MaxHeap: def __init__(..

[자료구조와 알고리즘] #7. 트리

#7. 트리 트리 노드와 엣지를 이용하여 데이터의 배치 형태를 추상화한 자료 구조 용어 정리 노드 (nodes) 간선 (edges) 루트 노드 (root node), 리프 노드 (leaf nodes), 내부 노드 (internal nodes) 부모 (parent) 노드와 자식 (child) 노드 : 루트에 가까울수록 부모, 리프에 가까울수록 자식 노드의 수준 (level) : 루트노드는 레벨0 , 하나씩 내려갈수록 레벨 +1 노드의 차수 (degree) : 서브 트리의 수 (리프 노드로 향하는 간선의 수로 계산) 트리의 높이 (height) 또는, 깊이 (depth) : 최대 레벨 +1 부분 트리 (서브트리; subtrees) : 다른 노드를 루트로 두는 서브트리를 만들 수 있음 이진 트리 (binary..

[자료구조와 알고리즘] #6. 큐

#6. 큐 큐란? 선형 자료구조 선입선출의 성격 (enqueue - dequeue) / 스택과는 반대 (스택 : 후입선출) 큐의 동작 비어있는 큐가 있음 Q = Queue() 데이터원소 A,B...를 큐에 추가 Q.enqueue(A), Q.enqueue(B)... 선입선출로 원소 빼기 r1 = Q.dequeue() , r2 = Q.dequeue() ... 큐의 추상적 자료구조 구현 배열(array) 이용 파이썬 리스트와 메서드 이용 연결리스트(linkedlist) 이용 이전 강의에서 작업한 양방향 연결 리스트 이용 연산의 정의 size() : 현재 큐의 데이터 원소 수를 구함 isEmpty() : 큐가 비어있는 지 판단 enqueue(x) : 데이터원소를 추가 dequeue() : 맨 앞에 저장된 데이터..

[자료구조와 알고리즘] #5. 스택

스택 선형 자료 구조로 Last in First out 구조를 가짐 Push : 데이터를 넣는 것 Pop : 원소 꺼내기 S = Stack() #A,B를 스택에 넣음 S.push(A) S.push(B) #A,B를 각각 꺼내서 r1,r2에 넣음 r1 = S.pop(). #B먼저 인출 r2 = S.pop(). #A인출 #비어있는 스택에서 데이터 원소를 꺼내려고 할경우 오류 발생 : 스택언더플로우 r3 = S.pop() #꽉찬 스택에 데이터 원소를 넣으려고 할 경우 : 스택오버플로우 S.push(E) 스택의 추상적 자료 구조 구현 1. 배열(array)를 이용하여 구현 Python의 리스트와 메서드를 이용 class ArrayStack: def __init__(self): #빈스택 초기화 self.data =..

[자료구조와 알고리즘] #3. 연결리스트:양방향

프로그래머스의 '어서와! 자료구조와 알고리즘은 처음이지?'를 학습하며 정리한 내용입니다. 어서와! 자료구조와 알고리즘은 처음이지? × 이 강의는 Python 기반으로 진행하므로 최소한 문법에는 익숙한 상태로 수강해야 합니다. 듣고는 싶은데, Python을 잘 모르나요? 이 무료 강의 부터 듣고 수강하세요. × C++ 기반의 자료구조와 알 school.programmers.co.kr 양방향 = 앞 뒤 모두 접근 가능한 것 class Node : def __init__(self,item): self.data = item self.prev = None self.next = None class DoublyLinkedList: def __init__(self,item): self.nodeCount = 0 #더미노..

[자료구조와 알고리즘] #3. 연결리스트:단방향

프로그래머스의 '어서와! 자료구조와 알고리즘은 처음이지?'를 학습하며 정리한 내용입니다. 어서와! 자료구조와 알고리즘은 처음이지? × 이 강의는 Python 기반으로 진행하므로 최소한 문법에는 익숙한 상태로 수강해야 합니다. 듣고는 싶은데, Python을 잘 모르나요? 이 무료 강의 부터 듣고 수강하세요. × C++ 기반의 자료구조와 알 school.programmers.co.kr 연결된 리스트 구성 요소 노드 : 데이터 + 링크 데이터 e.g. 67이라는 값이 데이터, 해당 데이터의 연결고리가 링크 노드 내의 데이터는 다른 구조로 이루어질 수 있음( 문자열, 레코드, 또 다른 연결리스트 등) #자료구조 정의 class Node : def __init__(self,item): self.data = ite..

[자료구조와 알고리즘] #2. 재귀 알고리즘

프로그래머스의 '어서와! 자료구조와 알고리즘은 처음이지?'를 학습하며 정리한 내용입니다. 어서와! 자료구조와 알고리즘은 처음이지? × 이 강의는 Python 기반으로 진행하므로 최소한 문법에는 익숙한 상태로 수강해야 합니다. 듣고는 싶은데, Python을 잘 모르나요? 이 무료 강의 부터 듣고 수강하세요. × C++ 기반의 자료구조와 알 school.programmers.co.kr 문제1. 피보나치 순열 구현하기 문제 : 인자로 0, 혹은 양의 정수 x가 주어질때 피보나치 순열의해당 값을 구하여 반환하는 함수 참고 : 피보나치 순열 F0 = 0 F1 = 1 F2 = F0 + F1 = 0+1 = 1 F3 = F1 + F2 = 1 + 1 = 2 F4 = F2 + F3 = 1 + 2 = 3 def soluti..

[자료구조와 알고리즘] #1. 배열

프로그래머스의 '어서와! 자료구조와 알고리즘은 처음이지?'를 학습하며 정리한 내용입니다. 선형배열 문제1. 정렬된 리스트에 원소 삽입하기 문제 : 오름차순으로 정렬된 리스트에 x가 주어졌을 때 순서에 맞게 해당 x 삽입하기 def solution(L, x): answer = [] if max(L) = x: L.insert(i,x) break answer = L return answer 문제2. 리스트에서 원소 찾아내기 문제 : 리스트 L에서 원소 x가 발견될 경우 해당하는 인덱스를 구해서 ..

[Basic Python] 클래스 (Class)

※ 점프투 파이썬, 프로그래머스 파이썬 무료 강의 등을 통해 정리한 내용입니다. 점프투 파이썬 프로그래머스 파이썬 강의 인스턴스와 클래스 클래스 함수, 변수 등을 모아두는 집합체 e.g. 쿠키틀 인스턴스 클래스로 인해 생성된 객체들 인스턴스는 각각의 값을 갖고 있다 같은 값을 가진 instance1, instance2가 있을 때 같은 같지만 instance1 == instance2 본질이 같진 않다 instance1 is not instance2 e.g. 각각의 쿠키 클래스 클래스 만들기 클래스 안에 변수, 함수(메서드) 모두 넣을 수 있다 #클래스 선언하기 class Human(): #클래스에 해당하는 인스턴스 설정 person1 = Human() person2 = Human() #인스턴스에 값 넣기 ..