본문 바로가기

머신 러닝 공부

(8)
작심만일 미라클모닝 챌린지 리얼 후기 - 동기부여를 위한 누군가들을 위한 자칭 "갓생의 시작"이라고 불리는 미라클 모닝, 새벽에 일어나 남들보다 빨리 본인의 삶을 시작하는 행위 성공한 많은 사람들이 행하는 습관이며 일과 시작전에 나만의 시간을 가질 수 있는 장점이 있다. ​ 나 역시 유튜브의 수많은 시각화 자료, 새벽 기상에 관련한 수많은 책들을 읽어보며 그러한 행위를 하면 나도 성공할 수 있을까라는 의문을 품었다. 코로나로 흘러간 2년의 대학교 생활에 이은 특별한 목적없이 살아가는 나에게 작은 불꽃이 필요했고, 부싯돌을 부딪히는 마음으로 4시 반 기상부터 시작했다. ​ 홀로 아무런 준비없이, 특정한 목적없이 단지 새벽기상에 목적을 둔 나의 미라클 모닝은 일찍 일어나는 것에 중점을 두었다. 첫날에는 일찍 일어나 할 것이 없어 간단하게 월간 플래너도 작성하고, 책도 읽어보았다...
Chapter 1 넘파이 , 판다스 머신러닝의 주요 알고리즘은 선형대수와 통계등에 기반한다. 넘파이 Numpy는 파이썬에서 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 만든 패키지로 , 루프를 사용하지 않고 대량 데이터의 배열 연산을 가능하게 하여 , 빠른 배열 연산 속도를 보장하는 것이 특징이다. 데이터 타입 : ndarray -> np.array([1,2,3]) ndarray내의 데이터 타입은 그 연산의 특성상 같은 데이터의 타입만 가능하다. ndarray type변경 -> astype('int32') ndarray를 편리하게 생성하기 파이썬의 표준함수 range와 유사한 기능 -> np.arange(10) : [0,1,2,3,4,5,6,7,8,9] np.zeros((3,2)) -> [[0,0], [0,0], [0,0],] np.o..
7장_ 배열 요약 정리 배열 : 메모리 공간 기반의 연속 방식의 기본 자료형으로 , 고정된 크기만큼의 연속된 메모리 할당이다. 두 수의 합 : 덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하는 문제 def twoSum(self, nums: List[int], target: int) -> List[int]: for i, n in enumerate(nums): complement = target-n if complement in nums[i+1:]: return [nums.index(n),nums[i+1:].index(complement)+(i+1)] in을 이용한 탐색 : in의 시간 복잡도 O(n)이고 전체 시간 복잡도는 O(n^2) 비교나 탐색 대신에 한 번에 정답을 찾을 수 있는 방법 def twoSum(se..
6장_문자열 조작 요약 정리 팰린드롬: 앞뒤가 똑같은 단어나 문장으로, 뒤집어도 같은 말이 되는 단어 또는 문장을 의미한다. isalnum() : 영문자 , 숫자 여부를 판별하는 함수 def isPalindrome(self, s:str)->bool: strs: Deque = collections.deque() for char in s: if char.isalnum(): strs.append(char.lower()) while len(strs)>1: if strs.popleft() != strs.pop(): # popleft() O(1) ,pop(0) O(n) return False return True 자료형을 데크로 선언하여 시간 단축한 문제풀이 코드 def isPalindrome(self, s:str)->bool: s = s.l..
5장 _ 리스트, 딕셔너리 요약정리 리스트 : 순서대로 저장하는 시퀸스, 변경 가능한 목록을 말한다. 입력 순서가 유지되며, 내부적으로는 동적 배열로 구현되어 있다. 연산 시간복잡도 설명 len(a) O(1) 전체 요소의 개수 리턴 a[i] O(1) 인덱스의 i의 요소 가져오기 a[i:j] O(k) i~j 까지 슬라이스 길이만큼 k개의 요소를 가져온다. i in a O(n) i 요소가 존재하는지 확인한다. 처음부터 순차 탐색하는 경우이다. a.count(i) O(n) i 요소의 개수를 리턴한다. a.index(i) O(n) i 요소의 인덱스를 리턴한다. a.append(i) O(1) 리스트 마지막에 i 요소를 추가한다. a.pop() O(1) 리스트 마지막 요소를 추출한다. 스택 연산 a.pop(0) O(n) 리스트 첫번째 요소를 추출한다..
4장_빅오,자료형 요약정리 빅오란? 입력값이 무한대로 향할 때 함수의 상한을 설명하는 수학적 표기방법 , 점근적 실행 시간을 표기할 때 널리 쓰이는 방법이다. 시간 복잡도와 공간 복잡도를 표현하는데 쓰인다. 알고리즘은 보통 "시간과 공간이 trade-off 관계"이다. 점근적 실행시간 = 시간 복잡도 시간 복잡도: 어떤 알고리즘을 수행하는데 걸리는 시간을 설명하는 계산 복잡도 O(1) : 입력값이 아무리 커도 실행시간은 일정하다. 최고의 알고리즘 but 상수값이 너무 클 경우 의미가 없으므로 신중하게 써야 한다. Ex) 해시 테이블의 조회 및 삽입 (11장) O(log n): 입력값만큼 실행시간이 영향을 받지만 , 웬만한 n의 크기에 대해서 매우 견고하다. Ex) 이진검색(18장) O(n): 알고리즘에 수행하는 데 걸리는 시간이 ..
3장_파이썬 요약정리 3장_ 파이썬 인덴트 : PEP 8 -> 공백 4칸을 원칙으로 한다. (깔끔한 코드를 위한 초석) foo = long_fuction_name(var_one, var_two, var_three.var_four) 첫 번째 코드에 파라미터가 있다면, 파라미터가 시작되는 부분에 보기 좋게 맞추기 def long_fuction_name( var_one, var_two,var_three var_four): print(var_one) 첫 번째 줄에 파라미터가 없다면, 공백 4칸 인덴트를 추가 -> 다른 행과 구분 스네이크 케이스(Snake Case) : 각 단어를 밑줄(_)로 구분하여 표기하는 것 타입 힌트(Type Hint) : 함수의 파라미터에 어떠한 타입을 주어야 하는지 표기하는 것 def fn(a): ... ..
1장(머신러닝에 대한 개념학습) 요약 정리 머신러닝이란 데이터로부터 "학습"할 수 있는 시스템을 만드는 것이다. 학습이란 작업에서 주어진 성능지표를 더 나아지게 하는 것을 의미한다. 머신러닝이 도움이 될 수 있는 문제 유형 4가지는 1. 명확한 해결책이 없거나 복잡한 유형 2. 수작업으로 만든 규칙리스트를 대체할 경우에 해당하는 유형 3. 변화하는 환경에 적응 하는 시스템을 만들어야 할 유형 (Ex) 주식?) 4. 사람에게 통찰을 제공할 유형 (ex) "데이터 마이닝") 데이터 마이닝이란 대용량의 데이터를 기반으로 보이지 않는 패턴을 찾는 것 머신러닝의 도전과제는 부족한 양, 낮은 품질, 대표성 없는 : 데이터. 과소 적합 과대 적합된 모델이다. 과대 적합 : 훈련 데이터에 있는 잡음에 비해 모델이 너무 복잡할 때 일어난다. 해결책 - 1. 샘플..