전체 글

우당탕탕 내가 해보고 싶은거 다 해보고 기록 적어두는 곳.
Programming/Django

내비게이션 바와 푸터 모듈화하기

내비게이션 바 버튼에 링크 추가하기 blog/tests.py def navbar_test(self, soup): navbar = soup.nav self.assertIn('Blog', navbar.text) self.assertIn('About Me', navbar.text) logo_btn = navbar.find('a', text="SangHui's Blog") self.assertEqual(logo_btn.attrs['href'], '/') home_btn = navbar.find('a', text='Home') self.assertEqual(home_btn.attrs['href'], '/') blog_btn = navbar.find('a', text='Blog') self.assertEqual(b..

Programming/Django

장고 프로젝트 새팅 다른 로컬에서 진행하기

가상 환경 구축 나같은 경우엔 venv pip install django 가상환경 진입 상태에서 python manage.py makemigrations python manage.py migrate --run-syncdb python manage.py createsuperuser 다시 시도해보면 됨.

프로그래머스 AI 데브코스 5기/Data study

탐색적 데이터 분석 - EDA

EDA? 데이터를 분석하는 기술적 접근은 굉장히 많다. 데이터 그 자체만으로부터 인사이트를 얻어 내는 접근법!(시각화나 통계적 기법을 사용하기도 한다.) EDA의 process 분석의 목적과 변수 확인 데이터 전체적으로 살펴보기(상관관계, NA값 등) 데이터의 개별 속성 파악하기 EDA with Example - Titanic https://www.kaggle.com/c/titanic Titanic - Machine Learning from Disaster | Kaggle www.kaggle.com 1. 분석의 목적과 변수 확인 살아 남은 사람들은 어떤 특징을 갖고 있을까? 라이브러리 준비 import pandas as pd import numpy as np import seaborn as sns imp..

프로그래머스 AI 데브코스 5기/CS

Flask 입문

📌 Flask를 활용해 REST API 구축해보기 📌 Django를 활용해서 웹 사이트 구축하기 1. Flask Python 기반 마이크로 웹 프레임워크. 마이크로라는 말은 essential한 것이 다 있다는 뜻이라고 한다. 굉장히 가볍고 작은 프로젝트에서 높은 효율을 보인다고 한다. Flask를 사용하기 위해 가상환경을 구축해 사용해보도록 하자. 목적에 따른 모듈만 있는 환경을 구축해서 관리 # 맥의 경우 파이썬2가 설치되있어 파이썬3를 사용한다고 명시줘야한다 한다. pip3 install virtualenv # 현재 디렉토리에 새 virtualenv 가상환경 만들기 python3 -m virtualenv 가상환경_이름 가상환경 실행하기 해당 설치되있는 프로젝트 아래에서 다음의 명령어 실행(mac) s..

프로그래머스 AI 데브코스 5기/Data study

Seaborn

Seaborn matplotlib을 기반으로 더 다양한 시각화 방법을 제공하는 라이브러리 커널밀도그림 카운트그림 캣그림 스트립그림 히트맵 Seaborn import 하기 import seaborn as sns 커널밀도그림(Kernel Density Plot) 히스토그램과 같은 연속적인 분포를 곡선화해서 그린 그림 # in Histogram x = np.arange(0, 22, 2) y = np.random.randint(0, 20, 20) plt.hist(y, bins=x) plt.show() # kdeplot sns.kdeplot(y, shade=True) plt.show() 카운트그림(Count Plot) 범주형 column의 빈도수를 시각화 -> Groupby 후의 도수를 비교하는 것과 동일 vot..

프로그래머스 AI 데브코스 5기/Data study

Matplotlib의 여러 plot들

1. Matplotlib Case Study 꺾은선 그래프(Plot) x = np.arange(20) # 0~ 19 y = np.random.randint(0, 20, 20) # 0~20까지 난수 20번 생성 plt.xlabel('x value') plt.ylabel('y value') plt.axis([0, 21, 0, 21]) plt.yticks([i for i in range(0, 21, 5)]) plt.plot(x, y) plt.show() 산점도(Scatter Plot) x = np.arange(20) # 0~ 19 y = np.random.randint(0, 20, 20) # 0~20까지 난수 20번 생성 plt.xlabel('x value') plt.ylabel('y value') plt.a..

프로그래머스 AI 데브코스 5기/Data study

Matplotlib으로 데이터 시각화 하기

1. Matplotlib 시작하기 파이썬의 데이터 시각화 라이브러리 cf) 라이브러리 vs 프레임워크 matplotlib pip install matplotlib %matplotlib inline을 통해서 활성화 import numpy as np import pandas as pda import matplotlib as plt %matplotlib inline 2. Case Study with Arguments plt.plot([1,2,3,4,5]) # 꺾은선 그래프. 실제 plotting을 하는 함수 y=x+1 plt.show() #plt를 확인하는 명령 figsize: Figure(도면)의 크기 조절 기본값 가로, 세로 72픽셀이라고 함 plt.figure(figsize=(6,6)) # plottin..

