numpy(11)
-
Tabular) 좋은 피처 만드는 전처리 방법 정리해보기 (preprocessing)
정형 데이터를 딥러닝에 사용할 때 임베딩하는 방법에 대해서 정리해보고자 한다. 흔히 아는 머신러닝과 딥러닝의 차이를 이런 식으로 표현한다. (물론 딥러닝은 머신러닝의 부분집합이긴 해서 이렇게 구분하는 게 맞지는 않기는 한 것 같다) 여기서 말하는 머신 러닝은 흔히 이야기하는 tree 계열 알고리즘이나 회귀분석 같은 통계 기반의 방법론들을 생각해 주면 될 것 같다. 정형데이터 AI 모델 개발 방식 말하고자 하는 것은 흔히 딥러닝을 써서 얻을 수 있는 기대효과는 알아서 데이터에 대한 정보를 추출(feature extraction)할 수 있다는 믿음하에 딥러닝 방법론을 많이 사용하게 된다. 정형데이터 AI 모델 개발 방식 트렌드 크게 현재 데이터로 많이 사용하는 것이 tabular, image, text, g..
2023.10.04 -
einsum 알아보기
목차 개념 가끔 보면 einsum을 홍보하는 글을 보거나 코드에서 본 것 같다. 처음에는 대수롭지 않게 생각을 했는데, 좀 더 자세히 보니 매력적인 부분이 많은 것 같아 알아보려고 한다. 특히 매력적인 부분은 이것만 알고 있으면 numpy , pytorch, tensorflow 다 동일하게 적용할 수 있다는 점이다. 선형 대수학은 딥러닝 분야에서 근본적인 역할을 하는데, 아직까지는 춘추전국시대라서 통일된 라이브러리가 없고 계속 생겨나는 시점이라 이럴수록 하나로 통일해주는 것을 배우면 좋을 것 같다고 생각했다. 그리고 잘만쓰면, 복잡한 연산도 쉽게 구현할 수 있는 것 같아서 좋은 것 같다. einsum 연산을 통해서, 행렬 내적, 외적, 내적, 행렬곱 등을 동일한 형태로 할 수 있다는 것이 참 매력적인 부..
2021.12.07 -
GNN) GCN Layer Implementation
GCN는 Convolutional Aggregator를 사용하는 방식으로 위치는 다음과 같다. 해당 그래프가 있다면, 해당 그래프에서 GCN에서 필요한 정보는 다음과 같이 크게 3개가 될 수 있다. Adjancy matrix(A) , Degree Matrix (D) ,Feature Vector(X) AX를 구할 때 다음과 같이 구할 수가 있게 되고, 여기서 발생되는 문제점들은 아래에서 소개해드리겠습니다. 아래와 같은 그래프가 있다고 하였을 때, GCN을 적용해보고자 한다. 해당 테스크는 노드 분류를 하는 것이지만, 여기서는 GCN LAYER을 구현하는 것까지만 진행하고자 한다. import numpy as np from networkx.algorithms.community.modularity_max im..
2021.07.03 -
tf.py_func 사용해보기
광고 한 번씩 눌러주세요! 블로그 운영에 큰 힘이 됩니다 :) tensorflow graph 내에 파이썬 연산을 해줄 수 있는 tf.py_func 만약 데이터가 크다면, 전체를 읽지 못하고 배치성으로 데이터를 읽어서 해야하는데, 그럴 때 그래프내에서 할 수 있기 때문에 괜찮다고 생각함. (사실 텐서플로우 그래프 밖에서 해도 될 것 같긴 함.) Tensorflow에 python_func 사용해보기 import tensorflow as tf import numpy as np from sklearn.preprocessing import MinMaxScaler X = tf.placeholder(tf.float32 , (None , 3), name ="X") def numpy_use(x) : result = x-..
2020.04.17 -
sklearn을 활용한 Custom Outlier Transformer 만들어보기
광고 한 번씩 눌러주세요. 블로그 운영에 큰 힘이 됩니다 :) 특정 모델을 열심히 돌려보는데, Train data은 AUC가 100%를 찍지만, Test Data는 77%를 찍고 더 이상의 성능 향상이 되지 않았다. 이러한 점을 해결하기 위해서Weight으 정규화를 하던지, 전처리 방식을 바꿔봤지만, 동일한 성능이 계속 나왔다. 그래서 남은 방법은 머 많이 있겠지만, 그중에서 Outlier 부분을 고려해보기로 하였다. 하지만 실제로 적용하였지만, 오히려 더 overfitting을 시키는 것 같다 ㅎㅎㅎ 그래도 이왕 Outlier Transformer를 만들었으니, 공개함. Outlier 체크하는 부분은 일반적으로 통계에서 사용하는 IQR 방식을 적용하기로 하였다. IQR이란 Quantile(0.75) -..
2020.02.24 -
[ Python ] 모델 예측 TOP N번까지 값 뽑고 N번까지 Accuracy 계산하기
예측 정확도를 뽑다보면, 추천도 그렇듯이 TOP1만 보는 것이 아니라 TOP N번까지 보는 경우가 많다. 이런 경우 TOP N 번까지 결과값과 TOP N번까지 고려했을 때 정확도를 궁금해하는 경우가 흔하다. Python으로는 다음과 같이 하면 된다! 예를 들어 이런 다중 클래스에서 예측을 한다고 하자. 아무리 모델이 좋아도 1개의 클래스를 예측하는 것에 성능을 왠만하면 기대하기 어려울 것이다. pd.DataFrame(pred).head() 방법은 다음과 같다 top_n 함수를 잘 보면 된다. 저 함수를 이용해서 N번째로 큰 값을 찾을 수 있다. import numpy as np def top_n(data , n ) : return list(map(lambda x: np.argpartition(x, -n)..
2019.07.16 -
Incredibly Fast Random Sampling in Python - 리뷰
샘플링을 어떻게 빠르게 할 수 있을까? numpy or random 패키지로도 할 수 있지만, 최근에 쉽게 해결할 수 없는 무작위 샘플링 문제를 발견했다고 합니다. 일단 구체적으로 필요한 것은 다음과 같다. A specified sample size (지정된 표본 크기) A specified number of samples (지정된 샘플수) Sampling without replacement A specified inclusion probability of each element’s inclusion in a given sample (주어진 표본에 각 요소가 포함될 확률을 명시) import random import numpy as np # constants num_elements = 20 num_sam..
2019.06.14 -
numpy.unique, numpy.searchsorted
카테고리를 정수로 변환하기! pandas에는 cat.codes가 있다. 유니크 범위 : ( 0 , 카레고리수 -1 ) from itertools import combinations possible_categories = list(map(lambda x: x[0] + x[1], list(combinations('abcdefghijklmn', 2)))) categories = np.random.choice(possible_categories, size=10000) print(categories) ['al' 'kl' 'jk' ... 'jm' 'bm' 'hj'] unique_categories, new_categories = np.unique(categories, return_inverse=True) print..
2019.05.26 -
Broadcasting, numpy.newaxis
numpy를 자주 쓰다 보면 사용하면 Broadcasting! https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html Broadcasting — NumPy v1.16 Manual Broadcasting Note See this article for illustrations of broadcasting concepts. The term broadcasting describes how numpy treats arrays with different shapes during arithmetic operations. Subject to certain constraints, the smaller array is “broadcast” acro docs.scip..
2019.05.26 -
numpy argsort
argsort를 이용해서 하나의 기준이 있을 때 다른 것도 쉽게 정렬할 수 있다! 만약 키와 나이가 쌍이 있다고 하자. ages = np.random.randint(low=30, high=60, size=10) heights = np.random.randint(low=150, high=210, size=10) print(ages) print(heights) ## ages : [56 53 52 54 42 53 39 37 50 57] ## heights : [189 182 158 204 187 168 155 169 206 153] 이것을 나이를 기준으로 height 도 같이 sort해보자! 이 방식은 zip(ages , heights) 보다 훨씬 빠르다고 합니다!! sorter = np.argsort(age..
2019.05.26 -
넘파이 좋은 팁이 많음!
http://arogozhnikov.github.io/2015/09/29/NumpyTipsAndTricks1.html Data manipulation with numpy: tips and tricks, part 1 also, since algebra is you friend, you can do it times faster: $$||x_i - x_j||^2 = ||x_i||^2 + ||x_j||^2 - 2 (x_i, x_j) $$ so dot products is the only thing you need. arogozhnikov.github.io
2019.05.25