본문 바로가기
반응형

프로그래밍 ( Programming )86

[ML] 머신러닝 ( Machine Learning ) 인공지능은 현재 다양한 산업 문제들을 해결하고 데이터들을 분석하여 최적의 방향으로 나아가게 해주고 있습니다. 인공지능은 말 그대로 사람이 만든 지능입니다. 해당 지능을 수학적 모델에 근거해서 기계에 적용시킴으로써 기계가 학습할 수 있는 능력이 되게 됩니다. 현재 우리가 보고 있는 인터넷에서도 엄청난 머신러닝 기법들이 적용이 되있는데 대표적으로 데이터 마이닝, 즉 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 분석하여 가치 있는 정보를 추출하는 방법입니다. 웹 애플리케이션부터 의학, 생물학, 공학까지 전반에서 적용되어 데이터를 해석하고 있습니다. 또한 과거 2007년에 나온 자율비행을 하는 헬리콥터부터 NLP(자연어 처리), 컴퓨터 비젼과 우리가 자주 사용하는 아마존 넷플릭스 .. 2021. 2. 7.
경사하강법 (Gradient descent) 경사 하강법 (Gradient descent) Gradient Descent 방법은 1차 미분계수를 이용하여 함수의 최소 값을 찾아가는 iterative 방법입니다. Gradient Descent는 함숫값이 낮아지는 방향으로 진행이 되는데 최종적으로는 최소 함숫값을 갖도록 하는 독립 변수를 찾는 방법입니다. 때문에 이러한 진행방법 때문에 앞이 안개로 덮인 산에서 가장 낮은 위치를 찾기 위해서 산을 더듬으며 내려오는 것과 비슷하다고 해서 Steepest Descent라고도 불립니다. Gradient Descent의 주목적은 함수의 최솟값을 찾는 것입니다. 함수는 머신러닝에서 예를 들면 Sum of Squared Residual이 될 수 있습니다. 때문에 경사 하강법을 통해서 Residual의 합이 최소가 .. 2021. 1. 23.
[c++] 포인터 설명, 예제코드 C언어의 꽃인 포인터에 대해서 적어보도록 하겠습니다. 우선 주소 값이란 게 있습니다. 주소 값은 어떤 특정 데이터가 저장된 위치의 시작 주소를 의미합니다. c++에서는 주소 값을 1바이트 크기의 메모리 공간으로 나누어 이해를 할 수 있습니다. 그리고 포인터(pointer)는 한글로는 가르키는자라는 의미답게 메모리의 주소 값을 저장하는 변수가 되겠습니다. 즉 포인터 변수라고도 하며 예를 들어 int 변수, 100을 가지는 a를 선언하였을 때 포인터 ptr_a라는 변수는 해당 a의 주소 값을 저장하는 역할을 하게 됩니다. int a = 100; int *ptr_a = &a; 포인터 선언을 위해서는 하단과 같은 형식을 따라야합니다. 선언 형식 : 타입* 포인터 이름; 그리고 추가적으로 동시 선언을 하기 위해서.. 2021. 1. 17.
[Git] visual studio community와 github 연동 이번 포스팅은 Visual studio community와 github을 연동하는 법과 푸시하는 과정까지 적어보도록 하겠습니다. 우선 필요한 소프트웨어는 Visual Studio입니다. 하단의 링크를 타고 기업용이 아닌 community용을 다운로드하여서 설치해주시면 되겠습니다. Visual Studio Community 2019 - Free IDE and Developer Tools Try our free, fully-featured, and extensible IDE for creating modern developer apps for Windows, Android, & iOS. Download Community for free today! visualstudio.microsoft.com 설치가 완료.. 2021. 1. 16.
[Python] numpy - hstack, vstack 함수 이번 글에서는 Numpy의 hstack, vstack 메서드에 대해 적어보겠습니다. 둘의 기능은 우선 ndarray 형식의 배열을 결합할때 유용하게 사용되는 함수입니다. hstack에서 앞의 h는 Horizontal 즉 수평이라는 뜻으로 hstack을 사용하면 가로로 행렬 결합이 이뤄집니다. 반면 vstack의 v는 Vertical의 줄임말로 수직이라는 뜻을 가졌습니다. 때문에 vstack을 사용하면 수직으로 행렬 결합이 이뤄집니다. 파라미터는 hstack() 괄호 안에 합치고 싶은 행렬들을 넣으면 되는데 다만 주의해야할 점은 합쳐질 행렬들이 행이나 열의 개수가 일치가 되어야 합니다. 즉 vstack을 사용할 때는 반드시 요소의 (열) 개수가 일치해야 하며 배열의 행은 일치하지 않아도 됩니다. 그리고 h.. 2021. 1. 12.
[Python] numpy.reshape의 -1 의미 및 기능 파이썬의 NumPy를 이용 시 배열 차원(Dimension)을 재구조화 및 변경하고자 할 때 reshape() 함수를 사용합니다. 예를 들어, 3개의 행과 4개의 열로 구성된 2차원의 배열로 재설정 시 reshape(3, 4)처럼 reshape()의 매개변수로 변경하고자 하는 배열의 행과 열의 차원을 정수로 입력해주면 됩니다. 한 가지 특별한 것은 reshape(-1, 5) 또는 reshape(2, -1)처럼 함수의 매개변수가 '-1'로 들어가 있는 경우가 있는데 이때 reshape()의 '-1'이 의미하는 바는, 변경된 배열의 '-1' 위치의 차원은 "원래 배열의 길이와 남은 차원으로부터 추정"이 된다는 뜻입니다. (One shape dimension can be -1. In this case, the.. 2021. 1. 12.
[Python] numpy.meshgrid란 numpy의 meshgrid 함수는 1차원 좌표 배열 (x1, x2..... xn)에서 N차원 직사각형 격자를 만드는 함수입니다. 매개변수 종류 x1, x2, .... 배열, 그리드의 좌표를 나타내는 1차원 배열 indexing 배열, 출력의 인덱싱을 정의 ( xy - 좌표 또는 ij - 행렬 ) sparse 부울, 메모리를 절약하기 위해 희소 그리드를 반환 ( sparse = True ) copy 부울, 메모리를 절약하기 위해 원래 배열에 대한 뷰가 반환 ( copy = True ) meshgrid() 메서드를 이용한 meshgrid 생성 행렬x2 와 y2를 생성하여 각 행렬의 해당 요소 쌍이 그리드에 있는 모든 x1 및y1 좌표를 제공합니다. import numpy as np x1 = np.linsp.. 2021. 1. 11.
[Python] rand와 randn 차이 - rand : numpy 내부의 random.rand 함수는 0~1 사이의 값의 균일한 분포, 즉 uniform distribution을 가지는 값을 return 하는 함수입니다. print(np.random.rand()) # 0.4539748165599371 print(np.random.rand(3)) # [0.21223575 0.98075294 0.64475223] print(np.random.rand(3,2)) """ [[0.02131671 0.31005377] [0.39131747 0.97938694] [0.84951876 0.09056895]] """ - randn : numpy 내부의 random.randn 함수는 rand와는 다르게 기대값이 0, 표준편차가 1인 가우시안 표준 정규 분포를 .. 2021. 1. 11.
5622번 - 다이얼 ( 백준 알고리즘/C++ ) 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다. www.acmicpc.net 문제 : 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다. 상근이의 할머니는 전화번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하.. 2020. 12. 19.
반응형