프로그래머스 AI 데브코스 5기/Data study

Pandas 시작하기

⭐ 수업에 사용된 데이터셋 : https://www.kaggle.com/datasets/imdevskp/corona-virus-report?resource=download COVID-19 Dataset Number of Confirmed, Death and Recovered cases every day across the globe www.kaggle.com 1. Pandas 시작하기 prerequisite: table 행과 열을 이용해서 데이터를 저장하고 관리하는 자료구조(컨테이너) 주로 행은 개체, 열은 속성을 나타냄 판다스 설치하기 pip install pandas 판다스 임포트 import pandas as pd 2. Pandas로 1차원 데이터 다루기 - Series 1-D labled arra..

프로그래머스 AI 데브코스 5기/CS

트리(Trees)

정점(node) 과 간선(edge)을 이용하여 데이터의 배치 형태를 추상화한 자료 구조 루트(root) 노드 리프(Leaf) 노드 부모(Parent) 노드와 자식(Child) 노드 노드의 수준(level) 트리의 높이(Height) = 최대수준(level) + 1, 깊이(depth) 라고도 함 부분 트리(서브 트리 - Subtree) 노드의 차수(Degree) - 자식(서브트리)의 수 이진 트리(Binary Tree) 모든 노드의 차수가 2 이하인 트리 재귀적으로 정의할 수 있음 루트 노드 + 왼쪽 서브 트리 + 오른쪽 서브트리(단, 이 떄 왼쪽과 오른쪽 서브트리 또한 이진 트리) 포화 이진 트리(Full Binary Tree) 모든 레벨에서 노드들이 모두 채워져 있는 이진 트리(높이가 k이고 노드의 개..

카테고리 없음

우선순위 큐(Priority Queue)

우선순위 큐(Priority Queue) 큐가 FIFO(First In First Out) 방식을 따르지 않고 원소들의 우선순위에 따라 큐에서 빠져나오는 방식 활용 운영체제의 CPU 스케줄러 구현방식 Enqueue 할 때 우선순위 순서를 유지하도록 -> 이쪽이 약간 더 유리함 Dequeue 할 때 우선순위 높은 것을 선택 양방향 연결리스트를 이용한 우선순위 큐 구현 class Node: def __init__(self, item): self.data = item self.prev = None self.next = None class DoublyLinkedList: def __init__(self): self.nodeCount = 0 self.head = Node(None) self.tail = Node(..

프로그래머스 AI 데브코스 5기/CS

큐(Queues)

큐(Queue) 자료(data element)를 보관할 수 있는 (선형) 구조 단, 넣을 때에는 한 쪽 끝에서 밀어 넣어야 하고 - enqueue 연산 꺼낼 때에는 반대 쪽에서 뽑아 꺼내야 하는 제약이 있음 - dequeue 연산 선입선출(FIFO - First In First Out) 특징을 가지는 선형 자료구조 큐의 추상적 자료구조 구현 배열(Array)를 이용하여 구현 class ArrayQueue: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def enqueue(self, item): self.data.append(item) def d..

Deep Learning/fundamental

딥러닝이란?

딥러닝이란? 심층신경망(Deep Neural Network, DNN)을 학습시켜 문제를 해결하는 방법 심층신경망이란, 인공신경망(Artificial Neural Network, ANN)의 한 종류라고 볼 수 있다. 인공신경망을 구성하는 신경망 계층을 기존에 비해 더 깊게 구성하여 복잡한 문제를 풀 수 있도록 하는 것 여러 가지 수학적 테크닉이 가미되어 과거에는 학습시킬 수 없었던 깊은 신경망을 학습 시킬수 있게 되었다. 인터넷과 모바일 기기의 발달로 빅데이터가 널리 활용됨에 따라 이를 통해 심층 신경망을 학습시킬만한 충분한 데이터를 확보할 수 있게 되었다. GPU의 발달로 병렬연산(parallel operation)에 대한 방법이 대중화되며 신경망의 학습 및 추론 속도가 비약적으로 상승하였다. 좋은 인공..

프로그래머스 AI 데브코스 5기/CS

스택(stack)

스택(Stack) 자료(data element)를 보관할 수 있는 선형 구조 단, 넣을 때에는 한 쪽 끝에서 밀어 넣어야 하고(Push 연산) 꺼낼 때에는 같은 쪽에서 뽑아 꺼내야 하는 제약이 있음(Pop 연산) 후입선출(LIFO - Last In First Out) 특징을 가지는 선형 자료구조 스택 언더플로우(stack underflow) - 비어 있는 스택에서 데이터 원소를 꺼내려 할 때 스택 오버플로우(stack overflow) - 꽉 찬 스택에 데이터 원소를 넣으려 할 때 스택의 추상적 자료구조 구현 배열(array)를 이용하여 구현 python 리스트를 이용하여 구현 class ArrayStack: def __init__(self): self.data = [] def size(self): re..

프로그래머스 AI 데브코스 5기/Data study

Linear Algebra with Numpy

영벡터(영행렬) np.zeros(dim) 일벡터(일행렬) np.ones(dim) 대각행렬(diagonal matrix) Main diagonal을 제외한 성분이 0인 행렬 np.diag(main_diagonal) 항등행렬(identity matrix) np.eye(dim, dtype) 행렬곱(dot product) np.dot or @ a = np.array([[1, 4], [2, 3]]) b = np.array([[7, 9], [0, 6]]) print(a.dot(b)) print(a @ b) 트레이스(trace) main diagonal의 합 np.trace() arr = np.array([[1,2,3], [4,5,6], [7, 8, 9]]) print(arr.trace()) print(np.eye(..

프로그래머스 AI 데브코스 5기/Data study

Numpy 연산

Numpy로 연산하기 벡터와 벡터 벡터의 같은 인덱스끼리 연산이 진행된다. y = np.array([1, 3, 5]) z = np.array([2, 9, 20]) print(f'더하기: {y + z}') print(f'빼기: {y-z}') print(f'곱하기: {y*z}') print(f'나누기: {y/z}') 벡터와 스칼라 x = np.array([1,2,3]) c = 5 print(f'더하기: {x + c}') print(f'빼기: {x - c}') print(f'곱하기: {x * c}') print(f'나누기: {x / c}') Array의 Indexing [행, 열] W = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]]) print(W[0,0]) #1행 1열 ..

프로그래머스 AI 데브코스 5기/CS

Git & Github

Git이란? 분산 버전관리 시스템 Repository 중앙에 있는 원격저장소를 두고, 로컬 저장소를 둔다. git 시작하기 다음 명령을 통해 현재 작업중인 디렉토리를 git 저장소로 지정할 수 있다.(로컬 저장소 생성) git init git 저장소에서 파일의 상태 위 그림에서 remote는 github이다. git 로컬 저장소에 Commit 남기기 git 파일의 관리 단위 git status를 통해 현재 git 저장소의 상태 확인 git add 을 통해서 커밋에 반영할 파일 지정(unstaged -> staged) 다음 git commit 진행 commit을 잘 남겼는지 확인하고 싶으면 git log를 보면됨. git add . git add git commit -m "커밋 로그, 텍스트" git lo..

Programming/Django

테스트 주도 개발 적용해보기

테스트 주도 개발 준비 python manage.py test 아무런 테스트 미션을 주지 않아서 성공한다고 나옴. blog/test.py from django.test import TestCase # Create your tests here. class TestView(TestCase): def test_post_list(self): self.assertEqual(2, 3) 다시 실행해보면 여기서 assertEqual(2, 2)라고 하면 ok 메세지가 나온다. beautifulsoup4 설치하기 pip install beautifulsoup4 포스트 목록 페이지 테 스트하기 blog/test.py from django.test import TestCase, Client from bs4 import Bea..

Math/Statistics

통계적 가설검정이란?

모집단에 관해 분석자가 세운 가설이 올바른지 추론하는 분석기법 과정 통계적 가설검정의 종류별로 정해져 있는 공식에 표본 데이터를 대입해 하나의 값으로 변환한다. 위 과정으로 변환된 값과 비교해야 할 기준이 정해져 있다하면 기준이 더 작다 = 대립 가설은 옳다 기준이 더 크다 = 귀무 가설은 틀렸다고 할 수 없다. = 귀무 가설은 맞을수도 있고 틀릴 수도 있다. 예) 도쿄도와 오사카부와 후코오카현의 사립대학에 재헉하는 하숙생의 한 달 평균 생활비 송금액은 차이가 있지 않을까? 라는 가설이 옳은지 아닌지 추론해 보고 싶다. 귀무 가설 : 세 모집단의 평균은 같다. 대립 가설 : '세 모집단의 평균은 동일하다' 는 아니다 p값 0.05보다 작으면 '대립 가설은 올바르다' 0.05보다 크면 '귀무 가설은 틀렸다..

