Python 52

[Python] Monte Carlo algorithm

몬테카를로(Monte Carlo) 방법은 원하는 면적을 무한정 찍어서 그 면적을 구한다는 방식이라고 보면 된다. 정사각형 내에 원을 그리고 원의 면적을 구하고 싶다면 랜덤하게 점을 찍고 원 안에 들어간 점의 수와 전체 점을 찍은 수를 가지고 원 면적의 근삿값을 찾을 수 있을 것이다. 여기서는 몬테카를로 샘플링을 이용하여 원주율($pi$)을 근사해볼 생각이다. import matplotlib.pyplot as plt import numpy as np import math import time %matplotlib inline plt.rcParams['axes.unicode_minus'] = False plt.rcParams['font.family'] = 'NanumGothic' plt.rcParams['a..

[Python] numpy - view, copy

파이썬의 리스트의 경우 다른 객체에 할당받은 후 그 객체를 변경해도 변경되지 않지만, 넘파이 array의 경우 view(원본)을 나타내기 때문에 원본이 변경되지 않게 하거나 copy를 해주어야한다. li = [x for x in range(10)] arr_li = li[:] arr_li[0] = 100 print(li) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(arr_li) # [100, 1, 2, 3, 4, 5, 6, 7, 8, 9] 리스트의 경우 위와 같이 객체 0번을 받아서 변경을해도 변경이 되지 않는 것을 확인할 수 있다. 복사본의 경우 변경되어 있는 것이 보인다. arr = np.arange(10) arr_view = arr[:] arr_view[0] = 100 pr..

Python/Numpy 2022.01.14

[Python] 왜 넘파이를 사용해 ?

파이썬에서 벡터와 행렬 간 연산 속도는 엄청나게 느리다. 파이썬의 속도가 느리기 때문에 빠른 계산속도가 필요한 경우 C언어로 패키지를 만들어서 진행한다. 하지만 넘파이의 경우 파이썬의 연산 속도가 느린 부분을 일부 보완해줄 수 있는 엄청나게 좋은 패키지 중 하나이다. import numpy as np import time n = 150 a = np.random.rand(n, n) b = np.random.rand(n, n) c = np.zeros([n,n]) start = time.time() for i in range(n): for j in range(n): for k in range(n): c[i][j] = a[i][k] * b[k][j] print(time.time() - start) # 4.142..

Python/Numpy 2022.01.14

[Python] Class

딥러닝을 다루면 많이 접해볼 수 있는 클래스(Class)이다. 딥러닝을 할 때에는 기본적으로 클래스를 생성하여 함수를 받아오지만 머신러닝을 하거나 단순 코딩을 할 때에는 클래스를 정의하지 않고 사용했던 것 같다. 클래스를 만들고 내부에 함수와 변수, 인스턴스 등을 만들어 사용을 한다. Class 내부의 구조는 다음과 같다. 생성자(Constructor) : 클래스를 만들 때 자동으로 호출되는 특수한 함수라고 부르며, 파이썬에서는 생성자의 이름을 일반적으로 __init__으로 하고, 첫번째 인수로 객체 자신을 의미하는 self를 받아서 사용한다. 메소드(Method) : 클래스가 갖는 함수이며, 인스턴스를 조작하는 인스턴스 메소드, 클래스 전체를 처리하는 메소드, 인스턴스 없이도 작동하는 메소드 등이 존재..

Python 2022.01.14

[Python] Scikit-learn에서 cross validation 사용하기

교차검증법에는 다양한 방법이 존재한다. 일반적으로는 n개의 집단으로 나누어 교차검증을 하지만 LOOCV(Leave-One-Out Cross-Validation)의 경우에는 분할의 수를 데이터의 수 만큼 나누어 평가를 하게 된다. 만약 데이터가 100개라면 데이터를 100개로 나누고 99개는 학습, 나머지 하나로 평가를 하는 형태로 진행된다. LOOCV의 경우 데이터의 수가 적을 때 극한으로 성능을 끌어올리기 위해서 주로 사용된다. 사이킷-런(scikit-learn)에서는 교차검증에 대한 패키지를 제공해주고 있다. sklearn 2.0 버전 이하인 경우에는 아래와 같은 방식으로 호출을한다. from sklearn import cross_validation 하지만 그 이후 버전에서는 아래와 같이 cross_..

Python/Scikit-learn 2022.01.14

[Python] Open file

파이썬에서 분석을 하기 위해서는 데이터가 필요하다. 파이썬 패키지 내의 내장된 데이터셋을 활용하여 분석을 할수도 있지만, 직접 데이터를 호출해 분석하는 일이 생길 것이다. 그럴때 패키지를 다운받지 않고도 파일을 불러오는 방법에 대해서 알아보자. 파일을 불러오는 패키지로 대표적인 패키지는 pandas가 있단는 것을 알고 있다. 하지만 여기서는 패키지가 아닌 내장함수 open에 대해서 다루어 볼 것이다. 다음에 있는 open 함수 내의 method를 하나하나 뜯어보자. open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) file 우리가 불러오고자 하는 파일의 위치를 적어주어야..

