Pipeline(8)
-
[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 -
scikit-learn 파이프라인 시각화 기능 사용 및 재사용 (pipeline visualization)
scikit-learn이 0.23이 되면서 가장 와 닿은 것인 pipeline을 시각화해주는 것이었다. 이번 글에서는 파이프라인 시각화하는 것과 실제로 아직 저장하는 것을 제공하지 않지만 재사용할 수 있는 방법에 대해서 고민해봤다. import pandas as pd import numpy as np import seaborn as sns import sklearn from sklearn.model_selection import train_test_split from sklearn.pipeline import make_pipeline from sklearn.preprocessing import OneHotEncoder from sklearn.linear_model import LogisticRegress..
2020.05.15 -
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 ] Scikit-Learn Pipeline + RandomizedSearchCV + shap,eli5
광고 한 번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다 ( Click my ADs! ) 이번 글에서는 전체 모델링을 하고 나서 모델 해석을 위해 eli5 , shap을 사용하려고 한다. 핵심 포인트는 Pipeline과 Shap , Eli5를 보시면 될 것 같다. 모델 해석으로는 lime, shap, eli5가 있는데, 다 좋지만 개인적으로 shap가 선호하므로, 좀 더 잘 알기 위해서 추후에 정리해보려고 한다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import eli5 import shap import seaborn as sns plt.style.use('ggplot') # load the dataset from ..
2019.12.28 -
[ Python ] Scikit-Learn, 변수 전처리 Pipeline Transformer 만들어보기
광고 한 번만 눌러주세요! 블로그 운영에 큰 힘이 됩니다 (Click my ADs) 파이썬을 하다보면 Scikit-learn에 있는 전처리 코드를 많이 사용하게 된다. 개별적으로 다 처리하거나 퉁쳐서 할 수도 있지만, 이것을 Pipeline을 이용해서 깔끔하게 Pipeline으로 구성할 수 있다! 해당 글에서는 수치형 변수와 범주형 변수를 나눠서 처리하면서 각각 전처리를 다른 방식으로 진행하고 바꾸는 것에 대해서 해본 것을 공유하려고 한다. import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns plt.style.use('ggplot') # load the dataset from sklearn...
2019.12.28 -
sklearn Pipeline을 이용해 다양한 Regression모델 모델링하기
이번에는 여러 가지 Regression 모델을 비교하는 모델을 코드를 만들어봤다. Pipeline을 쓸 기회가 없어서 잘 몰랐는데, 참 편리한 것 같다! from sklearn.linear_model import LinearRegression, Ridge, Lasso, ElasticNet from sklearn.linear_model import LassoCV , ElasticNetCV , RidgeCV from sklearn.preprocessing import PolynomialFeatures from sklearn.decomposition import PCA from sklearn.metrics import mean_squared_error as mse from sklearn.metrics impo..
2019.06.15 -
sklearn Pipeline을 이용해 다양한 Classification모델들 모델링하기
sklearn을 사용해서 sklearn에서 제공하는 다양한 분류 모델들을 비교하는 코드를 만들려고 한다. 원래는 한 Pipeline에 다 하려고 했는데, 먼가 자꾸 꼬여서 그냥 여러 개를 만드는 방향으로 바꿨다. from sklearn.model_selection import GridSearchCV from sklearn.pipeline import Pipeline , make_pipeline from sklearn.preprocessing import StandardScaler ,OneHotEncoder from sklearn.compose import ColumnTransformer from sklearn.multiclass import OneVsRestClassifier from sklearn.im..
2019.06.15 -
[ Python ] Scikit-Learn, Numeric 표준화 / Category Onehot 하는 Pipeline 및 모델링하는 코드
numeric_features = ['age', 'fare'] numeric_transformer = Pipeline(steps=[ ('imputer', SimpleImputer(strategy='median')), ('scaler', StandardScaler())]) ## category 있는 경우 categorical_features = ['embarked', 'sex', 'pclass'] categorical_transformer = Pipeline(steps=[ ('imputer', SimpleImputer(strategy='constant', fill_value='missing')), ('onehot', OneHotEncoder(handle_unknown='ignore'))]) preproce..
2019.06.15