Math/Statistics

모집단의 비율 추정해보기

표본 데이터에서 모집단의 비율을 추정해보자 OO이상 OO이하 라는 범위를 추정하는 행위를 '구간 추정'이라고 하고 추정된 범위를 '신뢰 구간'이라고 한다. '틀림없을 것이다'라고 생각하는 정도를 '신뢰율'이라고 한다. 모집단에서 무작위로 표본을 추출했다 되돌리는 행위를 끝없이 반복하면 그 히스토그램의 계급폭을 좁힌 최종 모습은 정규 분포 그래프로 간주할 수 있다. 평균은 모집단의 비율(평균)인 $\mu $와 비슷하다. 표준편차는 모집단의 표준편차를 표본 인원수의 루트로 나눈 $\frac{\sigma}{\sqrt{n}} $와 비슷하다. $-1.96 \leq \frac{\bar{x} - \mu}{\frac{\sigma}{\sqrt{n}}}\leq 1.96$ 모집단에서 무작위로 표본을 추출한 뒤 되돌리는 행위..

Math/Statistics

데이터 가시화 - 정규 분포

데이터의 분위기를 한눈에 알 수 있다! - 히스토그램과 확률 밀도 함수 도수분포표 -> 히스토그램 키에서 120이상 130미만 이런것들을 계급이라고 한다. 각 계급의 길이를 계급폭이라고 한다. 계급값이라는 건 계급의 중간 값을 말한다. 도수는 각 계급에 해당하는 데이터의 개수를 의미한다. 각 계급의 도수가 전체의 몇 퍼센트에 해당하는가가 상대도수이다. 가로축을 계급으로 갖고 세로축을 상대도수로 그린 그래프를 히스토그램 이라고 한다. 이 계급폭을 좁히면 최종적으로 도달하는 곡선의식 이것이 확률 밀도 함수이다. 확률 밀도 함수 그래프와 가로축 사이에 낀 부분의 면적은 1이 된다. 정규분포 t-분포(모집단의 평균에 관해 추론할 때 쓰임), F분포 정규 분포는 평균을 경계로 좌우대칭이다. 평균과 표준편차의 영향..

