분석 Python(345)
-
[Pandas] Pandas의 Filter 함수를 사용하여 특정 컬럼(변수) 제외하기
row / test / key가 column 이름에 들어간 것들은 제외하는 regular expression data를 아래와 같이 생성 np.random.seed(1234) cols = [f"{random()}_{i}" for i in np.arange(20)] array = np.random.normal(size=(100,20)) data = pd.DataFrame(array , columns = cols) data ['col_0', 'col_1', 'test_2', 'row_3', 'type_4', 'type_5', 'type_6', 'row_7', 'col_8', 'row_9', 'col_10', 'row_11', 'test_12', 'test_13', 'col_14', 'test_15', 'ty..
2020.12.15 -
[Pytorch] torch 유용한 함수 정리하기
유용한 함수들을 발견하게 되면 정리해보기 개인적으로 중요하다고 생각하는 것에 ★ 표시 import torch import numpy as np Function 1 — torch.tensor t1 = torch.tensor([[21,39],[31,30],[23,43],[11,46],[26,46],[31,25],[21,38],[22,39],[22,19],[18, 14]]) t1 t2 = torch.tensor([]) t2 t2.size() Function 2 — torch.from_numpy a1 = np.array([[1,2,3],[4,5,6]]) a1.dtype t1 = torch.from_numpy(a1) t1.dtype Hight_Weight = np.array([[161,67],[154,76],[1..
2020.11.30 -
[Keras] EarlyStopping 및 Model 저장하기
리마인드 한다는 개념으로 해보고 있다. torch를 하다가 keras를 하니까 좀 편한 것 같기도 하다 ㅎㅎㅎ from keras.callbacks import EarlyStopping from keras.callbacks import ModelCheckpoint 아래와 같이 EarlyStopping과 ModelCheckpoint를 어떤 것을 모니터링할지를 설정한다. es = EarlyStopping(monitor='accuracy', mode='max', verbose=1, patience=500) mc = ModelCheckpoint('best_model.h5', monitor='accuracy', mode='max', save_best_only=True) 모델을 어떻게든 원하는대로 만든다. 이때 c..
2020.11.21 -
[Keras] Weighted Cross Entropy 적용하는 방법
keras에서 weighted binary crossentropy를 적용할 때 방법을 공유하고자 한다. 바로 sklearn의 class_weight를 활용하는 것이다. from sklearn.utils import class_weight weights = class_weight.compute_class_weight('balanced', np.unique(train_y), train_y) weights = {i : weights[i] for i in range(2)} weights ## {0: 0.6254180602006689, 1: 2.493333333333333} class_weight에 어떻게 보면 고정된 weight를 주는 방법이다. 더 나은 방법은 아마도 batch_size마다 weight를 계산..
2020.11.21 -
[Visualization] keras 결과물(history) 시각화하는 함수
keras를 사용하면 쉽게 결과물들을 저장을 할 수 있다. 이런 식으로 metrics에 제공하는 함수나, 함수를 만들면 fitting 할 때 저 부분들에 대해서 epoch 마다 저장을 해준다. model.compile(loss = keras.losses.BinaryCrossentropy(label_smoothing = 0.0), optimizer = adam, metrics =['accuracy',get_f1]) 실제로 fit을 하게 됬을 때, validation_data를 넣으면 `val_accuracy` 와 `val_get_f1` 형태로 저장이 된다. history = model.fit(train, train_y, validation_data=(valid, valid_y), ) 다음과 같이 dict ..
2020.11.21 -
[Visualization] x 축에 있는 margin 제거하기 (2/2)
2020/11/19 - [분석 Python/Visualization] - [Visualization] x 축에 중복된 이름 잘 시각화하기 (xticks) (1/2) 2020/11/19 - [분류 전체보기] - [Visualization] x 축에 있는 margin 제거하기 (2/2) 지난번 그림이다. 이 그림에서 그림을 예쁘게 처리하기 위해서는 저 마진을 없애면 좋을 것이다. 실제로 저것과 관련된 것을 찾아보니 결국 x 축의 limit를 줄이는 방향이면 가능하다. 그러면 어떤 것을 얼마나 줄여야 하는 걸까? 바로 xticks 에서 나오는 ticks 의 최소 최대를 건드려주면 되는 것 같다. ## 이전 코드 참고! plt.figure(figsize=(17,17)) plt.subplots_adjust(lef..
2020.11.19 -
[Visualization] x 축에 중복된 이름 잘 시각화하기 (xticks) (1/2)
2020/11/19 - [분석 Python/Visualization] - [Visualization] x 축에 중복된 이름 잘 시각화하기 (xticks) (1/2) 2020/11/19 - [분류 전체보기] - [Visualization] x 축에 있는 margin 제거하기 (2/2) index = np.random.choice(list("abcdefghijklmn"),size=100).reshape(-1,1) y = np.random.normal(size=100).reshape(-1,1) result = pd.DataFrame(np.concatenate([index,y],axis=1),columns=["name","target"]) result = result.sort_values(["name"]) 보통..
2020.11.19 -
PyTorch Lighting + Ray tune
ray tune에 올라온 pyotch lighting으로 구현된 코드를 돌려봤는데, 문제가 생겨서 임시방편으로 막아놓은 코드를 공유한다. 일단 2가지가 안 되는 것을 확인했다. tune.with_parameters TuneReportCallback 위의 부분을 제거한 코드를 공유하겠다. TunerReportCallback 도 문제이고, tune.with_parameters는 뭔가 좋은 기능을 쓰지 못할 수도 있을 것 같다는 생각이 들지만 일단 공유 버그는 머 나중에 다 잡힐 것이라고 믿기 때문에 일단은 알아두기만 해야겠다! 패키지 설치 pip install "ray[tune]" # 1.0.0 pip install "pytorch-lightning>=1.0" pip install "pytorch-light..
2020.11.07 -
[Survey] Feature Engineering in AutoML 리뷰
AutoML에서 자동 피처 엔지니어링에 대해서 관심이 많다. 보통 우리가 딥러닝을 쓰는 것도 사람들이 알 수 없는 패턴을 딥러닝이 학습(Representation Learning)을 기대하는 것인데, 이것이 현재는 비정형 데이터에서는 많이 사용하고 있으나, 여전히 정형 데이터에는 사람의 손이 타는 것 같다. 그래서 보통 어떤 알고리즘에서는 이미지를 통해서 전처리 단계를 비정형데이터로 만드는 방법이 있는가 하면, 아니면 먼가 복잡하게 내부적으로 처리하게 해서 자동으로 처리하는 경우를 본 것 같다. 여기서는 그러한 방법들 말고, 그냥 정형 데이터가 있다고 했을 때, 처리하는 방법 중에서 PCA를 활용한 AutoML에 대한 자료가 있어서 살펴본다. 아시다시피 정형 데이터는 아주 크게 보면, 연속형 변수와 범주..
2020.11.07 -
[TIP / Pytorch] torch class name 얻는 방법
torch class 이름을 얻고자 할 때, 삽질을 하였기 떄문에, 블로깅다른 사람들은 삽질을 덜 하셨으면 한다!layer = torch.nn.Linear(10,5) layer.__class__.__name__
2020.10.31 -
[TIP / Pytorch] calculate convolution output shae (conv2d , pooling) (Conv 아웃풋 값
기존 계산은 다음과 같음. 하지만 pytorch에서 convolution layer output shape를 계산식은 다음과 같음 함수 def cal_conv_output_shape_torch(h_w, layer): from math import floor dilation = layer.dilation kernel_size = layer.kernel_size stride = layer.stride pad = layer.padding if type(dilation) is not tuple: pass else : dilation = dilation[0] stride = stride[0] pad = pad[0] if type(kernel_size) is not tuple: kernel_size = (kerne..
2020.10.31 -
[TIP / Pytorch 1.5~] jit script, save, load
기존에 알다시피 Pytorch 같은 경우 아키텍처를 저장을 할 수가 없었다.torch.save를 이용해서 저장하면 에러가 생기는 문제가 있다.그래서 보통은 아키텍처를 좀 더 일반화해서 만들고, 파라미터를 넣은 다음에 학습된 가중치를 불러와서 모델을 로드하는 방식을 주로 사용한다. 참고 오늘은 우연히 발표를 듣다가 알게 된 사실을 공유한다.바로 torch.jit.save & load를 알게 된 것이다.내가 알기로는 아마 이것은 torch 1.6부터 나온 것으로 알고 있다.실제 애가 어떻게 저장을 하는지는 잘 모르지만, torch.jit.save를 사용하면, 가중치와 함께 아키텍처를 둘 다 저장할 수 있다! 그래서 일단 예제를 보자. 회귀 분석 예측을 아주 간단하게 해 보자.여기서의 목적은 가중치가 저장하기..
2020.10.29