Python 2021.09.30

[Python] matplotlib으로 스타벅스 데이터 시각화 하기

스타벅스 데이터를 구할 수 있어서 그 자료를 가지고 간단하게 시각화해보자. import pandas as pd import matplotlib.pyplot as plt import numpy as np import os import matplotlib.font_manager as fm plt.rcParams['font.family'] = 'NanumGothic' 필요한 라이브러리는 다음과 같다. 스타벅스 코리아, 즉 한국에 입점한 스타벅스 데이터를 가지고 오는거라 위도, 경도 주소 등 여러 데이터가 포함되어 있어서 한글 폰트를 받아와야한다. 나눔 고딕 폰트를 선호해서 해당 폰트로 진행을 했다. ( 음수일 경우 표시가 안된다는 단점이 있다.. ) # 현재의 directory 를 체크한다. os.getcwd..

[CS231N] Loss function & Optimization (2)

앞 내용에 이어서 이번에는 Loss function 중에서 softmax를 다뤄볼 것이다. 각 score를 확률값으로 바라볼 수 있을 것이다. $P(Y\ =\ k\ |X\ =\ x_{i})$ 는 $X=x_{i}$일 때 $Y = k$로 k라는 class에 속할 확률값을 찾는 것이며, 이러한 값이 Likelihood가 된다. $\Sigma_{j}e^{sj}$ = 모든 score의 합 $e^{sk}$ 는 k class 의 score Maximize loglikelihood는 가장 최대가 되는 값을 찾는 것이기 때문에 그 값에 대해 -1 을 곱해줘서 최솟값을 찾는 loss function 으로 만들 수 있다. 그리고 MLE는 각 확률값을 곱하여 도출하는데 이 부분에서 log를 취해주면 곱을 덧셈으로 바꿀 수 있..

[CS231N] Image Classification pipeline

cs231n의 강의 chapter2에 대한 내용을 요약, 정리할 것이다. 이 장에서는 image classification이 어떤 것인지에 대해서 알아보고, 어려운 점이 생기는 이유와 K-NN기반, Linear기반 이미지 분류에 대해서 다룰 것이다. 이미지는 RGB 3층의 구조를 가지고 있다고 보면된다. ( 3차원의 array ) [ 0, 255 ] 값의 integer 형태를 가지고 있다. 일반적으로 구조적 데이터나 비 구조적 데이터를 input 값으로 가진 후 classification을 하면 class 1 or class 2 와 같은 output 형태를 가졌는데, input 값이 구조적, 비 구조적 데이터가 아닌 image를 input 으로 넣으면 cat or dog 형태로 출력이 되는 것이다. Ch..

[NLP] INTRODUCTION

NLP를 활용할 수 있는 분야에 대해서 공부해보는 파트이다. 자연어 처리를 활용할 수 있는 사례 자연어 처리는 질문에 대한 응답을 얻기 위하여 사용 음성을 인식하여 음성을 다른 언어로 바꿔주는 번역 및 소리로 변형(파파고, 구글 번역기, 아프리카TV 도네이션 등) image understanding : 이미지를 보여주고 그 이미지에 대해 질응 Linguistic structure : 문장이 주어졌을 경우 알맞은 단어를 찾는 경우 단어에 대해서 분석을 하려면 단어들을 숫자들의 vector로 변형해주어야 한다. 주로 one hot vector로 변형을 해준다. 하지만 one hot vector 에는 여러가지 문제점이 존재한다. Sparsity : 굉장히 정보가 적다. Orthgonal representati..

반응형