Python 78

[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..

[Python] tuple

tuple의 형태와 기초를 다루는 형태로 코드를 작성해보았다. # tuple t1 = () t2 = (1,) t3 = (1, 2, 3) # 괄호를 생략해도 무방 t4 = 1, 2, 3 t5 = ('a', 'b', ('ab', 'cd')) t1, t2, t3, t4, t5 # list 의 값은 변경이 가능하지만 tuple의 값은 변경이 불가능하다. # 지우는 것이 불가능 t1 = 1, 2, 'a', 'b' del t1[0] # error # 변경 불가능 t1[0] = 'c' # error # indexing t1 = 1, 2, 'a', 'b' t1[0] # 1 a = ((1 ,2) , (3,4), (5,9)) a[:][1] # (3, 4) # slicing t1[:-1] # (1, 2, 'a') t1[1:..

Python 2021.06.25
반응형