let us not love with words or tongue but actions and truth.

파이썬 23

[그래프]산점도에 label 추가하기

지난번에 matplotlib을 활용해서 산점도 그래프 그리는 법을 알아봤습니다. 이번에는 산점도에 label을 추가하는 방법을 알아보고자 합니다. label 또는 텍스트를 추가한다는 말은 아래 그림과 같이 id1~3까지의 텍스트가 그림위에 표현 되는 것입니다. 그럼 matplotlib을 먼저 불러옵니다. 1 from matplotlib import pyplot as plt cs 지난번에 배웠던 산점도 그리는 코드를 기억하실까요? 2가지 방법으로 배웠는데, 첫번째는 case마다 직접 명시를 해주는 방법과 두번째로는 for문을 활용해 산점도를 그리는 방법이었어요. 오늘은 간단히 첫번째 방법으로 그려볼게요. (어차피 label을 입력할 때 for문을 써줘야 하기 때문에) 1 2 3 4 5 6 7 8 9 10 ..

IT/파이썬 2021.09.17

Bayesian optimization

오늘은 parameter의 최적값을 찾아보기위한 Bayesian optimization에 대해서 알아보려고 합니다. 우선 간단히 Basian optimization에 대한 기본 개념을 설명드릴게요. 초기값을 임의로 몇개 찍어서 성능을 비교하고 (아래코드 init_points 참고) 상대적으로 좋은 성능이 발견되는 point에서 반복적으로 더 좋은 성능을 갖는 parameter값을 선택한다고 보시면 될 거같아요. (너무 심플하게 설명한 것 같은 느낌이지만...) 그러면 여기서 말하는 성능은 어떤 것인냐라는 질문을 해보도록 하죠. 분석가마다 focusing 하는 성능값이 다를 수 있는데요. bayesian optimization에서는 최적화 하기위한 function을 미리 설정해주고, 그 값을 최대화 또는 ..

IT/파이썬 2021.06.29

[for loop 활용] 최적화된 feature set 찾기

오늘은 다양한 모델을 돌릴 때, 어떤 feature set에서 성능이 가장 성능이 좋은지 확인하는 방법을 소개하려고 합니다. 예를 들어 feature1~10까지 10개의 feature가 있을 때, "feature 5, 10 " 의 조합이 "feature 1, 2, 4, 7" 의 조합보다 더 나은지 모든 조합에 대해 비교분석 하실 때 유용한 코드를 공유하고자 해요. 학생때 배웠던 조합을 잠깐 회상해보자고 하면, 10개의 숫자중에서 3개만 뽑는 경우의 수는 (순서 상관없이) 위의 값으로 120가지의 경우의 수가 있습니다. 알고리즘 진행 시, 심지어 몇개의 조합이 최적인지도 알 수 없기 때문에 위의 값 될텐데, 그렇다면 더 많은 경우의 수가 존재하죠. 이걸 다 손으로 돌리기엔 너무나 비효율적이니 for loo..

IT/파이썬 2021.06.25

차원축소 tsne, pca와 비교

오늘은 pca, pls, tsne 등 다양한 차원축소 method중에 tsne에 대해서 정리해보려고 합니다. 한글로는 티스네라고 읽어요! pca와는 조금 다르게, tsne는 원래 데이터 형태가 곡선을 나타내는 모형일 때 더 성능이 좋아요. 보통 숫자 분류 mnist 데이터 셋에 대해 차원 축소를 고려하신다면, 0이나 8같은 숫자들은 곡선들로 이루어져 있죠. 이럴 때 tsne를 사용하면 더 성능이 좋다고 합니다. 반면에, pca는 feature들이 선형적 관계들이 있을 때 잘 분류하지요. 그래서 pca를 쓸 지, tsne를 쓸 지를 판단하시기 위해서는 가지고 있는 데이터들이 어떤 분포를 가지는지를 먼저 파악하는 것이 무엇보다 중요하지요. 또 pca는 skit-learn에서 decomposition로 불러오..

