PL40 graphviz 설치 및 기본 사용법 개요 포스팅 목적 결정트리나 네트워크 등을 시각화해주는 라이브러리 graphviz에 대해 간단하게 알아본다. 이로 만들어진 그래프를 dot graph라 하며, dot language를 이용하여 그래프를 나타낼 수 있다. 자세히 쓸 일은 아직 없어서, 기본적인 설치방법과 실행법만 포스팅한다. 설치방법 1. graphviz 실행파일을 설치한다 홈페이지에 들어가 자신의 운영체제에 맞는 EXE installer를 다운받는다. 웬만한 경우에 윈도우는 64-bit을 받으면 된다. 2. 래퍼모듈 설치 설치한 graphviz를 컨트롤하는 wrapper 모듈을 설치해야한다. 커맨드창에서는 pip install graphviz, 아나콘다에서는 conda install python-graphviz 를 입력해 설치한다 3. OS .. PL/Python 2022. 10. 18. [matplotlib] 기본 그래프그리기: plot() 함수 포스팅 목적 matplotlib의 pyplot.plot() 함수의 기본적인 사용법을 정리한다. pyplot을 plt로 임포트하기때문에 plt.plot()으로 자주 사용한다. 함수원형 매뉴얼에 나온 콜시그니쳐를 보자. 1. [x] 첫번째 인자는 [x]이며, 괄호가 쳐져있다는 것은 생략이 가능하다는 뜻이다. y값 리스트만 넣어도 plot이 가능하다. 주어진 y값 리스트에 맞춰서 0...n-1개의 x값 인덱스 어레이가 생성된다. 2. [fmt] [fmt]는 색, 마커, 라인스타일을 지정할 수 있는 포매팅 스트링을 말한다. 'r*--'를 지정하면, 색은 'red', 마커는 '*', 라인스타일은 '--'라는 뜻이다. 연습예제 import matplotlib.pyplot as plt y1=[2,2,1] # x1은 .. PL/Python 2022. 10. 13. [numpy] meshgrid 함수 알아보기 포스팅 목적 numpy의 meshgrid 함수를 이해하고 사용방법에 익숙해지기 위함이다. 왜 이해를 못했는지 모르지만, 이상하게 바로 직관적으로 이해를 못했었다. 알고나니 어려운 것은 아닌데, 포인트를 못 잡으면 헤맬 수도 있겠다 싶다. meshgrid 함수 기본 사용법 Parameters 일단 필수인자로, xi 배열을 받는다. x-y평면에서 2차원 그리드를 만들 것이면 그리드로 지정할 x범위와 y범위를 넘겨준다. x-y-z평면에서 3차원 그리드를 만들 것이면 3차원 입체 그리드로 지정할 x범위, y범위, z범위를 넘겨준다. 선택옵션으로는 indexing이 있다. 디폴트로 indexing='xy'인 Cartesian indexing방식이고, indexing='ij'를 주면 matrix indexing을 .. PL/Python 2022. 10. 7. [numpy] linspace 기본 사용법과 arange와의 차이점 포스팅 목적 자주 등장하지만 아직 잘 모르겠는 numpy linspace에 대하여 간단히 사용법을 알아보고 익힌다. np.linspace()함수를 사용하고 보니 np.arange()와 매우 유사한데, 차이점도 짚고 넘어가자. linspace 함수개요 "Return evenly spaced numbers over a specified interval." Linspace는 아마 Linearly Spaced의 약자인 듯 하다. 인자로는 linspace(start, stop, num)을 받는다. 시작지점과 끝점은 필수인자이며, num값은 주어지지 않았을 때 기본적으로 50의 값을 갖는다. 즉 50등분한다. 반환값은 당연히 1차원 ndarray이다. linspace 예제코드와 모양새를 보자! 1부터 5까지 5등분.. PL/Python 2022. 10. 7. subplot, subplots 함수 사용법과 차이점 포스팅 목적 matplotlib.pyplot의 subplot과 subplots 함수를 공부하고 익히기 위함 공부순서 더 간단한 subplot먼저 본 후 subplots을 다룬다. 마지막엔 차이점을 간략하게 정리해본다. subplot 함수 기본 사용법 인자 subplot()의 인자 3개는 순서대로 1)행의 수, 2)열의 수, 3)번호를 나타낸다. 행과 열을 받는다는건, 매트릭스가 나온다는 거겠지? 이 매트릭스 구역에 번호가 있으며, 세번째 인자 index로 이를 지정해 사용할 수 있다. 번호는 1부터 매기며, 순서는 왼쪽 위부터 오른쪽으로, 그 다음줄 순이다. 리턴값 'axes'라 불리는 걸 리턴한다. 어떤 projection이 일어났느냐에 따라 다른 종류의 axes 클래스를 리턴한다. 예제코드와 실행결과.. PL/Python 2022. 10. 5. make_classification 함수로 랜덤 데이터셋 생성하기 포스팅 목적 사이킷런의 make_classification() 함수에 대해서 공부한다 오늘의 목표 랜덤 데이터셋을 생성하여 스캐터 그래프를 그릴 수 있게 된다. 피쳐 2개, 클래스 3개짜리 랜덤 데이터셋을 만들어 그린다. make_classification() 함수 make_classification 함수는 sklearn.datasets에 있다. 분류를 위한 랜덤 데이터셋을 생성할 수 있도록 도와주는 함수다. 함수원형 리턴값으로는 피쳐 ndarray, 레이블 ndarray를 받는다. 실습 코드 from sklearn.datasets import make_classification X_features, y_labels = make_classification(n_samples=300, n_features=2.. PL/Python 2022. 10. 5. malloc 기본적인 사용법 malloc 기본적인 사용법 이건 왜 외워지지가 않냐.. 함수 원형 #include void* malloc(size_t size); 성공 시 할당한 메모리의 첫 번쨰 주소 리턴, 실패시 null 리턴 사이즈를 넣어줘야하므로 int배열이라면 sizeof(int)*길이 를 하면 된다. void* 리턴이라서, char* 배열이면 캐스팅을 명시적으로 해주어야한다. 쓰고 난 뒤 free 꼭 해줘야한다. 마찬가지로 에 있고, free(ptr) 넣어주면 된다. PL/C++ 2022. 7. 22. 문자와 숫자 간 변환법(char to int, int to char) 문자와 숫자 간 변환법(char to int, int to char) int to char int형을 char배열에다가 넣으려면? sprintf()를 이용하면 된다 int num = 3; char str[15]; sprintf(str, "%d", num); char* to int 에 있는 atoi() 함수를 이용하면 된다. 자매품 atof(char to double), atol(char to long int)도 있다. 사용법 char str[10] = "123"; int num = atoi(str); 하지만, char* 형을 int로 바꾸는 것임에 유의해야 한다. 만약 str[10] 배열 안의 수 123이 1,2,3이고 이를 숫자로 바꾸려면? char*을 만들어줘도 된다. char* arr; arr = .. PL/C++ 2022. 7. 22. floor, ceiling 등 함수를 쓰지 않고 반올림 간단하게 구현하기 floor, ceiling 등 함수를 쓰지 않고 반올림 간단하게 구현하기 반올림 구현하기 floor 같은 함수를 써도 되지만, int형 캐스팅을 이용해 간단하게 구현할 수 있다. int res = (double)sum / n + 0.5; 양수값의 경우 +0.5하고 인트 캐스팅 음수값의 경우 -0.5하고 인트 캐스팅 PL/C++ 2022. 7. 22. call by value, address, reference 차이점 정리 call by value, address, reference 차이점 정리 Call by Value (값 호출) 함수에 인자를 넘겨줄 때, 변수의 값을 넘겨준다. #include void swap(int a, int b) { int tmp; tmp = a; a = b; b = tmp; printf("In func: a=%d, b=%d\n", a, b); } int main() { int a=1; int b=2; printf("main: a=%d, b=%d\n", a, b); swap(a, b); printf("After func: a=%d, b=%d\n", a, b); } 실행시켜보면, 함수를 빠져나왔을 때 값이 변하지 않았음을 확인할 수 있다. 즉 주소를 전달한 게 아니라 값만 함수에 전달했기 때문에 함.. PL/C++ 2022. 7. 19. lvalue와 rvalue의 이해, 증감연산자와 앰퍼센드 연산자 lvalue와 rvalue의 이해, 증감연산자와 앰퍼센드 연산자 l-value와 r-value left value와 right value를 의미하며, int a = 3; 같은 식에서 왼쪽의 a가 l-value, 오른쪽이 r-value이다. 즉 l-value: 식 이후에도 남아있는 값. 주소를 가지고있음. r-value: 메모리 주소가 없고, 표현식 범위에만 있는 임시 값. 임시 변수! 예를들면 if(a PL/C++ 2022. 7. 19. STL sort 함수 사용법 헤더를 인클루드 해야한다. C++ STL에서 제공한다. O(NlogN) 시간 복잡도를 가진다. 퀵정렬은 피봇을 어떻게 잡느냐에 따라 최악의경우 O(N^2)의 시간 복잡도를 가지지만 sort 함수의 알고리즘은 최악의 경우에도 O(NLogN)을 보장하는 intro sort로 구현되어있다. 사용법 sort(배열 시작주소, 배열 끝주소+1); 로 사용한다. 즉, 배열의 원소가 n이라면 sort(arr, arr+n)으로 사용하면 된다. 아래는 사용 코드 예시 #include #include #include using namespace std; int main() { int len = 5; int arr[len] = {1,3,5,2,4}; sort(arr, arr+len); for(int i=0;i PL/C++ 2022. 7. 19. 이전 1 2 3 4 다음