Math/Statistics

데이터 분위기 파악하기 - 범주형 데이터

범주형 데이터 - '비율'로 파악하기 알파벳 위에 가로선이 있다면 평균을 말한다고 생각하면 된다.($\overline{X}$) 제곱합은 Sum of squares라고 해서 $S_{xx}$라고 표현한다. 2진 데이터는 수량 데이터로 취급할 수 있다. 범주의 개수가 2개인 범주형 데이터를 '2진 데이터(Binary data)'라고 한다. 단계적 평가(1. 매우 나쁨, 2.다소 나쁨, 3.다소 좋음, 4.매우 좋음)는 데이터를 더하거나 뺴거나 곱하거나 나누는 행위를 하면 안된다.

Math/Statistics

수량 데이터

데이터는 수량 데이터와 범주형 데이터로 나눌수 있다. 물론 나누는 방식은 더 여러가지가 있다. 수량 데이터를 양적 데이터라고도 부른다. 범주형 데이터를 질적 데이터라고도 부른다. 데이터가 흩어진 정도를 수치화해 보자 데이터가 표에만 들어있으면 어쩌다 눈에 들어온 수치에만 주목하는 경향이 생기게 된다. 평균은 수량 데이터의 분위기를 파악할 떄 쓰는 기본 중의 기본인 방법이다. 제곱합, 분산, 표준편차는 '데이터가 흩어진 정도'를 나타내준다. 제곱합과 분산, 표준편차의 최솟값은 모두 0이다. 제곱합은 평균을 기준점으로 삼은 후 데이터가 흩어진 정도를 수치화한 것 (각 데이터의 평균)^2을 더한 것 데이터의 개수가 많아질수록 값도 커지는 치명적인 단점이 존재. 제곱합의 약점을 해결해주는 '분산' 분산은 제곱합..

