sklearn(17)
-
[Visualization] Learning Curve를 이용하여 시각화하기(Train/Valid)
def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None, n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)): plt.figure() plt.title(title) if ylim is not None: plt.ylim(*ylim) plt.xlabel("Training examples") plt.ylabel("Score") train_sizes, train_scores, test_scores = learning_curve( estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes) train_scores_mean = np.mean(train_scores, ..
2020.12.18 -
[TIP / Sklearn ] Custom Estimator (Ex : Combined Regressor)
sklearn을 사용하여 estimator를 만들 때, 참고하기 좋은 자료가 있어서 공유한다.이 자료는 Combined Regreesor라는 Estimator를 쓸 때 만든 자료인 것 같은데, Custom Estimator로 Grid Search도 돌리는 것을 보고 관심이 가게 되서 일단 저장해둔다. custom estimator를 만들어야하는 분이라면 참고하면 좋을 것 같다. Sklearn compatibilityIf we want to achieve full sklearn compatiblity (model selection, pipelines, etc.) and also use sklearn’s onboard testing utilities we have to do some modifications..
2020.10.27 -
[Visualization] Interact Clustering with Kmeans (with any data)(continuous)
이번에 k-means를 이용해서 interact plot을 그려보는 것을 해볼 일이 있어서 서칭을 하다 보니, iris로 k-means를 활용해서 시각화한 것을 찾았다. 그래서 좀 더 확장하여 클래스로 만들어서 다양한 데이터가 들어왔을 때 적용할 수 있게 바꿔봤다. 일부 코드 중에 수정할 부분이 있어서 수정함 (argmax 보다는 dictionary로 관리를 해야 정확한 값을 뽑을 수 있음) 해당 글을 들어가면 잘 설명을 해줄 테니, 기술적인 내용은 들어가서 확인해주시기 바란다! 아주 대충 설명한다고 하면 cluster 예측값 각각에서 실제 값의 빈도를 세었을 때, 가장 많은 빈도를 가진 클래스로 매핑을 시켜줘서 라벨을 붙인다. 그리고 참고로 알다시피 k-means 같은 경우 거리 기반이 주로 유클리디안..
2020.10.09 -
[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 -
sklearn ColumnsTransformer 및 변수별로 전처리 적용하는 예시
광고 한 번씩 눌러주세요! 블로그 운영에 큰 힘이 됩니다 :) 예시 3개를 소개함 변수 그룹별로 나눠서 전처리 해보기 Pipeline을 내부적으로 만들어서 해보기 Custom Class를 이용해서 해보기 변수 그룹별로 나눠서 전처리 해보기 from sklearn.compose import ColumnTransformer from sklearn.pipeline import FeatureUnion, Pipeline num_var1 = num_var[5:] num_var2 = num_var[:5] print(num_var1, num_var2) pipe = ColumnTransformer(transformers=[ ("num1", MinMaxScaler(), num_var1), ("num2", StandardS..
2020.05.02 -
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에 있는 mutual_info_classif , mutual_info_regression를 활용하여 변수 선택하기 (feature selection)
sklearn.feature_selection.mutual_info_classif Mutual Information은 두 random variable들이 얼마나 mutual dependence 한 지를 measure 하는 방법을 의미한다. Mutual information - Wikipedia In probability theory and information theory, the mutual information (MI) of two random variables is a measure of the mutual dependence between the two variables. More specifically, it quantifies the "amount of information" (in units..
2020.03.09 -
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 -
Optuna: A Next-generation Hyperparameter Optimization Framework
https://arxiv.org/abs/1907.10902?fbclid=IwAR3I44Xha4ULqLpBOVpd5nx4ddLONLqT6M_BnE4SUXJ1ec_wCTWiCDjQAls Optuna: A Next-generation Hyperparameter Optimization Framework The purpose of this study is to introduce new design-criteria for next-generation hyperparameter optimization software. The criteria we propose include (1) define-by-run API that allows users to construct the parameter search space ..
2019.11.17 -
[ Python ]sklearn Pipeline으로 전처리하고 dict에 저장 후 재사용
내가 모델링을 할 때 다음과 같은 실수를 한 적이 있다. 예를 들어 어떤 데이터를 열심히 전처리를 하고 나서, 모델링을 한다고 했을 때, 보통 모델만 저장하고 전 처리할 때 값을 저장을 안 한 경우가 있다. 그래서 다른 새로운 데이터가 들어왔을 때 다시 전처리 함수를 적용하는 경우가 있는데, 이러면 train과 test로 학습시킨 게 어긋나기 때문에 문제가 생긴다. 그리고 만약 어떤 칼럼에서 특정 값이 train에는 없는데, test에만 있어도 문제가 발생할 것이다. 하지만 이때 test에 있는 것을 가져와야 하는지... 어차피 다 0으로 처리되니까 상관없을 것 같기도 하지만 고민이 되는 사항이다. 아무튼 이번 포스팅은 전처리를 하고 나서 저장해서 어떻게 쓸 수 있을지에 대해 고민해본 것을 써보려고 한다..
2019.08.06 -
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