가우스 소거법 (Gauss Elimination)
·
[Mathematics] - Linear Algebra
https://dev-ryuon.tistory.com/45 # 0. 선형 시스템 (Linear System)[이론] 중고등학교때 다들 '함수'라는 개념은 익히 알고있을 것이다. 함수는 방정식으로써 표현이 가능하고, 미지수가 적을 경우 수기로도 충분히 해를 구할 수 있다. 하지만, 방대한 양의 데이dev-ryuon.tistory.com이 포스트는 선형 시스템에 대해 숙지하고 보시는 것을 추천합니다. 이론선형 시스템은 해를 가지는 케이스가 총 3가지로 나누어진다. 1. 해가 하나인 경우 - x=2 인경우에만 성립한다.ex) 3x = 6 2. 해가 여러개인 경우 - 어떠한 x를 대입하더라도 성사된다.ex) 0x = 0 3. 해가 존재하지 않는 경우 - 어떠한 x를 대입하더라도 성사되지 않는다.ex) 0x = ..
[Tip] 딕셔너리 Fancy하게 다루기
·
[Language] - Python
개요이번 포스트에서 다룰 내용은 딕셔너리를 좀더 fancy하게 다루는 방법들을 알아보려고 한다. 물론 기본 문법(for loop, if, ..)들로도 충분히 원하는 딕셔너리에 대한 데이터 전처리가 가능하지만, 가능한 가독성이 좋고 Python에서 지원하는 문법들을 적극 활용하여 딕셔너리를 다룰 수 있는 방법들이 있다. 딕셔너리 컴프리헨션 (Dictionary Comprehension)# 컴프리헨션 적용 전squares = {}for x in range(10): squares[x] = x ** 2# 컴프리헨션 적용 후 ({키: 밸류 for 원소 in 반복할 iterable})squares = {x: x ** 2 for x in range(10)}print(squares) # {0: 0, 1: 1, ..
QSplitter
·
[Framework] - PyQT
필자는 위젯을 배치하여 유연하게 사이즈를 조절하는 법이 궁금했다.. 현재 두개의 QTableWidget을 QMainWindow에 생성한 상태이다. 정렬할 위젯들을 복수 선택한다. 위의 빨간 버튼을 클릭하면 가로든 세로든 유연하게 배치할 수 있다. QSplitter 안에 위젯들이 정렬된 것을 확인할 수 있다. 이는 실행되는 상태에서도 마우스를 통해 위젯의 크기를 조절할 수 있다.
Convolution Neural Network (CNN) - Code
·
[AI] - Neural Network
지난 포스트에서는 CNN의 개념에 대해 살펴보았다. 이번 포스트에서는 CNN을 실제로 구현 및 학습하는 코드를 직접 작성해본다. 코드는 Pytorch를 기반으로 작성했다.1. 필요한 모듈 import import torchimport torchvisionimport 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..
QgsLayerTree
·
[Framework] - QGIS
root: QgsLayerTree = QgsProject().instance().layerTreeRoot()QgsLayerTree 클래스는 QgsLayerTreeNode클래스 기반이므로 child()와 parent() 메소드를 통해 부모, 자식 노드를 반환할 수 있다. 이는 계층형 UI의 model을 구현할 때 용이하다. """/*************************************************************************** begin : email : ***************************************************************************..
QGIS MV (Model-View) 패턴
·
[Framework] - QGIS
필자는 QGIS Framework의 위와 같은 UI에서 여러 그룹을 선택했을 때 해당 그룹들을 반환하는 유틸을 작업했다. QGIS에서 자체적으로 선택된 레이어를 반환하는 QgisInterface.activeLayer() 메소드가 있지만 해당 메소드는 하나의 레이어밖에 못가져오는 한계가 있다. 일단 이 포스트를 시작하기 이전에 염두해야할 사항이 있다. 1. QGIS Framework는 PyQT 기반이라는 것2. MV (Model-View) 패턴으로 UI가 구성되어 있다는 것 우선 다음과 같은 코드로 레이어 패널에 속한 그룹의 트리(QgsLayerTree)를 가져왔다.root = QgsProject.instance().layerTreeRoot() 그리고 해당 트리를 model에 import한 다음 view에..
[Tip] win32com 모듈을 사용한 엑셀 제어
·
[Language] - Python
# Excel.Application COM 인스턴스 생성excel = win32.Dispatch("Excel.Application")excel.Visible = Truecell = 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("$", ''..
Feature Scaling and Normalization (StandardScaler, MinMaxScaler)
·
[AI] - Machine Learning
서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업을 feature scailing이라고 한다.그에 대표적인 방법으로는 표준화(Standardization)와 정규화(Normalization)이 있다. 1. Standardization (StandardScalar)표준화는 가우시안 정규 분포를 따르도록 데이터의 피처를 변환하는 작업이다.여기서 가우시안 정규 분포는 평균이 0, 분산이 1인 분포를 의미한다.서포트 벡터 머신, 선형회귀, 로지스틱 회귀에서는 데이터가 가우시안 정규 분포를 따르는 것을 가정한다.표준화는 보통 하나의 데이터 그룹에 대해 표준화를 할 때 사용한다.특정 데이터가 데이터 그룹에서 어느 위치에 있는지 파악하기 위함.$z_i = \frac{x_i - mean(x)} {stdev(x)..
제너레이터 (Generator)
·
[Language] - Python
개요이번 포스트에서는 제너레이터에 대해 알아보고자 한다. 제너레이터는 지연 평가(Lazy Evaluation)을 통해 효율적인 메모리 관리를 가능케 해주는 iterable 객체이다. 제너레이터를 이해하기 위해서는 Eager Evaluation과 Lazy Evaluation의 개념을 알아야 한다. Eager Evaluationdef return_func(): print('return!') return 1li_com = [return_func() for i in range(10)]print(li_com)>>return!return!return!return!return!return!return!return!return!return![1, 1, 1, 1, 1, 1, 1, 1, 1, 1]Eager는 ..
QgsVectorDataProvider
·
[Framework] - QGIS
QgsVectorLayer 클래스의 dataProvider() 메소드를 호출하면 해당 벡터 레이어의 QgsVectorDataProvider 인스턴스를 얻을 수 있다. 이 인스턴스는 벡터 레이어에 속하는 QgsFeature 인스턴스들을 추가, 수정, 삭제를 할 수 있다. self.connection_feature = QgsFeature()connection_geometry = QgsGeometry().fromPolylineXY(points)self.connection_feature.setGeometry(connection_geometry)self.connection_layer.dataProvider().addFeatures((self.connection_feature,))위 코드는 QgsFeature 인스..