카테고리 없음

선형변환(Linear Transformation)

함수란? 함수는 두 집합 간의 맵핑룰(mapping rule)이다. 입력이 정의되는 집합을 D(domain)이라 한다. 출력이 정의되는 집합 C을 codomatin(공역)이라 하며, codomain 중 실제 함수의 출력이 나오는 부분집합은 range(치역)이라 한다. 함수 f는 아래 그림 D의 각 원소 x가 C의 한 원소 y(=f(x))에 대응되는 매핑룰(mapping rule)이다. domain과 codomain을 강조하여 다음과 같이 적기도 한다. 선형함수(linearfunction) 만일 함수 f가 아래 두가지 조건을 만족하면 함수 f를 선형 함수(linear function)이라고 한다.(c는 임의의 스칼라) 변환(Transformation) 함수의 입력이 n-벡터이고 출력이 m-벡터인 함수 T인..

카테고리 없음

좌표계 변환

좌표계 :: 좌표값 = 행렬 :: 벡터 - 좌표계 변환(Change of Basis) A(좌표계) x(좌표값) = b(좌표값) A(좌표계) x(좌표값) = I(표준 좌표계)b(좌표값) 좌표계(Coordinate System) 다음과 같이 2-벡터 v가 주어지면 이 벡터는 xy평면상에서 원점 (0,0)으로부터 (a,b)에서 끝나는 벡터를 의미한다. 만일 두 벡터 v_1과 v_2를 이용해 새롭게 좌표계를 만든다면 v의 좌표값은? => 어떤 벡터 v에 도달하기 까지 v_1벡터와 v_2 벡터를 몇번 사용하여 도착했는지 해석해보면 된다. 좌표값은 항상 좌표계를 수반한다. 그렇다면 Ax = b를 다음과 같이 해석할 수 있다. (우항): 표준좌표계(standard coordinate system)에서 어떤 벡터의 좌..

카테고리 없음

행렬연산과 선형조합

