배열 리스트(Array List)란? 배열 리스트는 c 언어에서 사용되는 배열을 통해 구현한 리스트를 말한다. 배열을 구성하는 원소,자료 들이 순서대로 연속하여 메모리에 저장된다. 즉 배열 리스트에서 논리적 순서와 물리적 순서는 같다고 할 수 있다. 위 그림에서 (1)에서 정수형 원소 1,2,3,4가 차례대로 저장되었음을 알 수 있고 (2)를 통해 실제 메모리상에서도 4개의 원소가 차례대로 저장되어 있으므로 논리적인 순서와 물리적인 순서가 같음을 알 수 있다. 또한 (2)를 통해 저장할 수 있는 원소는 최대 6개이고 현재 4개가 저장되어 있음을 알 수 있다. 배열 리스트의 원소 추가 배열 리스트의 기본적인 연산중 하나인 원소 추가 연산을 구현을 어떻게 해야할지 생각을 해보자. 그냥 리스트의 맨 뒤에 원소..
데이터 사이언스 사용 설명서 검색 결과
리스트(List)란? 리스트는 가장 단순한 구조를 가지는 기초적인 자료구조이며 스택(Stack), 트리(Tree), 그래프(Graph), 큐(Queue) 등등 다른 자료구조들의 구현에도 사용된다. 리스트는 자료를 순서대로 저장하는 자료구조이다. 여기서 순서는 '한 줄'을 의미하며 여러 개의 자료가 일직선으로 서로 연결된(Sequential) '선형구조‘를 의미한다. 예를 들어 아래 파일을 저장하는 프로그램을 생각해보자 파일이 순서대로 저장되어 있음을 볼 수 있다. 이때 리스트와 배열이 상당히 비슷하다고 생각하는 사람이 있을 것이다. 실제로 매우 비슷하다 하지만 배열과 다르게 원소 중 하나가 제거된다면 그 빈자리를 채워야 하고 또한 중간에 원소를 추가하기 위해서는 뒤에 있는 원소들을 한 칸씩 뒤로 이동시켜..
import matplotlib.pyplot as plt import numpy as np import cv2 def bgr_to_rgb(imgfile): b, g, r = cv2.split(imgfile) imgfile = cv2.merge([r, g, b]) return imgfile 이미지 더하기 두개의 이미지를 더하는 데는 2가지 방법이 있다. 하나는 + operator를 사용하여 연산하는 방법과 다른 하나는 opencv의 add함수를 사용하는 것이다. 두 방법 모두 서로 다른 이미지를 더하지만 더하는 방식에는 그 차이가 있다. img1 + img2 우리가 opencv의 imread 함수로 이미지를 불러들였을 때, 그 이미지가 numpy array의 형식을 가지고 있으므로 img1과 img2를 더..
사이킷런에서는 분류를 위한 결정트리 클래스인 DecisionTreeClassifier와, 회귀를 위한 결정트리클래스인DecisionTreeRegression을 제공한다. 두가지 클래스는 다음의 하이퍼파라미터를 동일하게 제공한다. 대부분의 알고리즘이 직면한 문제가 과적합인 만큼 결정트리의 하이퍼 파라미터 외에도 대부분의 머신러닝 알고리즘들의 하이퍼 파라미터는 과적합을 제어하기 위한 목적으로 설정해준다고 생각을 하면 이해하기 쉽다. 결정트리 하이퍼 파라미터 - min_samples_split : 노드를 분할하기 위한 최소한의 샘플 데이터 수. -> 과적합을 제어하는 데 사용됨. 디폴트는 2이고 작게 설정할수록 분할되는 노드가 많아져서 과적합 가능성 증가 과적합 제어. 1로 설정할 경우 분할되는 노드가 많아져..
import cv2 import numpy as np 이미지 속성 1. img.shape : 이미지 해상도 및 채널 수 (height, width, channel), (행, 열, 채널) 2. img.size : 이미지 크기 (byte 단위) 3. img.dtype : 이미지 데이터 타입 img = cv2.imread('bald-eagle-5463386_1280.jpg') print(img.shape) print(img.size) print(img.dtype) cv2.imshow('Show Image', img) cv2.waitKey(0) cv2.destroyAllWindows() 이미지 픽셀 값 얻고 수정해보기 한 장의 이미지는 지정된 크기의 BGR 값들의 배열로 이루어져 있다. 예를들어 10 * 10 ..
최근 머신러닝에 대해서 공부를 하기 위해 아나콘다에서 가상환경을 만들어 머신러닝 패키지를 다운 받았다. 새로운 가상환경을 생성하기 위한 코드 conda create -n [new_env] 하지만, 가상환경을 실행시킨 후, jupyter notebook을 입력해 주피터 노트북을 켰을 때, 이전에 root 환경과는 다른 파일들이 아주 많은 디렉토리로 들어가지고, 그 디렉토리에서 상위 폴더로 이동할 수도 없었다. 이런 오류의 원인을 찾던 도중 해당 디렉토리가 C:\windows\system32라는 것을 알았다. 디렉토리는 Anaconda Prompt에서 jupyter notebook을 입력하는 줄에 디렉토리가 표시되어 있었다. 이런 경우, 가상환경에서 jupyter notebook을 틀기 전에 cd ... 를..
import cv2 import numpy as np 트랙바 만들기 cv2.createTrackbar(trackbarName, windowName, value, count, onChange) cv2.createTrackbar('B', 'color_palette', 0, 255, onChange) 이 함수는 트랙바를 지정된 윈도우에 생성하는 함수이다. 1. trackbarName : 트랙바 이름 2. windowName : 윈도우 이름 3. value : 트랙바 시작 값 4. count : 트랙바 끝 값 5. onChange : 트랙바 이벤트 발생시 수행되는 TrackbarCallback 콜백함수 TrackbarCallback :: def onChange(x) createTrackbar 함수에서 마지막 인..
생성 DataFrame의 열 생성은 쉽게 만들 수 있다.(판다스의 가장 큰 장점이기도 하다.) 일단 2가지로 나눌 수 있다. 1) 새로 만드는 열의 모든 데이터를 상수로 채워 넣는 경우 이 경우는 주로, 새로운 열(피처)을 만들기 위해서 해주는 경우가 많다. 어려울 것 없이 titanic_df['Age_0'] = 0 #새로 만들어진 'Age_0'열의 모든 value 값들이 0으로 채워진다. titanic_df.head(3) 'Age_0'이라는 열이 존재하는 열이 아니라, 새로 생성할 열의 이름을 대괄호 안에 작은 따옴표로 지정해 준 뒤 등호 오른쪽에 상수를 넣으면 해당 열의 모든 Value 값들이 해당 상수 값으로 채워지는 것을 확인 할 수 있다. 2) 기존에 있는 열(column)을 이용하여 새로운 열..
앙상블러닝 앙상블이라는 단어는 머신러닝을 접하면서도 종종 들어본 경우가 많았을 것이다. 과연 앙상블 러닝은 어떤 기법일까? 기존의 문제점 (과적합) 앞에서 머신러닝을 통해서 예측을 하는 경우에, 과적합(Overfitting)이라는 문제가 항상 존재하고 있다는 것을 언급했었다. 과적합에 대한 원인은, 모델이 데이터를 기반으로 학습을 수행하는 과정에서 너무 세부적인 부분까지 학습데이터에 초점을 맞춘 나머지, 처음 보는 테스트 데이터는 제대로 예측을 못한다는 것이었다. 그렇다고, 너무 큰 단위로 학습을 하고 세부적인 부분을 무시해버린다면, 전체적인 ML 알고리즘 모델의 성능이 떨어지는 문제도 동시에 존재했다. 과적합에 대한 해결책 => 앙상블 러닝 따라서, 사람들은 이 문제를 해결하려고 시도하던 도중, 여러개..
특징을 나타내는 값을 매칭하기 위해서는 회전이나 크기 등에 영향이 없어야 하며, 이를 위해서는 feature descriptor(특징 디스크립터)가 필요하다. 특징 디스크립터는 keypoint의 주변의 밝기나 색상 등의 정보를 표현한 것으로, keypoint의 주변 픽셀을 일정한 크기로 나눈 후 각 영역에 대한 pixel의 그래디언트를 계산한 것이 된다. 특징 디스크립터를 활용한 검출기의 종류는 다음과 같다. ORB(Oriented FAST and Roteted BRIEF) FAST 코너 검출기와 BRIEF의 회전이 고려되도록 한 것 SIFT(Scale Invariant Feature Transform) 크기 변화에 관계없이 특징 검출이 이루어지도록 한 것 SURF(Speed Up Robust Featu..
최근댓글