본문 바로가기

Python49

# 2. Convolution Neural Network (CNN) - Code 지난 포스트에서는 CNN의 개념에 대해 살펴보았다. 이번 포스트에서는 CNN을 실제로 구현 및 학습하는 코드를 직접 작성해본다. 코드는 Pytorch를 기반으로 작성했다. 1. 필요한 모듈 import import torch import torchvision import torchvision.transforms as transforms 필자는 시각데이터(이미지)를 다룰 것이기 때문에 torchvision 모듈을 택했다. 2. transform 정의 transform = transforms.Compose( [transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))] ) 이미지를 텐서형태로, 평균은 0.5, 표준편차도 0.5로.. 2021. 5. 6.
# 5. QgsLayerTree root: QgsLayerTree = QgsProject().instance().layerTreeRoot() QgsLayerTree 클래스는 QgsLayerTreeNode클래스 기반이므로 child()와 parent() 메소드를 통해 부모, 자식 노드를 반환할 수 있다. 이는 계층형 UI의 model을 구현할 때 용이하다. """ /*************************************************************************** begin : email : ***************************************************************************/ """ from qgis.gui import QgsLayerTreeView .. 2021. 4. 21.
# 4. QGIS MV (Model-View) 패턴 필자는 QGIS Framework의 위와 같은 UI에서 여러 그룹을 선택했을 때 해당 그룹들을 반환하는 유틸을 작업했다. QGIS에서 자체적으로 선택된 레이어를 반환하는 QgisInterface.activeLayer() 메소드가 있지만 해당 메소드는 하나의 레이어밖에 못가져오는 한계가 있다. 일단 이 포스트를 시작하기 이전에 염두해야할 사항이 있다. 1. QGIS Framework는 PyQT 기반이라는 것 2. MV (Model-View) 패턴으로 UI가 구성되어 있다는 것 우선 다음과 같은 코드로 레이어 패널에 속한 그룹의 트리(QgsLayerTree)를 가져왔다. root = QgsProject.instance().layerTreeRoot() 그리고 해당 트리를 model에 import한 다음 vie.. 2021. 4. 21.
# 13. [Tip] win32com 모듈을 사용한 엑셀 제어 # Excel.Application COM 인스턴스 생성 excel = win32.Dispatch("Excel.Application") excel.Visible = True cell = None # 파일 열기 workbook = excel.Workbooks.Open(self.path) # 시트 순회 for worksheet in workbook.Worksheets: print('This sheet name is .. ', worksheet.Name) # 시트 이름 출력 cell = worksheet.UsedRange.Find(self.tag) # 워크시트의 Range 인스턴스에서 찾기 if not cell: continue worksheet.Range(str(cell.address).replace("$".. 2021. 4. 20.
# 5. Feature Scaling and Normalization (StandardScaler, MinMaxScaler) 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 feature scailing이라고 한다. 그에 대표적인 방법으로는 표준화(Standardization)와 정규화(Normalization)이 있다. 1. Standardization (StandardScalar) 표준화는 가우시안 정규 분포를 따르도록 데이터의 피처를 변환하는 작업이다. 여기서 가우시안 정규 분포는 평균이 0, 분산이 1인 분포를 의미한다. 서포트 벡터 머신, 선형회귀, 로지스틱 회귀에서는 데이터가 가우시안 정규 분포를 따르는 것을 가정한다. 표준화는 보통 하나의 데이터 그룹에 대해 표준화를 할 때 사용한다. 특정 데이터가 데이터 그룹에서 어느 위치에 있는지 파악하기 위함. $z_i = \frac{x_i - mean(x)} {s.. 2021. 4. 16.
# 12. 제너레이터 (Generator) 이번 포스트에서는 제너레이터에 대해 알아보고자 한다. 필자는 제너레이터에 대해 잘 몰랐을 때 단순히 특정 loop에서 yield 키워드를 사용하면 제너레이터 인스턴스가 반환된다는 사실만 알았다. def gen(): li = [1, 2, 3, 4, 5] for i in li: yield i g = gen() print(g) >> 다음과 같이 제너레이터 메소드에서 반환되는 값은 제너레이터 인스턴스이다. 이 제너레이터 인스턴스를 루프에 적용하면 다음과 같이 사용할 수 있다. for i in gen(): print(i) >> 1 2 3 4 5 이렇게만 보면 일반적인 iterator와 다를게 없어보인다. 지금부터 제너레이터에 대해 좀더 알아보자. def gen2(): li = [1, 2, 3, 4, 5] yiel.. 2021. 4. 14.