🔥 Programming
[Tensorflow / Deep learning] 아이리스 품종 분류
아이리스 품종 분류 예제를 풀어보기 전 머신러닝에 대해 간단하게 알아보자. 머신러닝은 크게 3가지로 분류가 된다. 강화학습 지도학습 비지도학습 우선 우리가 예제를 풀었던 보스턴 집값 예측이나, 레모네이드 값 예측과 같이 딥러닝 및 AI라고 불리는 것들은 전부 지도학습에 속한다. 여기서 지도학습의 분류와 회귀의 개념에 대해 정말 간단하게 알아보자. 회귀와 분류를 간단하게 설명을 하자면, 회귀( regression )는 종속변수가 숫자인 경우를 뜻하고, 분류( classification )는 종속변수가 숫자가 아닌 경우를 뜻한다. 보스턴 집값 예측과 레모네이드 값 예측은 종속변수가 숫자라서 회귀 알고리즘을 사용하였고, 아이리스 품종 예측은 종속변수가 글자라서 분류 알고리즘을 사용할 예정이다. 자 그럼 과거의..
[Tensorflow / Deep learning] 보스턴 집값 예측
전 포스팅은 간단한 하나의 독립변수로 모델을 만드는 예제를 해보았다. 이번엔 독립변수가 여러개일 경우 모델을 만들어 예측을 하는 방법을 알아보겠다. 아래 이미지는 1978년도 보스턴주의 506개 동네의 집값을 보여주는 표이다. 해당 표에서의 첫번째 행에서 1 ~ 13번 열 까지는 도시를 나타내는 독립변수이다. 마지막 14번째 열은 집값을 해당 도시의 집값의 중앙값을 보여준다. 그럼 왼쪽의 공식은? 이 독립변수들이 어떻게 종속변수에 영향을 미치는지를 보여준다. 위의 공식을 적용하여 여러 행들 중, 하나를 선택하여 적용해보자. 그 예시가 아래 이미지와 같다. 이와 같이 각각의 독립변수들은 모두 종속변수에 영향을 준다. 그렇다면 딥러닝의 조건 4가지를 위의 데이터를 대입하여 정리해보자. 독립변수는 1 ~ 13..
[Tensorflow / Deep learning] 레모네이드 판매 예측
요즈음 딥러닝이 정말 '핫' 하다. 회사에서도 딥러닝 기반 기능 개발이 되어가고 있고, 뉴스에서도 심심찮게 나온다. 재작년에 조금 공부하고 손 놨었는데, 다시 하나씩 공부해보려고 포스팅 한다. 우선 딥러닝을 하기위해선 필수 불가결적으로 4가지 단계가 필요하다. 과거 참조할 데이터 모델의 구조 참조할 데이터를 모델에 학습 시키기. 해당 모델을 이용하여 결과 데이터 추출하기. 자 그럼 간단한 문제를 하나 풀어보도록 하자. 위의 이미지는 과거 참조할 데이터이다. 해당 이미지의 온도가 만약 15도 일때, 판매량을 예측하는 프로그램을 만들고자 한다. 그럼 위의 데이터를 참조할 데이터로 정하고 시작해보자. 기본적으로 tensorflow와 pandas를 사용할 것이다. pandas는 C#으로 생각하면 DataGrid..
[C/C++] C++ auto keyword의 장점과 단점
서론 C++ 에서는 auto라는 keyword가 있다. 쉽게 설명하자면, 타입을 명시적으로 쓰지 않아도, 코드에 맞게 자료형을 추론해주는 키워드이다. C#에서는 var 변수가 위 설명된 auto와 명시적으로 정의를 해주지 않는다는 점에서는 동일합니다. 저에게는 var 변수가 더 익숙하기에 auto에 대해 이해를 할 때 var와 비슷한 역할을 한다는 정의를 보았을 때 이해가 빨랐습니다. auto 키워드는 컴파일러가 컴파일 하는 과정에서 자료형을 결정해주기 때문에, 반드시 선언과 동시에 초기화를 해주어야한다. 아래의 이미지를 보자. 또한 컴파일 과정에서 자료형을 결정해준다는 것은 자칫 잘못하면 해당 자료형의 추적이 어려울수도 있고, 직관성이 떨어질 수도 있다. 아래 이미지를 보자. 컴파일 과정에서 자료형을 ..
[OpenCV4] C# OpenCV4 배경색 변경
배경색 변경 OpenCV4를 사용하다보면, 이미지를 병합시켜야할때와, 병합 이후 배경이 함께나와 제거해야할 경우가 많다. 실시간으로 병합되는 이미지를 배경 이미지 내에서의 위치를 변경시켜야할 때, 그 이미지의 배경을 지워주지 않으면 원활한 이미지 병합을 했다고 볼 수 없다. 배경 자체를 지우는 방법도 있지만, 우선 배경 색 변경을 하는 방법에 대해 알아보자. 변경할 이미지는 배경이 검은색인 볼링공 이미지이다. 해당 이미지의 배경색을 흰색으로 만들 예정이다. C#에서 포인터를 사용하려면 unsfae를 이용하여야 한다. 그리고 비트맵의 Lock Bits를 통해 Data를 가져오고, Scan0을 통해 포인터 주소를 구한다. 이후 비트맵의 한 픽셀의 RGB 값이 나오게 되는데 이 부분을 수정을 통해 색을 바꿔 ..
[Python] selenium을 함수에서 사용 시 자동으로 꺼짐 방지
chrome driver로 기차 자동 예매 매크로를 만드려고 시도하던중.. chrome이 자동으로 꺼지는 현상이 나타났다. 그래서 chrome html로 어떤 부분이 어떻게 명명되어있는지 확인이 안되는 상황일때, 사용하면된다. os.path.join으로 chrome driver.exe 파일 경로를 path에 지정해 주고, selenium으로 크롬을 열어준다. 이 경우 chrome driver를 함수에서 실행시 함수가 종료될때 셀레니움도 같이 종료되어 그렇다고한다. 결국 함수가 종료 되지 않게 하도록만 하면된다. while을 사용하여 함수가 종료되지 않게 하도록 한다. 아래는 chrome driver로 실행시켰으나, 바로 꺼졌던 전체 코드이다. from selenium import webdriver fro..
[OpenCV4] C# OpenCV4 Template Matching
Template Matching Template Matching은 더 큰 이미지에서 찾고자 하는 이미지를 찾는 기능이다. OpenCV에서 없어서는 안될 기능이며, 자세한 사항은 아래 OpenCV URL에서 확인할 수 있다. https://docs.opencv.org/4.x/d4/dc6/tutorial_py_template_matching.html OpenCV: Template Matching Goals In this chapter, you will learn Theory Template Matching is a method for searching and finding the location of a template image in a larger image. OpenCV comes with a func..
[C/C++] C++ 벡터 사용시, () 선언과 [] 선언의 차이
C++ 에서 vector를 선언할 시, 크기 선언을 ()괄호로 하는 방법과, []괄호로 하는 방법이 있다. 이 두가지 선언 방법의 차이점 []괄호로 크기 선언시 해당 벡터의 원소 인덱스 마다 동적으로 크기 할당을 할 수 있다. ()괄호로 크기 선언시, 선언한 크기만큼 공간을 만든 후, 초기화를 한다. 즉, [] 괄호는 크기가 동적으로늘어나나, 텅 빈 배열이라 보면 되고, () 괄호로 선언 시, 해당 크기만큼만 초기화를 시켜준다. 예시 [] 괄호로 벡터 선언시 #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); vector vec[100]; for (int i..