행렬 표기법과 관련 용어 행렬(matrix)은 직사각형 구조에 숫자들을 담아 놓은 구조이다. 각 숫자들은 행렬의 요소(entry)라 부른다. 행벡터(row vector)와 열벡터(column vector)로 구성되있다. 스칼라 = [4] 와 같이 1x1행렬. 주요 표기법 행렬 A의 각 요소 (i, j)-요소는 행렬 A를 간략히 표기할 때는 행렬 A의 크기가 중요할 경우는 전치행렬(Transpose Matrix) m x n 행렬 A에 대한 transpose matrix(전치행렬) $A^{T}$는 A의 행을 열로, A의 열을 행으로 가지는 n x m 행렬이다. 벡터 표기법 벡터는 볼드체 소문자로 표기한다. 벡터라고 하면 일반적으로 열벡터(column vector)를 말한다. n-벡터는 n개의 스칼라(scal..

프로그래머스 AI 데브코스 5기/Math

LU분해

행렬분해(matrix decomposition)의 의미 행렬을 행렬분해 한 상태로 가지고 있으면 여러모로 계산이 편리한 경우가 많다. LU분해(LU decomposition) QR분해(QR decomposition) 특이값 분해(SVD, Singular Value Decomposition) LU분해 주어진 행렬을 아래의 형태처럼 분할하는 방법이다. L: lower triangular matrix(하삼각 행렬) U: upper triangular matrix(상삼각 행렬) LU분해를 하게 되면 Ax = b 의 계산을 다음과 같이 수행할 수 있다. LU분해의 의미 LU분해는 가우스 소거법의 forward elimination을 행렬로 코드화 한 것이다. L: 행렬 A를 전방소거하는데 쓰인 replacemen..

프로그래머스 AI 데브코스 5기/Math

[인공지능 데브코스 TIL]가우스 소거법

Solutions of a Linear System 해가 하나인 경우(unique solution) 해가 없는 경우(no solution) 0 * x = 6 해가 여러개인 경우(infinitely many solutions) 0 * x = 0 ax = b에서 a = 0이면 특이하다. ax = b의 해가 곧장 나오지 않는다. 왜? a의 역수(inverse)가 존재하지 않는 경우, a가 특이(singular)하다고 한다. 해가 있으면 선형시스템이 consistent하다고 한다. 해가 없으면 선형시스템이 inconsistent하다고 한다. Gauss elimination(가우스 소거법) Forward elimination(전방소거법) : 주어진 선형시스템을 아래로 갈수록 더 단순한 형태의 선형방정식을 가지도록..

프로그래머스 AI 데브코스 5기/Math

[인공지능 데브코스 TIL]선형시스템(linear system)

가우스 소거법(Gauss 소거법) 선형대수(linear algebra)의 목표는 어떤 연립일차방정식, 즉, linear system(선형시스템) 문제라도 정형적인 방법으로 표현하고 해결하는 방법을 배우는 것이다. $Ax = b$ linear란 선의 형태라는 뜻. 평면이거나 왜곡되지 않은 공간. 올곧은 공간(?) 아래와 같은 식이 있을때, 이 방정식들을 각각 선형방정식(linear equation)이라고 한다. 또 여기서 각각의 미지수 x,y,z를 unknown, 혹인 variable이라고 한다. 위 처럼 3개의 linear equation과 3개의 unknown으로 구성된 연립일차방정식을 3 x 3 linear system이라고 한다. 비선형이란 말은 곡선이라 생각하면됨. 미지수의 승수가 1로만 구성 되..

Math/Statistics

'무늬만 조사'에 휘둘리지 않는 무작위 추출법

조사의 신뢰성은 '무작위 추출법'으로 결정된다! 대부분 조사의 타겟 집단은 모집단에서 무작위로 추출한게 아니다. 일단 모집단의 정의가 불분명 하다. 추리 통계학의 근간을 이루는 중요한 개념이다. 표본이 모집단의 정교한 미너어처가 되어야 한다. 무작위 추출법은 모집단에 속하는 사람들이 똑같은 확률로 뽑히는 걸 목표로 한다. 📌원형 차트로 나타내기 좋은 경우 질문의 선택지가 3개 이상이고 순서성이 있는 경우 질문의 선택지가 두개인 경우 무작위 추출법 이해하기 '모든 국민 중에서 1000명을 추출하는' 상황을 예시로 들면 단순 무작위 추출법 모든 국민 중 무작위로 1000명을 추출하는 것 모집단의 수가 많지 않다면 적용가능한 방법 층별 추출법 모집단을 여러 층으로 나눈 다음 각 층에서 단순 무작위 추출법을 시..

Math/Statistics

통계학이란?

통계학은 어떤 학문일까? 기업과 공공기관은 기술 발전 덕분에 다양한 종류의 데이터를 엄청나게 많이 수집할 수 있게 됬다. 이걸 활용하기 위해 통계학이 주목받고 있다. 통계학 활용 비즈니스에서 대응 분석(correspondence-analysis)에 활용됨. 의학, 심리학 등에서 통계적 가설 검정에 사용됨. 인과관계를 모색하고 검증하기 위해 통계학이 사용됨. 다른 사람을 설득할때 효과적으로 사용될 수 있다. 통계학은 표본데이터에서 모집단의 상황을 예측하는 학문이다. 데이터 리터러시를 높이자(Data literacy) 추리통계학, 기술통계학 두가지로 나뉘어진다. 기술통계학 : 데이터를 정리함으로써 집단의 상황을 최대한 간결하게 표현하는 것이 목적인 통계학 베이즈 통계학: 개인적 신념의 정도를 확률이라고 해석..

한상희
상희's 실험실