preprocessing(7)
-
Tabular) 좋은 피처 만드는 전처리 방법 정리해보기 (preprocessing)
정형 데이터를 딥러닝에 사용할 때 임베딩하는 방법에 대해서 정리해보고자 한다. 흔히 아는 머신러닝과 딥러닝의 차이를 이런 식으로 표현한다. (물론 딥러닝은 머신러닝의 부분집합이긴 해서 이렇게 구분하는 게 맞지는 않기는 한 것 같다) 여기서 말하는 머신 러닝은 흔히 이야기하는 tree 계열 알고리즘이나 회귀분석 같은 통계 기반의 방법론들을 생각해 주면 될 것 같다. 정형데이터 AI 모델 개발 방식 말하고자 하는 것은 흔히 딥러닝을 써서 얻을 수 있는 기대효과는 알아서 데이터에 대한 정보를 추출(feature extraction)할 수 있다는 믿음하에 딥러닝 방법론을 많이 사용하게 된다. 정형데이터 AI 모델 개발 방식 트렌드 크게 현재 데이터로 많이 사용하는 것이 tabular, image, text, g..
2023.10.04 -
[머신러닝][전처리] 변수 이산화(Discretization) 방법
이산화(Discretization)란 이산화에서는 전체 변수 값 범위에 걸쳐 있는 연속 간격 모음을 생성하여 연속 변수를 이산 기능으로 변환합니다. 이러한 불연속 값은 범주형 데이터로 처리됩니다. 이산화의 첼린지는 연속된 값이 정렬될 간격을 정의하는 임계값 또는 한계를 식별하는 것이다. 이를 위해 우리가 사용할 수 있는 다양한 이산화 방법이 있는데, 각각 장단점이 있다. 필요한 이유 의사 결정 트리(decision treeo) 및 Naive Bayes와 같은 여러 회귀 및 분류 모델은 이산 값에서 더 나은 성능을 보입니다. 의사 결정 트리는 속성의 이산적 분할(discrete partitions)에 기초하여 결정을 내린다. 의사 결정 트리는 이상적인 절단점을 결정하기 위해 훈련하는 동안 모든 featur..
2022.07.09 -
[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 -
[변수 선택] Python에서 변수 전처리 및 변형 해주는 Xverse 패키지 소개
광고 한번만 눌러주세요 ㅎㅎ 블로그 운영에 큰 힘이 됩니다. Xverse는 X Universe를 줄인 말로, 특징 변환과 특징 선택을 통해 데이터 과학자를 지원하기 위한 기계 학습을 위한 Python 패키지입니다. 일단 필요성에 대해서 말하고자 한다고 합니다. Background 대부분의 데이터 분석가는 80%는 분석 전처리에 쓰고 있다고 한다. Earlier works for this package https://medium.com/@sundarstyles89/weight-of-evidence-and-information-value-using-python-6f05072e83eb Weight of evidence and Information Value using Python Weight of eviden..
2020.03.22 -
[ Python ] sklearn_pandas 로 정형데이터 전처리하기(Preprocessing)
광고 한 번만 눌러주세요 블로그 운영을 하는 데 있어서 큰 힘이 됩니다. : ) 파이썬으로 분석을 하다 보면 sklearn과 pandas는 정형 데이터에서 자주 사용하는 패키지일 것이다. 정형 데이터에서 보통 범주형 데이터와 수치형 변수를 나눠서 전처리를 할 때 2개를 같이 쓰게 된다. 하지만 각각의 변수별로 처리를 하게 된다면 보통 다음과 같이 진행할 것이다. from sklearn.compose import ColumnTransformer from sklearn.pipeline import Pipeline from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler, OneHotEncoder imp =..
2020.01.19 -
LabelEncoder new class 대처하기
labelencoder를 사용하다 보면, new class에 대체하는 방법이 필요하다. 추가적인 클래스로 학습하기 어려운 이유는 뉴럴 네트워크 아키텍처를 학습시킬 때 추가 클래스 없을 때의 인코딩 값이 변하기 때문이다. 그러므로 여기서 대처 방법은 새로운 클래스 같은 경우 적은 클래스일 수 있으니 결측 클래스로 넣는 방법으로 진행한다. (만약 많다면, 다시 학습을 해야 할 필요성이 있을 것이다.) from sklearn.preprocessing import LabelEncoder import numpy as np le = LabelEncoder() a = ["paris", "paris", "tokyo", "amsterdam"] + [np.nan] le.fit(a) le.classes_ 여기에 새로운 클래..
2020.01.04 -
[ Python ]sklearn Pipeline으로 전처리하고 dict에 저장 후 재사용
내가 모델링을 할 때 다음과 같은 실수를 한 적이 있다. 예를 들어 어떤 데이터를 열심히 전처리를 하고 나서, 모델링을 한다고 했을 때, 보통 모델만 저장하고 전 처리할 때 값을 저장을 안 한 경우가 있다. 그래서 다른 새로운 데이터가 들어왔을 때 다시 전처리 함수를 적용하는 경우가 있는데, 이러면 train과 test로 학습시킨 게 어긋나기 때문에 문제가 생긴다. 그리고 만약 어떤 칼럼에서 특정 값이 train에는 없는데, test에만 있어도 문제가 발생할 것이다. 하지만 이때 test에 있는 것을 가져와야 하는지... 어차피 다 0으로 처리되니까 상관없을 것 같기도 하지만 고민이 되는 사항이다. 아무튼 이번 포스팅은 전처리를 하고 나서 저장해서 어떻게 쓸 수 있을지에 대해 고민해본 것을 써보려고 한다..
2019.08.06