분석 Python(345)
-
[Vaex] Join on Multiple Columns
기존 제공하는 방식이나, Pandas에서 아는 방식으로는 안 되는 것을 확인하고 테스트 결과를 공유함. 특징 1. left와 right가 같은 이름인 경우 되지 않음. 특징 2. 한개의 key만 join이 가능함. print(train_input.get_column_names()) print(train_output.get_column_names()) ['ID', 'I', 'J', 'K', 'KHNC', 'KHND', 'KHNG', 'KHPC', 'KHPD', 'KHPG', 'TMC1', 'TMC2', 'TMD1', 'TMD2', 'TMG1', 'TMG2', 'KTG1C', 'KTG2C', 'KTG1D', 'KTG2D', 'KTG1G', 'KTG2G', 'KRC', 'KLC', 'KDC', 'RNITM',..
2020.09.02 -
[Vaex] big data (.csv) covert to hdf5
import vaex for i, df in enumerate(vaex.from_csv('taxi.csv', chunk_size=100_000)): df = df[df.passenger_count < 6] df.export_hdf5(f'taxi_{i:02}.hdf5') vaex.readthedocs.io/en/latest/api.html#vaex.open API documentation for vaex library — vaex 3.0.0 documentation Parameters: x – expression or list of expressions, e.g. df.x, ‘x’, or [‘x, ‘y’] y – expression or list of expressions, e.g. df.x, ‘x’, o..
2020.09.02 -
Target Encoding을 사용하여 범주형 변수 표현하기
좋은 자료가 있어서 일단 공유! brendanhasz.github.io/2019/03/04/target-encoding Representing Categorical Data with Target Encoding Representing categorical variables with high cardinality using target encoding, and mitigating overfitting often seen with target encoding by using cross-fold and leave-one-out schemes. brendanhasz.github.io https://zzsza.github.io/data/2018/09/08/feature-engineering/ Advanced Fe..
2020.09.01 -
[Vaex 1.0.0-beta.6] Groupby 사용해보기
group_result = DATA.groupby(["reviewerID"]) group_result.agg("count") group_result = DATA.groupby(["reviewerID"],agg="count") 아직은 약간 제한이 되는 것 같다 실제로 custom function을 만들려고 하면, 아래쪽과 비슷하게 만들어야 하는데... 어려워 보인다. 일단 주어진 것을 활용해서 해보자. https://vaex.readthedocs.io/en/latest/_modules/vaex/agg.html#count vaex.agg — vaex 3.0.0 documentation © Copyright 2014, Maarten A. Breddels Revision 48531b5d. vaex.readthe..
2020.08.29 -
[Vaex 1.0.0-beta.6] Virtual Column 알아보기
Vaex에서는 DataFrame에서 변수를 파생할 경우에, virtual columns로 결과가 나온다. Virtual Column 같은 경우, 진짜 정상적인 컬럼처럼 행동하지만, 메모리를 차지 않는 컬럼이다. Vaex는 실제 컬럼 Virtual Column 차이에 구별이 없어져서 거의 진짜처럼 있다고 생각하고 처리하면 된다. 실제로 연산하기가 오래 걸릴 경우에는 pythran이나, numba를 활용할 수 있다. import pandas as pd import vaex DATA = vaex.open("./data/AMAZON_FASHION.hdf5") add the Columns (1) DATA["binding_1"] = DATA.func.where( DATA.overall == 5 , "good","b..
2020.08.29 -
[Vaex 1.0.0-beta.6] Virtual column 생성 후 pandas로 변경하기
아직 안 되는 게 너무 많아서 일단 되는 것들을 기록해 놓으려고 한다. 1. 일단 vaex 를 전 처리하고 list type 인 경우 다시 pandas로 변환할 수가 없다. 2. 변수명을 덮어쓰기로 하는 경우 virtual column이 되니 출력하기 위해서는 virtual= True라는 옵션을 사용해야 한다. 3. if else 로 나눌 경우 fun과 where를 써야 하는 듯하다. DATA["binding_1"] = DATA.func.where( DATA.overall == 5 , "good","bad") DATA["binding_2"] = DATA.func.where( DATA.overall > 3 , "good","bad") DATA.to_pandas_df( virtual=False) DATA.t..
2020.08.29 -
[Vaex 1.0.0-beta.6] how to split data from str to list.
import vaex vaex에서는 List로 된 Object를 hdf5로 저장할 수 없어서 구분자 `[SEP]` 를 만들어서 string으로 만들었다. 그리고 다시 그것을 pandas처럼 split을 사용하여 처리하려고 하니 다음과 같은 에러가 발생했다. data_vaex.feature.str.split("[SEP]") --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) ~/anaconda3/lib/python3.6/site-packages/IPython/core/formatters.py in __call__(self, obj) 70..
2020.08.29 -
[Python] re.sub에서 특정한 것만 바꾸고 싶을 때 하는 방법
전처리 앞으로 해야 할 것이 더 많지만, 일단 찾은 것까지만 기록해보고자 한다. import re string = '@@He11o Wor1d!' string = re.sub(r'([a-zA-Z])[@31!]+(?=[a-zA-Z])', r'\1', string) string string = 'n"t' re.sub(r'([a-zA-Z])"(?=[a-zA-Z])',r"\1'",string) string = '4"t' re.sub(r'([a-zA-Z1-9])"(?=[a-zA-Z])',r"\1'",string) string = 'n" ' re.sub(r'([a-zA-Z])" ',r"\1",string) 'n' string = ' "nL' re.sub(r'\s"([a-zA-Z]{2,})', r" \1",string..
2020.08.26 -
[Pytorch] torch에서 모델 summary 확인하는 방법
pytorch에서 keras처럼 summary를 정리해주는 함수가 있어서 공유한다. 찾다 보면 좋은 툴이 많은 것 같다(굳굳) Keras처럼 파라미터 개수랑 용량을 제공해준다! import torch from torch import nn from torchsummary import summary as summary_ from torch.nn import functional as F class MnistModel(nn.Module): def __init__(self): super(MnistModel, self).__init__() # input is 28x28 # padding=2 for same padding self.conv1 = nn.Conv2d(1, 32, 5, padding=2) # feature..
2020.08.25 -
[Pytorch] Pytorch를 Keras처럼 API 호출 하는 방식으로 사용하는 방법
파이토치에서 케라스처럼 API를 만들어서 하는 경우를 발견하게 돼서 공유한다. 실제로 이 규격에 맞춰서 LSTM도 만들수도 있을 것 같다(조금 복잡할 것 같기도 하지만) 기존 코드를 조금씩 바꿔서 해봤고, 아래에는 Custom Dataset에 대해서 새로 만들어서 진행해봤다. 이런 좋은 코드를 공유해주신 다른 분들이 고맙고, 나도 조금 수정을 해서 공유를 한다. 다들 즐거운 코딩하시길! Library Load import torch from torch import nn from torch import optim from torch.autograd import Variable from torchsummary import summary as summary_ import pkbar import warnings..
2020.08.25 -
[sklearn] TSNE, MDS, SpectralEmbedding Estimator를 Pipeline 에 적용 시키는 방법
파이썬에서 Sklearn Pipeline 같은 경우 여러 개의 조합을 파이프라인을 만들어서 쉽게 돌릴 수가 있다. 그러나 돌릴 수 있는 것들은 그 모듈의 아규먼트 중에서 fit, transform을 가지고 있는 경우만 가능하다. 차원 축소 방법으로 TSNE, MDS, SpectralEmbedding을 적용하고자 했을 때 아쉽게도 Method가 transform이 없어서 적용할 수가 없다. 그래서 Sklearn estimator를 새로 만들어서 돌아갈 수는 있게 만든 것을 공유한다. 아래처럼 BaseEstimator와 TransformerMixin을 상속해주면(?) 가능하다 그리고 transform 에는 fit_transform을 써주면 된다. from sklearn.manifold import ( Loc..
2020.08.23 -
[Pytorch] LSTM AutoEncoder for Anomaly Detection
LSTM AutoEncoder를 사용해서 희귀케이스 잡아내기 LSTM AutoEncoder를 사용해서 희귀케이스 잡아내기 도움이 되셨다면, 광고 한번만 눌러주세요. 블로그 관리에 큰 힘이 됩니다 ^^ 우리 데이터는 많은데, 희귀 케이스는 적을 때 딥러닝 방법을 쓰고 싶을 때, AutoEncoder를 사용해서 희귀한 것에 대해�� data-newbie.tistory.com 기존에는 LSTM AutoEncoder에 대한 설명이라면, 이번에는 Pytorch로 구현을 해보고자 했다. 물론 잘못된 것이 있을 수 있으니, 피드백 주면 수정하겠다. Anomaley Detection을 당일날 맞추면 의미가 없으므로 시점을 이동시키는 작업을 하고, 이동시킨 데이터를 이용해 LSTM AutoEncoder를 진행해보고자 한..
2020.08.23