IT/파이썬 2021.04.25

autogluon으로 최적화 모델링 만들기

바로 이 전 글에서는 autogluon설치 해결 이슈에 대해 다뤘으니, 오늘은 autogluon이 무엇이고, 어떻게 사용하는지에 대해서 적어 보려고 합니다! autogluon은 다양한 알고리즘으로, customized parameter 범위내에서 최적의 알고리즘을 select 해주는 기법이라고 간단히 생각하시면 될 거같습니다. 제가 돌렸을 때 autogluon에서 사용했던 알고리즘들은 NeuralNetFastAI KNeighborDist WeightedEnsemble_L2 CatBoost LightGBM ExtraTressEntr ExtraTressGini KneighborsUnif RandomForestGini LightGBMLarge.... 등등 다양한 알고리즘을 사용해줬습니다. (자동으로) 그리고,..

IT/파이썬 2021.04.23

선형보간법(interpolation)으로 결측치 채우기

파이썬에서 결측치를 채울 때 흔히 쓰는, fillna이라는 함수가 있지요. 단순히 fillna를 특정값으로 대체하기 위해서 쓰입니다. 빈칸에는 동일한 특정값으로 모두 대체되지요. 하지만!! 조금 더, 통계적인 방법으로 자연스럽게 결측치를 채워주는 방법도 있습니다. 바로 선형보간법을 활용하는 방법인데요. 우선 아래와 같은 데이터가 있다고 해볼게요. 각 ID그룹( AA/BB/CC/DD) 별로 3번째의 칸이 결측치입니다. (특정 중간값인 3이라는 ID를 새로 만들었다고 해 볼 수도 있지요) 선형 보간 법은, 이 값이 빈칸일때 그냥 fillna로 동일 값을 채우는 것 보다는 11.32와 12.01까지 직선으로 연결한 다음, 그 중간값을 채우는 것이 조금 더 맞다고 보는 방법이에요. 우린 이 데이터를 선형보간법을..

IT/파이썬 2021.04.21

데이터 추출하기 - 정규분포 vs. 임의복원추출

아래와 같은 데이터가 있을 때, random sampling을 통해 새로운 데이터를 생성하는 방법을 알아보겠습니다. 연습해볼 추출 방법은 아래와 같습니다. 1. 정규본포를 따르는 모형에서 random 추출하기(1000개) 2. 기존 데이터에서 임의 복원 추출하기(1000개) 우선 1번을 먼저 실습해볼게요! 정규분포모형에서 random 추출 1 new_col=np.random.normal(df['A_col'].mean(),df['A_col'].std(),1000) cs 위에는 A_col의 평균값과, 표준편차 값을 통해 분포를 생성하고 그 분포 내에서 random하게 1000개의 sample을 추출하여 new_col이라는 값에 넣어줍니다. 그 결과를 그래프로 그려보면 아래와 같아요. 1 2 3 plt.fig..

IT/파이썬 2021.04.19

[그래프] ROC커브 그리기

오늘은 ROC커브 그리기에 대해서 정리하려고 합니다. 1. Def로 정의해서 커브를 그리기2. 여러개의 커브를 같은 화면에 그리기 위의 두 방향으로 오늘 진행해보려 합니다. 우선 ROC커브에 대해서 간단히 설명해볼게요. 우선 Binary classification 경우, True를 모두 True로 맞춘 경우! ROC커브의 면적값은 1이 됩니다. 이 말이 무엇이냐...역시 그림을 보면 이해가 쉬울텐데! 아래 그림과 같이 분류모델링의 성능이 좋으면 점점 왼쪽 모서리로 그래프가 올라가는 것입니다. 이제 코드작성으로 들어가볼까요? 1. 함수로 정의해서 코드 짜기 1 2 3 4 def roc_curve_fnc(p): F_positive_rate, T_positive_rate, thresholds =roc_curv..

IT/파이썬 2021.04.17